From 0ae9f7460bb3e1519ae31b2273aa52b13f5a775d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 19:51:43 +0400 Subject: update.php --daemon did not respect --quiet --- update.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/update.php b/update.php index 691e168e2..e57aef90f 100755 --- a/update.php +++ b/update.php @@ -145,7 +145,9 @@ if (isset($options["daemon"])) { while (true) { - passthru(PHP_EXECUTABLE . " " . $argv[0] ." --daemon-loop"); + $quiet = (isset($options["quiet"])) ? "--quiet" : ""; + + passthru(PHP_EXECUTABLE . " " . $argv[0] ." --daemon-loop $quiet"); _debug("Sleeping for " . DAEMON_SLEEP_INTERVAL . " seconds..."); sleep(DAEMON_SLEEP_INTERVAL); } -- cgit v1.2.3 From f0e015c428e9bdbcab5e0b3313baca694146477a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 19:51:59 +0400 Subject: daemon2: make wrong schema version error display if quiet --- update_daemon2.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/update_daemon2.php b/update_daemon2.php index 2fbdd8b8c..37d6b4074 100755 --- a/update_daemon2.php +++ b/update_daemon2.php @@ -203,8 +203,8 @@ db_close($link); if ($test_schema_version != $schema_version) { - _debug("Expected schema version: $schema_version, got: $test_schema_version"); - _debug("Schema version changed while we were running, bailing out"); + echo "Expected schema version: $schema_version, got: $test_schema_version\n"; + echo "Schema version changed while we were running, bailing out\n"; exit(100); } -- cgit v1.2.3 From 2e35a7070b17a7bbc01730071391382f9cbe09ea Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:08:32 +0400 Subject: generated feeds: support if-modified-since --- backend.php | 2 -- classes/handler/public.php | 24 +++++++++++++++++++++++- public.php | 2 -- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/backend.php b/backend.php index 41481a963..9eb3989e4 100644 --- a/backend.php +++ b/backend.php @@ -43,8 +43,6 @@ require_once "db.php"; require_once "db-prefs.php"; - no_cache_incantation(); - startup_gettext(); $script_started = microtime(true); diff --git a/classes/handler/public.php b/classes/handler/public.php index 37c704584..151447540 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -21,11 +21,32 @@ class Handler_Public extends Handler { else if ($feed == -1) $date_sort_field = "last_marked DESC"; + $qfh_ret = queryFeedHeadlines($this->link, $feed, + 1, $view_mode, $is_cat, $search, $search_mode, + $date_sort_field, $offset, $owner_uid, + false, 0, false, true); + + $result = $qfh_ret[0]; + + if (db_num_rows($result) != 0) { + $ts = strtotime(db_fetch_result($result, 0, "date_entered")); + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && + strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified) { + header('HTTP/1.0 304 Not Modified'); + return; + } + + $last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT"; + header("Last-Modified: $last_modified", true); + } + $qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $is_cat, $search, $search_mode, $date_sort_field, $offset, $owner_uid, false, 0, false, true); + $result = $qfh_ret[0]; $feed_title = htmlspecialchars($qfh_ret[1]); $feed_site_url = $qfh_ret[2]; @@ -53,7 +74,8 @@ class Handler_Public extends Handler { $tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true); - while ($line = db_fetch_assoc($result)) { + while ($line = db_fetch_assoc($result)) { + $tpl->setVariable('ARTICLE_ID', htmlspecialchars($line['link']), true); $tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true); $tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true); diff --git a/public.php b/public.php index dccd77f43..8477f95fc 100644 --- a/public.php +++ b/public.php @@ -24,8 +24,6 @@ require_once "db.php"; require_once "db-prefs.php"; - no_cache_incantation(); - startup_gettext(); $script_started = microtime(true); -- cgit v1.2.3 From d6ba77f3ad6183f0acce75790172fb22f2100367 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:13:13 +0400 Subject: fix 304 being returned all the time --- classes/handler/public.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/handler/public.php b/classes/handler/public.php index 151447540..f6a5786a5 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -32,7 +32,7 @@ class Handler_Public extends Handler { $ts = strtotime(db_fetch_result($result, 0, "date_entered")); if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && - strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $last_modified) { + strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $ts) { header('HTTP/1.0 304 Not Modified'); return; } -- cgit v1.2.3 From 2faef8349cf674605f9e2b1e8227c0af1b0d0609 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:15:50 +0400 Subject: generated feeds: lower default query limit --- classes/handler/public.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/handler/public.php b/classes/handler/public.php index f6a5786a5..b8a32cd27 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -12,7 +12,7 @@ class Handler_Public extends Handler { "padding : 5px; border-style : dashed; border-color : #e7d796;". "margin-bottom : 1em; color : #9a8c59;"; - if (!$limit) $limit = 100; + if (!$limit) $limit = 60; $date_sort_field = "date_entered DESC, updated DESC"; -- cgit v1.2.3 From 9b176694f5ce928ac76984a3b1518353aa9cad5a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:24:26 +0400 Subject: Revert "another attempt to workaround against feedtree scroll issues" This reverts commit 9f8b2e6ea821da4b958b20f5c4c957b846021b76. --- tt-rss.css | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tt-rss.css b/tt-rss.css index c6bc77dc3..8d5080c6c 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -768,7 +768,7 @@ div.fatalError textarea { border-left-width : 0px; border-bottom-width : 0px; border-top-width : 0px; - overflow : auto; + overflow : hidden; } #headlines-wrap-inner { @@ -777,10 +777,6 @@ div.fatalError textarea { border-width : 0px; } -#feedTree { - overflow : visible; -} - #headlines-frame { padding : 0px; border-color : #88b0f0; -- cgit v1.2.3 From 2324f15325d32475c8aede8e08df2f7d54b90276 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:35:00 +0400 Subject: add sv_SE translation --- include/functions.php | 1 + include/localized_schema.php | 2 +- locale/sv_SE/LC_MESSAGES/messages.mo | Bin 0 -> 51878 bytes locale/sv_SE/LC_MESSAGES/messages.po | 3991 ++++++++++++++++++++++++++++++++++ 4 files changed, 3993 insertions(+), 1 deletion(-) create mode 100644 locale/sv_SE/LC_MESSAGES/messages.mo create mode 100644 locale/sv_SE/LC_MESSAGES/messages.po diff --git a/include/functions.php b/include/functions.php index 5fe5c5a65..75ca6daf9 100644 --- a/include/functions.php +++ b/include/functions.php @@ -63,6 +63,7 @@ "ru_RU" => "Русский", "pt_BR" => "Portuguese/Brazil", "zh_CN" => "Simplified Chinese", + "sv_SE" => "Svenska", "fi_FI" => "Suomi"); return $tr; diff --git a/include/localized_schema.php b/include/localized_schema.php index 51d11f79a..418c9d014 100644 --- a/include/localized_schema.php +++ b/include/localized_schema.php @@ -1,4 +1,4 @@ -, 2013. +# poitzorg , 2012. +# gothfox , 2011. +# joschi , 2011. +msgid "" +msgstr "" +"Project-Id-Version: Tiny Tiny RSS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"PO-Revision-Date: 2013-03-20 16:42+0100\n" +"Last-Translator: wahlis\n" +"Language-Team: \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Poedit-Language: Swedish\n" + +#: backend.php:69 +msgid "Use default" +msgstr "Standardvärden" + +#: backend.php:70 +msgid "Never purge" +msgstr "Radera aldrig" + +#: backend.php:71 +msgid "1 week old" +msgstr "1 vecka" + +#: backend.php:72 +msgid "2 weeks old" +msgstr "2 veckor" + +#: backend.php:73 +msgid "1 month old" +msgstr "1 månad" + +#: backend.php:74 +msgid "2 months old" +msgstr "2 månader" + +#: backend.php:75 +msgid "3 months old" +msgstr "3 månader" + +#: backend.php:78 +msgid "Default interval" +msgstr "Standardintervall" + +#: backend.php:79 +#: backend.php:89 +msgid "Disable updates" +msgstr "Inaktivera uppdateringar" + +#: backend.php:80 +#: backend.php:90 +msgid "Each 15 minutes" +msgstr "Varje kvart" + +#: backend.php:81 +#: backend.php:91 +msgid "Each 30 minutes" +msgstr "Varje halvtimme" + +#: backend.php:82 +#: backend.php:92 +msgid "Hourly" +msgstr "Varje timme" + +#: backend.php:83 +#: backend.php:93 +msgid "Each 4 hours" +msgstr "Var 4:e timme" + +#: backend.php:84 +#: backend.php:94 +msgid "Each 12 hours" +msgstr "Var 12:e timme" + +#: backend.php:85 +#: backend.php:95 +msgid "Daily" +msgstr "Dagligen" + +#: backend.php:86 +#: backend.php:96 +msgid "Weekly" +msgstr "Veckovis" + +#: backend.php:99 +#: classes/pref/users.php:123 +msgid "User" +msgstr "Användare" + +#: backend.php:100 +msgid "Power User" +msgstr "Superanvändare" + +#: backend.php:101 +msgid "Administrator" +msgstr "Administratör" + +#: db-updater.php:19 +msgid "Your access level is insufficient to run this script." +msgstr "Du har inte behörighet att köra detta skript." + +#: db-updater.php:44 +msgid "Database Updater" +msgstr "Databasuppdatering" + +#: db-updater.php:87 +msgid "Could not update database" +msgstr "Kunde inte uppdatera databasen" + +#: db-updater.php:90 +msgid "Could not find necessary schema file, need version:" +msgstr "Kunde inte hitta rätt schemafil, behöver version:" + +#: db-updater.php:91 +msgid ", found: " +msgstr ", hittade: " + +#: db-updater.php:94 +msgid "Tiny Tiny RSS database is up to date." +msgstr "Tiny Tiny RSS databas är uppdaterad." + +#: db-updater.php:96 +#: db-updater.php:165 +#: db-updater.php:178 +#: register.php:196 +#: register.php:241 +#: register.php:254 +#: register.php:269 +#: register.php:288 +#: register.php:336 +#: register.php:346 +#: register.php:358 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 +msgid "Return to Tiny Tiny RSS" +msgstr "Åter till Tiny Tiny RSS" + +#: db-updater.php:102 +msgid "Please backup your database before proceeding." +msgstr "Gör en backup av databasen innan du forsätter." + +#: db-updater.php:104 +#, php-format +msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +msgstr "Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste Version (%d nach %d)." + +#: db-updater.php:118 +msgid "Perform updates" +msgstr "Utför uppdatering" + +#: db-updater.php:123 +msgid "Performing updates..." +msgstr "Uppdatering pågår..." + +#: db-updater.php:129 +#, php-format +msgid "Updating to version %d..." +msgstr "Uppdaterar till version %d..." + +#: db-updater.php:144 +msgid "Checking version... " +msgstr "Kontrollerar version..." + +#: db-updater.php:150 +msgid "OK!" +msgstr "OK!" + +#: db-updater.php:152 +msgid "ERROR!" +msgstr "FEL!" + +#: db-updater.php:160 +#, fuzzy, php-format +msgid "Finished. Performed %d update up to schema version %d." +msgid_plural "Finished. Performed %d updates up to schema version %d." +msgstr[0] "" +"Klart. %d Implementerar nu schema\n" +"\t\t\tVersion %d." +msgstr[1] "" +"Klart. %d Implementerar nu schema\n" +"\t\t\tVersion %d." + +#: db-updater.php:170 +msgid "Your database schema is from a newer version of Tiny Tiny RSS." +msgstr "Ditt databasschema är för en nyare Tiny Tiny RSS Version." + +#: db-updater.php:172 +#, php-format +msgid "Found schema version: %d, required: %d." +msgstr "Fann schemaversion: %d, behöver version: %d." + +#: db-updater.php:174 +msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +msgstr "Kan inte uppdatera schema. Uppdatera Tiny Tiny RSS på filsystemet till en ny version " + +#: errors.php:9 +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Denna sida behöver XmlHttpRequest för att kunna köras. Din webbläsare verkar inte stöda det." + +#: errors.php:12 +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Denna sida behöver cookies för att fungera. Din webbläsare verkar inte stöda det." + +#: errors.php:15 +#, fuzzy +msgid "Backend sanity check failed." +msgstr "Backend sanitetskontroll misslyckades!!" + +#: errors.php:17 +msgid "Frontend sanity check failed." +msgstr "Frontend sanitetskontroll misslyckades!!" + +#: errors.php:19 +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Fel version av datenbasschema. <a href='update.php'>Vänligen uppdatera</a>." + +#: errors.php:21 +msgid "Request not authorized." +msgstr "Inte tillåtet." + +#: errors.php:23 +msgid "No operation to perform." +msgstr "Ingen aktivtet vald." + +#: errors.php:25 +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Kunde inte visa flöde: sökning misslyckades. Vänligen kontrollera att etiketten har rätt syntax och den lokala konfigurationen" + +#: errors.php:27 +msgid "Denied. Your access level is insufficient to access this page." +msgstr "Nekad. Din behörighetsnivå är för låg för att ladda denna sida." + +#: errors.php:29 +msgid "Configuration check failed" +msgstr "Konfigurationskontroll misslyckades" + +#: errors.php:31 +#, fuzzy +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "" +"Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Bitte\n" +"\t\tinformieren Sie sich auf der offiziellen Website." + +#: errors.php:35 +msgid "SQL escaping test failed, check your database and PHP configuration" +msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" + +#: index.php:135 +#: index.php:154 +#: index.php:273 +#: prefs.php:103 +#: classes/backend.php:5 +#: classes/pref/labels.php:296 +#: classes/pref/filters.php:680 +#: classes/pref/feeds.php:1331 +#: plugins/digest/digest_body.php:63 +#: js/feedlist.js:128 +#: js/feedlist.js:448 +#: js/functions.js:420 +#: js/functions.js:808 +#: js/functions.js:1244 +#: js/functions.js:1379 +#: js/functions.js:1691 +#: js/prefs.js:86 +#: js/prefs.js:576 +#: js/prefs.js:666 +#: js/prefs.js:858 +#: js/prefs.js:1445 +#: js/prefs.js:1498 +#: js/prefs.js:1557 +#: js/prefs.js:1574 +#: js/prefs.js:1590 +#: js/prefs.js:1606 +#: js/prefs.js:1625 +#: js/prefs.js:1798 +#: js/prefs.js:1814 +#: js/tt-rss.js:475 +#: js/tt-rss.js:492 +#: js/viewfeed.js:774 +#: js/viewfeed.js:1245 +#: plugins/import_export/import_export.js:17 +#: plugins/updater/updater.js:17 +msgid "Loading, please wait..." +msgstr "Laddar, vänta..." + +#: index.php:168 +msgid "Collapse feedlist" +msgstr "Öppna kanallistan" + +#: index.php:171 +msgid "Show articles" +msgstr "Visa artiklarna" + +#: index.php:174 +msgid "Adaptive" +msgstr "Adaptivt" + +#: index.php:175 +msgid "All Articles" +msgstr "Alla artiklar" + +#: index.php:176 +#: include/functions.php:1925 +#: classes/feeds.php:106 +msgid "Starred" +msgstr "Stjärnmärkta" + +#: index.php:177 +#: include/functions.php:1926 +#: classes/feeds.php:107 +msgid "Published" +msgstr "Publicerade" + +#: index.php:178 +#: classes/feeds.php:93 +#: classes/feeds.php:105 +msgid "Unread" +msgstr "Olästa" + +#: index.php:179 +#, fuzzy +msgid "Unread First" +msgstr "Olästa" + +#: index.php:180 +msgid "With Note" +msgstr "" + +#: index.php:181 +msgid "Ignore Scoring" +msgstr "Ignorera poängsättningen" + +#: index.php:184 +msgid "Sort articles" +msgstr "Sortera artiklarna" + +#: index.php:187 +msgid "Default" +msgstr "Standard" + +#: index.php:188 +msgid "Newest first" +msgstr "" + +#: index.php:189 +msgid "Oldest first" +msgstr "" + +#: index.php:192 +msgid "Mark feed as read" +msgstr "Flagga kanal som läst" + +#: index.php:195 +#: index.php:237 +#: include/functions.php:1915 +#: include/localized_schema.php:10 +#: classes/feeds.php:111 +#: classes/feeds.php:441 +#: js/FeedTree.js:128 +#: js/FeedTree.js:156 +#: plugins/digest/digest.js:647 +msgid "Mark as read" +msgstr "Markera som lästa" + +#: index.php:196 +#: include/functions.php:1811 +#: include/functions.php:1923 +msgid "All articles" +msgstr "Alla artiklar" + +#: index.php:197 +msgid "Older than one day" +msgstr "" + +#: index.php:198 +msgid "Older than one week" +msgstr "" + +#: index.php:199 +msgid "Older than two weeks" +msgstr "" + +#: index.php:214 +msgid "Communication problem with server." +msgstr "Kommunikationsproblem med servern." + +#: index.php:222 +msgid "New version of Tiny Tiny RSS is available!" +msgstr "Ny version av Tiny Tiny RSS finns att ladda ner!" + +#: index.php:227 +msgid "Actions..." +msgstr "Aktiviteter..." + +#: index.php:229 +msgid "Preferences..." +msgstr "Inställningar..." + +#: index.php:230 +msgid "Search..." +msgstr "Sök..." + +#: index.php:231 +msgid "Feed actions:" +msgstr "Kanalaktiviteter:" + +#: index.php:232 +#: classes/handler/public.php:578 +msgid "Subscribe to feed..." +msgstr "Prenumerera på kanal..." + +#: index.php:233 +msgid "Edit this feed..." +msgstr "Redigera kanal..." + +#: index.php:234 +msgid "Rescore feed" +msgstr "Beräkna kanalens poäng på nytt" + +#: index.php:235 +#: classes/pref/feeds.php:717 +#: classes/pref/feeds.php:1304 +#: js/PrefFeedTree.js:73 +msgid "Unsubscribe" +msgstr "Avbeställ kanalen" + +#: index.php:236 +msgid "All feeds:" +msgstr "Alla kanaler:" + +#: index.php:238 +msgid "(Un)hide read feeds" +msgstr "Dölj lästa kanaler" + +#: index.php:239 +msgid "Other actions:" +msgstr "Andra aktiviteter:" + +#: index.php:241 +msgid "Switch to digest..." +msgstr "Byt läge till sammanfattning..." + +#: index.php:243 +msgid "Show tag cloud..." +msgstr "Visa taggmoln..." + +#: index.php:244 +#: include/functions.php:1901 +msgid "Toggle widescreen mode" +msgstr "Växla widescreenläge" + +#: index.php:245 +msgid "Select by tags..." +msgstr "Välj artiklar från tagg..." + +#: index.php:246 +msgid "Create label..." +msgstr "Skapa etikett..." + +#: index.php:247 +msgid "Create filter..." +msgstr "Skapa filter..." + +#: index.php:248 +msgid "Keyboard shortcuts help" +msgstr "Hjälp för kortkommandon..." + +#: index.php:257 +#: plugins/digest/digest_body.php:77 +#: plugins/mobile/mobile-functions.php:62 +#: plugins/mobile/mobile-functions.php:237 +msgid "Logout" +msgstr "Utloggning" + +#: prefs.php:36 +#: prefs.php:121 +#: include/functions.php:1928 +#: classes/pref/prefs.php:377 +msgid "Preferences" +msgstr "Inställningar" + +#: prefs.php:112 +msgid "Keyboard shortcuts" +msgstr "Kortkommandon" + +#: prefs.php:113 +msgid "Exit preferences" +msgstr "Lämna inställningarna" + +#: prefs.php:124 +#: classes/pref/feeds.php:107 +#: classes/pref/feeds.php:1209 +#: classes/pref/feeds.php:1272 +msgid "Feeds" +msgstr "Kanaler" + +#: prefs.php:127 +#: classes/pref/filters.php:156 +msgid "Filters" +msgstr "Filter" + +#: prefs.php:130 +#: include/functions.php:1118 +#: include/functions.php:1754 +#: classes/pref/labels.php:90 +#: plugins/mobile/mobile-functions.php:198 +msgid "Labels" +msgstr "Etiketter" + +#: prefs.php:134 +msgid "Users" +msgstr "Användare" + +#: register.php:186 +#: include/login_form.php:238 +msgid "Create new account" +msgstr "Skapa ett nytt konto" + +#: register.php:192 +msgid "New user registrations are administratively disabled." +msgstr "Nyregistrering av användare är inaktiverat." + +#: register.php:217 +msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent." +msgstr "Ditt tillfälliga lösenords skickas till angiven e-postadress. Om du inte loggar in inom 24 timmar kommer kontot automatiskt att raderas" + +#: register.php:223 +msgid "Desired login:" +msgstr "Önskat användarnamn:" + +#: register.php:226 +msgid "Check availability" +msgstr "Kontrollera tillgänglighet" + +#: register.php:228 +#: classes/handler/public.php:776 +msgid "Email:" +msgstr "E-post:" + +#: register.php:231 +#: classes/handler/public.php:781 +msgid "How much is two plus two:" +msgstr "Hur mycket är två plus två?:" + +#: register.php:234 +msgid "Submit registration" +msgstr "Registrera" + +#: register.php:252 +msgid "Your registration information is incomplete." +msgstr "Fll i samtliga uppgifter." + +#: register.php:267 +msgid "Sorry, this username is already taken." +msgstr "Användarnamnet är tyvärr redan upptaget." + +#: register.php:286 +msgid "Registration failed." +msgstr "Registrering misslyckades." + +#: register.php:333 +msgid "Account created successfully." +msgstr "Konto skapat." + +#: register.php:355 +msgid "New user registrations are currently closed." +msgstr "Nyregistrering av användare är tillfälligt avbruten." + +#: update.php:55 +msgid "Tiny Tiny RSS data update script." +msgstr "Skript för att uppdatera Tiny Tiny RSS." + +#: include/digest.php:109 +#: include/functions.php:1127 +#: include/functions.php:1655 +#: include/functions.php:1740 +#: include/functions.php:1762 +#: classes/opml.php:416 +#: classes/pref/feeds.php:222 +msgid "Uncategorized" +msgstr "Okategoriserat" + +#: include/feedbrowser.php:83 +#, fuzzy, php-format +msgid "%d archived article" +msgid_plural "%d archived articles" +msgstr[0] "%d arkiverade artiklar" +msgstr[1] "%d arkiverade artiklar" + +#: include/feedbrowser.php:107 +msgid "No feeds found." +msgstr "Inga kanaler funna." + +#: include/functions.php:1116 +#: include/functions.php:1752 +#: plugins/mobile/mobile-functions.php:171 +msgid "Special" +msgstr "Specialkanaler" + +#: include/functions.php:1604 +#: classes/feeds.php:1101 +#: classes/pref/filters.php:427 +msgid "All feeds" +msgstr "Alla kanaler" + +#: include/functions.php:1805 +msgid "Starred articles" +msgstr "Stjärnmärkta artiklar" + +#: include/functions.php:1807 +msgid "Published articles" +msgstr "Publicerade artiklar" + +#: include/functions.php:1809 +msgid "Fresh articles" +msgstr "Nya artiklar" + +#: include/functions.php:1813 +msgid "Archived articles" +msgstr "Arkiverade artiklar" + +#: include/functions.php:1815 +msgid "Recently read" +msgstr "Nyligen lästa" + +#: include/functions.php:1878 +msgid "Navigation" +msgstr "Navigation" + +#: include/functions.php:1879 +msgid "Open next feed" +msgstr "Öppna nästa kanal" + +#: include/functions.php:1880 +msgid "Open previous feed" +msgstr "Öppna föregående kanal" + +#: include/functions.php:1881 +msgid "Open next article" +msgstr "Öppna näst artikel" + +#: include/functions.php:1882 +msgid "Open previous article" +msgstr "Öppna föregående artikel" + +#: include/functions.php:1883 +msgid "Open next article (don't scroll long articles)" +msgstr "Öppna nästa artikel (skrolla inte långa artiklar)" + +#: include/functions.php:1884 +msgid "Open previous article (don't scroll long articles)" +msgstr "Öppna föregående artikel (skrolla inte långa artiklar)" + +#: include/functions.php:1885 +msgid "Show search dialog" +msgstr "Visa sökdialogen" + +#: include/functions.php:1886 +msgid "Article" +msgstr "Artikel" + +#: include/functions.php:1887 +msgid "Toggle starred" +msgstr "Växla stjärnmarkering" + +#: include/functions.php:1888 +#: js/viewfeed.js:1908 +msgid "Toggle published" +msgstr "Växla publicering" + +#: include/functions.php:1889 +#: js/viewfeed.js:1886 +msgid "Toggle unread" +msgstr "Växla olästa" + +#: include/functions.php:1890 +msgid "Edit tags" +msgstr "Redigera taggar" + +#: include/functions.php:1891 +#, fuzzy +msgid "Dismiss selected" +msgstr "Avvisa markerade" + +#: include/functions.php:1892 +#, fuzzy +msgid "Dismiss read" +msgstr "Avvisa lästa" + +#: include/functions.php:1893 +msgid "Open in new window" +msgstr "Öppna i nytt fönster" + +#: include/functions.php:1894 +#: js/viewfeed.js:1927 +msgid "Mark below as read" +msgstr "Märk nedanstående som lästa" + +#: include/functions.php:1895 +#: js/viewfeed.js:1921 +msgid "Mark above as read" +msgstr "Märk ovanstående som lästa" + +#: include/functions.php:1896 +msgid "Scroll down" +msgstr "Skrolla ned" + +#: include/functions.php:1897 +msgid "Scroll up" +msgstr "Skrolla upp" + +#: include/functions.php:1898 +#, fuzzy +msgid "Select article under cursor" +msgstr "Välj markerad artikel" + +#: include/functions.php:1899 +msgid "Email article" +msgstr "Skicka artikel med e-post" + +#: include/functions.php:1900 +#, fuzzy +msgid "Close/collapse article" +msgstr "Stäng artikel" + +#: include/functions.php:1902 +#: plugins/embed_original/init.php:33 +#, fuzzy +msgid "Toggle embed original" +msgstr "Växla visa orginal" + +#: include/functions.php:1903 +msgid "Article selection" +msgstr "Artikelval" + +#: include/functions.php:1904 +msgid "Select all articles" +msgstr "Välj alla" + +#: include/functions.php:1905 +msgid "Select unread" +msgstr "Välj olästa" + +#: include/functions.php:1906 +msgid "Select starred" +msgstr "Välj markerade" + +#: include/functions.php:1907 +msgid "Select published" +msgstr "Välj publicerade" + +#: include/functions.php:1908 +msgid "Invert selection" +msgstr "Invertera val" + +#: include/functions.php:1909 +msgid "Deselect everything" +msgstr "Avmarkera allt" + +#: include/functions.php:1910 +#: classes/pref/feeds.php:521 +#: classes/pref/feeds.php:754 +msgid "Feed" +msgstr "Kanal" + +#: include/functions.php:1911 +msgid "Refresh current feed" +msgstr "Uppdatera aktuell kanal" + +#: include/functions.php:1912 +msgid "Un/hide read feeds" +msgstr "Växla visning av lästa kanaler" + +#: include/functions.php:1913 +#: classes/pref/feeds.php:1275 +msgid "Subscribe to feed" +msgstr "Prenumerera på kanal" + +#: include/functions.php:1914 +#: js/FeedTree.js:135 +#: js/PrefFeedTree.js:67 +msgid "Edit feed" +msgstr "Redigera kanal" + +#: include/functions.php:1916 +#, fuzzy +msgid "Reverse headlines" +msgstr "Omvänd sortering på rubrik" + +#: include/functions.php:1917 +msgid "Debug feed update" +msgstr "Debugga kanaluppdatering" + +#: include/functions.php:1918 +#: js/FeedTree.js:178 +msgid "Mark all feeds as read" +msgstr "Märk alla kanaler som lästa" + +#: include/functions.php:1919 +msgid "Un/collapse current category" +msgstr "Öppna/stäng aktuell kategori:" + +#: include/functions.php:1920 +msgid "Toggle combined mode" +msgstr "Växla komboläge" + +#: include/functions.php:1921 +#, fuzzy +msgid "Toggle auto expand in combined mode" +msgstr "Växla komboläge" + +#: include/functions.php:1922 +msgid "Go to" +msgstr "Gå till" + +#: include/functions.php:1924 +msgid "Fresh" +msgstr "Nya" + +#: include/functions.php:1927 +#: js/tt-rss.js:431 +#: js/tt-rss.js:584 +msgid "Tag cloud" +msgstr "Taggmoln" + +#: include/functions.php:1929 +msgid "Other" +msgstr "Övriga" + +#: include/functions.php:1930 +#: classes/pref/labels.php:281 +msgid "Create label" +msgstr "Skapa etikett" + +#: include/functions.php:1931 +#: classes/pref/filters.php:654 +msgid "Create filter" +msgstr "Skapa filter" + +#: include/functions.php:1932 +msgid "Un/collapse sidebar" +msgstr "Växla sidomeny" + +#: include/functions.php:1933 +msgid "Show help dialog" +msgstr "Hjälpfönster" + +#: include/functions.php:2418 +#, php-format +msgid "Search results: %s" +msgstr "Sökresultat: %s" + +#: include/functions.php:2909 +#: js/viewfeed.js:2014 +msgid "Click to play" +msgstr "Klicka för att starta" + +#: include/functions.php:2910 +#: js/viewfeed.js:2013 +msgid "Play" +msgstr "Start" + +#: include/functions.php:3027 +msgid " - " +msgstr " - " + +#: include/functions.php:3049 +#: include/functions.php:3343 +#: classes/rpc.php:408 +msgid "no tags" +msgstr "Inga taggar" + +#: include/functions.php:3059 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Redigera taggar för denna artikel" + +#: include/functions.php:3088 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Ursprungligen från:" + +#: include/functions.php:3101 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Kanal-URL" + +#: include/functions.php:3132 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1012 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:409 +#: plugins/import_export/init.php:432 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Stäng fönstret" + +#: include/functions.php:3368 +msgid "(edit note)" +msgstr "(Redigera notering)" + +#: include/functions.php:3601 +msgid "unknown type" +msgstr "Okänd typ" + +#: include/functions.php:3657 +msgid "Attachments" +msgstr "Bilagor" + +#: include/localized_schema.php:3 +msgid "Title" +msgstr "Titel" + +#: include/localized_schema.php:4 +msgid "Title or Content" +msgstr "Titel eller innehåll" + +#: include/localized_schema.php:5 +msgid "Link" +msgstr "Länk" + +#: include/localized_schema.php:6 +msgid "Content" +msgstr "Innehåll" + +#: include/localized_schema.php:7 +msgid "Article Date" +msgstr "Artikeldatum" + +#: include/localized_schema.php:9 +msgid "Delete article" +msgstr "Radera artikel" + +#: include/localized_schema.php:11 +msgid "Set starred" +msgstr "Stjärnmarkera" + +#: include/localized_schema.php:12 +#: js/viewfeed.js:483 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publicera artikel" + +#: include/localized_schema.php:13 +msgid "Assign tags" +msgstr "Tagga" + +#: include/localized_schema.php:14 +#: js/viewfeed.js:1978 +msgid "Assign label" +msgstr "Ange etikett" + +#: include/localized_schema.php:15 +msgid "Modify score" +msgstr "Redigera poäng" + +#: include/localized_schema.php:17 +msgid "General" +msgstr "Generellt" + +#: include/localized_schema.php:18 +msgid "Interface" +msgstr "Interface" + +#: include/localized_schema.php:19 +msgid "Advanced" +msgstr "Avancerat" + +#: include/localized_schema.php:21 +msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +msgstr "Detta är användbart när du läser flera sammanslagna kanaler som har delvis samma användarbas. När inaktiverad så visas samma artikel från flera olika kanaler endast en gång." + +#: include/localized_schema.php:22 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Visa expanderad lista med artiklar, istället för olika visningar för rubriker och artikeltext" + +#: include/localized_schema.php:23 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Öppna automatiskt nästa kanal som har olästa artiklar efter att du markerat en som läst" + +#: include/localized_schema.php:24 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Skicka dagliga sammanställningar över nya (och olästa) rubriker till din e-post" + +#: include/localized_schema.php:25 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Markera artiklar som lästa automatisk när du skrollar artikellistan" + +#: include/localized_schema.php:26 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Ta bort alla utom de vanligast HTML-taggarna från artiklarna." + +#: include/localized_schema.php:27 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Använd inte följande taggar för automatisk taggning av artiklar (komma-separerad lista" + +#: include/localized_schema.php:28 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" + +#: include/localized_schema.php:29 +msgid "Customize CSS stylesheet to your liking" +msgstr "Anpassa CSS Stylesheet" + +#: include/localized_schema.php:30 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Sortera efer kanaldatum istället för efter importdatum" + +#: include/localized_schema.php:31 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Registerar ditt SSL klientcertifikat i tt-rss" + +#: include/localized_schema.php:32 +msgid "Uses UTC timezone" +msgstr "Använd UTC-tid" + +#: include/localized_schema.php:33 +msgid "Select one of the available CSS themes" +msgstr "" + +#: include/localized_schema.php:34 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Radera artikel efter X dagar (0 - deaktiverar)" + +#: include/localized_schema.php:35 +msgid "Default interval between feed updates" +msgstr "Standardintervall mellan kanaluppdateringar" + +#: include/localized_schema.php:36 +msgid "Amount of articles to display at once" +msgstr "Visa XX artiklar per gång" + +#: include/localized_schema.php:37 +msgid "Allow duplicate posts" +msgstr "Tillåt dubbletter" + +#: include/localized_schema.php:38 +msgid "Enable feed categories" +msgstr "Aktivera kategorier" + +#: include/localized_schema.php:39 +msgid "Show content preview in headlines list" +msgstr "Förhandsgranska text i rubriklistan" + +#: include/localized_schema.php:40 +msgid "Short date format" +msgstr "Korta datum" + +#: include/localized_schema.php:41 +msgid "Long date format" +msgstr "Långa datum" + +#: include/localized_schema.php:42 +msgid "Combined feed display" +msgstr "Kombinerad kanalvisning" + +#: include/localized_schema.php:43 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Dölj feeds utan olästa artiklar" + +#: include/localized_schema.php:44 +msgid "On catchup show next feed" +msgstr "Visa nästa kanal när vi är ikapp" + +#: include/localized_schema.php:45 +msgid "Sort feeds by unread articles count" +msgstr "Sortera kanal efter antal olästa artiklar" + +#: include/localized_schema.php:46 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Omvänd sortering (äldsta överst)" + +#: include/localized_schema.php:47 +msgid "Enable e-mail digest" +msgstr "Aktivera e-postsammanfattning" + +#: include/localized_schema.php:48 +msgid "Confirm marking feed as read" +msgstr "Bekräfta markera kanal som läst" + +#: include/localized_schema.php:49 +msgid "Automatically mark articles as read" +msgstr "Märk artiklar som lästa automatiskt" + +#: include/localized_schema.php:50 +msgid "Strip unsafe tags from articles" +msgstr "Ta bort osäkra taggar från artiklar" + +#: include/localized_schema.php:51 +msgid "Blacklisted tags" +msgstr "Svartlistade taggar" + +#: include/localized_schema.php:52 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maxålder för nya artiklar (i timmar)" + +#: include/localized_schema.php:53 +msgid "Mark articles in e-mail digest as read" +msgstr "Flagga artiklar i e-postsammanfattning som lästa" + +#: include/localized_schema.php:54 +msgid "Automatically expand articles in combined mode" +msgstr "Expandera artiklar automatiskt i kombinerat läge" + +#: include/localized_schema.php:55 +msgid "Purge unread articles" +msgstr "Radera olästa artiklar" + +#: include/localized_schema.php:56 +msgid "Show special feeds when hiding read feeds" +msgstr "Visa specialkanaler när lästa feeds är dolda" + +#: include/localized_schema.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Gruppera rubriker i virtuella kanaler" + +#: include/localized_schema.php:58 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Baka inte in bilder i artiklar" + +#: include/localized_schema.php:59 +msgid "Enable external API" +msgstr "Aktivera externt API" + +#: include/localized_schema.php:60 +msgid "User timezone" +msgstr "Användarens tidszon" + +#: include/localized_schema.php:61 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Anpassa stylesheet" + +#: include/localized_schema.php:62 +msgid "Sort headlines by feed date" +msgstr "Sortera rubriker efter kanalens datum" + +#: include/localized_schema.php:63 +msgid "Login with an SSL certificate" +msgstr "Logga in med SSL-certifikat" + +#: include/localized_schema.php:64 +msgid "Try to send digests around specified time" +msgstr "Skicka sammanfattningar kring klockan" + +#: include/localized_schema.php:65 +msgid "Assign articles to labels automatically" +msgstr "Ange etiketter för artiklar per automatik" + +#: include/localized_schema.php:66 +msgid "Select theme" +msgstr "Välj tema" + +#: include/login_form.php:183 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 +#: plugins/mobile/login_form.php:40 +msgid "Login:" +msgstr "Användarnamn:" + +#: include/login_form.php:192 +#: classes/handler/public.php:486 +#: plugins/mobile/login_form.php:45 +msgid "Password:" +msgstr "Lösenord:" + +#: include/login_form.php:197 +#, fuzzy +msgid "I forgot my password" +msgstr "Felaktigt lösenord" + +#: include/login_form.php:201 +#: classes/handler/public.php:489 +msgid "Language:" +msgstr "Språk:" + +#: include/login_form.php:209 +msgid "Profile:" +msgstr "Profil:" + +#: include/login_form.php:213 +#: classes/handler/public.php:233 +#: classes/rpc.php:64 +#: classes/pref/prefs.php:948 +msgid "Default profile" +msgstr "Standardprofil" + +#: include/login_form.php:221 +msgid "Use less traffic" +msgstr "Använd mindre datatrafik" + +#: include/login_form.php:229 +msgid "Remember me" +msgstr "" + +#: include/login_form.php:235 +#: classes/handler/public.php:499 +#: plugins/mobile/login_form.php:28 +msgid "Log in" +msgstr "Logga in" + +#: include/sessions.php:55 +msgid "Session failed to validate (incorrect IP)" +msgstr "Kunde inte verifiera session (fel IP)" + +#: classes/article.php:25 +msgid "Article not found." +msgstr "Hittar inte artikel." + +#: classes/article.php:179 +msgid "Tags for this article (separated by commas):" +msgstr "Taggar för denna artikel (kommaseparerade):" + +#: classes/article.php:204 +#: classes/pref/users.php:176 +#: classes/pref/labels.php:79 +#: classes/pref/filters.php:405 +#: classes/pref/prefs.php:894 +#: classes/pref/feeds.php:733 +#: classes/pref/feeds.php:881 +#: plugins/nsfw/init.php:86 +#: plugins/note/init.php:53 +#: plugins/instances/init.php:248 +msgid "Save" +msgstr "Spara" + +#: classes/article.php:206 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 +#: classes/feeds.php:1028 +#: classes/feeds.php:1080 +#: classes/feeds.php:1140 +#: classes/pref/users.php:178 +#: classes/pref/labels.php:81 +#: classes/pref/filters.php:408 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:880 +#: classes/pref/filters.php:947 +#: classes/pref/prefs.php:896 +#: classes/pref/feeds.php:734 +#: classes/pref/feeds.php:884 +#: classes/pref/feeds.php:1797 +#: plugins/mail/init.php:131 +#: plugins/note/init.php:55 +#: plugins/instances/init.php:251 +#: plugins/instances/init.php:440 +msgid "Cancel" +msgstr "Avbryt" + +#: classes/handler/public.php:424 +#: plugins/bookmarklets/init.php:38 +msgid "Share with Tiny Tiny RSS" +msgstr "Dela med Tiny Tiny RSS" + +#: classes/handler/public.php:432 +msgid "Title:" +msgstr "Titel:" + +#: classes/handler/public.php:434 +#: classes/pref/feeds.php:538 +#: classes/pref/feeds.php:769 +#: plugins/instances/init.php:215 +#: plugins/instances/init.php:405 +msgid "URL:" +msgstr "URL:" + +#: classes/handler/public.php:436 +msgid "Content:" +msgstr "Innehåll:" + +#: classes/handler/public.php:438 +msgid "Labels:" +msgstr "Etiketter:" + +#: classes/handler/public.php:457 +msgid "Shared article will appear in the Published feed." +msgstr "Delad artikel visas i 'Publicerade artiklar'." + +#: classes/handler/public.php:459 +msgid "Share" +msgstr "Dela" + +#: classes/handler/public.php:481 +msgid "Not logged in" +msgstr "Inte inloggad" + +#: classes/handler/public.php:548 +msgid "Incorrect username or password" +msgstr "Felaktig inloggning" + +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 +#, php-format +msgid "Already subscribed to %s." +msgstr "Du prenumererar redan på %s." + +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "Prenumererar på %s." + +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 +#, php-format +msgid "Could not subscribe to %s." +msgstr "Kunde inte prenumerera på %s." + +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 +#, php-format +msgid "No feeds found in %s." +msgstr "Hittade inga kanaler på %s." + +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 +msgid "Multiple feed URLs found." +msgstr "Hittade flera kanal-URLs." + +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 +#, php-format +msgid "Could not subscribe to %s.
Can't download the Feed URL." +msgstr "Kunde inte prenumerera på %s
Kan inte ladda ned URL " + +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 +msgid "Subscribe to selected feed" +msgstr "Prenumerera på vald kanal" + +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 +msgid "Edit subscription options" +msgstr "Redigera prenumerationsinställningar" + +#: classes/handler/public.php:758 +#, fuzzy +msgid "Password recovery" +msgstr "Lösenord" + +#: classes/handler/public.php:764 +msgid "You will need to provide valid account name and email. New password will be sent on your email address." +msgstr "" + +#: classes/handler/public.php:786 +#: classes/pref/users.php:360 +msgid "Reset password" +msgstr "Återställ lösenord" + +#: classes/handler/public.php:796 +msgid "Some of the required form parameters are missing or incorrect." +msgstr "" + +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 +#: plugins/digest/digest_body.php:69 +#, fuzzy +msgid "Go back" +msgstr "Åter" + +#: classes/handler/public.php:822 +msgid "Sorry, login and email combination not found." +msgstr "" + +#: classes/dlg.php:16 +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Om du har importerat etiketter eller filter måste du ladda om inställningarna för att se uppdateringarna" + +#: classes/dlg.php:48 +msgid "Your Public OPML URL is:" +msgstr "Din publika OPML-URL är:" + +#: classes/dlg.php:57 +#: classes/dlg.php:214 +msgid "Generate new URL" +msgstr "Skapa ny URL" + +#: classes/dlg.php:71 +msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner." +msgstr "Uppdateringsdemon är aktiverad i konfigurationen, men processen körs inte. Detta förhindrar alla kanaler från att uppdateras. Starta om processen eller kontakta den som administrerar instansen." + +#: classes/dlg.php:75 +#: classes/dlg.php:84 +msgid "Last update:" +msgstr "Senaste uppdatering:" + +#: classes/dlg.php:80 +msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner." +msgstr "Uppdateringsprocessen tar för lång tid på sig att uppdatera. Detta kan indikera en låsning eller hängning. Kontrollera processen eller kontakta administratören." + +#: classes/dlg.php:166 +msgid "Match:" +msgstr "Sök: " + +#: classes/dlg.php:168 +msgid "Any" +msgstr "Alla" + +#: classes/dlg.php:171 +msgid "All tags." +msgstr "Alla taggar." + +#: classes/dlg.php:173 +msgid "Which Tags?" +msgstr "Vilka taggar?" + +#: classes/dlg.php:186 +msgid "Display entries" +msgstr "Visa " + +#: classes/dlg.php:205 +msgid "You can view this feed as RSS using the following URL:" +msgstr "Du kan se denna kanal som RSS på följande URL:" + +#: classes/dlg.php:233 +#: plugins/updater/init.php:327 +#, php-format +msgid "New version of Tiny Tiny RSS is available (%s)." +msgstr "Ny version av Tiny Tiny RSS tillgänglig(%s)." + +#: classes/dlg.php:241 +msgid "You can update using built-in updater in the Preferences or by using update.php" +msgstr "Du kan uppdatera med din inbyggda uppdateraren under Inställningar eller med update.php" + +#: classes/dlg.php:245 +#: plugins/updater/init.php:331 +msgid "See the release notes" +msgstr "" + +#: classes/dlg.php:247 +msgid "Download" +msgstr "Ladda ned" + +#: classes/dlg.php:255 +msgid "Error receiving version information or no new version available." +msgstr "Fel i versionsinformation eller ingen ny version" + +#: classes/feeds.php:68 +msgid "Visit the website" +msgstr "Besök den officiella webbsiten" + +#: classes/feeds.php:83 +msgid "View as RSS feed" +msgstr "Visa RSS-kanal" + +#: classes/feeds.php:84 +#: classes/feeds.php:138 +#: classes/pref/feeds.php:1440 +msgid "View as RSS" +msgstr "Visa som RSS" + +#: classes/feeds.php:91 +msgid "Select:" +msgstr "Markera:" + +#: classes/feeds.php:92 +#: classes/pref/users.php:345 +#: classes/pref/labels.php:275 +#: classes/pref/filters.php:282 +#: classes/pref/filters.php:330 +#: classes/pref/filters.php:648 +#: classes/pref/filters.php:737 +#: classes/pref/filters.php:764 +#: classes/pref/prefs.php:908 +#: classes/pref/feeds.php:1266 +#: classes/pref/feeds.php:1536 +#: classes/pref/feeds.php:1606 +#: plugins/instances/init.php:290 +msgid "All" +msgstr "Alla" + +#: classes/feeds.php:94 +msgid "Invert" +msgstr "Invertera" + +#: classes/feeds.php:95 +#: classes/pref/users.php:347 +#: classes/pref/labels.php:277 +#: classes/pref/filters.php:284 +#: classes/pref/filters.php:332 +#: classes/pref/filters.php:650 +#: classes/pref/filters.php:739 +#: classes/pref/filters.php:766 +#: classes/pref/prefs.php:910 +#: classes/pref/feeds.php:1268 +#: classes/pref/feeds.php:1538 +#: classes/pref/feeds.php:1608 +#: plugins/instances/init.php:292 +msgid "None" +msgstr "Ingen" + +#: classes/feeds.php:101 +msgid "More..." +msgstr "Mer..." + +#: classes/feeds.php:103 +msgid "Selection toggle:" +msgstr "Invertera val:" + +#: classes/feeds.php:109 +msgid "Selection:" +msgstr "Markering:" + +#: classes/feeds.php:112 +msgid "Set score" +msgstr "Ange poäng" + +#: classes/feeds.php:115 +msgid "Archive" +msgstr "Arkiv" + +#: classes/feeds.php:117 +msgid "Move back" +msgstr "Åter" + +#: classes/feeds.php:118 +#: classes/pref/filters.php:291 +#: classes/pref/filters.php:339 +#: classes/pref/filters.php:746 +#: classes/pref/filters.php:773 +msgid "Delete" +msgstr "Radera" + +#: classes/feeds.php:125 +#: classes/feeds.php:130 +#: plugins/mailto/init.php:28 +#: plugins/mail/init.php:28 +msgid "Forward by email" +msgstr "Skicka med e-post" + +#: classes/feeds.php:134 +msgid "Feed:" +msgstr "Kanal:" + +#: classes/feeds.php:205 +#: classes/feeds.php:831 +msgid "Feed not found." +msgstr "Hittar inte kanal." + +#: classes/feeds.php:388 +#, fuzzy, php-format +msgid "Imported at %s" +msgstr "Importera" + +#: classes/feeds.php:535 +msgid "mark as read" +msgstr "markera som läst" + +#: classes/feeds.php:586 +msgid "Collapse article" +msgstr "Stäng artikel" + +#: classes/feeds.php:732 +msgid "No unread articles found to display." +msgstr "Hittade inga olästa artiklar." + +#: classes/feeds.php:735 +msgid "No updated articles found to display." +msgstr "Hittade inga uppdaterade artiklar." + +#: classes/feeds.php:738 +msgid "No starred articles found to display." +msgstr "Hittade inga stjärnmarkerade artiklar." + +#: classes/feeds.php:742 +msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +msgstr "Hittade inga artiklar att visa. Du kan ge artiklar etiketter manuellt (Se aktiviteter-menyn ovan) eller genom att använd ett filter" + +#: classes/feeds.php:744 +msgid "No articles found to display." +msgstr "Hittade inga artiklar att visa." + +#: classes/feeds.php:759 +#: classes/feeds.php:923 +#, php-format +msgid "Feeds last updated at %s" +msgstr "Kanaler senast uppdaterade %s" + +#: classes/feeds.php:769 +#: classes/feeds.php:933 +msgid "Some feeds have update errors (click for details)" +msgstr "Vissa kanaler har uppdateringsfel (klicka för detaljer)" + +#: classes/feeds.php:913 +msgid "No feed selected." +msgstr "Ingen kanal vald." + +#: classes/feeds.php:966 +#: classes/feeds.php:974 +msgid "Feed or site URL" +msgstr "URL för kanal eller webbplats" + +#: classes/feeds.php:980 +#: classes/pref/feeds.php:560 +#: classes/pref/feeds.php:782 +#: classes/pref/feeds.php:1761 +msgid "Place in category:" +msgstr "Lägg i kategori:" + +#: classes/feeds.php:988 +msgid "Available feeds" +msgstr "Tillgängliga kanaler" + +#: classes/feeds.php:1000 +#: classes/pref/users.php:139 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:818 +msgid "Authentication" +msgstr "Autenticering" + +#: classes/feeds.php:1004 +#: classes/pref/users.php:402 +#: classes/pref/feeds.php:596 +#: classes/pref/feeds.php:822 +#: classes/pref/feeds.php:1775 +msgid "Login" +msgstr "Användarnamn" + +#: classes/feeds.php:1007 +#: classes/pref/prefs.php:202 +#: classes/pref/feeds.php:602 +#: classes/pref/feeds.php:828 +#: classes/pref/feeds.php:1778 +msgid "Password" +msgstr "Lösenord" + +#: classes/feeds.php:1017 +msgid "This feed requires authentication." +msgstr "Denna kanal kräver autenticering." + +#: classes/feeds.php:1022 +#: classes/feeds.php:1078 +#: classes/pref/feeds.php:1796 +msgid "Subscribe" +msgstr "Prenumerera" + +#: classes/feeds.php:1025 +msgid "More feeds" +msgstr "Fler kanaler" + +#: classes/feeds.php:1048 +#: classes/feeds.php:1139 +#: classes/pref/users.php:332 +#: classes/pref/filters.php:641 +#: classes/pref/feeds.php:1259 +#: js/tt-rss.js:170 +msgid "Search" +msgstr "Sök" + +#: classes/feeds.php:1052 +msgid "Popular feeds" +msgstr "Populära kanaler" + +#: classes/feeds.php:1053 +msgid "Feed archive" +msgstr "Kanalarkiv" + +#: classes/feeds.php:1056 +msgid "limit:" +msgstr "Gräns:" + +#: classes/feeds.php:1079 +#: classes/pref/users.php:358 +#: classes/pref/labels.php:284 +#: classes/pref/filters.php:398 +#: classes/pref/filters.php:667 +#: classes/pref/feeds.php:707 +#: plugins/instances/init.php:297 +msgid "Remove" +msgstr "Ta bort" + +#: classes/feeds.php:1090 +msgid "Look for" +msgstr "Sök efter" + +#: classes/feeds.php:1098 +msgid "Limit search to:" +msgstr "Begränsa sökning till:" + +#: classes/feeds.php:1114 +msgid "This feed" +msgstr "Denna kanal" + +#: classes/backend.php:33 +msgid "Other interface tips are available in the Tiny Tiny RSS wiki." +msgstr "Fler tips finns i wikin." + +#: classes/backend.php:38 +msgid "Keyboard Shortcuts" +msgstr "Kortkommandon" + +#: classes/backend.php:61 +msgid "Shift" +msgstr "Shift" + +#: classes/backend.php:64 +msgid "Ctrl" +msgstr "Ctrl" + +#: classes/backend.php:99 +msgid "Help topic not found." +msgstr "Hittade inte något hjälpavsnitt." + +#: classes/opml.php:28 +#: classes/opml.php:33 +msgid "OPML Utility" +msgstr "OPML verktyg" + +#: classes/opml.php:37 +msgid "Importing OPML..." +msgstr "Importera OPML..." + +#: classes/opml.php:41 +msgid "Return to preferences" +msgstr "Åter till inställningarna" + +#: classes/opml.php:270 +#, php-format +msgid "Adding feed: %s" +msgstr "Lägger till kanal: %s" + +#: classes/opml.php:281 +#, php-format +msgid "Duplicate feed: %s" +msgstr "Kanaldubblett: %s" + +#: classes/opml.php:295 +#, php-format +msgid "Adding label %s" +msgstr "Lägger till etikett %s" + +#: classes/opml.php:298 +#, php-format +msgid "Duplicate label: %s" +msgstr "Etikettsdubblett: %s" + +#: classes/opml.php:310 +#, php-format +msgid "Setting preference key %s to %s" +msgstr "Sätter %s till %s" + +#: classes/opml.php:339 +msgid "Adding filter..." +msgstr "Lägger till filter..." + +#: classes/opml.php:416 +#, php-format +msgid "Processing category: %s" +msgstr "Bearbetar kategori: %s" + +#: classes/opml.php:468 +msgid "Error: please upload OPML file." +msgstr "Fel: vänligen ladda upp en OPMLfil." + +#: classes/opml.php:475 +#: plugins/googlereaderimport/init.php:161 +msgid "Error while parsing document." +msgstr "Fel i tolkning av dokument." + +#: classes/pref/users.php:6 +#: plugins/instances/init.php:157 +msgid "Your access level is insufficient to open this tab." +msgstr "Du har inte rättigheter att öppna denna flik" + +#: classes/pref/users.php:34 +msgid "User not found" +msgstr "Hittade inte användare" + +#: classes/pref/users.php:53 +#: classes/pref/users.php:404 +msgid "Registered" +msgstr "Registrerad" + +#: classes/pref/users.php:54 +msgid "Last logged in" +msgstr "Senste inloggning" + +#: classes/pref/users.php:61 +msgid "Subscribed feeds count" +msgstr "Antal prenumererade kanaler" + +#: classes/pref/users.php:65 +msgid "Subscribed feeds" +msgstr "Prenumererade kanaler" + +#: classes/pref/users.php:142 +msgid "Access level: " +msgstr "Behörighetsnivå: " + +#: classes/pref/users.php:155 +msgid "Change password to" +msgstr "Nytt lösenord" + +#: classes/pref/users.php:161 +#: classes/pref/feeds.php:610 +#: classes/pref/feeds.php:834 +msgid "Options" +msgstr "Alternativ" + +#: classes/pref/users.php:164 +msgid "E-mail: " +msgstr "E-post: " + +#: classes/pref/users.php:240 +#, php-format +msgid "Added user %s with password %s" +msgstr "Lade til användare %s med lösenord %s" + +#: classes/pref/users.php:247 +#, php-format +msgid "Could not create user %s" +msgstr "Kunde inte skapa användare %s" + +#: classes/pref/users.php:251 +#, php-format +msgid "User %s already exists." +msgstr "Användare %s finns redan." + +#: classes/pref/users.php:273 +#, fuzzy, php-format +msgid "Changed password of user %s to %s" +msgstr "Lösenord för användare %s ändrat till %s" + +#: classes/pref/users.php:275 +#, fuzzy, php-format +msgid "Sending new password of user %s to %s" +msgstr "Lösenord för användare %s ändrat till %s" + +#: classes/pref/users.php:299 +msgid "[tt-rss] Password change notification" +msgstr "[tt-rss] Info: Nytt lösenord" + +#: classes/pref/users.php:342 +#: classes/pref/labels.php:272 +#: classes/pref/filters.php:279 +#: classes/pref/filters.php:327 +#: classes/pref/filters.php:645 +#: classes/pref/filters.php:734 +#: classes/pref/filters.php:761 +#: classes/pref/prefs.php:905 +#: classes/pref/feeds.php:1263 +#: classes/pref/feeds.php:1533 +#: classes/pref/feeds.php:1603 +#: plugins/instances/init.php:287 +msgid "Select" +msgstr "Markera" + +#: classes/pref/users.php:350 +msgid "Create user" +msgstr "Skapa användare" + +#: classes/pref/users.php:354 +msgid "Details" +msgstr "Detaljer" + +#: classes/pref/users.php:356 +#: classes/pref/filters.php:660 +#: plugins/instances/init.php:296 +msgid "Edit" +msgstr "Redigera" + +#: classes/pref/users.php:403 +msgid "Access Level" +msgstr "Behörighetsnivå" + +#: classes/pref/users.php:405 +msgid "Last login" +msgstr "Senaste inloggning" + +#: classes/pref/users.php:426 +#: plugins/instances/init.php:337 +msgid "Click to edit" +msgstr "Klicka för att redigera" + +#: classes/pref/users.php:446 +msgid "No users defined." +msgstr "Inga användare definierade." + +#: classes/pref/users.php:448 +msgid "No matching users found." +msgstr "Hittade inga matchande användare." + +#: classes/pref/labels.php:22 +#: classes/pref/filters.php:268 +#: classes/pref/filters.php:725 +msgid "Caption" +msgstr "Titel" + +#: classes/pref/labels.php:37 +msgid "Colors" +msgstr "Färger" + +#: classes/pref/labels.php:42 +msgid "Foreground:" +msgstr "Förgrund" + +#: classes/pref/labels.php:42 +msgid "Background:" +msgstr "Bakgrund" + +#: classes/pref/labels.php:232 +#, php-format +msgid "Created label %s" +msgstr "Skapade etikett %s" + +#: classes/pref/labels.php:287 +msgid "Clear colors" +msgstr "Rensa färger" + +#: classes/pref/filters.php:96 +msgid "Articles matching this filter:" +msgstr "Artiklar som matchar detta filter: " + +#: classes/pref/filters.php:133 +msgid "No recent articles matching this filter have been found." +msgstr "Inga nya artiklar som matchar detta filter funna." + +#: classes/pref/filters.php:137 +msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +msgstr "Komplexa uttryck kanske inte ger några testresultat på grund av problem med databasens regexpimplementation" + +#: classes/pref/filters.php:274 +#: classes/pref/filters.php:729 +#: classes/pref/filters.php:844 +msgid "Match" +msgstr "Regler" + +#: classes/pref/filters.php:288 +#: classes/pref/filters.php:336 +#: classes/pref/filters.php:743 +#: classes/pref/filters.php:770 +msgid "Add" +msgstr "Lägg till" + +#: classes/pref/filters.php:322 +#: classes/pref/filters.php:756 +msgid "Apply actions" +msgstr "Tillämpa" + +#: classes/pref/filters.php:372 +#: classes/pref/filters.php:785 +msgid "Enabled" +msgstr "Aktiverad" + +#: classes/pref/filters.php:381 +#: classes/pref/filters.php:788 +msgid "Match any rule" +msgstr "Matcha alla regler" + +#: classes/pref/filters.php:390 +#: classes/pref/filters.php:791 +#, fuzzy +msgid "Inverse matching" +msgstr "Invertera matchning" + +#: classes/pref/filters.php:402 +#: classes/pref/filters.php:798 +msgid "Test" +msgstr "Test" + +#: classes/pref/filters.php:435 +#, fuzzy +msgid "(inverse)" +msgstr "Invertera" + +#: classes/pref/filters.php:434 +#, fuzzy, php-format +msgid "%s on %s in %s %s" +msgstr "%s av %s i %s" + +#: classes/pref/filters.php:657 +msgid "Combine" +msgstr "Kombinera" + +#: classes/pref/filters.php:663 +#: classes/pref/feeds.php:1279 +#: classes/pref/feeds.php:1293 +msgid "Reset sort order" +msgstr "Återställ sorteringsordningen" + +#: classes/pref/filters.php:671 +#: classes/pref/feeds.php:1318 +msgid "Rescore articles" +msgstr "Poängsätt på nytt" + +#: classes/pref/filters.php:801 +msgid "Create" +msgstr "Skapa" + +#: classes/pref/filters.php:856 +msgid "Inverse regular expression matching" +msgstr "" + +#: classes/pref/filters.php:858 +msgid "on field" +msgstr "i fält" + +#: classes/pref/filters.php:864 +#: js/PrefFilterTree.js:45 +#: plugins/digest/digest.js:242 +msgid "in" +msgstr "i" + +#: classes/pref/filters.php:877 +msgid "Save rule" +msgstr "Spara regel" + +#: classes/pref/filters.php:877 +#: js/functions.js:1063 +msgid "Add rule" +msgstr "Tillämpa regel" + +#: classes/pref/filters.php:900 +msgid "Perform Action" +msgstr "Utför aktivitet" + +#: classes/pref/filters.php:926 +msgid "with parameters:" +msgstr "med parametrar:" + +#: classes/pref/filters.php:944 +msgid "Save action" +msgstr "Spara aktivitet" + +#: classes/pref/filters.php:944 +#: js/functions.js:1089 +msgid "Add action" +msgstr "Lägg till aktivitet" + +#: classes/pref/filters.php:967 +#, fuzzy +msgid "[No caption]" +msgstr "Titel" + +#: classes/pref/prefs.php:17 +msgid "Old password cannot be blank." +msgstr "Föregående lösenord kan inte vara tomt." + +#: classes/pref/prefs.php:22 +msgid "New password cannot be blank." +msgstr "Nytt lösenord får inte vara tomt." + +#: classes/pref/prefs.php:27 +msgid "Entered passwords do not match." +msgstr "Lösenorden stämmer inte överens." + +#: classes/pref/prefs.php:37 +msgid "Function not supported by authentication module." +msgstr "Funktionen stöds inte av autenticeringsmodulen." + +#: classes/pref/prefs.php:69 +msgid "The configuration was saved." +msgstr "Konfigurationen sparad." + +#: classes/pref/prefs.php:83 +#, php-format +msgid "Unknown option: %s" +msgstr "Okänt alternativ: %s" + +#: classes/pref/prefs.php:97 +msgid "Your personal data has been saved." +msgstr "Dina personliga data sparas." + +#: classes/pref/prefs.php:137 +msgid "Personal data / Authentication" +msgstr "Personlig info / Authenticering" + +#: classes/pref/prefs.php:157 +msgid "Personal data" +msgstr "Personlig info" + +#: classes/pref/prefs.php:167 +msgid "Full name" +msgstr "Fullständigt namn" + +#: classes/pref/prefs.php:171 +msgid "E-mail" +msgstr "E-post" + +#: classes/pref/prefs.php:177 +msgid "Access level" +msgstr "Behörighetsnivå" + +#: classes/pref/prefs.php:187 +msgid "Save data" +msgstr "Spara" + +#: classes/pref/prefs.php:209 +msgid "Your password is at default value, please change it." +msgstr "Byt lösenord." + +#: classes/pref/prefs.php:236 +msgid "Changing your current password will disable OTP." +msgstr "" + +#: classes/pref/prefs.php:241 +msgid "Old password" +msgstr "Gammalt lösenord" + +#: classes/pref/prefs.php:244 +msgid "New password" +msgstr "Nytt lösenord" + +#: classes/pref/prefs.php:249 +msgid "Confirm password" +msgstr "Bekräfta lösenord" + +#: classes/pref/prefs.php:259 +msgid "Change password" +msgstr "Byt lösenord" + +#: classes/pref/prefs.php:265 +msgid "One time passwords / Authenticator" +msgstr "(OTP) / Authentifikator" + +#: classes/pref/prefs.php:269 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "" + +#: classes/pref/prefs.php:294 +#: classes/pref/prefs.php:345 +msgid "Enter your password" +msgstr "Ange lösenord" + +#: classes/pref/prefs.php:305 +msgid "Disable OTP" +msgstr "Stäng av OTP" + +#: classes/pref/prefs.php:311 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Du behöver en kompatible Authenticator för att använda detta. Byter du lösenord inaktiverar automatiskt OTP" + +#: classes/pref/prefs.php:313 +msgid "Scan the following code by the Authenticator application:" +msgstr "Läs in följande QR-kod med Authenticatorn:" + +#: classes/pref/prefs.php:354 +msgid "I have scanned the code and would like to enable OTP" +msgstr "Jag har läst av bilden och vill aktivera OTP" + +#: classes/pref/prefs.php:362 +msgid "Enable OTP" +msgstr "Aktivera OTP" + +#: classes/pref/prefs.php:400 +msgid "Some preferences are only available in default profile." +msgstr "" + +#: classes/pref/prefs.php:491 +msgid "Customize" +msgstr "Anpassa" + +#: classes/pref/prefs.php:558 +msgid "Register" +msgstr "Registrera" + +#: classes/pref/prefs.php:562 +msgid "Clear" +msgstr "Rensa" + +#: classes/pref/prefs.php:568 +#, php-format +msgid "Current server time: %s (UTC)" +msgstr "Aktuell servertid: %s (UTC)" + +#: classes/pref/prefs.php:601 +msgid "Save configuration" +msgstr "Spara konfiguration" + +#: classes/pref/prefs.php:604 +msgid "Manage profiles" +msgstr "Hantera profiler" + +#: classes/pref/prefs.php:607 +msgid "Reset to defaults" +msgstr "Återställ till standard" + +#: classes/pref/prefs.php:631 +#: classes/pref/prefs.php:633 +msgid "Plugins" +msgstr "Plugins" + +#: classes/pref/prefs.php:635 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" + +#: classes/pref/prefs.php:637 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "" + +#: classes/pref/prefs.php:663 +msgid "System plugins" +msgstr "Systemplugins" + +#: classes/pref/prefs.php:667 +#: classes/pref/prefs.php:721 +msgid "Plugin" +msgstr "Plugin" + +#: classes/pref/prefs.php:668 +#: classes/pref/prefs.php:722 +msgid "Description" +msgstr "Beskrivning" + +#: classes/pref/prefs.php:669 +#: classes/pref/prefs.php:723 +msgid "Version" +msgstr "Version" + +#: classes/pref/prefs.php:670 +#: classes/pref/prefs.php:724 +msgid "Author" +msgstr "Av" + +#: classes/pref/prefs.php:699 +#: classes/pref/prefs.php:756 +msgid "more info" +msgstr "" + +#: classes/pref/prefs.php:708 +#: classes/pref/prefs.php:765 +msgid "Clear data" +msgstr "Rensa data" + +#: classes/pref/prefs.php:717 +msgid "User plugins" +msgstr "Användarplugins" + +#: classes/pref/prefs.php:780 +msgid "Enable selected plugins" +msgstr "Aktivera valda plugins" + +#: classes/pref/prefs.php:835 +#: classes/pref/prefs.php:853 +msgid "Incorrect password" +msgstr "Felaktigt lösenord" + +#: classes/pref/prefs.php:879 +#, php-format +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." + +#: classes/pref/prefs.php:919 +msgid "Create profile" +msgstr "Skapa profil" + +#: classes/pref/prefs.php:942 +#: classes/pref/prefs.php:972 +msgid "(active)" +msgstr "(aktiva)" + +#: classes/pref/prefs.php:1006 +msgid "Remove selected profiles" +msgstr "Radera markerade profiler" + +#: classes/pref/prefs.php:1008 +msgid "Activate profile" +msgstr "Aktivera profil" + +#: classes/pref/feeds.php:13 +msgid "Check to enable field" +msgstr "Markera för att aktivera" + +#: classes/pref/feeds.php:527 +msgid "Feed Title" +msgstr "Kanalens titel" + +#: classes/pref/feeds.php:568 +#: classes/pref/feeds.php:793 +msgid "Update" +msgstr "Uppdatera" + +#: classes/pref/feeds.php:583 +#: classes/pref/feeds.php:809 +msgid "Article purging:" +msgstr "Artikelrensning:" + +#: classes/pref/feeds.php:606 +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Tips: du måste ange din inloggningsinformation till din kanal kräver autenticering (gäller ej Twitter-kanaler)." + +#: classes/pref/feeds.php:622 +#: classes/pref/feeds.php:838 +msgid "Hide from Popular feeds" +msgstr "Dölj från populära kanaler" + +#: classes/pref/feeds.php:634 +#: classes/pref/feeds.php:844 +msgid "Include in e-mail digest" +msgstr "Inkludera i e-postsammanfattningen" + +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:850 +msgid "Always display image attachments" +msgstr "Visa alltid bilder" + +#: classes/pref/feeds.php:660 +#: classes/pref/feeds.php:858 +msgid "Do not embed images" +msgstr "Bädda inte in bilder" + +#: classes/pref/feeds.php:673 +#: classes/pref/feeds.php:866 +msgid "Cache images locally" +msgstr "Cachea bilder lokalt" + +#: classes/pref/feeds.php:685 +#: classes/pref/feeds.php:872 +msgid "Mark updated articles as unread" +msgstr "Flagga uppdaterade artiklar som olästa" + +#: classes/pref/feeds.php:691 +msgid "Icon" +msgstr "Ikon" + +#: classes/pref/feeds.php:705 +msgid "Replace" +msgstr "Ersätt" + +#: classes/pref/feeds.php:724 +msgid "Resubscribe to push updates" +msgstr "Återprenumerera på push-uppdateringar:" + +#: classes/pref/feeds.php:731 +msgid "Resets PubSubHubbub subscription status for push-enabled feeds." +msgstr "Återställ PubSubHubbub-prenumerationer för push-uppdaterade feeds." + +#: classes/pref/feeds.php:1112 +#: classes/pref/feeds.php:1165 +msgid "All done." +msgstr "Klar." + +#: classes/pref/feeds.php:1220 +msgid "Feeds with errors" +msgstr "Kanaler med fel" + +#: classes/pref/feeds.php:1240 +msgid "Inactive feeds" +msgstr "Inaktiva kanaler" + +#: classes/pref/feeds.php:1277 +msgid "Edit selected feeds" +msgstr "Redigera valda kanaler" + +#: classes/pref/feeds.php:1281 +#: js/prefs.js:1770 +msgid "Batch subscribe" +msgstr "Massprenumerera" + +#: classes/pref/feeds.php:1286 +msgid "Categories" +msgstr "Kategorier" + +#: classes/pref/feeds.php:1289 +msgid "Add category" +msgstr "Lägg till kategorier" + +#: classes/pref/feeds.php:1291 +msgid "(Un)hide empty categories" +msgstr "Växla visning av tomma kategorier" + +#: classes/pref/feeds.php:1295 +msgid "Remove selected" +msgstr "Ta bort valda kategorier" + +#: classes/pref/feeds.php:1309 +msgid "More actions..." +msgstr "Fler aktiviteter..." + +#: classes/pref/feeds.php:1313 +msgid "Manual purge" +msgstr "Manuell gallring" + +#: classes/pref/feeds.php:1317 +msgid "Clear feed data" +msgstr "Gallra kanaldata" + +#: classes/pref/feeds.php:1368 +msgid "OPML" +msgstr "OPML" + +#: classes/pref/feeds.php:1370 +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Med OPML kan du importera och exportera dina kanaler, filter, etiketter och Tin Tiny RSS inställningar" + +#: classes/pref/feeds.php:1372 +msgid "Only main settings profile can be migrated using OPML." +msgstr "Endast huvudprofilens inställningar kan migreras med OPML." + +#: classes/pref/feeds.php:1385 +msgid "Import my OPML" +msgstr "Importera OPML" + +#: classes/pref/feeds.php:1389 +msgid "Filename:" +msgstr "Filnamn:" + +#: classes/pref/feeds.php:1391 +msgid "Include settings" +msgstr "Inkludera inställningar" + +#: classes/pref/feeds.php:1395 +msgid "Export OPML" +msgstr "Exportera OPML" + +#: classes/pref/feeds.php:1399 +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Din OPML-fil kan publiceras publikt och den kan bli prenumererad på av alla som känner till URLen nedan" + +#: classes/pref/feeds.php:1401 +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Publicerad OPML inkluderar inte dina Tiny Tiny RSS-inställningar, kanaler som kräver autenticering eller kanaler som är dolda för populära kanaler" + +#: classes/pref/feeds.php:1403 +msgid "Public OPML URL" +msgstr "Publik OPML-URL" + +#: classes/pref/feeds.php:1404 +msgid "Display published OPML URL" +msgstr "Visa publicerad OPML-URL" + +#: classes/pref/feeds.php:1414 +msgid "Firefox integration" +msgstr "Firefox-integration" + +#: classes/pref/feeds.php:1416 +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Denna Tiny Tiny RSS-site kan användas som en kanalläsare för Firefox genom att klicka på länken nedan" + +#: classes/pref/feeds.php:1423 +msgid "Click here to register this site as a feed reader." +msgstr "Klicka här för att registrera denna site som en kanalläsare." + +#: classes/pref/feeds.php:1431 +msgid "Published & shared articles / Generated feeds" +msgstr "Publicerade och delade artiklar / Genererade kanaler" + +#: classes/pref/feeds.php:1433 +msgid "Published articles and generated feeds" +msgstr "Publicerade artiklar och genererade kanaler" + +#: classes/pref/feeds.php:1435 +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Publicerade artiklar exporteras som en publik RSS-kanal och kan bli prenumerarde på av alla med URLen nedan" + +#: classes/pref/feeds.php:1441 +msgid "Display URL" +msgstr "Visa URL" + +#: classes/pref/feeds.php:1444 +msgid "Clear all generated URLs" +msgstr "Radera alla genererade URLer" + +#: classes/pref/feeds.php:1446 +msgid "Articles shared by URL" +msgstr "Artiklar delade per URL" + +#: classes/pref/feeds.php:1448 +msgid "You can disable all articles shared by unique URLs here." +msgstr "Du kan inaktivera alla artiklar som delas ut med unik URL här." + +#: classes/pref/feeds.php:1451 +msgid "Unshare all articles" +msgstr "Ta bort delning av alla artiklar" + +#: classes/pref/feeds.php:1529 +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Följande kanaler har inte uppdaterats med nytt innehåll på 3 månader (äldst först): " + +#: classes/pref/feeds.php:1566 +#: classes/pref/feeds.php:1636 +msgid "Click to edit feed" +msgstr "Klicka för att redigera kanal" + +#: classes/pref/feeds.php:1584 +#: classes/pref/feeds.php:1656 +msgid "Unsubscribe from selected feeds" +msgstr "Ta bort prenumeration för valda kanaler" + +#: classes/pref/feeds.php:1595 +msgid "These feeds have not been updated because of errors:" +msgstr "Följande kanaler har inte blivit uppdaterade pga fel:" + +#: classes/pref/feeds.php:1758 +msgid "Add one valid RSS feed per line (no feed detection is done)" +msgstr "Lägg till en RSS-url per rad (ingen kanalupptäckt görs)" + +#: classes/pref/feeds.php:1767 +msgid "Feeds to subscribe, One per line" +msgstr "Kanaler att prenumerera på, en per rad" + +#: classes/pref/feeds.php:1789 +msgid "Feeds require authentication." +msgstr "Kanalen kräver inloggning." + +#: plugins/digest/digest_body.php:59 +#, fuzzy +msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +msgstr "Din webbläsare stöder inte Javascript, kontrollera dina inställningar" + +#: plugins/digest/digest_body.php:74 +msgid "Hello," +msgstr "Hej," + +#: plugins/digest/digest_body.php:80 +msgid "Regular version" +msgstr "Standardversion" + +#: plugins/close_button/init.php:24 +msgid "Close article" +msgstr "Stäng artikel" + +#: plugins/nsfw/init.php:32 +#: plugins/nsfw/init.php:43 +msgid "Not work safe (click to toggle)" +msgstr "NSFW (klicka för att växla)" + +#: plugins/nsfw/init.php:53 +msgid "NSFW Plugin" +msgstr "NSFW Plugin" + +#: plugins/nsfw/init.php:80 +msgid "Tags to consider NSFW (comma-separated)" +msgstr "Lista NSFW-taggar (kommaseparerade)" + +#: plugins/nsfw/init.php:101 +msgid "Configuration saved." +msgstr "Inställningar sparade." + +#: plugins/auth_internal/init.php:62 +msgid "Please enter your one time password:" +msgstr "Ange ditt engångslösenord:" + +#: plugins/auth_internal/init.php:185 +msgid "Password has been changed." +msgstr "Lösenord uppdaterat." + +#: plugins/auth_internal/init.php:187 +msgid "Old password is incorrect." +msgstr "Felaktigt gammalt lösenord." + +#: plugins/mobile/mobile-functions.php:61 +#: plugins/mobile/mobile-functions.php:137 +#: plugins/mobile/mobile-functions.php:173 +#: plugins/mobile/mobile-functions.php:200 +#: plugins/mobile/mobile-functions.php:236 +#: plugins/mobile/mobile-functions.php:373 +#: plugins/mobile/prefs.php:29 +msgid "Home" +msgstr "Startsidan" + +#: plugins/mobile/mobile-functions.php:409 +msgid "Nothing found (click to reload feed)." +msgstr "Hittade inget (klicka för att ladda om kanal)" + +#: plugins/mobile/login_form.php:52 +msgid "Open regular version" +msgstr "Öppna normal version" + +#: plugins/mobile/prefs.php:34 +msgid "Enable categories" +msgstr "Aktivera kategorier" + +#: plugins/mobile/prefs.php:35 +#: plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 +#: plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 +#: plugins/mobile/prefs.php:61 +msgid "ON" +msgstr "PÅ" + +#: plugins/mobile/prefs.php:35 +#: plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 +#: plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 +#: plugins/mobile/prefs.php:61 +msgid "OFF" +msgstr "AV" + +#: plugins/mobile/prefs.php:39 +msgid "Browse categories like folders" +msgstr "Bläddra i kategorier som i foldrar" + +#: plugins/mobile/prefs.php:45 +msgid "Show images in posts" +msgstr "Visa bilder i artiklar" + +#: plugins/mobile/prefs.php:50 +msgid "Hide read articles and feeds" +msgstr "Dölj lästa artiklar och kanaler" + +#: plugins/mobile/prefs.php:55 +msgid "Sort feeds by unread count" +msgstr "Sortera kanaler efter antal olästa artiklar" + +#: plugins/mailto/init.php:52 +#: plugins/mailto/init.php:58 +#: plugins/mail/init.php:71 +#: plugins/mail/init.php:77 +msgid "[Forwarded]" +msgstr "[Vidarebefordrat]" + +#: plugins/mailto/init.php:52 +#: plugins/mail/init.php:71 +msgid "Multiple articles" +msgstr "Flera artiklar" + +#: plugins/mailto/init.php:74 +msgid "Clicking the following link to invoke your mail client:" +msgstr "Klicka på följande länk för att skicka till ditt e-postprogram:" + +#: plugins/mailto/init.php:78 +msgid "Forward selected article(s) by email." +msgstr "Vidarebefordra markerade artiklar med e-post" + +#: plugins/mailto/init.php:81 +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Du bör kunna redigera ditt meddelande innan det skickas" + +#: plugins/mailto/init.php:86 +msgid "Close this dialog" +msgstr "Stäng denna dialogruta" + +#: plugins/bookmarklets/init.php:22 +msgid "Bookmarklets" +msgstr "Bookmarklets" + +#: plugins/bookmarklets/init.php:24 +msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it." +msgstr "Drag länken nedan till din webbläsares verktygsrad, öppna den kanal du är intresserad av i webbläsaren och klicka på länken för att prenumerara på det." + +#: plugins/bookmarklets/init.php:28 +#, php-format +msgid "Subscribe to %s in Tiny Tiny RSS?" +msgstr "Prenumerera på %s i Tiny Tiny RSS?" + +#: plugins/bookmarklets/init.php:32 +msgid "Subscribe in Tiny Tiny RSS" +msgstr "Prenumerera i Tiny Tiny RSS" + +#: plugins/bookmarklets/init.php:34 +msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" +msgstr "Använd denna bookmarklet för att publicera webbsidor genom Tiny Tiny RSS" + +#: plugins/import_export/init.php:64 +msgid "Import and export" +msgstr "Importera och exportera" + +#: plugins/import_export/init.php:66 +msgid "Article archive" +msgstr "Artikelarkiv" + +#: plugins/import_export/init.php:68 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." +msgstr "Du kan importera och exportera dina stjärnmärkta och arkiverad artiklar så att du har en backup eller för att flytta mellan tt-rss instanser." + +#: plugins/import_export/init.php:71 +msgid "Export my data" +msgstr "Exportera min data" + +#: plugins/import_export/init.php:87 +msgid "Import" +msgstr "Importera" + +#: plugins/import_export/init.php:221 +msgid "Could not import: incorrect schema version." +msgstr "Kunde inte importera: inkorrekt version av databasschema" + +#: plugins/import_export/init.php:226 +msgid "Could not import: unrecognized document format." +msgstr "Kunde inte importera: okänt filformat" + +#: plugins/import_export/init.php:385 +msgid "Finished: " +msgstr "" + +#: plugins/import_export/init.php:386 +#, fuzzy, php-format +msgid "%d article processed, " +msgid_plural "%d articles processed, " +msgstr[0] "Redigera artikelkommentar" +msgstr[1] "Redigera artikelkommentar" + +#: plugins/import_export/init.php:387 +#, fuzzy, php-format +msgid "%d imported, " +msgid_plural "%d imported, " +msgstr[0] "är redan importerad." +msgstr[1] "är redan importerad." + +#: plugins/import_export/init.php:388 +#, fuzzy, php-format +msgid "%d feed created." +msgid_plural "%d feeds created." +msgstr[0] "Ingen kanal vald." +msgstr[1] "Ingen kanal vald." + +#: plugins/import_export/init.php:393 +msgid "Could not load XML document." +msgstr "Kunde inte ladda XML-filen." + +#: plugins/import_export/init.php:405 +msgid "Prepare data" +msgstr "Förbered data" + +#: plugins/import_export/init.php:426 +#, fuzzy, php-format +msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +msgstr "" +"Filen kunde inte laddas upp. Kontrollera upload_max_filesize \n" +"\t\t\ti PHP.ini. (Nuvarande inställning = %s)" + +#: plugins/mail/init.php:92 +msgid "From:" +msgstr "Från:" + +#: plugins/mail/init.php:101 +msgid "To:" +msgstr "Till:" + +#: plugins/mail/init.php:114 +msgid "Subject:" +msgstr "Ärende:" + +#: plugins/mail/init.php:130 +msgid "Send e-mail" +msgstr "Skicka e-post" + +#: plugins/note/init.php:28 +#: plugins/note/note.js:11 +msgid "Edit article note" +msgstr "Redigera artikelkommentar" + +#: plugins/example/init.php:39 +msgid "Example Pane" +msgstr "Exempelpanel" + +#: plugins/example/init.php:70 +msgid "Sample value" +msgstr "Exempelvärde" + +#: plugins/example/init.php:76 +msgid "Set value" +msgstr "Ange värde" + +#: plugins/googlereaderimport/init.php:72 +msgid "No file uploaded." +msgstr "" + +#: plugins/googlereaderimport/init.php:153 +#, php-format +msgid "All done. %d out of %d articles imported." +msgstr "" + +#: plugins/googlereaderimport/init.php:157 +msgid "The document has incorrect format." +msgstr "" + +#: plugins/googlereaderimport/init.php:326 +msgid "Import starred or shared items from Google Reader" +msgstr "" + +#: plugins/googlereaderimport/init.php:330 +msgid "Paste your starred.json or shared.json into the form below." +msgstr "" + +#: plugins/googlereaderimport/init.php:344 +msgid "Import my Starred items" +msgstr "" + +#: plugins/instances/init.php:144 +msgid "Linked" +msgstr "Länkad" + +#: plugins/instances/init.php:207 +#: plugins/instances/init.php:399 +msgid "Instance" +msgstr "Instans" + +#: plugins/instances/init.php:218 +#: plugins/instances/init.php:315 +#: plugins/instances/init.php:408 +msgid "Instance URL" +msgstr "Instans-URL" + +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:418 +msgid "Access key:" +msgstr "Accessnyckel:" + +#: plugins/instances/init.php:232 +#: plugins/instances/init.php:316 +#: plugins/instances/init.php:421 +msgid "Access key" +msgstr "Accessnyckel" + +#: plugins/instances/init.php:236 +#: plugins/instances/init.php:425 +msgid "Use one access key for both linked instances." +msgstr "Använd samma accessnyckel för bägge länkade instanserna" + +#: plugins/instances/init.php:244 +#: plugins/instances/init.php:433 +msgid "Generate new key" +msgstr "Skapa en ny nyckel" + +#: plugins/instances/init.php:295 +msgid "Link instance" +msgstr "Länka instanser" + +#: plugins/instances/init.php:307 +msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" +msgstr "Du kan ansluta till andra instanser av Tiny Tiny RSS för att dela populära kanaler. Använd följande URL:" + +#: plugins/instances/init.php:317 +msgid "Last connected" +msgstr "Senast ansluten" + +#: plugins/instances/init.php:318 +msgid "Status" +msgstr "Status" + +#: plugins/instances/init.php:319 +msgid "Stored feeds" +msgstr "Sparade kanaler" + +#: plugins/instances/init.php:437 +msgid "Create link" +msgstr "Skapa länk" + +#: plugins/share/init.php:27 +msgid "Share by URL" +msgstr "Dela via URL" + +#: plugins/share/init.php:49 +msgid "You can share this article by the following unique URL:" +msgstr "Du kan dela denna artikel genom följande unika URL:" + +#: plugins/updater/init.php:317 +#: plugins/updater/init.php:334 +#: plugins/updater/updater.js:10 +msgid "Update Tiny Tiny RSS" +msgstr "Uppdatera Tiny Tiny RSS" + +#: plugins/updater/init.php:337 +msgid "Your Tiny Tiny RSS installation is up to date." +msgstr "Din Tiny Tiny RSS är uppdaterad till senaste version." + +#: plugins/updater/init.php:347 +msgid "Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing." +msgstr "Stäng inte denna dialog förrän uppdatering är klar. Gör en backup av din tt-rss-katalog innan du fortsätter." + +#: plugins/updater/init.php:350 +msgid "Ready to update." +msgstr "Redo att uppdatera." + +#: plugins/updater/init.php:355 +msgid "Start update" +msgstr "Starta uppdateringen" + +#: js/feedlist.js:404 +#: js/feedlist.js:432 +#: plugins/digest/digest.js:26 +msgid "Mark all articles in %s as read?" +msgstr "Märk alla artiklar i %s som lästa??" + +#: js/feedlist.js:423 +#, fuzzy +msgid "Mark all articles in %s older than 1 day as read?" +msgstr "Märk alla artiklar i %s som lästa??" + +#: js/feedlist.js:426 +#, fuzzy +msgid "Mark all articles in %s older than 1 week as read?" +msgstr "Märk alla artiklar i %s som lästa??" + +#: js/feedlist.js:429 +#, fuzzy +msgid "Mark all articles in %s older than 2 weeks as read?" +msgstr "Märk alla artiklar i %s som lästa??" + +#: js/functions.js:92 +msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database." +msgstr "Vill du rapportera detta fel till tt-rss.org? Rapporten kommer innehålla information om din webbläsare och din ip-adress." + +#: js/functions.js:214 +msgid "close" +msgstr "" + +#: js/functions.js:621 +msgid "Date syntax appears to be correct:" +msgstr "Datumsyntaxen verkar vara korrekt:" + +#: js/functions.js:624 +msgid "Date syntax is incorrect." +msgstr "Datumsyntaxen är felaktig." + +#: js/functions.js:636 +msgid "Error explained" +msgstr "" + +#: js/functions.js:718 +msgid "Upload complete." +msgstr "" + +#: js/functions.js:742 +msgid "Remove stored feed icon?" +msgstr "Radera sparad ikon för kanalen?" + +#: js/functions.js:747 +#, fuzzy +msgid "Removing feed icon..." +msgstr "Radera sparad ikon för kanalen?" + +#: js/functions.js:752 +#, fuzzy +msgid "Feed icon removed." +msgstr "Hittar inte kanal." + +#: js/functions.js:774 +msgid "Please select an image file to upload." +msgstr "Välj en bild att ladda upp." + +#: js/functions.js:776 +msgid "Upload new icon for this feed?" +msgstr "Ladda upp ny ikon för denna kanal?" + +#: js/functions.js:777 +#, fuzzy +msgid "Uploading, please wait..." +msgstr "Laddar, vänta..." + +#: js/functions.js:793 +msgid "Please enter label caption:" +msgstr "Ange etikett-titel:" + +#: js/functions.js:798 +msgid "Can't create label: missing caption." +msgstr "Kan inte skapa etikett. Titel saknas" + +#: js/functions.js:841 +msgid "Subscribe to Feed" +msgstr "Prenumerera på kanal" + +#: js/functions.js:868 +msgid "Subscribed to %s" +msgstr "Prenumererar nu på %s" + +#: js/functions.js:873 +msgid "Specified URL seems to be invalid." +msgstr "Den angivna URLen verkar vara felaktig." + +#: js/functions.js:876 +msgid "Specified URL doesn't seem to contain any feeds." +msgstr "Den angivna URLen verkar inte innehålla någon kanal." + +#: js/functions.js:929 +msgid "Couldn't download the specified URL: %s" +msgstr "Kunde inte ladda ned följande URL: %s" + +#: js/functions.js:933 +msgid "You are already subscribed to this feed." +msgstr "Du prenumererar redan på denna kanal." + +#: js/functions.js:1063 +msgid "Edit rule" +msgstr "Redigera regel" + +#: js/functions.js:1089 +msgid "Edit action" +msgstr "Redigera aktivitet" + +#: js/functions.js:1126 +msgid "Create Filter" +msgstr "Skapa filter" + +#: js/functions.js:1241 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Återställ prenumeration? Tiny Tiny RSS kommer försöka prenumerera på notifikationshubben igen vid nästa kanaluppdatering." + +#: js/functions.js:1252 +#, fuzzy +msgid "Subscription reset." +msgstr "Prenumerera på kanal..." + +#: js/functions.js:1262 +#: js/tt-rss.js:619 +msgid "Unsubscribe from %s?" +msgstr "Säg upp prenumeration på %s?" + +#: js/functions.js:1265 +msgid "Removing feed..." +msgstr "" + +#: js/functions.js:1373 +msgid "Please enter category title:" +msgstr "Ange kategorititel:" + +#: js/functions.js:1404 +msgid "Generate new syndication address for this feed?" +msgstr "Skapa ny syndikeringsadress för denna kanal?" + +#: js/functions.js:1408 +#: js/prefs.js:1222 +msgid "Trying to change address..." +msgstr "" + +#: js/functions.js:1595 +#: js/tt-rss.js:396 +#: js/tt-rss.js:600 +msgid "You can't edit this kind of feed." +msgstr "Denna typ av kanal kan inte redigeras." + +#: js/functions.js:1610 +msgid "Edit Feed" +msgstr "Redigera kanal" + +#: js/functions.js:1616 +#: js/prefs.js:194 +#: js/prefs.js:749 +#, fuzzy +msgid "Saving data..." +msgstr "Spara" + +#: js/functions.js:1648 +msgid "More Feeds" +msgstr "Fler kanaler" + +#: js/functions.js:1709 +#: js/functions.js:1819 +#: js/prefs.js:397 +#: js/prefs.js:427 +#: js/prefs.js:459 +#: js/prefs.js:642 +#: js/prefs.js:662 +#: js/prefs.js:1198 +#: js/prefs.js:1343 +msgid "No feeds are selected." +msgstr "Ingen kanal vald." + +#: js/functions.js:1751 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Radera markerade kanaler från arkivet? Kanaler med sparade artiklar kommer inte raderas.." + +#: js/functions.js:1790 +msgid "Feeds with update errors" +msgstr "Kanaler med uppdateringsfel" + +#: js/functions.js:1801 +#: js/prefs.js:1180 +msgid "Remove selected feeds?" +msgstr "Radera markerade kanaler?" + +#: js/functions.js:1804 +#: js/prefs.js:1183 +#, fuzzy +msgid "Removing selected feeds..." +msgstr "Radera markerade kanaler?" + +#: js/functions.js:1902 +msgid "Help" +msgstr "Hjälp" + +#: js/PrefFeedTree.js:47 +msgid "Edit category" +msgstr "Redigera kategori" + +#: js/PrefFeedTree.js:54 +msgid "Remove category" +msgstr "Ta bort kategori" + +#: js/PrefFilterTree.js:48 +msgid "Inverse" +msgstr "Invertera" + +#: js/prefs.js:55 +msgid "Please enter login:" +msgstr "Ange inloggning:" + +#: js/prefs.js:62 +msgid "Can't create user: no login specified." +msgstr "Kan inte skapa användare, ingen inloggning angiven." + +#: js/prefs.js:66 +#, fuzzy +msgid "Adding user..." +msgstr "Lägger till filter..." + +#: js/prefs.js:94 +msgid "User Editor" +msgstr "Användareditor" + +#: js/prefs.js:117 +msgid "Edit Filter" +msgstr "Redigera filter" + +#: js/prefs.js:164 +msgid "Remove filter?" +msgstr "Radera filter?" + +#: js/prefs.js:169 +#, fuzzy +msgid "Removing filter..." +msgstr "Lägger till filter..." + +#: js/prefs.js:279 +msgid "Remove selected labels?" +msgstr "Radera markerade etiketter?" + +#: js/prefs.js:282 +#, fuzzy +msgid "Removing selected labels..." +msgstr "Radera markerade etiketter?" + +#: js/prefs.js:295 +#: js/prefs.js:1384 +msgid "No labels are selected." +msgstr "Inga etiketter valda." + +#: js/prefs.js:309 +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Radera markerade användare? Varken admin eller ditt konto kan raderas." + +#: js/prefs.js:312 +#, fuzzy +msgid "Removing selected users..." +msgstr "Radera markerade filter?" + +#: js/prefs.js:326 +#: js/prefs.js:507 +#: js/prefs.js:528 +#: js/prefs.js:567 +msgid "No users are selected." +msgstr "Ingen användare markerad." + +#: js/prefs.js:344 +msgid "Remove selected filters?" +msgstr "Radera markerade filter?" + +#: js/prefs.js:347 +#, fuzzy +msgid "Removing selected filters..." +msgstr "Radera markerade filter?" + +#: js/prefs.js:359 +#: js/prefs.js:597 +#: js/prefs.js:616 +msgid "No filters are selected." +msgstr "Inga filter valda." + +#: js/prefs.js:378 +msgid "Unsubscribe from selected feeds?" +msgstr "Säg upp prenumeration på markerade kanaler?" + +#: js/prefs.js:382 +#, fuzzy +msgid "Unsubscribing from selected feeds..." +msgstr "Ta bort prenumeration för valda kanaler" + +#: js/prefs.js:412 +msgid "Please select only one feed." +msgstr "Markera endast en kanal." + +#: js/prefs.js:418 +msgid "Erase all non-starred articles in selected feed?" +msgstr "Radera alla artiklar som inte är stjärnmärkta i markerad kanal?" + +#: js/prefs.js:421 +#, fuzzy +msgid "Clearing selected feed..." +msgstr "Redigera valda kanaler" + +#: js/prefs.js:440 +msgid "How many days of articles to keep (0 - use default)?" +msgstr "Hur många dagars artiklar ska sparas (0 - använda default)?" + +#: js/prefs.js:443 +#, fuzzy +msgid "Purging selected feed..." +msgstr "Redigera valda kanaler" + +#: js/prefs.js:478 +msgid "Login field cannot be blank." +msgstr "Användarnamnet kan inte vara tomt." + +#: js/prefs.js:482 +#, fuzzy +msgid "Saving user..." +msgstr "Lägger till filter..." + +#: js/prefs.js:512 +#: js/prefs.js:533 +#: js/prefs.js:572 +msgid "Please select only one user." +msgstr "Markera endast en användare." + +#: js/prefs.js:537 +msgid "Reset password of selected user?" +msgstr "Återställ lösenordet för markerad användare?" + +#: js/prefs.js:540 +#, fuzzy +msgid "Resetting password for selected user..." +msgstr "Återställ lösenordet för markerad användare?" + +#: js/prefs.js:585 +msgid "User details" +msgstr "Användardetaljer" + +#: js/prefs.js:602 +msgid "Please select only one filter." +msgstr "Markera endast ett filter." + +#: js/prefs.js:620 +msgid "Combine selected filters?" +msgstr "Slå ihop markerade filter?" + +#: js/prefs.js:623 +#, fuzzy +msgid "Joining filters..." +msgstr "Lägger till filter..." + +#: js/prefs.js:684 +msgid "Edit Multiple Feeds" +msgstr "Redigera flera kanaler" + +#: js/prefs.js:708 +msgid "Save changes to selected feeds?" +msgstr "Spara ändringar i markerade kanaler?" + +#: js/prefs.js:785 +msgid "OPML Import" +msgstr "OPML Import" + +#: js/prefs.js:812 +msgid "Please choose an OPML file first." +msgstr "Välj en OPML-fil först." + +#: js/prefs.js:815 +#: plugins/import_export/import_export.js:115 +#: plugins/googlereaderimport/init.js:45 +#, fuzzy +msgid "Importing, please wait..." +msgstr "Laddar, vänta..." + +#: js/prefs.js:968 +msgid "Reset to defaults?" +msgstr "Återställ till standardvärden?" + +#: js/prefs.js:1087 +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Radera kategori %s? Nästlade kanaler placeras i Okategoriserat." + +#: js/prefs.js:1093 +#, fuzzy +msgid "Removing category..." +msgstr "Ta bort kategori" + +#: js/prefs.js:1114 +msgid "Remove selected categories?" +msgstr "Radera markekrade kategorier?" + +#: js/prefs.js:1117 +#, fuzzy +msgid "Removing selected categories..." +msgstr "Radera valda kategorier?" + +#: js/prefs.js:1130 +msgid "No categories are selected." +msgstr "Inga kategorier valda." + +#: js/prefs.js:1138 +msgid "Category title:" +msgstr "Kategorinamn:" + +#: js/prefs.js:1142 +#, fuzzy +msgid "Creating category..." +msgstr "Skapa filter..." + +#: js/prefs.js:1169 +msgid "Feeds without recent updates" +msgstr "Kanaler som inte uppdaterats på länge" + +#: js/prefs.js:1218 +msgid "Replace current OPML publishing address with a new one?" +msgstr "Byt nuvarande OPML-adress med en ny?" + +#: js/prefs.js:1307 +#, fuzzy +msgid "Clearing feed..." +msgstr "Gallra kanaldata" + +#: js/prefs.js:1327 +msgid "Rescore articles in selected feeds?" +msgstr "Beräkna värden på artiklarna i markerade kanaler på nytt?" + +#: js/prefs.js:1330 +#, fuzzy +msgid "Rescoring selected feeds..." +msgstr "Beräkna värden på artiklarna i markerade kanaler på nytt?" + +#: js/prefs.js:1350 +msgid "Rescore all articles? This operation may take a lot of time." +msgstr "Beräkna nya värden på alla artiklar? Detta kan ta mycket lång tid." + +#: js/prefs.js:1353 +#, fuzzy +msgid "Rescoring feeds..." +msgstr "Beräkna kanalens poäng på nytt" + +#: js/prefs.js:1370 +msgid "Reset selected labels to default colors?" +msgstr "Återställ valda etiketter till standardfärger?" + +#: js/prefs.js:1407 +msgid "Settings Profiles" +msgstr "Inställningsprofiler" + +#: js/prefs.js:1416 +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Radera markerade profiler? Aktiva profiler tas inte bort." + +#: js/prefs.js:1419 +#, fuzzy +msgid "Removing selected profiles..." +msgstr "Radera markerade profiler" + +#: js/prefs.js:1434 +msgid "No profiles are selected." +msgstr "Inga profiler valda." + +#: js/prefs.js:1442 +#: js/prefs.js:1495 +msgid "Activate selected profile?" +msgstr "Aktivera markerad profil?" + +#: js/prefs.js:1458 +#: js/prefs.js:1511 +msgid "Please choose a profile to activate." +msgstr "Välj en profil att aktivera." + +#: js/prefs.js:1463 +#, fuzzy +msgid "Creating profile..." +msgstr "Skapa profil" + +#: js/prefs.js:1519 +msgid "This will invalidate all previously generated feed URLs. Continue?" +msgstr "Detta tar bort alla tidigare skapade kanal-URLer. Fortsätt?" + +#: js/prefs.js:1522 +#: js/prefs.js:1541 +msgid "Clearing URLs..." +msgstr "" + +#: js/prefs.js:1529 +#, fuzzy +msgid "Generated URLs cleared." +msgstr "Skapa ny URL" + +#: js/prefs.js:1538 +msgid "This will invalidate all previously shared article URLs. Continue?" +msgstr "Detta tar bort alla tidigare delade artikel-URLer. Fortsätt?" + +#: js/prefs.js:1548 +msgid "Shared URLs cleared." +msgstr "" + +#: js/prefs.js:1654 +msgid "Label Editor" +msgstr "Etikettseditor" + +#: js/prefs.js:1776 +msgid "Subscribing to feeds..." +msgstr "Prenumerera på kanaler..." + +#: js/prefs.js:1813 +msgid "Clear stored data for this plugin?" +msgstr "Radera lagrad data för denna plugin?" + +#: js/tt-rss.js:124 +msgid "Mark all articles as read?" +msgstr "Flagga alla artiklar som lästa?" + +#: js/tt-rss.js:130 +#, fuzzy +msgid "Marking all feeds as read..." +msgstr "Märk alla kanaler som lästa" + +#: js/tt-rss.js:355 +msgid "Please enable mail plugin first." +msgstr "Aktivera e-post-pluginen först." + +#: js/tt-rss.js:461 +#, fuzzy +msgid "Please enable embed_original plugin first." +msgstr "Aktivera plugin embed_original först." + +#: js/tt-rss.js:587 +msgid "Select item(s) by tags" +msgstr "Välj artiklar från taggar" + +#: js/tt-rss.js:608 +msgid "You can't unsubscribe from the category." +msgstr "Du kan inte säga upp prenumeration på kategorin." + +#: js/tt-rss.js:613 +#: js/tt-rss.js:765 +msgid "Please select some feed first." +msgstr "Markera några kanaler först." + +#: js/tt-rss.js:760 +msgid "You can't rescore this kind of feed." +msgstr "Den här typen av kanal kan inte poängsättas." + +#: js/tt-rss.js:770 +msgid "Rescore articles in %s?" +msgstr "Beräkna om poängen för artiklarna i %s?" + +#: js/tt-rss.js:773 +#, fuzzy +msgid "Rescoring articles..." +msgstr "Poängsätt på nytt" + +#: js/tt-rss.js:907 +msgid "New version available!" +msgstr "Ny version tillgänglig!" + +#: js/viewfeed.js:106 +msgid "Cancel search" +msgstr "Avbryt sökning" + +#: js/viewfeed.js:440 +#: plugins/digest/digest.js:258 +#: plugins/digest/digest.js:714 +msgid "Unstar article" +msgstr "Ta bort stjärnmarkering från artikeln" + +#: js/viewfeed.js:445 +#: plugins/digest/digest.js:260 +#: plugins/digest/digest.js:718 +msgid "Star article" +msgstr "Stjärnmärk artikeln" + +#: js/viewfeed.js:478 +#: plugins/digest/digest.js:263 +#: plugins/digest/digest.js:749 +msgid "Unpublish article" +msgstr "Avpublicera artikeln" + +#: js/viewfeed.js:679 +#: js/viewfeed.js:707 +#: js/viewfeed.js:734 +#: js/viewfeed.js:797 +#: js/viewfeed.js:831 +#: js/viewfeed.js:951 +#: js/viewfeed.js:994 +#: js/viewfeed.js:1047 +#: js/viewfeed.js:2096 +#: plugins/mailto/init.js:7 +#: plugins/mail/mail.js:7 +msgid "No articles are selected." +msgstr "Inga artiklar valda." + +#: js/viewfeed.js:959 +#, fuzzy +msgid "Delete %d selected article in %s?" +msgid_plural "Delete %d selected articles in %s?" +msgstr[0] "Radera %d markerade artiklar i %s?" +msgstr[1] "Radera %d markerade artiklar i %s?" + +#: js/viewfeed.js:961 +#, fuzzy +msgid "Delete %d selected article?" +msgid_plural "Delete %d selected articles?" +msgstr[0] "Radera %d markerade artiklar?" +msgstr[1] "Radera %d markerade artiklar?" + +#: js/viewfeed.js:1003 +#, fuzzy +msgid "Archive %d selected article in %s?" +msgid_plural "Archive %d selected articles in %s?" +msgstr[0] "Arkivera %d markerade artiklar i %s?" +msgstr[1] "Arkivera %d markerade artiklar i %s?" + +#: js/viewfeed.js:1006 +#, fuzzy +msgid "Move %d archived article back?" +msgid_plural "Move %d archived articles back?" +msgstr[0] "Flyta tillbaka %d arkiverade artiklar?" +msgstr[1] "Flyta tillbaka %d arkiverade artiklar?" + +#: js/viewfeed.js:1008 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "" + +#: js/viewfeed.js:1053 +#, fuzzy +msgid "Mark %d selected article in %s as read?" +msgid_plural "Mark %d selected articles in %s as read?" +msgstr[0] "Flagga %d markerade artiklar i %s som lästa?" +msgstr[1] "Flagga %d markerade artiklar i %s som lästa?" + +#: js/viewfeed.js:1077 +msgid "Edit article Tags" +msgstr "Redigera artikeltaggar" + +#: js/viewfeed.js:1083 +#, fuzzy +msgid "Saving article tags..." +msgstr "Redigera artikeltaggar" + +#: js/viewfeed.js:1323 +msgid "No article is selected." +msgstr "Ingen artikel vald." + +#: js/viewfeed.js:1358 +msgid "No articles found to mark" +msgstr "Hittade inga artiklar att flagga" + +#: js/viewfeed.js:1360 +#, fuzzy +msgid "Mark %d article as read?" +msgid_plural "Mark %d articles as read?" +msgstr[0] "Flagga %d artiklar som lästa?" +msgstr[1] "Flagga %d artiklar som lästa?" + +#: js/viewfeed.js:1872 +msgid "Open original article" +msgstr "Öppna orginalartikeln" + +#: js/viewfeed.js:1878 +#, fuzzy +msgid "Display article URL" +msgstr "Visa artikelns URL" + +#: js/viewfeed.js:1897 +#, fuzzy +msgid "Toggle marked" +msgstr "Växla stjärnmarkering" + +#: js/viewfeed.js:1983 +msgid "Remove label" +msgstr "Radera etikett" + +#: js/viewfeed.js:2007 +msgid "Playing..." +msgstr "Spelar..." + +#: js/viewfeed.js:2008 +msgid "Click to pause" +msgstr "Klicka för att pausa" + +#: js/viewfeed.js:2065 +msgid "Please enter new score for selected articles:" +msgstr "Ange ny poäng för markerade artiklar:" + +#: js/viewfeed.js:2107 +msgid "Please enter new score for this article:" +msgstr "Ange ny poäng för denna artikel:" + +#: js/viewfeed.js:2140 +#, fuzzy +msgid "Article URL:" +msgstr "Artikel URL" + +#: plugins/digest/digest.js:72 +#, fuzzy +msgid "Mark %d displayed article as read?" +msgid_plural "Mark %d displayed articles as read?" +msgstr[0] "Flagga %d artiklar som lästa?" +msgstr[1] "Flagga %d artiklar som lästa?" + +#: plugins/digest/digest.js:290 +msgid "Error: unable to load article." +msgstr "Fel: kunde inte ladda artikel." + +#: plugins/digest/digest.js:464 +msgid "Click to expand article." +msgstr "Klicka för att expandera artikeln." + +#: plugins/digest/digest.js:535 +#, fuzzy +msgid "%d more..." +msgid_plural "%d more..." +msgstr[0] "%d fler..." +msgstr[1] "%d fler..." + +#: plugins/digest/digest.js:542 +msgid "No unread feeds." +msgstr "Inga olästa kanaler." + +#: plugins/digest/digest.js:649 +msgid "Load more..." +msgstr "Ladda fler..." + +#: plugins/embed_original/init.js:6 +msgid "Sorry, your browser does not support sandboxed iframes." +msgstr "Din webbläsare stöder inte sandboxade iframes" + +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 +msgid "Forward article by email" +msgstr "Vidarebefordra artikel via e-post" + +#: plugins/import_export/import_export.js:13 +msgid "Export Data" +msgstr "Exportera data" + +#: plugins/import_export/import_export.js:40 +#, fuzzy +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Färdig, %d artiklar exporterades. Här kan du ladda ned dem." +msgstr[1] "Färdig, %d artiklar exporterades. Här kan du ladda ned dem." + +#: plugins/import_export/import_export.js:93 +msgid "Data Import" +msgstr "Importera data" + +#: plugins/import_export/import_export.js:112 +msgid "Please choose the file first." +msgstr "Välj fil först." + +#: plugins/note/note.js:17 +#, fuzzy +msgid "Saving article note..." +msgstr "Redigera artikelkommentar" + +#: plugins/googlereaderimport/init.js:18 +msgid "Google Reader Import" +msgstr "" + +#: plugins/googlereaderimport/init.js:42 +#, fuzzy +msgid "Please choose a file first." +msgstr "Välj fil först." + +#: plugins/instances/instances.js:10 +msgid "Link Instance" +msgstr "Länka instanser" + +#: plugins/instances/instances.js:73 +msgid "Edit Instance" +msgstr "Redigera instanser" + +#: plugins/instances/instances.js:122 +msgid "Remove selected instances?" +msgstr "Ta bort markerade instanser?" + +#: plugins/instances/instances.js:125 +#, fuzzy +msgid "Removing selected instances..." +msgstr "Ta bort markerade instanser?" + +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 +msgid "No instances are selected." +msgstr "Inga instanser valda." + +#: plugins/instances/instances.js:156 +msgid "Please select only one instance." +msgstr "Välj enbart en instans." + +#: plugins/share/share.js:10 +msgid "Share article by URL" +msgstr "Dela artikel via URL" + +#: plugins/updater/updater.js:58 +msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." +msgstr "Liveuppdatering är en experimentell funktion. Gör backup på din tt-rss-katalog innan du fortsätter. Skriv 'ja' för att fortsätta." + +#~ msgid "Updated" +#~ msgstr "Uppdaterade" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Score" +#~ msgstr "Poäng" + +#~ msgid "Related" +#~ msgstr "Relaterade" + +#~ msgid "Notice" +#~ msgstr "Notering" + +#~ msgid "Tag Cloud" +#~ msgstr "Tagmoln" + +#~ msgid "Notifying %s." +#~ msgstr "Informerar %s." + +#~ msgid "Show additional preferences" +#~ msgstr "Visa ytterligare inställningar" + +#~ msgid "(%d feeds)" +#~ msgstr "(%d kanaler)" + +#~ msgid "Enable the options you wish to apply using checkboxes on the right:" +#~ msgstr "Välj de alternativ du vill tillämpla med checkboxarna till höger:" + +#~ msgid "Pocket" +#~ msgstr "Pocket" + +#~ msgid "Back to feeds" +#~ msgstr "Åter till kanallistan" + +#~ msgid "Pinterest" +#~ msgstr "Pinterest" + +#~ msgid "Finished: %d articles processed, %d imported, %d feeds created." +#~ msgstr "Klar: %d artiklar bearbetade, %d importerade, %d kanaler skapade." + +#~ msgid "Share on identi.ca" +#~ msgstr "Dela på identi.ca" + +#~ msgid "Owncloud" +#~ msgstr "Owncloud" + +#~ msgid "Owncloud url" +#~ msgstr "Owncloud URL" + +#~ msgid "Bookmark on OwnCloud " +#~ msgstr "Bokmärk på OwnCloud" + +#~ msgid "Flattr this article." +#~ msgstr "Dela på flattrn." + +#~ msgid "Share on Google+" +#~ msgstr "Dela på Google+" + +#~ msgid "Share on Twitter" +#~ msgstr "Dela på Twitter" + +#~ msgid "New articles available in this feed (click to show)" +#~ msgstr "Ny artikel i denna kanal (klicka för att visa)" + +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Detta raderar din lagrade inloggningsinformation till Twitter. Fortsätt?" + +#~ msgid "Mark all visible articles in %s as read?" +#~ msgstr "Flagga alla artiklar i %s som lästa?" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "No" +#~ msgstr "Nej" + +#~ msgid "Comments?" +#~ msgstr "Kommentarer?" + +#~ msgid "News" +#~ msgstr "Nyheter" + +#~ msgid "Move between feeds" +#~ msgstr "Flytta mellan kanaler" + +#~ msgid "Move between articles" +#~ msgstr "Flytta mellan artiklar" + +#~ msgid "Active article actions" +#~ msgstr "Aktivera artikelaktiviteter" + +#~ msgid "Mark articles below/above active one as read" +#~ msgstr "Flagga artiklar nedanför/ovanför den aktiva som lästa" + +#~ msgid "Scroll article content" +#~ msgstr "Skrolla artikelinnehåll" + +#~ msgid "Other actions" +#~ msgstr "Andra aktiviteter" + +#~ msgid "Display this help dialog" +#~ msgstr "Visa denna hjälpruta" + +#~ msgid "Multiple articles actions" +#~ msgstr "Fler artikelalternativ" + +#, fuzzy +#~ msgid "Select unread articles" +#~ msgstr "Markera olästa artiklar" + +#~ msgid "Select starred articles" +#~ msgstr "Markera stjärmärkta artiklar" + +#, fuzzy +#~ msgid "Select published articles" +#~ msgstr "Markera publicerade artiklar" + +#, fuzzy +#~ msgid "Deselect all articles" +#~ msgstr "Avmarkera alla artiklar" + +#~ msgid "Feed actions" +#~ msgstr "Kanalalternativ" + +#~ msgid "If viewing category, (un)collapse it" +#~ msgstr "Öppna/stäng visad kategori" + +#~ msgid "Press any key to close this window." +#~ msgstr "Tryck valfri tangent för att stänga detta fönster." + +#~ msgid "My Feeds" +#~ msgstr "Mina kanaler" + +#, fuzzy +#~ msgid "Other Feeds" +#~ msgstr "Andra kanaler" + +#~ msgid "Panel actions" +#~ msgstr "Panelalternativ" + +#~ msgid "Top 25 feeds" +#~ msgstr "Topp 25 kanaler" + +#~ msgid "Edit feed categories" +#~ msgstr "Redigera kanalkategorier" + +#~ msgid "Focus search (if present)" +#~ msgstr "Fokusera sökning (om vald)" + +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "OBS: Beroende på konfiguration och behörigheter så kanske inte alla alternativ är tillgängliga." + +#~ msgid "Open article in new tab" +#~ msgstr "Öppna artikel i ny flik" + +#~ msgid "Right-to-left content" +#~ msgstr "Innehåll från höger till vänster" + +#~ msgid "Cache content locally" +#~ msgstr "Cachea innehåll lokalt" + +#~ msgid "Mark posts as updated on content change" +#~ msgstr "Flagga artiklar som uppdaterade när innehåll ändras" + +#~ msgid "Loading..." +#~ msgstr "Laddar..." + +#~ msgid "View in a tt-rss tab" +#~ msgstr "Visa i en tt-rss-flik" + +#~ msgid "Magpie" +#~ msgstr "Magpie" + +#~ msgid "SimplePie" +#~ msgstr "SimplePie" + +#~ msgid "using" +#~ msgstr "använder" + +#~ msgid "OAuth will be used automatically for Twitter feeds." +#~ msgstr "OAuth används automatiskt för Twitterkanaler" + +#~ msgid "match on" +#~ msgstr "sök på:" + +#~ msgid "Title or content" +#~ msgstr "Titel eller innehåll" + +#~ msgid "Your request could not be completed." +#~ msgstr "Kunde inte utföras." + +#~ msgid "Feed update has been scheduled." +#~ msgstr "Kanaluppdatering är schemalagd." + +#~ msgid "Category update has been scheduled." +#~ msgstr "Kategoriuppdatering är schemalagd." + +#~ msgid "Can't update this kind of feed." +#~ msgstr "Du kan inte uppdatera denna typ av kanal" + +#~ msgid "Original article" +#~ msgstr "Orignalartikel" + +#~ msgid "Update feed" +#~ msgstr "Alla kanaler uppdaterade" + +#~ msgid "With subcategories" +#~ msgstr "Med underkategorier" + +#~ msgid "Twitter OAuth" +#~ msgstr "Twitter OAuth" + +#~ msgid "
  • Adding category %s.
  • " +#~ msgstr "
  • Läggar till kategori %s.
  • " + +#~ msgid "Duplicate filter %s" +#~ msgstr "Filterdubblett %s" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Register with Twitter" +#~ msgstr "Registera hos Twitter" + +#~ msgid "Could not connect to Twitter. Refresh the page or try again later." +#~ msgstr "Kunde inte ansluta till Twitter. Ladda om sidan eller försök igen senare." + +#~ msgid "Congratulations! You have successfully registered with Twitter." +#~ msgstr "Grattis! Du är nu registrerad med Twitter." + +#~ msgid "before" +#~ msgstr "före" + +#~ msgid "after" +#~ msgstr "efter" + +#~ msgid "Check it" +#~ msgstr "Testa" + +#~ msgid "Apply to category" +#~ msgstr "Tillämpa i kategori" + +#~ msgid "Category $%s already exists in the database." +#~ msgstr "Kategori $%s finns redan i databasen." + +#~ msgid "No feed categories defined." +#~ msgstr "Inga kanalkategorier definierade." + +#~ msgid "Hint: you can drag feeds and categories around." +#~ msgstr "Tips: Du kan dra runt kanaler och kategorier med musen." + +#~ msgid "Subscribing using bookmarklet" +#~ msgstr "Prenumerera via en bookmarklet" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." +#~ msgstr "Innan du kan uppdatera dina Twitterkanaler måste du registrera denna instans av Tiny Tiny RSS hos Twitter." + +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "Du är registerad hos Twitter och ska nu ha åtkomst till dina Twitterkanaler " + +#~ msgid "Register with Twitter.com" +#~ msgstr "Registrera hos Twitter" + +#~ msgid "Clear stored credentials" +#~ msgstr "Radera lagrad inloggningsuppgifter" + +#~ msgid "Created filter %s" +#~ msgstr "Skapade filter %s" + +#~ msgid "Attachment:" +#~ msgstr "Bilaga:" + +#~ msgid "Subscribing to feed..." +#~ msgstr "Prenumererar på kanal..." + +#~ msgid "Filter Test Results" +#~ msgstr "Filtertestresultat" + +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "Växla automatiskt till nästa kanal när du klickar på \"Markera alla som lästa\"i verktygsraden." -- cgit v1.2.3 From df806921e0dbf1b124f54465edaae425aab388e9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 1 Apr 2013 21:35:29 +0400 Subject: rebase translations --- locale/ca_CA/LC_MESSAGES/messages.mo | Bin 26818 -> 26818 bytes locale/ca_CA/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/cs_CZ/LC_MESSAGES/messages.mo | Bin 42958 -> 42958 bytes locale/cs_CZ/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/de_DE/LC_MESSAGES/messages.mo | Bin 62612 -> 62612 bytes locale/de_DE/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/es_ES/LC_MESSAGES/messages.mo | Bin 42939 -> 42939 bytes locale/es_ES/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/fi_FI/LC_MESSAGES/messages.mo | Bin 40828 -> 40828 bytes locale/fi_FI/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/fr_FR/LC_MESSAGES/messages.mo | Bin 68803 -> 68803 bytes locale/fr_FR/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/hu_HU/LC_MESSAGES/messages.mo | Bin 57227 -> 57227 bytes locale/hu_HU/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/it_IT/LC_MESSAGES/messages.mo | Bin 40386 -> 40386 bytes locale/it_IT/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/ja_JP/LC_MESSAGES/messages.mo | Bin 27406 -> 27406 bytes locale/ja_JP/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/lv_LV/LC_MESSAGES/messages.mo | Bin 49387 -> 49387 bytes locale/lv_LV/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/nb_NO/LC_MESSAGES/messages.mo | Bin 25423 -> 25423 bytes locale/nb_NO/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/nl_NL/LC_MESSAGES/messages.mo | Bin 54679 -> 54679 bytes locale/nl_NL/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/pl_PL/LC_MESSAGES/messages.mo | Bin 64999 -> 64999 bytes locale/pl_PL/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/pt_BR/LC_MESSAGES/messages.mo | Bin 7311 -> 7311 bytes locale/pt_BR/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/ru_RU/LC_MESSAGES/messages.mo | Bin 41926 -> 41926 bytes locale/ru_RU/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ locale/zh_CN/LC_MESSAGES/messages.mo | Bin 37932 -> 37932 bytes locale/zh_CN/LC_MESSAGES/messages.po | 149 +++++++++++++++++------------------ messages.pot | 114 +++++++++++++-------------- 33 files changed, 1241 insertions(+), 1257 deletions(-) diff --git a/locale/ca_CA/LC_MESSAGES/messages.mo b/locale/ca_CA/LC_MESSAGES/messages.mo index 1d1686ff9..b881a24b2 100644 Binary files a/locale/ca_CA/LC_MESSAGES/messages.mo and b/locale/ca_CA/LC_MESSAGES/messages.mo differ diff --git a/locale/ca_CA/LC_MESSAGES/messages.po b/locale/ca_CA/LC_MESSAGES/messages.po index 06d28363e..ed6d6948d 100644 --- a/locale/ca_CA/LC_MESSAGES/messages.po +++ b/locale/ca_CA/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2009-11-19 09:40+0100\n" "Last-Translator: Alfred Galitó \n" "Language-Team: Català \n" @@ -17,88 +17,88 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Language: Catalan\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Valors per defecte" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "No ho purguis mai" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Al cap d'1 setmana" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Al cap de 2 setmanes" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Al cap d'1 mes" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Al cap de 2 mesos" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Al cap de 3 mesos" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Interval per defecte" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Deshabilita les actualitzacions" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Cada 15 minuts" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "cada 30 minuts" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Cada hora" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Cada 4 hores" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Cada 12 hores" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Diàriament" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Setmanalment" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Usuari" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Súper usuari" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrador" @@ -137,9 +137,9 @@ msgstr "La base de dades de Tiny Tiny RSS està actualitzada." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Torna a Tiny Tiny RSS" @@ -254,7 +254,6 @@ msgstr "Ha fallat la sortida de prova de SQL, reviseu la base configuració de l #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -414,7 +413,7 @@ msgid "Feed actions:" msgstr "Accions sobre els canals:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Subscriviu-vos al canal" @@ -545,12 +544,12 @@ msgid "Check availability" msgstr "Comprova la disponibilitat" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Adreça electrònica:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Quant és dos més dos:" @@ -1224,14 +1223,14 @@ msgid "Select theme" msgstr "Seleccioneu una interfície" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Usuari:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Contrasenya:" @@ -1242,7 +1241,7 @@ msgid "I forgot my password" msgstr "El nom d'usuari o la contrasenya és incorrecte" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Idioma:" @@ -1252,7 +1251,7 @@ msgid "Profile:" msgstr "Fitxer:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 #, fuzzy @@ -1268,7 +1267,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Registreu-vos" @@ -1300,8 +1299,8 @@ msgid "Save" msgstr "Desa" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1322,17 +1321,17 @@ msgstr "Desa" msgid "Cancel" msgstr "Cancel·la" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Torna a Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Titre :" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1340,106 +1339,106 @@ msgstr "Titre :" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Contingut" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "Etiquetes" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Última connexió el" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "El nom d'usuari o la contrasenya és incorrecte" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Ja esteu subscrit a %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Subscrit a %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "Ja esteu subscrit a %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "No s'ha trobat cap canal." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "L'adreça URL del canal ha canviat." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Ja esteu subscrit a %s." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "Us voleu donar de baixa dels canals seleccionats?" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Edita les opcions de les subscripcions" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Contrasenya:" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Reinicia la contrasenya" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Vés enrere" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/cs_CZ/LC_MESSAGES/messages.mo b/locale/cs_CZ/LC_MESSAGES/messages.mo index ec8c8f628..6148ffe04 100644 Binary files a/locale/cs_CZ/LC_MESSAGES/messages.mo and b/locale/cs_CZ/LC_MESSAGES/messages.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po index 512d4ab26..c19045a1c 100644 --- a/locale/cs_CZ/LC_MESSAGES/messages.po +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-31 18:03+0200\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech \n" @@ -18,88 +18,88 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 1.5\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Použít výchozí" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nikdy nečistit" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "starší než týden" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "starší než 2 týdny" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "starší než měsíc" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "starší než 2 měsíce" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "starší než 3 měsíce" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Výchozí interval" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Zakázat aktualizace" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Každých 15 minut" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Každých 30 minut" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Každou hodinu" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Každé 4 hodiny" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Každých 12 hodin" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Denně" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Týdně" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Uživatel" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Uživatel s rozšířenými pravomocemi" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrátor" @@ -138,9 +138,9 @@ msgstr "Databáze Tiny Tiny RSS je aktuální." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Zpět do Tiny Tiny RSS" @@ -251,7 +251,6 @@ msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkon #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -407,7 +406,7 @@ msgid "Feed actions:" msgstr "Činnosti kanálů:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Přihlásit se k odběru..." @@ -535,12 +534,12 @@ msgid "Check availability" msgstr "Ověřit dostupnost" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-mail:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Kolik je dva plus dva:" @@ -1164,14 +1163,14 @@ msgid "Select theme" msgstr "Zvolit motiv" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Přihlášení:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Heslo:" @@ -1181,7 +1180,7 @@ msgid "I forgot my password" msgstr "Zapomněl jsem heslo" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Jazyk:" @@ -1190,7 +1189,7 @@ msgid "Profile:" msgstr "Profil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1205,7 +1204,7 @@ msgid "Remember me" msgstr "Zapamatovat" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Přihlásit" @@ -1236,8 +1235,8 @@ msgid "Save" msgstr "Uložit" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1258,16 +1257,16 @@ msgstr "Uložit" msgid "Cancel" msgstr "Zrušit" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Sdílet s Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Název:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1275,99 +1274,99 @@ msgstr "Název:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Obsah:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Štítky:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Sdílený článek se objeví v kanálu \"Publikováno\"." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Sdílet" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Nepřihlášený" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Neplatné uživatelské jméno nebo heslo" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Již odebíráte %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Zahájen odběr %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Nelze zahájit odběr %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Nenalezeny žádné kanály v %s." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Nalezeno více URL kanálů." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Nelze zahájit odběr %s.
    Nelze stáhnout URL kanálu." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Zahájit odběr vybraných kanálů" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Upravit možnosti odebírání" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 msgid "Password recovery" msgstr "Obnova hesla" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "Musíte zadat platný název účtu a e-mailovou adresu. Nové heslo bude zasláno na vaši e-mailovou adresu." -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Obnovit heslo" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "Některý z požadovaných parametrů chybí nebo je neplatný." -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Jít zpět" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "Lituji, kombinace e-mailové adresy a přihlašovacího jména nenalezena." diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index d72ac4b45..b24d3b402 100755 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index 04148c1ca..bb9ddf7e0 100755 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-25 17:14+0100\n" "Last-Translator: Joschasa \n" "Language-Team: \n" @@ -23,88 +23,88 @@ msgstr "" "X-Poedit-Language: German\n" "X-Poedit-Bookmarks: -1,557,558,-1,-1,-1,-1,-1,-1,-1\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Standard verwenden" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Niemals löschen" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Nach 1 Woche" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Nach 2 Wochen" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Nach 1 Monat" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Nach 2 Monaten" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Nach 3 Monaten" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Standard-Intervall" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Nie" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Alle 15 Minuten" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Alle 30 Minuten" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Stündlich" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Alle 4 Stunden" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Alle 12 Stunden" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Täglich" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Wöchentlich" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Benutzer" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Erfahrener Benutzer" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrator" @@ -143,9 +143,9 @@ msgstr "Tiny Tiny RSS Datenbank ist auf dem neusten Stand." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Zu Tiny Tiny RSS zurückkehren" @@ -255,7 +255,6 @@ msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PH #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -412,7 +411,7 @@ msgid "Feed actions:" msgstr "Feed-Aktionen:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feed abonnieren..." @@ -540,12 +539,12 @@ msgid "Check availability" msgstr "Verfügbarkeit prüfen" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-Mail:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Wieviel ist zwei plus zwei:" @@ -1176,14 +1175,14 @@ msgid "Select theme" msgstr "Thema auswählen" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Benutzername:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Passwort:" @@ -1193,7 +1192,7 @@ msgid "I forgot my password" msgstr "Ich habe mein Passwort vergessen" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Sprache:" @@ -1202,7 +1201,7 @@ msgid "Profile:" msgstr "Profil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1217,7 +1216,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Anmelden" @@ -1248,8 +1247,8 @@ msgid "Save" msgstr "Speichern" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1270,16 +1269,16 @@ msgstr "Speichern" msgid "Cancel" msgstr "Abbrechen" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Teilen mit Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Titel:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1287,100 +1286,100 @@ msgstr "Titel:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Inhalt:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Label:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Geteilte Artikel erscheinen unter 'Veröffentlichte Artikel'." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Teilen" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Nicht angemeldet" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Benutzername oder Passwort falsch" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "%s bereits abonniert." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "%s abonniert." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Konnte %s nicht abonnieren." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Keine Feeds in %s gefunden." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Mehrere Feed-URLs gefunden." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht heruntergeladen werden." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Ausgewählte Feeds abonnieren" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Abonnementoptionen bearbeiten" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Passwort" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Passwort zurücksetzen" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "Einige der benötigten Eingaben fehlen oder sind falsch." -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Zurück" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht gefunden werden." diff --git a/locale/es_ES/LC_MESSAGES/messages.mo b/locale/es_ES/LC_MESSAGES/messages.mo index cb4de0399..01b092907 100644 Binary files a/locale/es_ES/LC_MESSAGES/messages.mo and b/locale/es_ES/LC_MESSAGES/messages.mo differ diff --git a/locale/es_ES/LC_MESSAGES/messages.po b/locale/es_ES/LC_MESSAGES/messages.po index 30631ba8b..1321b2a8f 100644 --- a/locale/es_ES/LC_MESSAGES/messages.po +++ b/locale/es_ES/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2012-10-25 00:12+0100\n" "Last-Translator: DavidM \n" "Language-Team: Español \n" @@ -16,88 +16,88 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Usar configuración por defecto" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nunca purgar" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 semana de antigüedad" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 semanas de antigüedad" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 mes de antigüedad" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 meses de antigüedad" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 meses de antigüedad" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Intervalo por defecto" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Desactivar actualizaciones" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Cada 15 minutos" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Cada 30 minutos" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Cada hora" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Cada 4 horas" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Cada 12 horas" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Diariamente" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Semanalmente" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Usuario" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Usuario con poder" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrador" @@ -136,9 +136,9 @@ msgstr "La base de datos de Tiny Tiny RSS está actualizada." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Volver a Tiny Tiny RSS" @@ -250,7 +250,6 @@ msgstr "La prueba de escape SQL ha fallado. Por favor, revise la configuración #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -408,7 +407,7 @@ msgid "Feed actions:" msgstr "Acciones de la fuente:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Suscribirse a una fuente..." @@ -537,12 +536,12 @@ msgid "Check availability" msgstr "Comprobar la disponibilidad" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Correo electrónico:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "¿Cuánto es dos más dos?" @@ -1198,14 +1197,14 @@ msgid "Select theme" msgstr "Seleccionar plantilla" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Nombre de usuario:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Contraseña:" @@ -1216,7 +1215,7 @@ msgid "I forgot my password" msgstr "Nombre de usuario o contraseña incorrecta" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Idioma:" @@ -1225,7 +1224,7 @@ msgid "Profile:" msgstr "Perfil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1240,7 +1239,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Iniciar sesión" @@ -1271,8 +1270,8 @@ msgid "Save" msgstr "Guardar" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1293,18 +1292,18 @@ msgstr "Guardar" msgid "Cancel" msgstr "Cancelar" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Volver a Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 #, fuzzy msgid "Title:" msgstr "Título" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1312,106 +1311,106 @@ msgstr "Título" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Contenido" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "Marcadores" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Última sesión el" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Nombre de usuario o contraseña incorrecta" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Ya está suscrito a %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Suscrito a %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "Ya está suscrito a %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "No se han encontrado fuentes." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "La URL de la fuente publicada ha sido cambiada." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Ya está suscrito a %s." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "¿Cancelar la suscripción a las fuentes seleccionadas?" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Editar las opciones de suscripción" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Contraseña:" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Redefinir contraseña" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Mover a la fuente original" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/fi_FI/LC_MESSAGES/messages.mo b/locale/fi_FI/LC_MESSAGES/messages.mo index 6b11e1384..7809ba6c9 100644 Binary files a/locale/fi_FI/LC_MESSAGES/messages.mo and b/locale/fi_FI/LC_MESSAGES/messages.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/messages.po b/locale/fi_FI/LC_MESSAGES/messages.po index f332a9529..85d0f8ebb 100644 --- a/locale/fi_FI/LC_MESSAGES/messages.po +++ b/locale/fi_FI/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.7.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-04-01 14:49+0200\n" "Last-Translator: Arto Tolonen \n" "Language-Team: \n" @@ -17,88 +17,88 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Oletus" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Älä poista koskaan" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Viikkoa vanhemmat" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 viikkoa vanhemmat" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Kuukautta vanhemmat" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 kuukautta vanhemmat" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 kuukautta vanhemmat" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Oletusaikaväli" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Ei päivitystä" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Joka 15 minuutti" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Joka 30 minuutti" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Joka tunti" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Joka 4 tunti" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Joka 12 tunti" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Päivittäin" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Viikoittain" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Käyttäjä" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Edistynyt käyttäjä" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Ylläpitäjä" @@ -138,9 +138,9 @@ msgstr "" #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "" @@ -250,7 +250,6 @@ msgstr "" #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -406,7 +405,7 @@ msgid "Feed actions:" msgstr "Syötetoiminnot:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Tilaa syöte..." @@ -534,12 +533,12 @@ msgid "Check availability" msgstr "" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Email:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "" @@ -1162,14 +1161,14 @@ msgid "Select theme" msgstr "Valitse teema" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Käyttäjätunnus:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Salasana:" @@ -1179,7 +1178,7 @@ msgid "I forgot my password" msgstr "Unohdin salasanani" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Kieli:" @@ -1188,7 +1187,7 @@ msgid "Profile:" msgstr "Profiili:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1203,7 +1202,7 @@ msgid "Remember me" msgstr "Muista kirjautumiseni" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Kirjaudu sisään" @@ -1234,8 +1233,8 @@ msgid "Save" msgstr "Talleta" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1256,16 +1255,16 @@ msgstr "Talleta" msgid "Cancel" msgstr "Peru" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Jaa Tiny Tiny RSS:llä" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Otsikko:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1273,99 +1272,99 @@ msgstr "Otsikko:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Sisältö:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Tunnisteet" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Jaetut artikkelit näkyvät 'Julkisissa syötteissä'." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Jaa" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Et ole kirjautunut" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Väärä käyttäjätunnus tai salasana" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Olet jo tilannut syötteen %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Tilattu syöte %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Tätä syötettä ei voitu tilata %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "%s ei sisällä syötteitä." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Useita syöte-URLiä löytyi." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Syötettä %s ei voitu tilata.
    URLää ei voi ladata." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Tilaa valittu syöte" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Muokkaa syöteoptioita" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 msgid "Password recovery" msgstr "Salasanan palautus" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "Syötä tilisi sähköpostiosoite. Uusi salasana lähetetään sinulle sähköpostilla." -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Palauta salasana" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "Jotkin vaadituista parametreistä puuttuvat tai ovat väärin." -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Takaisin" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "Valitettavasti käyttjätunnus/email -yhdistelmää ei löydy." diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index 64bcb48fa..bc426c41c 100644 Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index 6389c6def..c9a497180 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-04-01 10:18+0100\n" "Last-Translator: Raphael Rochet \n" "Language-Team: French\n" @@ -22,88 +22,88 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.5.4\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Utiliser la valeur par défaut" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Ne jamais purger" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Au bout d'une semaine" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Au bout de 2 semaines" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Au bout d'un mois" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Au bout de 2 mois" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Au bout de 3 mois" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Fréquence de mise à jour par défaut" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Désactiver les mises à jour" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Toutes les 15 minutes" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Toutes les 30 minutes" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Toutes les heures" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Toutes les 4 heures" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Toutes les 12 heures" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Une fois par jour" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Une fois par semaine" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Utilisateur" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Utilisateur avancé" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrateur" @@ -142,9 +142,9 @@ msgstr "La base de données de Tiny Tiny RSS est à jour." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Revenir à Tiny Tiny RSS" @@ -254,7 +254,6 @@ msgstr "Le test d'échappement SQL a échoué, veuillez vérifier votre configur #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -410,7 +409,7 @@ msgid "Feed actions:" msgstr "Actions sur ce flux :" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "S'abonner au flux..." @@ -538,12 +537,12 @@ msgid "Check availability" msgstr "Vérifier la disponibilité" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Adresse mail :" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Combien font 2 plus 2 :" @@ -1166,14 +1165,14 @@ msgid "Select theme" msgstr "Sélectionner un thème" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Identifiant :" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Mot de passe :" @@ -1183,7 +1182,7 @@ msgid "I forgot my password" msgstr "J'ai oublié mon mot de passe" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Langue :" @@ -1192,7 +1191,7 @@ msgid "Profile:" msgstr "Profil :" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1207,7 +1206,7 @@ msgid "Remember me" msgstr "Se souvenir de moi" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Se connecter" @@ -1238,8 +1237,8 @@ msgid "Save" msgstr "Enregistrer" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1260,16 +1259,16 @@ msgstr "Enregistrer" msgid "Cancel" msgstr "Annuler" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Partager avec Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Titre :" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1277,99 +1276,99 @@ msgstr "Titre :" msgid "URL:" msgstr "URL :" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Contenu :" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Etiquettes :" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Les articles partagés apparaîtront dans le flux Publiés." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Partager" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Non connecté" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Identifiant ou mot de passe incorrect" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Déjà abonné à %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Abonné à %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Impossible de s'abonner à %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Aucun flux trouvé dans %s." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Plusieurs flux trouvé." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Impossible de s'abonner à %s.
    Impossible de télécharger l'URL du flux." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "S'abonner au flux sélectionné" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Modifier les options d'abonnement" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 msgid "Password recovery" msgstr "Récupération de mot de passe" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "Vous devrez fournir un nom et une adresse email valides. Le nouveau mot de passe sera envoyé à votre adresse email." -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Réinitialiser le mot de passe" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "Des paramètres du formulaire manquent ou sont invalides." -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Revenir" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "Désolé, ce couple identifiant et mail n'a pas été trouvé." diff --git a/locale/hu_HU/LC_MESSAGES/messages.mo b/locale/hu_HU/LC_MESSAGES/messages.mo index 1af7e126c..cbb853060 100644 Binary files a/locale/hu_HU/LC_MESSAGES/messages.mo and b/locale/hu_HU/LC_MESSAGES/messages.mo differ diff --git a/locale/hu_HU/LC_MESSAGES/messages.po b/locale/hu_HU/LC_MESSAGES/messages.po index f8a52cf53..4f0e2e63f 100644 --- a/locale/hu_HU/LC_MESSAGES/messages.po +++ b/locale/hu_HU/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-26 12:00+0100\n" "Last-Translator: Zoltan Faludi \n" "Language-Team: HUNGARIAN\n" @@ -17,88 +17,88 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.5\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Alapértelmezett beállítás" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Sose töröld a régi híreket" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 hetes" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 hetes" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 hónapos" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 hónapos" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 hónapos" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Frissítési intervallum:" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Frissítések kikapcsolása" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Minden 15 percben" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Minden 30 percben" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Óránként" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Minden 4 órában" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Minden 12 órában" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Napi" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Heti" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Felhasználó" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Kiemelt felhasználó" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Adminisztrátor" @@ -137,9 +137,9 @@ msgstr "A Tiny Tiny RSS adatbázis friss." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Vissza az RSS-olvasóhoz" @@ -253,7 +253,6 @@ msgstr "SQL eszképelési teszt sikertelen, ellenőrizze az adatbázis és a PHP #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -410,7 +409,7 @@ msgid "Feed actions:" msgstr "Műveletek hírcsatornákkal:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feliratkozás hírcsatornára..." @@ -538,12 +537,12 @@ msgid "Check availability" msgstr "Ellenőrizze, hogy nem foglalt-e már:" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-mail:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Mennyi kettő meg kettő?" @@ -1170,14 +1169,14 @@ msgid "Select theme" msgstr "Stílusválasztó" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Felhasználó:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Jelszó:" @@ -1188,7 +1187,7 @@ msgid "I forgot my password" msgstr "Érvénytelen jelszó" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Nyelv:" @@ -1197,7 +1196,7 @@ msgid "Profile:" msgstr "Profil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1212,7 +1211,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Belépés" @@ -1243,8 +1242,8 @@ msgid "Save" msgstr "Mentés" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1265,16 +1264,16 @@ msgstr "Mentés" msgid "Cancel" msgstr "Mégsem" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Megosztás Tiny Tiny RSS-el" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Cím:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1282,101 +1281,101 @@ msgstr "Cím:" msgid "URL:" msgstr "Hírcsatorna URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Tartalom:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Címkék:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "A megosztott hír a Publikált hírek között fog megjelenni." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Megosztás" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Nincs belépve" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Hibás felhasználói név vagy jelszó" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Már fel van iratkozva erre a hírcsatornára: %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Feliratkozva erre a hírcsatornára: %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Nem lehet feliratkozni ide: %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Nem található hírcsatorna itt: %s." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Több hírcsatorna URL-t találtam." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Nem lehet feliratkozni ide: %s.
    Nem lehet betölteni a hícsatorna URL-t." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Feliratkozás a kiválasztott hírcsatornára" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Feliratkozási beállítások szerkesztése" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Jelszó" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Jelszó visszaállítás" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Visszalépés" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/it_IT/LC_MESSAGES/messages.mo b/locale/it_IT/LC_MESSAGES/messages.mo index c3b323816..e0f5c57d0 100644 Binary files a/locale/it_IT/LC_MESSAGES/messages.mo and b/locale/it_IT/LC_MESSAGES/messages.mo differ diff --git a/locale/it_IT/LC_MESSAGES/messages.po b/locale/it_IT/LC_MESSAGES/messages.po index f31fd3d35..809e6fe20 100644 --- a/locale/it_IT/LC_MESSAGES/messages.po +++ b/locale/it_IT/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2012-02-14 08:31+0000\n" "Last-Translator: gothfox \n" "Language-Team: LANGUAGE \n" @@ -18,88 +18,88 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Utilizza predefiniti" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Non pulire mai" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Vecchi di 1 settimana" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Vecchi di 2 settimane" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Vecchi di 1 mese" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Vecchi di 2 mesi" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Vecchi di 3 mesi" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Intervallo predefinito" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Disabilitare aggiornamenti" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Ogni 15 minuti" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Ogni 30 minuti" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "A ogni ora" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Ogni 4 ore" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Ogni 12 ore" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Giornalmente" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Settimanalmente" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Utente" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Utente con più autorizzazioni" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Amministratore" @@ -138,9 +138,9 @@ msgstr "Il database di Tiny Tiny RSS è aggiornato." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Ritorna a Tiny Tiny RSS" @@ -258,7 +258,6 @@ msgstr "Test di sanitizzazione dell'SQL fallito; controllare il database e #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -416,7 +415,7 @@ msgid "Feed actions:" msgstr "Azioni notiziari:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Sottoscrivi il notiziario..." @@ -545,12 +544,12 @@ msgid "Check availability" msgstr "Controlla disponibilità" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Email:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Quanto fa due più due:" @@ -1206,14 +1205,14 @@ msgid "Select theme" msgstr "Seleziona tema" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Accesso:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Password:" @@ -1224,7 +1223,7 @@ msgid "I forgot my password" msgstr "Nome utente o password sbagliati" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Lingua:" @@ -1233,7 +1232,7 @@ msgid "Profile:" msgstr "Profilo:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1248,7 +1247,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Accedi" @@ -1279,8 +1278,8 @@ msgid "Save" msgstr "Salva" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1301,18 +1300,18 @@ msgstr "Salva" msgid "Cancel" msgstr "Annulla" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Sottoscrive in Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 #, fuzzy msgid "Title:" msgstr "Titolo" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1320,105 +1319,105 @@ msgstr "Titolo" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Contenuto" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "Etichette" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Ultimo accesso" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Nome utente o password sbagliati" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Si ha già una sottoscrizione a %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Sottoscrizione avvenuta a %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Impossibile sottoscrivere %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "Nessun notiziario trovato." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "Nessun notiziario trovato." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Impossibile sottoscrivere %s.
    Impossibile scaricare l'URL del notiziario." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Sottoscrivi il notiziario selezionato" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Modifica opzioni di sottoscrizione" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Password" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Reimposta password" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Sposta indietro" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/ja_JP/LC_MESSAGES/messages.mo b/locale/ja_JP/LC_MESSAGES/messages.mo index b3d667292..ecce7b8b9 100644 Binary files a/locale/ja_JP/LC_MESSAGES/messages.mo and b/locale/ja_JP/LC_MESSAGES/messages.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/messages.po b/locale/ja_JP/LC_MESSAGES/messages.po index 2c5906664..f9c41da65 100644 --- a/locale/ja_JP/LC_MESSAGES/messages.po +++ b/locale/ja_JP/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss unstable\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-25 06:48+0900\n" "Last-Translator: skikuta \n" "Language-Team: \n" @@ -16,88 +16,88 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "標準を使用する" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "ずっと削除しない" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 週間前" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 週間前" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 ヶ月前" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 日月前" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 ヶ月前" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "更新の間隔" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "更新を無効にする" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "各 15 分" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "各 30 分" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "毎時" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "各 4 時間" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "各 12 時間" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "毎日" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "毎週" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "ユーザー" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "パワーユーザー" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "管理者" @@ -136,9 +136,9 @@ msgstr "Tiny Tiny RSS のデータベースを更新しました。" #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Tiny Tiny RSS に戻る" @@ -251,7 +251,6 @@ msgstr "SQLのエスケープ処理のテストに失敗しました。データ #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -411,7 +410,7 @@ msgid "Feed actions:" msgstr "フィード操作" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "フィードを購読する..." @@ -542,12 +541,12 @@ msgid "Check availability" msgstr "有効性の確認" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "メールアドレス:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "2 + 2 = ?" @@ -1220,14 +1219,14 @@ msgid "Select theme" msgstr "テーマを選択する" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "ログイン:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "パスワード:" @@ -1238,7 +1237,7 @@ msgid "I forgot my password" msgstr "ユーザー名かパスワードが正しくありません" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "言語:" @@ -1248,7 +1247,7 @@ msgid "Profile:" msgstr "ファイル:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 #, fuzzy @@ -1264,7 +1263,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "ログイン" @@ -1296,8 +1295,8 @@ msgid "Save" msgstr "保存" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1318,17 +1317,17 @@ msgstr "保存" msgid "Cancel" msgstr "取り消し" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Tiny Tiny RSS に戻る" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "題名:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1336,106 +1335,106 @@ msgstr "題名:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "内容" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "ラベル" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "共有した記事は発行したフィードに表示されます" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "共有" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "ログインしていません" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "ユーザー名かパスワードが正しくありません" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "%s は既に購読しています。" -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "%s を購読しました。" -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "%s は既に購読しています。" -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "フィードがありません。" -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "公開フィードの URL を変更しました。" -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "%s は既に購読しています。" -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "選択されたフィードの購読をやめますか?" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "購読オプションの編集" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "パスワード:" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "パスワードのリセット" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "いくつかの必須項目が入力されていないか、正しくありません" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "戻る" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "ログイン名とメールアドレスの組み合わせが組み合わせが見つかりませんでした" diff --git a/locale/lv_LV/LC_MESSAGES/messages.mo b/locale/lv_LV/LC_MESSAGES/messages.mo index 46acf94db..520a5706c 100644 Binary files a/locale/lv_LV/LC_MESSAGES/messages.mo and b/locale/lv_LV/LC_MESSAGES/messages.mo differ diff --git a/locale/lv_LV/LC_MESSAGES/messages.po b/locale/lv_LV/LC_MESSAGES/messages.po index e4cde5e15..0e5fd6626 100644 --- a/locale/lv_LV/LC_MESSAGES/messages.po +++ b/locale/lv_LV/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-18 22:55+0300\n" "Last-Translator: Valdis Vītoliņš \n" "Language-Team: \n" @@ -16,88 +16,88 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Lietot noklusēto" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nekad nedzēst" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 nedēļu vecs" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 nedēļas vecs" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 mēnesi vecs" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 mēnešus vecs" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 mēnešus vecs" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Noklusētais intervāls" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Atslēgt atjaunojumus" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Katras 15 minūtes" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Katras 30 minūtes" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Ik stundu" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Katras 4 stundas" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Katras 12 stundas" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Ik dienas" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Ik nedēļu" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Lietotājs" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Superlietotājs" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrators" @@ -136,9 +136,9 @@ msgstr "Tiny Tiny RSS datubāze ir aktuāla." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Atgriezties uz Tiny Tiny RSS" @@ -256,7 +256,6 @@ msgstr "Neizdevās SQL izņēmumu tests, pārbaudiet jūsu datu bāzes un PHP ie #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -414,7 +413,7 @@ msgid "Feed actions:" msgstr "Barotnes darbības" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonēt barotni..." @@ -543,12 +542,12 @@ msgid "Check availability" msgstr "Pārbaudīt pieejamību" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-pasts:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Cik ir divi un divi:" @@ -1201,14 +1200,14 @@ msgid "Select theme" msgstr "Izvēlieties tēmu" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Pieteikties:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Parole:" @@ -1219,7 +1218,7 @@ msgid "I forgot my password" msgstr "Nepareiza parole" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Valoda:" @@ -1228,7 +1227,7 @@ msgid "Profile:" msgstr "Profils:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1243,7 +1242,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Pieteikties" @@ -1274,8 +1273,8 @@ msgid "Save" msgstr "Saglabāt" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1296,16 +1295,16 @@ msgstr "Saglabāt" msgid "Cancel" msgstr "Atcelt" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Kopīgot ar Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Virsraksts:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1313,101 +1312,101 @@ msgstr "Virsraksts:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Saturs:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Etiķetes:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Kopīgotais raksts parādīsies Publicēts barotnē" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Kopīgot" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Nav pieteicies" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Nepareizs lietotāja vārds vai parole" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Jau ir pasūtījis %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Pasūtījis %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Neizdevās pasūtīt %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "%s barotne netika atrasta." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Atradu vairākus barotņu URLus." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Neizdevās pasūtīt %s.
    Nevarēju lejuplādēt barotnes URL." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Pasūtīt norādīto barotni" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Rediģēt barotnes iestatījumus" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Parole" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Atstatīt paroli" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Pārvietot atpakaļ" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/nb_NO/LC_MESSAGES/messages.mo b/locale/nb_NO/LC_MESSAGES/messages.mo index a935f991d..0bc2eca86 100644 Binary files a/locale/nb_NO/LC_MESSAGES/messages.mo and b/locale/nb_NO/LC_MESSAGES/messages.mo differ diff --git a/locale/nb_NO/LC_MESSAGES/messages.po b/locale/nb_NO/LC_MESSAGES/messages.po index 6cff1278c..6924e2bb7 100644 --- a/locale/nb_NO/LC_MESSAGES/messages.po +++ b/locale/nb_NO/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS 1.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2009-05-02 00:10+0100\n" "Last-Translator: Christian Lomsdalen \n" "Language-Team: Norwegian Bokmål \n" @@ -16,88 +16,88 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Bruk standard" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Slett aldri" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 uke gammel" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 uker gammel" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 måned gammel" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 måneder gammel" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 måneder gammel" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Standard intervall:" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Slå av oppdateringer" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Hvert 15. minutt" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Hvert 30. minutt" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "På timen" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Hver 4. time" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Hver 12. time" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Daglig" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Ukentlig" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Bruker" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Superbruker" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrator" @@ -136,9 +136,9 @@ msgstr "Tiny Tiny RSS-databasen er oppdatert" #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Returner til Tiny Tiny RSS" @@ -257,7 +257,6 @@ msgstr "SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine. #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -417,7 +416,7 @@ msgid "Feed actions:" msgstr "Nyhetsstrømshandlinger:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonner på nyhetsstrøm..." @@ -548,12 +547,12 @@ msgid "Check availability" msgstr "Sjekk tilgjengeligheten" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-post:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Hvor mye er to pluss to:" @@ -1227,14 +1226,14 @@ msgid "Select theme" msgstr "Velg utseende" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Brukernavn:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Passord:" @@ -1245,7 +1244,7 @@ msgid "I forgot my password" msgstr "Feil brukernavn og/eller passord" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Språk:" @@ -1255,7 +1254,7 @@ msgid "Profile:" msgstr "Fil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 #, fuzzy @@ -1271,7 +1270,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Logg inn" @@ -1303,8 +1302,8 @@ msgid "Save" msgstr "Lagre" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1325,17 +1324,17 @@ msgstr "Lagre" msgid "Cancel" msgstr "Avbryt" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Returner til Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Tittel:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1343,106 +1342,106 @@ msgstr "Tittel:" msgid "URL:" msgstr "Nettadresse:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Innhold" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "Merkelapper" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Sist innlogget" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Feil brukernavn og/eller passord" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Abonnerer allerede på %s" -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Abonnerer på %s" -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "Abonnerer allerede på %s" -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "Ingen nyhetsstrømmer ble funnet." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "Adresse for nyhetsstrømmen for offentliggjorte innlegg har endret seg." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Abonnerer allerede på %s" -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "Fjern abonnement på valgte nyhetsstrømmer" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Rediger abonnementsalternativer" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Passord:" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Nullstill passordet" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Gå tilbake" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo index 9e00b7eeb..cd231e42c 100644 Binary files a/locale/nl_NL/LC_MESSAGES/messages.mo and b/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po index 93444ec71..9e77ca7ff 100644 --- a/locale/nl_NL/LC_MESSAGES/messages.po +++ b/locale/nl_NL/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TT-RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-23 11:28+0100\n" "Last-Translator: Dingoe \n" "Language-Team: translations \n" @@ -21,88 +21,88 @@ msgstr "" "X-Poedit-KeywordsList: _\n" "X-Poedit-Basepath: .\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Gebruik standaard" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nooit opschonen" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 week oud" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 weken oud" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 maand oud" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 maanden oud" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 maanden oud" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Standaard interval" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "updates uitschakelen" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Elke 15 minuten" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Elke 30 minuten" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Ieder uur" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Om de 4 uur" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Om de 12 uur" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Dagelijks" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Wekelijks" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Gebruiker" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Hoofdgebruiker" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Beheerder" @@ -141,9 +141,9 @@ msgstr "Tiny Tiny RSS database is bijgewerkt." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Ga terug naar Tiny Tiny RSS" @@ -261,7 +261,6 @@ msgstr "SQL escaping test mislukt. Controleer uw database en de PHP configuratie #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -419,7 +418,7 @@ msgid "Feed actions:" msgstr "Feed acties:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonneren op feed..." @@ -547,12 +546,12 @@ msgid "Check availability" msgstr "controleer beschikbaarheid" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-mail:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "hoeveel is twee plus twee:" @@ -1178,14 +1177,14 @@ msgid "Select theme" msgstr "Selecteer met ster" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Aanmelden:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Wachtwoord:" @@ -1196,7 +1195,7 @@ msgid "I forgot my password" msgstr "Onjuist wachtwoord" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Taal:" @@ -1205,7 +1204,7 @@ msgid "Profile:" msgstr "Profiel:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1220,7 +1219,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Aanmelden" @@ -1251,8 +1250,8 @@ msgid "Save" msgstr "Opslaan" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1273,16 +1272,16 @@ msgstr "Opslaan" msgid "Cancel" msgstr "Annuleren" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Deel met Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Titel:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1290,101 +1289,101 @@ msgstr "Titel:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Inhoud:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Labels:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Gedeeld artikel zal verschijnen in de Gepubliceerd feed." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Delen" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Niet ingelogd" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Onjuiste gebruikersnaam of wachtwoord" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Reeds geabonneerd op %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Geabonneerd op %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Kon niet abonneren op %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Geen feeds gevonden in %s." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Meerdere feed-URL's gevonden." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Kon niet abonneren op %s.
    Kon de feed URL niet downloaden." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Abonneren op de geselecteerde feed" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Bewerk abonnement opties" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Wachtwoord" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Herstel wachtwoord" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Terugzetten" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/pl_PL/LC_MESSAGES/messages.mo b/locale/pl_PL/LC_MESSAGES/messages.mo index 5b0b29b9d..90991481b 100644 Binary files a/locale/pl_PL/LC_MESSAGES/messages.mo and b/locale/pl_PL/LC_MESSAGES/messages.mo differ diff --git a/locale/pl_PL/LC_MESSAGES/messages.po b/locale/pl_PL/LC_MESSAGES/messages.po index 87c63a462..402443e0a 100644 --- a/locale/pl_PL/LC_MESSAGES/messages.po +++ b/locale/pl_PL/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2013-03-25 13:25+0100\n" "Last-Translator: Mirosław Lach \n" "Language-Team: Polish (http://www.transifex.com/projects/p/tt-rss/language/pl/)\n" @@ -19,88 +19,88 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Użyj domyślnych" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nigdy nie usuwaj" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Jednotygodniowe" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Dwutygodniowe" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Miesięczne" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Dwumiesięczne" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Trzymiesięczne" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Domyślna częstotliwość" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Wyłącz aktualizacje" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Co 15 minut" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Co 30 minut" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Co godzinę" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Co 4 godziny" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Co 12 godzin" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Codziennie" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Cotygodniowo" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Użytkownik" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Zaawansowany użytkownik" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrator" @@ -139,9 +139,9 @@ msgstr "Schemat bazy danych Tiny Tiny RSS jest aktualny." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Wróć do Tiny Tiny RSS" @@ -252,7 +252,6 @@ msgstr "Test escape'owania SQL nie powiódł się. Sprawdź konfigurację swojej #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -409,7 +408,7 @@ msgid "Feed actions:" msgstr "Działania dla kanałów:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Prenumeruj kanał..." @@ -537,12 +536,12 @@ msgid "Check availability" msgstr "Sprawdź dostępność" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "Email:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Ile wynosi dwa plus dwa:" @@ -1168,14 +1167,14 @@ msgid "Select theme" msgstr "Wybierz styl" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Nazwa użytkownika:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Hasło:" @@ -1185,7 +1184,7 @@ msgid "I forgot my password" msgstr "Zapomniałem hasła" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Język:" @@ -1194,7 +1193,7 @@ msgid "Profile:" msgstr "Profil:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1209,7 +1208,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Zaloguj" @@ -1240,8 +1239,8 @@ msgid "Save" msgstr "Zapisz" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1262,16 +1261,16 @@ msgstr "Zapisz" msgid "Cancel" msgstr "Anuluj" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Udostępnij za pomocą Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Tytuł:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1279,100 +1278,100 @@ msgstr "Tytuł:" msgid "URL:" msgstr "Adres:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "Treść:" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "Etykiety:" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "Udostępniany artykuł będzie wyświetlany w Publikowanych kanałach." -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "Udostępnij" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "Nie zalogowany" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Nieprawidłowa nazwa użytkownika lub hasło" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Prenumerujesz już kanał %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Zaprenumerowano kanał %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Nie udało się zaprenumerować %s." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Nie znaleziono kanałów w %s." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Znaleziono wiele adresów kanałów." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Nie udało się zaprenumerować %s. Nie udało się pobrać adresu kanału." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Prenumeruj wybrany kanał" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Edytuj opcje prenumeraty" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Hasło" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Resetuj hasło" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "Niektóre z wymaganych parametrów są nieprawidłowe lub nie zostały wprowadzone." -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Cofnij" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "Przykro mi, podana kombinacja nazwy użytkownika i adresu email nie została oznaleziona." diff --git a/locale/pt_BR/LC_MESSAGES/messages.mo b/locale/pt_BR/LC_MESSAGES/messages.mo index 1f30d9855..92452a764 100644 Binary files a/locale/pt_BR/LC_MESSAGES/messages.mo and b/locale/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/messages.po b/locale/pt_BR/LC_MESSAGES/messages.po index 4b0f652bd..f477e1359 100644 --- a/locale/pt_BR/LC_MESSAGES/messages.po +++ b/locale/pt_BR/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.2.14.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2007-10-24 00:47-0200\n" "Last-Translator: Marcelo Jorge VIeira (metal) \n" "Language-Team: Portuguese/Brazil\n" @@ -17,89 +17,89 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "Usar o padrão" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Nunca remover" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1 semana atrás" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2 semanas atrás" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1 mês atrás" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2 meses atrás" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3 meses atrás" -#: backend.php:80 +#: backend.php:78 #, fuzzy msgid "Default interval" msgstr "Padrão" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Desabilitar updates" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Cada 15 minutos" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Cada 30 minutos" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Toda hora" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Cada 4 horas" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Cada 12 horas" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Diariamente" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Semanalmente" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Usuário" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Administrador" @@ -138,9 +138,9 @@ msgstr "" #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "" @@ -253,7 +253,6 @@ msgstr "" #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -416,7 +415,7 @@ msgid "Feed actions:" msgstr "Ações do Feed:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 #, fuzzy msgid "Subscribe to feed..." msgstr "Removendo o Feed..." @@ -556,13 +555,13 @@ msgid "Check availability" msgstr "" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 #, fuzzy msgid "Email:" msgstr "E-mail:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "" @@ -1239,14 +1238,14 @@ msgid "Select theme" msgstr "Selecionar o tema" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Login:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Senha:" @@ -1257,7 +1256,7 @@ msgid "I forgot my password" msgstr "Senha nova" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Língua:" @@ -1267,7 +1266,7 @@ msgid "Profile:" msgstr "Arquivo:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 #, fuzzy @@ -1283,7 +1282,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 #, fuzzy msgid "Log in" @@ -1316,8 +1315,8 @@ msgid "Save" msgstr "Salvar" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1338,17 +1337,17 @@ msgstr "Salvar" msgid "Cancel" msgstr "Cancelar" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Removendo o Feed..." -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Título" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1357,105 +1356,105 @@ msgstr "Título" msgid "URL:" msgstr "Feed URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Conteúdo" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Último Login" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, fuzzy, php-format msgid "Already subscribed to %s." msgstr "Não pode criar o usuário %s" -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, fuzzy, php-format msgid "Subscribed to %s." msgstr "Removendo o Feed..." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "Não pode criar o usuário %s" -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "Sem Feeds para exibir." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "Sem Feeds para exibir." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Não pode criar o usuário %s" -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "Removendo o Feed..." -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Senha:" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 #, fuzzy msgid "Reset password" msgstr "Senha nova" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/ru_RU/LC_MESSAGES/messages.mo b/locale/ru_RU/LC_MESSAGES/messages.mo index 134d397cd..1ab69e72c 100644 Binary files a/locale/ru_RU/LC_MESSAGES/messages.mo and b/locale/ru_RU/LC_MESSAGES/messages.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/messages.po b/locale/ru_RU/LC_MESSAGES/messages.po index caf6217a4..e5dac1af1 100644 --- a/locale/ru_RU/LC_MESSAGES/messages.po +++ b/locale/ru_RU/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2009-05-29 14:38+0300\n" "Last-Translator: Max Kamashev \n" "Language-Team: Русский \n" @@ -19,88 +19,88 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.5\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "По умолчанию" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "Никогда" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "Неделя" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "Две недели" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "Один месяц" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "Два месяца" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "Три месяца" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "Интервал обновления:" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Не обновлять" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Каждые 15 минут" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Каждые 30 минут" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Каждый час" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Каждые 4 часа" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Каждые 12 часов" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Раз в день" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Раз в неделю" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "Пользователь" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Активный пользователь" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "Администратор" @@ -139,9 +139,9 @@ msgstr "Tiny Tiny RSS база данных обновлена." #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Вернуться к Tiny Tiny RSS" @@ -255,7 +255,6 @@ msgstr "неудавшийся тест экранирования SQL, пров #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -413,7 +412,7 @@ msgid "Feed actions:" msgstr "Действия над каналами:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Подписаться на канал..." @@ -542,12 +541,12 @@ msgid "Check availability" msgstr "Проверить доступность" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-mail: " #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Сколько будет, два плюс два:" @@ -1210,14 +1209,14 @@ msgid "Select theme" msgstr "Выбор темы" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Логин:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Пароль:" @@ -1228,7 +1227,7 @@ msgid "I forgot my password" msgstr "Некорректное имя пользователя или пароль" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Язык:" @@ -1237,7 +1236,7 @@ msgid "Profile:" msgstr "Профиль:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1252,7 +1251,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Войти" @@ -1283,8 +1282,8 @@ msgid "Save" msgstr "Сохранить" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1305,17 +1304,17 @@ msgstr "Сохранить" msgid "Cancel" msgstr "Отмена" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "Вернуться к Tiny Tiny RSS" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "Заголовок:" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1323,106 +1322,106 @@ msgstr "Заголовок:" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "Содержимое" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "Метки" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "Последний вход" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "Некорректное имя пользователя или пароль" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "Канал %s уже подписан." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "Добавлена подписка на %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, fuzzy, php-format msgid "Could not subscribe to %s." msgstr "Канал %s уже подписан." -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, fuzzy, php-format msgid "No feeds found in %s." msgstr "Каналы не найдены." -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "Опубликованный URL канала изменён." -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, fuzzy, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "Канал %s уже подписан." -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 #, fuzzy msgid "Subscribe to selected feed" msgstr "Отписаться от выбранных каналов?" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Редактировать опции подписки" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "Пароль" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "Сбросить пароль" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "Переместить назад" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/locale/zh_CN/LC_MESSAGES/messages.mo b/locale/zh_CN/LC_MESSAGES/messages.mo index e70eae4c9..63ddec233 100644 Binary files a/locale/zh_CN/LC_MESSAGES/messages.mo and b/locale/zh_CN/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/messages.po b/locale/zh_CN/LC_MESSAGES/messages.po index e12fdce8a..0bf4c0479 100644 --- a/locale/zh_CN/LC_MESSAGES/messages.po +++ b/locale/zh_CN/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: 2012-02-14 08:32+0000\n" "Last-Translator: Sai \n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/tt-rss/language/zh_CN/)\n" @@ -18,88 +18,88 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "使用默认" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "从不清理" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "1周前" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "2周前" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "1个月前" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "2个月前" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "3个月前" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "默认间隔" -#: backend.php:81 -#: backend.php:91 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "禁用更新" -#: backend.php:82 -#: backend.php:92 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "每15分钟" -#: backend.php:83 -#: backend.php:93 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "每30分钟" -#: backend.php:84 -#: backend.php:94 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "每小时" -#: backend.php:85 -#: backend.php:95 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "每4小时" -#: backend.php:86 -#: backend.php:96 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "每12小时" -#: backend.php:87 -#: backend.php:97 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "每天" -#: backend.php:88 -#: backend.php:98 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "每周" -#: backend.php:101 +#: backend.php:99 #: classes/pref/users.php:123 msgid "User" msgstr "用户" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "Power User" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "管理员" @@ -138,9 +138,9 @@ msgstr "Tiny Tiny RSS 数据库是最新版。" #: register.php:336 #: register.php:346 #: register.php:358 -#: classes/handler/public.php:626 -#: classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "返回 Tiny Tiny RSS" @@ -255,7 +255,6 @@ msgstr "SQL 脱出测试失败,请检查您的数据库和 PHP 设置。" #: index.php:154 #: index.php:273 #: prefs.php:103 -#: test.php:11 #: classes/backend.php:5 #: classes/pref/labels.php:296 #: classes/pref/filters.php:680 @@ -413,7 +412,7 @@ msgid "Feed actions:" msgstr "信息源操作:" #: index.php:232 -#: classes/handler/public.php:556 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "订阅信息源" @@ -542,12 +541,12 @@ msgid "Check availability" msgstr "检查可用性" #: register.php:228 -#: classes/handler/public.php:754 +#: classes/handler/public.php:776 msgid "Email:" msgstr "电子邮箱:" #: register.php:231 -#: classes/handler/public.php:759 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "二加二等于几:" @@ -1203,14 +1202,14 @@ msgid "Select theme" msgstr "选择主题" #: include/login_form.php:183 -#: classes/handler/public.php:461 -#: classes/handler/public.php:749 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 #: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "登陆:" #: include/login_form.php:192 -#: classes/handler/public.php:464 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "密码:" @@ -1221,7 +1220,7 @@ msgid "I forgot my password" msgstr "用户名或密码错误" #: include/login_form.php:201 -#: classes/handler/public.php:467 +#: classes/handler/public.php:489 msgid "Language:" msgstr "语言:" @@ -1230,7 +1229,7 @@ msgid "Profile:" msgstr "偏好:" #: include/login_form.php:213 -#: classes/handler/public.php:211 +#: classes/handler/public.php:233 #: classes/rpc.php:64 #: classes/pref/prefs.php:948 msgid "Default profile" @@ -1245,7 +1244,7 @@ msgid "Remember me" msgstr "" #: include/login_form.php:235 -#: classes/handler/public.php:477 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "登录" @@ -1276,8 +1275,8 @@ msgid "Save" msgstr "保存" #: classes/article.php:206 -#: classes/handler/public.php:438 -#: classes/handler/public.php:480 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 #: classes/feeds.php:1028 #: classes/feeds.php:1080 #: classes/feeds.php:1140 @@ -1298,18 +1297,18 @@ msgstr "保存" msgid "Cancel" msgstr "取消" -#: classes/handler/public.php:402 +#: classes/handler/public.php:424 #: plugins/bookmarklets/init.php:38 #, fuzzy msgid "Share with Tiny Tiny RSS" msgstr "在 Tiny Tiny RSS 中订阅" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 #, fuzzy msgid "Title:" msgstr "标题" -#: classes/handler/public.php:412 +#: classes/handler/public.php:434 #: classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 #: plugins/instances/init.php:215 @@ -1317,105 +1316,105 @@ msgstr "标题" msgid "URL:" msgstr "URL:" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 #, fuzzy msgid "Content:" msgstr "内容" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 #, fuzzy msgid "Labels:" msgstr "预定义标签" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 #, fuzzy msgid "Not logged in" msgstr "上次登录" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "用户名或密码错误" -#: classes/handler/public.php:562 -#: classes/handler/public.php:659 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "已经订阅到 %s." -#: classes/handler/public.php:565 -#: classes/handler/public.php:650 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "订阅到 %s." -#: classes/handler/public.php:568 -#: classes/handler/public.php:653 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "无法订阅 %s。" -#: classes/handler/public.php:571 -#: classes/handler/public.php:656 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "在 %s 中没有找到信息源。" -#: classes/handler/public.php:574 -#: classes/handler/public.php:662 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 #, fuzzy msgid "Multiple feed URLs found." msgstr "未找到信息源。" -#: classes/handler/public.php:578 -#: classes/handler/public.php:667 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "无法订阅 %s
    无法下载信息源的 URL。" -#: classes/handler/public.php:596 -#: classes/handler/public.php:685 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "订阅选中的信息源" -#: classes/handler/public.php:621 -#: classes/handler/public.php:709 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "编辑订阅选项" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 #, fuzzy msgid "Password recovery" msgstr "密码" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "You will need to provide valid account name and email. New password will be sent on your email address." msgstr "" -#: classes/handler/public.php:764 +#: classes/handler/public.php:786 #: classes/pref/users.php:360 msgid "Reset password" msgstr "重置密码" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 -#: classes/handler/public.php:804 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 #, fuzzy msgid "Go back" msgstr "移回原位" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" diff --git a/messages.pot b/messages.pot index 42ff184bc..7061d2d12 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 19:15+0400\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,79 +18,79 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: backend.php:71 +#: backend.php:69 msgid "Use default" msgstr "" -#: backend.php:72 +#: backend.php:70 msgid "Never purge" msgstr "" -#: backend.php:73 +#: backend.php:71 msgid "1 week old" msgstr "" -#: backend.php:74 +#: backend.php:72 msgid "2 weeks old" msgstr "" -#: backend.php:75 +#: backend.php:73 msgid "1 month old" msgstr "" -#: backend.php:76 +#: backend.php:74 msgid "2 months old" msgstr "" -#: backend.php:77 +#: backend.php:75 msgid "3 months old" msgstr "" -#: backend.php:80 +#: backend.php:78 msgid "Default interval" msgstr "" -#: backend.php:81 backend.php:91 +#: backend.php:79 backend.php:89 msgid "Disable updates" msgstr "" -#: backend.php:82 backend.php:92 +#: backend.php:80 backend.php:90 msgid "Each 15 minutes" msgstr "" -#: backend.php:83 backend.php:93 +#: backend.php:81 backend.php:91 msgid "Each 30 minutes" msgstr "" -#: backend.php:84 backend.php:94 +#: backend.php:82 backend.php:92 msgid "Hourly" msgstr "" -#: backend.php:85 backend.php:95 +#: backend.php:83 backend.php:93 msgid "Each 4 hours" msgstr "" -#: backend.php:86 backend.php:96 +#: backend.php:84 backend.php:94 msgid "Each 12 hours" msgstr "" -#: backend.php:87 backend.php:97 +#: backend.php:85 backend.php:95 msgid "Daily" msgstr "" -#: backend.php:88 backend.php:98 +#: backend.php:86 backend.php:96 msgid "Weekly" msgstr "" -#: backend.php:101 classes/pref/users.php:123 +#: backend.php:99 classes/pref/users.php:123 msgid "User" msgstr "" -#: backend.php:102 +#: backend.php:100 msgid "Power User" msgstr "" -#: backend.php:103 +#: backend.php:101 msgid "Administrator" msgstr "" @@ -121,8 +121,8 @@ msgstr "" #: db-updater.php:96 db-updater.php:165 db-updater.php:178 register.php:196 #: register.php:241 register.php:254 register.php:269 register.php:288 #: register.php:336 register.php:346 register.php:358 -#: classes/handler/public.php:626 classes/handler/public.php:714 -#: classes/handler/public.php:796 +#: classes/handler/public.php:648 classes/handler/public.php:736 +#: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "" @@ -243,7 +243,7 @@ msgstr "" msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "" -#: index.php:135 index.php:154 index.php:273 prefs.php:103 test.php:11 +#: index.php:135 index.php:154 index.php:273 prefs.php:103 #: classes/backend.php:5 classes/pref/labels.php:296 #: classes/pref/filters.php:680 classes/pref/feeds.php:1331 #: plugins/digest/digest_body.php:63 js/feedlist.js:128 js/feedlist.js:448 @@ -363,7 +363,7 @@ msgstr "" msgid "Feed actions:" msgstr "" -#: index.php:232 classes/handler/public.php:556 +#: index.php:232 classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "" @@ -480,11 +480,11 @@ msgstr "" msgid "Check availability" msgstr "" -#: register.php:228 classes/handler/public.php:754 +#: register.php:228 classes/handler/public.php:776 msgid "Email:" msgstr "" -#: register.php:231 classes/handler/public.php:759 +#: register.php:231 classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "" @@ -1076,12 +1076,12 @@ msgstr "" msgid "Select theme" msgstr "" -#: include/login_form.php:183 classes/handler/public.php:461 -#: classes/handler/public.php:749 plugins/mobile/login_form.php:40 +#: include/login_form.php:183 classes/handler/public.php:483 +#: classes/handler/public.php:771 plugins/mobile/login_form.php:40 msgid "Login:" msgstr "" -#: include/login_form.php:192 classes/handler/public.php:464 +#: include/login_form.php:192 classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "" @@ -1090,7 +1090,7 @@ msgstr "" msgid "I forgot my password" msgstr "" -#: include/login_form.php:201 classes/handler/public.php:467 +#: include/login_form.php:201 classes/handler/public.php:489 msgid "Language:" msgstr "" @@ -1098,7 +1098,7 @@ msgstr "" msgid "Profile:" msgstr "" -#: include/login_form.php:213 classes/handler/public.php:211 +#: include/login_form.php:213 classes/handler/public.php:233 #: classes/rpc.php:64 classes/pref/prefs.php:948 msgid "Default profile" msgstr "" @@ -1111,7 +1111,7 @@ msgstr "" msgid "Remember me" msgstr "" -#: include/login_form.php:235 classes/handler/public.php:477 +#: include/login_form.php:235 classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "" @@ -1136,8 +1136,8 @@ msgstr "" msgid "Save" msgstr "" -#: classes/article.php:206 classes/handler/public.php:438 -#: classes/handler/public.php:480 classes/feeds.php:1028 +#: classes/article.php:206 classes/handler/public.php:460 +#: classes/handler/public.php:502 classes/feeds.php:1028 #: classes/feeds.php:1080 classes/feeds.php:1140 classes/pref/users.php:178 #: classes/pref/labels.php:81 classes/pref/filters.php:408 #: classes/pref/filters.php:804 classes/pref/filters.php:880 @@ -1149,105 +1149,105 @@ msgstr "" msgid "Cancel" msgstr "" -#: classes/handler/public.php:402 plugins/bookmarklets/init.php:38 +#: classes/handler/public.php:424 plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "" -#: classes/handler/public.php:410 +#: classes/handler/public.php:432 msgid "Title:" msgstr "" -#: classes/handler/public.php:412 classes/pref/feeds.php:538 +#: classes/handler/public.php:434 classes/pref/feeds.php:538 #: classes/pref/feeds.php:769 plugins/instances/init.php:215 #: plugins/instances/init.php:405 msgid "URL:" msgstr "" -#: classes/handler/public.php:414 +#: classes/handler/public.php:436 msgid "Content:" msgstr "" -#: classes/handler/public.php:416 +#: classes/handler/public.php:438 msgid "Labels:" msgstr "" -#: classes/handler/public.php:435 +#: classes/handler/public.php:457 msgid "Shared article will appear in the Published feed." msgstr "" -#: classes/handler/public.php:437 +#: classes/handler/public.php:459 msgid "Share" msgstr "" -#: classes/handler/public.php:459 +#: classes/handler/public.php:481 msgid "Not logged in" msgstr "" -#: classes/handler/public.php:526 +#: classes/handler/public.php:548 msgid "Incorrect username or password" msgstr "" -#: classes/handler/public.php:562 classes/handler/public.php:659 +#: classes/handler/public.php:584 classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "" -#: classes/handler/public.php:565 classes/handler/public.php:650 +#: classes/handler/public.php:587 classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "" -#: classes/handler/public.php:568 classes/handler/public.php:653 +#: classes/handler/public.php:590 classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "" -#: classes/handler/public.php:571 classes/handler/public.php:656 +#: classes/handler/public.php:593 classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "" -#: classes/handler/public.php:574 classes/handler/public.php:662 +#: classes/handler/public.php:596 classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "" -#: classes/handler/public.php:578 classes/handler/public.php:667 +#: classes/handler/public.php:600 classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." msgstr "" -#: classes/handler/public.php:596 classes/handler/public.php:685 +#: classes/handler/public.php:618 classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "" -#: classes/handler/public.php:621 classes/handler/public.php:709 +#: classes/handler/public.php:643 classes/handler/public.php:731 msgid "Edit subscription options" msgstr "" -#: classes/handler/public.php:736 +#: classes/handler/public.php:758 msgid "Password recovery" msgstr "" -#: classes/handler/public.php:742 +#: classes/handler/public.php:764 msgid "" "You will need to provide valid account name and email. New password will be " "sent on your email address." msgstr "" -#: classes/handler/public.php:764 classes/pref/users.php:360 +#: classes/handler/public.php:786 classes/pref/users.php:360 msgid "Reset password" msgstr "" -#: classes/handler/public.php:774 +#: classes/handler/public.php:796 msgid "Some of the required form parameters are missing or incorrect." msgstr "" -#: classes/handler/public.php:778 classes/handler/public.php:804 +#: classes/handler/public.php:800 classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "" -#: classes/handler/public.php:800 +#: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." msgstr "" -- cgit v1.2.3 From d94fba61c1d995e5f15deec477ba74202304becd Mon Sep 17 00:00:00 2001 From: Daniel Andersson Date: Mon, 1 Apr 2013 21:08:04 +0200 Subject: Load plugin JS last to enhance plugin capabilities --- index.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.php b/index.php index 7fb7a7878..ac2762f7f 100644 --- a/index.php +++ b/index.php @@ -104,6 +104,9 @@ get_plugins() as $n => $p) { @@ -112,9 +115,6 @@ } } - print get_minified_js(array("tt-rss", - "functions", "feedlist", "viewfeed", "FeedTree")); - init_js_translations(); ?> -- cgit v1.2.3 From f2c624a23640eb1e47d83842d0bf8303209155b6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 00:04:05 +0400 Subject: add php native gzdecode() --- include/functions.php | 114 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/include/functions.php b/include/functions.php index 75ca6daf9..a559ed1da 100644 --- a/include/functions.php +++ b/include/functions.php @@ -3934,9 +3934,121 @@ } if (!function_exists('gzdecode')) { - function gzdecode($string) { // no support for 2nd argument + /* function gzdecode($string) { // no support for 2nd argument return file_get_contents('compress.zlib://data:who/cares;base64,'. base64_encode($string)); + } */ + + + function gzdecode($data, &$filename = '', &$error = '', $maxlength = null) { + $len = strlen($data); + if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) { + $error = "Not in GZIP format."; + return null; // Not GZIP format (See RFC 1952) + } + $method = ord(substr($data,2,1)); // Compression method + $flags = ord(substr($data,3,1)); // Flags + if ($flags & 31 != $flags) { + $error = "Reserved bits not allowed."; + return null; + } + // NOTE: $mtime may be negative (PHP integer limitations) + $mtime = unpack("V", substr($data,4,4)); + $mtime = $mtime[1]; + $xfl = substr($data,8,1); + $os = substr($data,8,1); + $headerlen = 10; + $extralen = 0; + $extra = ""; + if ($flags & 4) { + // 2-byte length prefixed EXTRA data in header + if ($len - $headerlen - 2 < 8) { + return false; // invalid + } + $extralen = unpack("v",substr($data,8,2)); + $extralen = $extralen[1]; + if ($len - $headerlen - 2 - $extralen < 8) { + return false; // invalid + } + $extra = substr($data,10,$extralen); + $headerlen += 2 + $extralen; + } + $filenamelen = 0; + $filename = ""; + if ($flags & 8) { + // C-style string + if ($len - $headerlen - 1 < 8) { + return false; // invalid + } + $filenamelen = strpos(substr($data,$headerlen),chr(0)); + if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) { + return false; // invalid + } + $filename = substr($data,$headerlen,$filenamelen); + $headerlen += $filenamelen + 1; + } + $commentlen = 0; + $comment = ""; + if ($flags & 16) { + // C-style string COMMENT data in header + if ($len - $headerlen - 1 < 8) { + return false; // invalid + } + $commentlen = strpos(substr($data,$headerlen),chr(0)); + if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) { + return false; // Invalid header format + } + $comment = substr($data,$headerlen,$commentlen); + $headerlen += $commentlen + 1; + } + $headercrc = ""; + if ($flags & 2) { + // 2-bytes (lowest order) of CRC32 on header present + if ($len - $headerlen - 2 < 8) { + return false; // invalid + } + $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff; + $headercrc = unpack("v", substr($data,$headerlen,2)); + $headercrc = $headercrc[1]; + if ($headercrc != $calccrc) { + $error = "Header checksum failed."; + return false; // Bad header CRC + } + $headerlen += 2; + } + // GZIP FOOTER + $datacrc = unpack("V",substr($data,-8,4)); + $datacrc = sprintf('%u',$datacrc[1] & 0xFFFFFFFF); + $isize = unpack("V",substr($data,-4)); + $isize = $isize[1]; + // decompression: + $bodylen = $len-$headerlen-8; + if ($bodylen < 1) { + // IMPLEMENTATION BUG! + return null; + } + $body = substr($data,$headerlen,$bodylen); + $data = ""; + if ($bodylen > 0) { + switch ($method) { + case 8: + // Currently the only supported compression method: + $data = gzinflate($body,$maxlength); + break; + default: + $error = "Unknown compression method."; + return false; + } + } // zero-byte body content is allowed + // Verifiy CRC32 + $crc = sprintf("%u",crc32($data)); + $crcOK = $crc == $datacrc; + $lenOK = $isize == strlen($data); + if (!$lenOK || !$crcOK) { + $error = ( $lenOK ? '' : 'Length check FAILED. ') . ( $crcOK ? '' : 'Checksum FAILED.'); + return false; + } + return $data; } } -- cgit v1.2.3 From 0bbd14146a7332e086cd82595af718fa55e03803 Mon Sep 17 00:00:00 2001 From: j0nson Date: Mon, 1 Apr 2013 22:21:36 -0300 Subject: adds sort order to API Allows sort by feed date or by reverse order api Params: order_by (string = feed_dates, date_reverse) --- classes/api.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/classes/api.php b/classes/api.php index ea57a61ab..f0f943698 100644 --- a/classes/api.php +++ b/classes/api.php @@ -198,14 +198,22 @@ class API extends Handler { $since_id = (int)db_escape_string($this->link, $_REQUEST["since_id"]); $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]); $sanitize_content = true; - + $override_order = false; + switch ($_REQUEST["order_by"]) { + case "date_reverse": + $override_order = "date_entered, updated"; + break; + case "feed_dates": + $override_order = "updated DESC"; + break; + } /* do not rely on params below */ $search = db_escape_string($this->link, $_REQUEST["search"]); $search_mode = db_escape_string($this->link, $_REQUEST["search_mode"]); $headlines = $this->api_get_headlines($this->link, $feed_id, $limit, $offset, - $filter, $is_cat, $show_excerpt, $show_content, $view_mode, false, + $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $override_order, $include_attachments, $since_id, $search, $search_mode, $include_nested, $sanitize_content); -- cgit v1.2.3 From 97e2c731b8c069fe1df67fc0615b4ab084ffd073 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 08:45:50 +0400 Subject: move HOOK_TOOLBAR_BUTTON elements inside actionChooser --- index.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/index.php b/index.php index ac2762f7f..3b905d1b1 100644 --- a/index.php +++ b/index.php @@ -201,15 +201,15 @@ - get_hooks($pluginhost::HOOK_TOOLBAR_BUTTON) as $p) { - echo $p->hook_toolbar_button(); - } - ?> -
    + get_hooks($pluginhost::HOOK_TOOLBAR_BUTTON) as $p) { + echo $p->hook_toolbar_button(); + } + ?> +
    "; print "
    ".__('Batch subscribe')."
    "; + print "
    " + .__('Unsubscribe')."
    "; print ""; if (get_pref($this->link, 'ENABLE_FEED_CATS')) { @@ -1287,8 +1289,6 @@ class Pref_Feeds extends Handler_Protected { print "
    "; print "
    ".__('Add category')."
    "; - print "
    ".__('(Un)hide empty categories')."
    "; print "
    ".__('Reset sort order')."
    "; print "
    " - .__('Unsubscribe')." "; + print ""; if (defined('_ENABLE_FEED_DEBUGGING')) { -- cgit v1.2.3 From 2d0838e6d3e8f15b0f1d62111499ee551935c218 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 2 Apr 2013 00:56:20 -0400 Subject: add optional support for the X-Sendfile header --- image.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/image.php b/image.php index 94cb8e817..dcc7d806d 100644 --- a/image.php +++ b/image.php @@ -27,12 +27,22 @@ $filename = CACHE_DIR . '/images/' . $hash . '.png'; if (file_exists($filename)) { - header("Content-type: image/png"); - $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; - header("Last-Modified: $stamp", true); - - readfile($filename); - + /* See if we can use X-Sendfile */ + $xsendfile = false; + if (function_exists('apache_get_modules') && + array_search('mod_xsendfile', apache_get_modules())) + $xsendfile = true; + + if ($xsendfile) { + header("X-Sendfile: $filename"); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); + } else { + header("Content-type: image/png"); + $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; + header("Last-Modified: $stamp", true); + readfile($filename); + } } else { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); echo "File not found."; -- cgit v1.2.3 From 129562e0b169897cb4b6781a4b62f907c4902775 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 09:03:35 +0400 Subject: opml: add some data length limiting --- classes/opml.php | 14 +++++++------- include/functions.php | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/classes/opml.php b/classes/opml.php index 4c188de5e..7a49f757c 100644 --- a/classes/opml.php +++ b/classes/opml.php @@ -253,13 +253,13 @@ class Opml extends Handler_Protected { private function opml_import_feed($doc, $node, $cat_id, $owner_uid) { $attrs = $node->attributes; - $feed_title = db_escape_string($this->link, $attrs->getNamedItem('text')->nodeValue); - if (!$feed_title) $feed_title = db_escape_string($this->link, $attrs->getNamedItem('title')->nodeValue); + $feed_title = db_escape_string($this->link, mb_substr($attrs->getNamedItem('text')->nodeValue, 0, 250)); + if (!$feed_title) $feed_title = db_escape_string($this->link, mb_substr($attrs->getNamedItem('title')->nodeValue, 0, 250)); - $feed_url = db_escape_string($this->link, $attrs->getNamedItem('xmlUrl')->nodeValue); - if (!$feed_url) $feed_url = db_escape_string($this->link, $attrs->getNamedItem('xmlURL')->nodeValue); + $feed_url = db_escape_string($this->link, mb_substr($attrs->getNamedItem('xmlUrl')->nodeValue, 0, 250)); + if (!$feed_url) $feed_url = db_escape_string($this->link, mb_substr($attrs->getNamedItem('xmlURL')->nodeValue, 0, 250)); - $site_url = db_escape_string($this->link, $attrs->getNamedItem('htmlUrl')->nodeValue); + $site_url = db_escape_string($this->link, mb_substr($attrs->getNamedItem('htmlUrl')->nodeValue, 0, 250)); if ($feed_url && $feed_title) { $result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE @@ -386,10 +386,10 @@ class Opml extends Handler_Protected { $default_cat_id = (int) get_feed_category($this->link, 'Imported feeds', false); if ($root_node) { - $cat_title = db_escape_string($this->link, $root_node->attributes->getNamedItem('text')->nodeValue); + $cat_title = db_escape_string($this->link, mb_substr($root_node->attributes->getNamedItem('text')->nodeValue, 0, 250)); if (!$cat_title) - $cat_title = db_escape_string($this->link, $root_node->attributes->getNamedItem('title')->nodeValue); + $cat_title = db_escape_string($this->link, mb_substr($root_node->attributes->getNamedItem('title')->nodeValue, 0, 250)); if (!in_array($cat_title, array("tt-rss-filters", "tt-rss-labels", "tt-rss-prefs"))) { $cat_id = get_feed_category($this->link, $cat_title, $parent_id); diff --git a/include/functions.php b/include/functions.php index a559ed1da..d321dc2ed 100644 --- a/include/functions.php +++ b/include/functions.php @@ -3406,6 +3406,8 @@ $parent_insert = "NULL"; } + $feed_cat = mb_substr($feed_cat, 0, 250); + $result = db_query($link, "SELECT id FROM ttrss_feed_categories WHERE $parent_qpart AND title = '$feed_cat' AND owner_uid = ".$_SESSION["uid"]); -- cgit v1.2.3 From eab5a5e241ccf911c40bb4a4d89f2e6d9e69f0e3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 09:19:20 +0400 Subject: Revert "add php native gzdecode()" This reverts commit f2c624a23640eb1e47d83842d0bf8303209155b6. --- include/functions.php | 114 +------------------------------------------------- 1 file changed, 1 insertion(+), 113 deletions(-) diff --git a/include/functions.php b/include/functions.php index d321dc2ed..c04e6a81a 100644 --- a/include/functions.php +++ b/include/functions.php @@ -3936,121 +3936,9 @@ } if (!function_exists('gzdecode')) { - /* function gzdecode($string) { // no support for 2nd argument + function gzdecode($string) { // no support for 2nd argument return file_get_contents('compress.zlib://data:who/cares;base64,'. base64_encode($string)); - } */ - - - function gzdecode($data, &$filename = '', &$error = '', $maxlength = null) { - $len = strlen($data); - if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) { - $error = "Not in GZIP format."; - return null; // Not GZIP format (See RFC 1952) - } - $method = ord(substr($data,2,1)); // Compression method - $flags = ord(substr($data,3,1)); // Flags - if ($flags & 31 != $flags) { - $error = "Reserved bits not allowed."; - return null; - } - // NOTE: $mtime may be negative (PHP integer limitations) - $mtime = unpack("V", substr($data,4,4)); - $mtime = $mtime[1]; - $xfl = substr($data,8,1); - $os = substr($data,8,1); - $headerlen = 10; - $extralen = 0; - $extra = ""; - if ($flags & 4) { - // 2-byte length prefixed EXTRA data in header - if ($len - $headerlen - 2 < 8) { - return false; // invalid - } - $extralen = unpack("v",substr($data,8,2)); - $extralen = $extralen[1]; - if ($len - $headerlen - 2 - $extralen < 8) { - return false; // invalid - } - $extra = substr($data,10,$extralen); - $headerlen += 2 + $extralen; - } - $filenamelen = 0; - $filename = ""; - if ($flags & 8) { - // C-style string - if ($len - $headerlen - 1 < 8) { - return false; // invalid - } - $filenamelen = strpos(substr($data,$headerlen),chr(0)); - if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) { - return false; // invalid - } - $filename = substr($data,$headerlen,$filenamelen); - $headerlen += $filenamelen + 1; - } - $commentlen = 0; - $comment = ""; - if ($flags & 16) { - // C-style string COMMENT data in header - if ($len - $headerlen - 1 < 8) { - return false; // invalid - } - $commentlen = strpos(substr($data,$headerlen),chr(0)); - if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) { - return false; // Invalid header format - } - $comment = substr($data,$headerlen,$commentlen); - $headerlen += $commentlen + 1; - } - $headercrc = ""; - if ($flags & 2) { - // 2-bytes (lowest order) of CRC32 on header present - if ($len - $headerlen - 2 < 8) { - return false; // invalid - } - $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff; - $headercrc = unpack("v", substr($data,$headerlen,2)); - $headercrc = $headercrc[1]; - if ($headercrc != $calccrc) { - $error = "Header checksum failed."; - return false; // Bad header CRC - } - $headerlen += 2; - } - // GZIP FOOTER - $datacrc = unpack("V",substr($data,-8,4)); - $datacrc = sprintf('%u',$datacrc[1] & 0xFFFFFFFF); - $isize = unpack("V",substr($data,-4)); - $isize = $isize[1]; - // decompression: - $bodylen = $len-$headerlen-8; - if ($bodylen < 1) { - // IMPLEMENTATION BUG! - return null; - } - $body = substr($data,$headerlen,$bodylen); - $data = ""; - if ($bodylen > 0) { - switch ($method) { - case 8: - // Currently the only supported compression method: - $data = gzinflate($body,$maxlength); - break; - default: - $error = "Unknown compression method."; - return false; - } - } // zero-byte body content is allowed - // Verifiy CRC32 - $crc = sprintf("%u",crc32($data)); - $crcOK = $crc == $datacrc; - $lenOK = $isize == strlen($data); - if (!$lenOK || !$crcOK) { - $error = ( $lenOK ? '' : 'Length check FAILED. ') . ( $crcOK ? '' : 'Checksum FAILED.'); - return false; - } - return $data; } } -- cgit v1.2.3 From f58df87234089d31ee01b9bcf429131bda29564b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 09:28:47 +0400 Subject: import_export: fix syntax error, adapt to work with new gettext syntax --- plugins/import_export/init.php | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/plugins/import_export/init.php b/plugins/import_export/init.php index 5a3051edb..ab47288b3 100644 --- a/plugins/import_export/init.php +++ b/plugins/import_export/init.php @@ -9,7 +9,7 @@ class Import_Export extends Plugin implements IHandler { $this->host = $host; $host->add_hook($host::HOOK_PREFS_TAB, $this); - $host->add_command("xml-import", "USER FILE: import articles from XML", $this); + $host->add_command("xml-import", "import articles from XML", $this, ":", "FILE"); } function about() { @@ -19,21 +19,18 @@ class Import_Export extends Plugin implements IHandler { } function xml_import($args) { - array_shift($args); - $username = $args[count($args) - 2]; - $filename = $args[count($args) - 1]; - - if (!$username) { - print "error: please specify username.\n"; - return; - } + $filename = $args['xml_import']; if (!is_file($filename)) { print "error: input filename ($filename) doesn't exist.\n"; return; } + _debug("please enter your username:"); + + $username = db_escape_string($this->link, trim(read_stdin())); + _debug("importing $filename for user $username...\n"); $result = db_query($this->link, "SELECT id FROM ttrss_users WHERE login = '$username'"); @@ -382,7 +379,7 @@ class Import_Export extends Plugin implements IHandler { } print "

    " . - vsprintf(__("Finished: ")). + __("Finished: "). vsprintf(ngettext("%d article processed, ", "%d articles processed, ", $num_processed), $num_processed). vsprintf(ngettext("%d imported, ", "%d imported, ", $num_imported), $num_imported). vsprintf(ngettext("%d feed created.", "%d feeds created.", $num_feeds_created), $num_feeds_created). -- cgit v1.2.3 From ffd0786416271a00638c8becc2974d96221ec642 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 09:34:32 +0400 Subject: api: add a few logical spaces --- classes/api.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/api.php b/classes/api.php index f0f943698..902cb0853 100644 --- a/classes/api.php +++ b/classes/api.php @@ -198,6 +198,7 @@ class API extends Handler { $since_id = (int)db_escape_string($this->link, $_REQUEST["since_id"]); $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]); $sanitize_content = true; + $override_order = false; switch ($_REQUEST["order_by"]) { case "date_reverse": @@ -207,6 +208,7 @@ class API extends Handler { $override_order = "updated DESC"; break; } + /* do not rely on params below */ $search = db_escape_string($this->link, $_REQUEST["search"]); -- cgit v1.2.3 From 7ff4d1fa8b6afc71ab138f34c49658bea03b2af4 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 10:01:52 +0400 Subject: af_redditimgur: insert br after image --- plugins/af_redditimgur/init.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php index 2bb44f6d3..f2d5c7b67 100644 --- a/plugins/af_redditimgur/init.php +++ b/plugins/af_redditimgur/init.php @@ -40,7 +40,9 @@ class Af_RedditImgur extends Plugin { $img = $doc->createElement('img'); $img->setAttribute("src", $entry->getAttribute("href")); - $entry->parentNode->replaceChild($img, $entry); + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($img, $entry); + $entry->parentNode->insertBefore($br, $entry); $found = true; } @@ -66,7 +68,12 @@ class Af_RedditImgur extends Plugin { if (preg_match("/^http:\/\/i.imgur.com\/$token\./", $aentry->getAttribute("src"))) { $img = $doc->createElement('img'); $img->setAttribute("src", $aentry->getAttribute("src")); + + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($img, $entry); + $entry->parentNode->insertBefore($br, $entry); + $found = true; break; @@ -94,7 +101,12 @@ class Af_RedditImgur extends Plugin { $img = $doc->createElement('img'); $img->setAttribute("src", $aentry->getAttribute("href")); $entry->parentNode->insertBefore($doc->createElement('br'), $entry); + + $br = $doc->createElement('br'); + $entry->parentNode->insertBefore($img, $entry); + $entry->parentNode->insertBefore($br, $entry); + $found = true; } } -- cgit v1.2.3 From 8d192d025bc2e8f5e6e5e5aa843f7c6fffd9448e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 10:21:45 +0400 Subject: update 'no articles in label' hint --- classes/feeds.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/feeds.php b/classes/feeds.php index 0c643325f..713460e28 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -739,7 +739,7 @@ class Feeds extends Handler_Protected { break; default: if ($feed < LABEL_BASE_INDEX) { - $message = __("No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter."); + $message = __("No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter."); } else { $message = __("No articles found to display."); } -- cgit v1.2.3 From 4785420034aefcc9900c4646ce528676313f1a02 Mon Sep 17 00:00:00 2001 From: Daniel Andersson Date: Tue, 2 Apr 2013 09:05:17 +0200 Subject: Add hook to add explanations of hotkey actions via plugins. --- classes/pluginhost.php | 1 + include/functions.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/classes/pluginhost.php b/classes/pluginhost.php index 5b8a77fd6..a75027033 100644 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -27,6 +27,7 @@ class PluginHost { const HOOK_TOOLBAR_BUTTON = 15; const HOOK_ACTION_ITEM = 16; const HOOK_HEADLINE_TOOLBAR_BUTTON = 17; + const HOOK_HOTKEY_INFO = 18; const KIND_ALL = 1; const KIND_SYSTEM = 2; diff --git a/include/functions.php b/include/functions.php index c04e6a81a..aea7618a8 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1934,6 +1934,11 @@ "help_dialog" => __("Show help dialog")) ); + global $pluginhost; + foreach ($pluginhost->get_hooks($pluginhost::HOOK_HOTKEY_INFO) as $plugin) { + $hotkeys = $plugin->hook_hotkey_info($hotkeys); + } + return $hotkeys; } -- cgit v1.2.3 From a55857db5010ad53d5c2949937abceab1dd82bff Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 13:24:49 +0400 Subject: installer: mention lack of curl --- install/index.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/install/index.php b/install/index.php index 6e141f077..3deb7ad23 100644 --- a/install/index.php +++ b/install/index.php @@ -283,9 +283,27 @@ exit; } - ?> + $notices = array(); + + if (!function_exists("curl_init")) { + array_push($notices, "It is highly recommended to enable support for CURL in PHP."); + } + + if (count($notices) > 0) { + print_notice("Configuration check succeeded with minor problems:"); + + print "

      "; - + foreach ($notices as $notice) { + print "
    • $notice
    • "; + } + + print "
    "; + } else { + print_notice("Configuration check succeeded."); + } + + ?>

    Checking database

    -- cgit v1.2.3 From 168680976f9678e2769b77324e8a80527c16d287 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 13:58:08 +0400 Subject: sessions: initialize connection on include, not in ttrss_open --- include/sessions.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/sessions.php b/include/sessions.php index dd1ca663d..4923a05b7 100644 --- a/include/sessions.php +++ b/include/sessions.php @@ -19,6 +19,10 @@ ini_set("session.use_only_cookies", true); ini_set("session.gc_maxlifetime", $session_expire); + global $session_connection; + + $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + function session_get_schema_version($link, $nocache = false) { global $schema_version; @@ -34,6 +38,7 @@ function validate_session($link) { if (SINGLE_USER_MODE) return true; + if (!$link) return false; $check_ip = $_SESSION['ip_address']; @@ -95,8 +100,6 @@ global $session_connection; - $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - return true; } -- cgit v1.2.3 From c35b6d8e14fd930128cd70c7dc46bef9e1c39d9d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:04:47 +0400 Subject: initialize session connection in ttrss_open but define session_connection in global context --- include/sessions.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/sessions.php b/include/sessions.php index 4923a05b7..539b81a06 100644 --- a/include/sessions.php +++ b/include/sessions.php @@ -21,8 +21,6 @@ global $session_connection; - $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); - function session_get_schema_version($link, $nocache = false) { global $schema_version; @@ -97,9 +95,10 @@ function ttrss_open ($s, $n) { - global $session_connection; + $session_connection = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); + return true; } -- cgit v1.2.3 From 76f2113b359d3c488cc3a149237908cb3bbb535f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:27:15 +0400 Subject: instances: fix a few wrong calls, move genHash method from rpc --- classes/rpc.php | 26 -------------------------- plugins/instances/init.php | 7 +++++++ plugins/instances/instances.js | 10 +++++----- 3 files changed, 12 insertions(+), 31 deletions(-) diff --git a/classes/rpc.php b/classes/rpc.php index 34f623b06..d7872477e 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -640,32 +640,6 @@ class RPC extends Handler_Protected { return; } - function verifyRegexp() { - $reg_exp = $_REQUEST["reg_exp"]; - - $status = @preg_match("/$reg_exp/i", "TEST") !== false; - - print json_encode(array("status" => $status)); - } - - /* function buttonPlugin() { - $pclass = "button_" . basename($_REQUEST['plugin']); - $method = $_REQUEST['plugin_method']; - - if (class_exists($pclass)) { - $plugin = new $pclass($this->link); - if (method_exists($plugin, $method)) { - return $plugin->$method(); - } - } - } */ - - function genHash() { - $hash = sha1(uniqid(rand(), true)); - - print json_encode(array("hash" => $hash)); - } - function batchAddFeeds() { $cat_id = db_escape_string($this->link, $_REQUEST['cat']); $feeds = explode("\n", db_escape_string($this->link, $_REQUEST['feeds'])); diff --git a/plugins/instances/init.php b/plugins/instances/init.php index 6a7f7003a..7f822c7bf 100644 --- a/plugins/instances/init.php +++ b/plugins/instances/init.php @@ -442,5 +442,12 @@ class Instances extends Plugin implements IHandler { return; } + function genHash() { + $hash = sha1(uniqid(rand(), true)); + + print json_encode(array("hash" => $hash)); + } + + } ?> diff --git a/plugins/instances/instances.js b/plugins/instances/instances.js index 4a60692b3..f699acf72 100644 --- a/plugins/instances/instances.js +++ b/plugins/instances/instances.js @@ -11,7 +11,7 @@ function addInstance() { style: "width: 600px", regenKey: function() { new Ajax.Request("backend.php", { - parameters: "?op=rpc&method=genHash", + parameters: "op=pluginhandler&plugin=instances&method=genHash", onComplete: function(transport) { var reply = JSON.parse(transport.responseText); if (reply) @@ -47,7 +47,7 @@ function addInstance() { function updateInstanceList(sort_key) { new Ajax.Request("backend.php", { - parameters: "?op=pref-instances&sort=" + param_escape(sort_key), + parameters: "op=pluginhandler&plugin=instances&sort=" + param_escape(sort_key), onComplete: function(transport) { dijit.byId('instanceConfigTab').attr('content', transport.responseText); selectTab("instanceConfig", true); @@ -62,7 +62,7 @@ function editInstance(id, event) { selectTableRows('prefInstanceList', 'none'); selectTableRowById('LIRR-'+id, 'LICHK-'+id, true); - var query = "backend.php?op=pref-instances&method=edit&id=" + + var query = "backend.php?op=pluginhandler&plugin=instances&method=edit&id=" + param_escape(id); if (dijit.byId("instanceEditDlg")) @@ -74,7 +74,7 @@ function editInstance(id, event) { style: "width: 600px", regenKey: function() { new Ajax.Request("backend.php", { - parameters: "?op=rpc&method=genHash", + parameters: "op=pluginhandler&plugin=instances&method=genHash", onComplete: function(transport) { var reply = JSON.parse(transport.responseText); if (reply) @@ -124,7 +124,7 @@ function removeSelectedInstances() { if (ok) { notify_progress("Removing selected instances..."); - var query = "?op=pref-instances&method=remove&ids="+ + var query = "op=pluginhandler&plugin=instances&method=remove&ids="+ param_escape(sel_rows.toString()); new Ajax.Request("backend.php", { -- cgit v1.2.3 From 8f2ad8e134e8d8110ec83ed4d14089549a63b5bb Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:29:11 +0400 Subject: remove some old ?op syntax notation calls --- include/login_form.php | 2 +- plugins/digest/digest.js | 18 +++++++++--------- plugins/import_export/import_export.js | 2 +- plugins/updater/updater.js | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/login_form.php b/include/login_form.php index 4fc08261a..7ac7111c8 100644 --- a/include/login_form.php +++ b/include/login_form.php @@ -122,7 +122,7 @@ function init() { function fetchProfiles() { try { - var query = "?op=getProfiles&login=" + param_escape(document.forms["loginForm"].login.value); + var query = "op=getProfiles&login=" + param_escape(document.forms["loginForm"].login.value); if (query) { new Ajax.Request("public.php", { diff --git a/plugins/digest/digest.js b/plugins/digest/digest.js index 6d90a9c8a..5815e60e5 100644 --- a/plugins/digest/digest.js +++ b/plugins/digest/digest.js @@ -29,7 +29,7 @@ function catchup_feed(feed_id, callback) { if (feed_id < 0) is_cat = "true"; // KLUDGE - var query = "?op=rpc&method=catchupFeed&feed_id=" + + var query = "op=rpc&method=catchupFeed&feed_id=" + feed_id + "&is_cat=" + is_cat; new Ajax.Request("backend.php", { @@ -71,7 +71,7 @@ function catchup_visible_articles(callback) { if (confirm(ngettext("Mark %d displayed article as read?", "Mark %d displayed articles as read?", ids.length).replace("%d", ids.length))) { - var query = "?op=rpc&method=catchupSelected" + + var query = "op=rpc&method=catchupSelected" + "&cmode=0&ids=" + param_escape(ids); new Ajax.Request("backend.php", { @@ -91,7 +91,7 @@ function catchup_visible_articles(callback) { function catchup_article(article_id, callback) { try { - var query = "?op=rpc&method=catchupSelected" + + var query = "op=rpc&method=catchupSelected" + "&cmode=0&ids=" + article_id; new Ajax.Request("backend.php", { @@ -172,7 +172,7 @@ function update(callback) { window.clearTimeout(_update_timeout); new Ajax.Request("backend.php", { - parameters: "?op=digest&method=digestinit", + parameters: "op=digest&method=digestinit", onComplete: function(transport) { fatal_error_check(transport); parse_feeds(transport); @@ -223,7 +223,7 @@ function view(article_id) { }, 500); new Ajax.Request("backend.php", { - parameters: "?op=digest&method=digestgetcontents&article_id=" + + parameters: "op=digest&method=digestgetcontents&article_id=" + article_id, onComplete: function(transport) { fatal_error_check(transport); @@ -331,7 +331,7 @@ function viewfeed(feed_id, offset, replace, no_effects, no_indicator, callback) if (!offset) $("headlines").scrollTop = 0; - var query = "backend.php?op=digest&method=digestupdate&feed_id=" + + var query = "op=digest&method=digestupdate&feed_id=" + param_escape(feed_id) + "&offset=" + offset + "&seq=" + _update_seq; @@ -669,7 +669,7 @@ function parse_headlines(transport, replace, no_effects) { function init_second_stage() { try { new Ajax.Request("backend.php", { - parameters: "backend.php?op=digest&method=digestinit&init=1", + parameters: "op=digest&method=digestinit&init=1", onComplete: function(transport) { parse_feeds(transport); Element.hide("overlay"); @@ -705,7 +705,7 @@ function toggle_mark(img, id) { try { - var query = "?op=rpc&id=" + id + "&method=mark"; + var query = "op=rpc&id=" + id + "&method=mark"; if (!img) return; @@ -734,7 +734,7 @@ function toggle_pub(img, id, note) { try { - var query = "?op=rpc&id=" + id + "&method=publ"; + var query = "op=rpc&id=" + id + "&method=publ"; if (note != undefined) { query = query + "¬e=" + param_escape(note); diff --git a/plugins/import_export/import_export.js b/plugins/import_export/import_export.js index 86b0458be..780f6bfc7 100644 --- a/plugins/import_export/import_export.js +++ b/plugins/import_export/import_export.js @@ -17,7 +17,7 @@ function exportData() { notify_progress("Loading, please wait..."); new Ajax.Request("backend.php", { - parameters: "?op=pluginhandler&plugin=import_export&method=exportrun&offset=" + exported, + parameters: "op=pluginhandler&plugin=import_export&method=exportrun&offset=" + exported, onComplete: function(transport) { try { var rv = JSON.parse(transport.responseText); diff --git a/plugins/updater/updater.js b/plugins/updater/updater.js index 17452d734..40fcc871b 100644 --- a/plugins/updater/updater.js +++ b/plugins/updater/updater.js @@ -16,7 +16,7 @@ function updateSelf() { notify_progress("Loading, please wait...", true); new Ajax.Request("backend.php", { - parameters: "?op=pluginhandler&plugin=updater&method=performUpdate&step=" + step + + parameters: "op=pluginhandler&plugin=updater&method=performUpdate&step=" + step + "¶ms=" + param_escape(JSON.stringify(dialog.attr("update-params"))), onComplete: function(transport) { try { -- cgit v1.2.3 From 96e3ae8ccebf144880844475b9bbac51ec5cb135 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:32:10 +0400 Subject: move batchAddFeeds to pref-feeds --- classes/pref/feeds.php | 37 ++++++++++++++++++++++++++++++++++++- classes/rpc.php | 36 ------------------------------------ 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index eda03d126..aa018ee10 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1751,7 +1751,7 @@ class Pref_Feeds extends Handler_Protected { } function batchSubscribe() { - print ""; + print ""; print ""; print ""); - - doc = doc || win.doc; - var masterId = doc[masterName]; - if(!masterId){ - doc[masterName] = masterId = ++masterNum + ""; - masterNode[masterId] = doc.createElement("div"); - } - - // make sure the frag is a string. - frag += ""; - - // find the starting tag, and get node wrapper - var match = frag.match(reTag), - tag = match ? match[1].toLowerCase() : "", - master = masterNode[masterId], - wrap, i, fc, df; - if(match && tagWrap[tag]){ - wrap = tagWrap[tag]; - master.innerHTML = wrap.pre + frag + wrap.post; - for(i = wrap.length; i; --i){ - master = master.firstChild; - } - }else{ - master.innerHTML = frag; - } - - // one node shortcut => return the node itself - if(master.childNodes.length == 1){ - return master.removeChild(master.firstChild); // DOMNode - } - - // return multiple nodes as a document fragment - df = doc.createDocumentFragment(); - while((fc = master.firstChild)){ // intentional assignment - df.appendChild(fc); - } - return df; // DocumentFragment - }; - - exports.place = function place(/*DOMNode|String*/ node, /*DOMNode|String*/ refNode, /*String|Number?*/ position){ - // summary: - // Attempt to insert node into the DOM, choosing from various positioning options. - // Returns the first argument resolved to a DOM node. - // node: DOMNode|String - // id or node reference, or HTML fragment starting with "<" to place relative to refNode - // refNode: DOMNode|String - // id or node reference to use as basis for placement - // position: String|Number? - // string noting the position of node relative to refNode or a - // number indicating the location in the childNodes collection of refNode. - // Accepted string values are: - // - // - before - // - after - // - replace - // - only - // - first - // - last - // - // "first" and "last" indicate positions as children of refNode, "replace" replaces refNode, - // "only" replaces all children. position defaults to "last" if not specified - // returns: DOMNode - // Returned values is the first argument resolved to a DOM node. - // - // .place() is also a method of `dojo/NodeList`, allowing `dojo.query` node lookups. - // example: - // Place a node by string id as the last child of another node by string id: - // | dojo.place("someNode", "anotherNode"); - // example: - // Place a node by string id before another node by string id - // | dojo.place("someNode", "anotherNode", "before"); - // example: - // Create a Node, and place it in the body element (last child): - // | dojo.place("
    ", dojo.body()); - // example: - // Put a new LI as the first child of a list by id: - // | dojo.place("
  • ", "someUl", "first"); - - refNode = dom.byId(refNode); - if(typeof node == "string"){ // inline'd type check - node = /^\s*hi

    " }); - // - // example: - // Place a new DIV in the BODY, with no attributes set - // | var n = dojo.create("div", null, dojo.body()); - // - // example: - // Create an UL, and populate it with LI's. Place the list as the first-child of a - // node with id="someId": - // | var ul = dojo.create("ul", null, "someId", "first"); - // | var items = ["one", "two", "three", "four"]; - // | dojo.forEach(items, function(data){ - // | dojo.create("li", { innerHTML: data }, ul); - // | }); - // - // example: - // Create an anchor, with an href. Place in BODY: - // | dojo.create("a", { href:"foo.html", title:"Goto FOO!" }, dojo.body()); - // - // example: - // Create a `dojo/NodeList()` from a new element (for syntactic sugar): - // | dojo.query(dojo.create('div')) - // | .addClass("newDiv") - // | .onclick(function(e){ console.log('clicked', e.target) }) - // | .place("#someNode"); // redundant, but cleaner. - - var doc = win.doc; - if(refNode){ - refNode = dom.byId(refNode); - doc = refNode.ownerDocument; - } - if(typeof tag == "string"){ // inline'd type check - tag = doc.createElement(tag); - } - if(attrs){ attr.set(tag, attrs); } - if(refNode){ exports.place(tag, refNode, pos); } - return tag; // DomNode - }; - - var _empty = has("ie") ? - function(/*DomNode*/ node){ - try{ - node.innerHTML = ""; // really fast when it works - }catch(e){ // IE can generate Unknown Error - for(var c; c = node.lastChild;){ // intentional assignment - _destroy(c, node); // destroy is better than removeChild so TABLE elements are removed in proper order - } - } - } : - function(/*DomNode*/ node){ - node.innerHTML = ""; - }; - - exports.empty = function empty(/*DOMNode|String*/ node){ - // summary: - // safely removes all children of the node. - // node: DOMNode|String - // a reference to a DOM node or an id. - // example: - // Destroy node's children byId: - // | dojo.empty("someId"); - // - // example: - // Destroy all nodes' children in a list by reference: - // | dojo.query(".someNode").forEach(dojo.empty); - - _empty(dom.byId(node)); - }; - - - function _destroy(/*DomNode*/ node, /*DomNode*/ parent){ - if(node.firstChild){ - _empty(node); - } - if(parent){ - parent.removeChild(node); - } - } - exports.destroy = function destroy(/*DOMNode|String*/ node){ - // summary: - // Removes a node from its parent, clobbering it and all of its - // children. - // - // description: - // Removes a node from its parent, clobbering it and all of its - // children. Function only works with DomNodes, and returns nothing. - // - // node: DOMNode|String - // A String ID or DomNode reference of the element to be destroyed - // - // example: - // Destroy a node byId: - // | dojo.destroy("someId"); - // - // example: - // Destroy all nodes in a list by reference: - // | dojo.query(".someNode").forEach(dojo.destroy); - - node = dom.byId(node); - if(!node){ return; } - _destroy(node, node.parentNode); - }; -}); - -}, -'dojo/request/xhr':function(){ -define("dojo/request/xhr", [ - '../errors/RequestError', - './watch', - './handlers', - './util', - '../has'/*=====, - '../request', - '../_base/declare' =====*/ -], function(RequestError, watch, handlers, util, has/*=====, request, declare =====*/){ - has.add('native-xhr', function(){ - // if true, the environment has a native XHR implementation - return typeof XMLHttpRequest !== 'undefined'; - }); - has.add('dojo-force-activex-xhr', function(){ - return has('activex') && !document.addEventListener && window.location.protocol === 'file:'; - }); - - has.add('native-xhr2', function(){ - if(!has('native-xhr')){ return; } - var x = new XMLHttpRequest(); - return typeof x['addEventListener'] !== 'undefined' && - (typeof opera === 'undefined' || typeof x['upload'] !== 'undefined'); - }); - - has.add('native-formdata', function(){ - // if true, the environment has a native FormData implementation - return typeof FormData === 'function'; - }); - - function handleResponse(response, error){ - var _xhr = response.xhr; - response.status = response.xhr.status; - response.text = _xhr.responseText; - - if(response.options.handleAs === 'xml'){ - response.data = _xhr.responseXML; - } - - if(!error){ - try{ - handlers(response); - }catch(e){ - error = e; - } - } - - if(error){ - this.reject(error); - }else if(util.checkStatus(_xhr.status)){ - this.resolve(response); - }else{ - error = new RequestError('Unable to load ' + response.url + ' status: ' + _xhr.status, response); - - this.reject(error); - } - } - - var isValid, isReady, addListeners, cancel; - if(has('native-xhr2')){ - // Any platform with XHR2 will only use the watch mechanism for timeout. - - isValid = function(response){ - // summary: - // Check to see if the request should be taken out of the watch queue - return !this.isFulfilled(); - }; - cancel = function(dfd, response){ - // summary: - // Canceler for deferred - response.xhr.abort(); - }; - addListeners = function(_xhr, dfd, response){ - // summary: - // Adds event listeners to the XMLHttpRequest object - function onLoad(evt){ - dfd.handleResponse(response); - } - function onError(evt){ - var _xhr = evt.target; - var error = new RequestError('Unable to load ' + response.url + ' status: ' + _xhr.status, response); - dfd.handleResponse(response, error); - } - - function onProgress(evt){ - if(evt.lengthComputable){ - response.loaded = evt.loaded; - response.total = evt.total; - dfd.progress(response); - } - } - - _xhr.addEventListener('load', onLoad, false); - _xhr.addEventListener('error', onError, false); - _xhr.addEventListener('progress', onProgress, false); - - return function(){ - _xhr.removeEventListener('load', onLoad, false); - _xhr.removeEventListener('error', onError, false); - _xhr.removeEventListener('progress', onProgress, false); - }; - }; - }else{ - isValid = function(response){ - return response.xhr.readyState; //boolean - }; - isReady = function(response){ - return 4 === response.xhr.readyState; //boolean - }; - cancel = function(dfd, response){ - // summary: - // canceller function for util.deferred call. - var xhr = response.xhr; - var _at = typeof xhr.abort; - if(_at === 'function' || _at === 'object' || _at === 'unknown'){ - xhr.abort(); - } - }; - } - - var undefined, - defaultOptions = { - data: null, - query: null, - sync: false, - method: 'GET', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }; - function xhr(url, options, returnDeferred){ - var response = util.parseArgs( - url, - util.deepCreate(defaultOptions, options), - has('native-formdata') && options && options.data && options.data instanceof FormData - ); - url = response.url; - options = response.options; - - var remover, - last = function(){ - remover && remover(); - }; - - //Make the Deferred object for this xhr request. - var dfd = util.deferred( - response, - cancel, - isValid, - isReady, - handleResponse, - last - ); - var _xhr = response.xhr = xhr._create(); - - if(!_xhr){ - // If XHR factory somehow returns nothings, - // cancel the deferred. - dfd.cancel(new RequestError('XHR was not created')); - return returnDeferred ? dfd : dfd.promise; - } - - response.getHeader = function(headerName){ - return this.xhr.getResponseHeader(headerName); - }; - - if(addListeners){ - remover = addListeners(_xhr, dfd, response); - } - - var data = options.data, - async = !options.sync, - method = options.method; - - try{ - // IE6 won't let you call apply() on the native function. - _xhr.open(method, url, async, options.user || undefined, options.password || undefined); - - if(options.withCredentials){ - _xhr.withCredentials = options.withCredentials; - } - - var headers = options.headers, - contentType; - if(headers){ - for(var hdr in headers){ - if(hdr.toLowerCase() === 'content-type'){ - contentType = headers[hdr]; - }else if(headers[hdr]){ - //Only add header if it has a value. This allows for instance, skipping - //insertion of X-Requested-With by specifying empty value. - _xhr.setRequestHeader(hdr, headers[hdr]); - } - } - } - - if(contentType && contentType !== false){ - _xhr.setRequestHeader('Content-Type', contentType); - } - if(!headers || !('X-Requested-With' in headers)){ - _xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - } - - if(util.notify){ - util.notify.emit('send', response, dfd.promise.cancel); - } - _xhr.send(data); - }catch(e){ - dfd.reject(e); - } - - watch(dfd); - _xhr = null; - - return returnDeferred ? dfd : dfd.promise; - } - - /*===== - xhr = function(url, options){ - // summary: - // Sends a request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.__BaseOptions = declare(request.__BaseOptions, { - // sync: Boolean? - // Whether to make a synchronous request or not. Default - // is `false` (asynchronous). - // data: String|Object|FormData? - // Data to transfer. This is ignored for GET and DELETE - // requests. - // headers: Object? - // Headers to use for the request. - // user: String? - // Username to use during the request. - // password: String? - // Password to use during the request. - // withCredentials: Boolean? - // For cross-site requests, whether to send credentials - // or not. - }); - xhr.__MethodOptions = declare(null, { - // method: String? - // The HTTP method to use to make the request. Must be - // uppercase. Default is `"GET"`. - }); - xhr.__Options = declare([xhr.__BaseOptions, xhr.__MethodOptions]); - - xhr.get = function(url, options){ - // summary: - // Send an HTTP GET request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.post = function(url, options){ - // summary: - // Send an HTTP POST request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.put = function(url, options){ - // summary: - // Send an HTTP PUT request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.del = function(url, options){ - // summary: - // Send an HTTP DELETE request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - xhr._create = function(){ - // summary: - // does the work of portably generating a new XMLHTTPRequest object. - throw new Error('XMLHTTP not available'); - }; - if(has('native-xhr') && !has('dojo-force-activex-xhr')){ - xhr._create = function(){ - return new XMLHttpRequest(); - }; - }else if(has('activex')){ - try{ - new ActiveXObject('Msxml2.XMLHTTP'); - xhr._create = function(){ - return new ActiveXObject('Msxml2.XMLHTTP'); - }; - }catch(e){ - try{ - new ActiveXObject('Microsoft.XMLHTTP'); - xhr._create = function(){ - return new ActiveXObject('Microsoft.XMLHTTP'); - }; - }catch(e){} - } - } - - util.addCommonMethods(xhr); - - return xhr; -}); - -}, -'dojo/keys':function(){ -define("dojo/keys", ["./_base/kernel", "./sniff"], function(dojo, has){ - - // module: - // dojo/keys - - return dojo.keys = { - // summary: - // Definitions for common key values. Client code should test keyCode against these named constants, - // as the actual codes can vary by browser. - - BACKSPACE: 8, - TAB: 9, - CLEAR: 12, - ENTER: 13, - SHIFT: 16, - CTRL: 17, - ALT: 18, - META: has("webkit") ? 91 : 224, // the apple key on macs - PAUSE: 19, - CAPS_LOCK: 20, - ESCAPE: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT_ARROW: 37, - UP_ARROW: 38, - RIGHT_ARROW: 39, - DOWN_ARROW: 40, - INSERT: 45, - DELETE: 46, - HELP: 47, - LEFT_WINDOW: 91, - RIGHT_WINDOW: 92, - SELECT: 93, - NUMPAD_0: 96, - NUMPAD_1: 97, - NUMPAD_2: 98, - NUMPAD_3: 99, - NUMPAD_4: 100, - NUMPAD_5: 101, - NUMPAD_6: 102, - NUMPAD_7: 103, - NUMPAD_8: 104, - NUMPAD_9: 105, - NUMPAD_MULTIPLY: 106, - NUMPAD_PLUS: 107, - NUMPAD_ENTER: 108, - NUMPAD_MINUS: 109, - NUMPAD_PERIOD: 110, - NUMPAD_DIVIDE: 111, - F1: 112, - F2: 113, - F3: 114, - F4: 115, - F5: 116, - F6: 117, - F7: 118, - F8: 119, - F9: 120, - F10: 121, - F11: 122, - F12: 123, - F13: 124, - F14: 125, - F15: 126, - NUM_LOCK: 144, - SCROLL_LOCK: 145, - UP_DPAD: 175, - DOWN_DPAD: 176, - LEFT_DPAD: 177, - RIGHT_DPAD: 178, - // virtual key mapping - copyKey: has("mac") && !has("air") ? (has("safari") ? 91 : 224 ) : 17 - }; -}); - -}, -'dojo/domReady':function(){ -define(['./has'], function(has){ - var global = this, - doc = document, - readyStates = { 'loaded': 1, 'complete': 1 }, - fixReadyState = typeof doc.readyState != "string", - ready = !!readyStates[doc.readyState]; - - // For FF <= 3.5 - if(fixReadyState){ doc.readyState = "loading"; } - - if(!ready){ - var readyQ = [], tests = [], - detectReady = function(evt){ - evt = evt || global.event; - if(ready || (evt.type == "readystatechange" && !readyStates[doc.readyState])){ return; } - ready = 1; - - // For FF <= 3.5 - if(fixReadyState){ doc.readyState = "complete"; } - - while(readyQ.length){ - (readyQ.shift())(doc); - } - }, - on = function(node, event){ - node.addEventListener(event, detectReady, false); - readyQ.push(function(){ node.removeEventListener(event, detectReady, false); }); - }; - - if(!has("dom-addeventlistener")){ - on = function(node, event){ - event = "on" + event; - node.attachEvent(event, detectReady); - readyQ.push(function(){ node.detachEvent(event, detectReady); }); - }; - - var div = doc.createElement("div"); - try{ - if(div.doScroll && global.frameElement === null){ - // the doScroll test is only useful if we're in the top-most frame - tests.push(function(){ - // Derived with permission from Diego Perini's IEContentLoaded - // http://javascript.nwbox.com/IEContentLoaded/ - try{ - div.doScroll("left"); - return 1; - }catch(e){} - }); - } - }catch(e){} - } - - on(doc, "DOMContentLoaded"); - on(global, "load"); - - if("onreadystatechange" in doc){ - on(doc, "readystatechange"); - }else if(!fixReadyState){ - // if the ready state property exists and there's - // no readystatechange event, poll for the state - // to change - tests.push(function(){ - return readyStates[doc.readyState]; - }); - } - - if(tests.length){ - var poller = function(){ - if(ready){ return; } - var i = tests.length; - while(i--){ - if(tests[i]()){ - detectReady("poller"); - return; - } - } - setTimeout(poller, 30); - }; - poller(); - } - } - - function domReady(callback){ - // summary: - // Plugin to delay require()/define() callback from firing until the DOM has finished loading. - if(ready){ - callback(doc); - }else{ - readyQ.push(callback); - } - } - domReady.load = function(id, req, load){ - domReady(load); - }; - - return domReady; -}); - -}, -'dojo/_base/lang':function(){ -define("dojo/_base/lang", ["./kernel", "../has", "../sniff"], function(dojo, has){ - // module: - // dojo/_base/lang - - has.add("bug-for-in-skips-shadowed", function(){ - // if true, the for-in iterator skips object properties that exist in Object's prototype (IE 6 - ?) - for(var i in {toString: 1}){ - return 0; - } - return 1; - }); - - // Helper methods - var _extraNames = - has("bug-for-in-skips-shadowed") ? - "hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split(".") : [], - - _extraLen = _extraNames.length, - - getProp = function(/*Array*/parts, /*Boolean*/create, /*Object*/context){ - var p, i = 0, dojoGlobal = dojo.global; - if(!context){ - if(!parts.length){ - return dojoGlobal; - }else{ - p = parts[i++]; - try{ - context = dojo.scopeMap[p] && dojo.scopeMap[p][1]; - }catch(e){} - context = context || (p in dojoGlobal ? dojoGlobal[p] : (create ? dojoGlobal[p] = {} : undefined)); - } - } - while(context && (p = parts[i++])){ - context = (p in context ? context[p] : (create ? context[p] = {} : undefined)); - } - return context; // mixed - }, - - opts = Object.prototype.toString, - - efficient = function(obj, offset, startWith){ - return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0)); - }, - - _pattern = /\{([^\}]+)\}/g; - - // Module export - var lang = { - // summary: - // This module defines Javascript language extensions. - - // _extraNames: String[] - // Lists property names that must be explicitly processed during for-in iteration - // in environments that have has("bug-for-in-skips-shadowed") true. - _extraNames:_extraNames, - - _mixin: function(dest, source, copyFunc){ - // summary: - // Copies/adds all properties of source to dest; returns dest. - // dest: Object - // The object to which to copy/add all properties contained in source. - // source: Object - // The object from which to draw all properties to copy into dest. - // copyFunc: Function? - // The process used to copy/add a property in source; defaults to the Javascript assignment operator. - // returns: - // dest, as modified - // description: - // All properties, including functions (sometimes termed "methods"), excluding any non-standard extensions - // found in Object.prototype, are copied/added to dest. Copying/adding each particular property is - // delegated to copyFunc (if any); copyFunc defaults to the Javascript assignment operator if not provided. - // Notice that by default, _mixin executes a so-called "shallow copy" and aggregate types are copied/added by reference. - var name, s, i, empty = {}; - for(name in source){ - // the (!(name in empty) || empty[name] !== s) condition avoids copying properties in "source" - // inherited from Object.prototype. For example, if dest has a custom toString() method, - // don't overwrite it with the toString() method that source inherited from Object.prototype - s = source[name]; - if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){ - dest[name] = copyFunc ? copyFunc(s) : s; - } - } - - if(has("bug-for-in-skips-shadowed")){ - if(source){ - for(i = 0; i < _extraLen; ++i){ - name = _extraNames[i]; - s = source[name]; - if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){ - dest[name] = copyFunc ? copyFunc(s) : s; - } - } - } - } - - return dest; // Object - }, - - mixin: function(dest, sources){ - // summary: - // Copies/adds all properties of one or more sources to dest; returns dest. - // dest: Object - // The object to which to copy/add all properties contained in source. If dest is falsy, then - // a new object is manufactured before copying/adding properties begins. - // sources: Object... - // One of more objects from which to draw all properties to copy into dest. sources are processed - // left-to-right and if more than one of these objects contain the same property name, the right-most - // value "wins". - // returns: Object - // dest, as modified - // description: - // All properties, including functions (sometimes termed "methods"), excluding any non-standard extensions - // found in Object.prototype, are copied/added from sources to dest. sources are processed left to right. - // The Javascript assignment operator is used to copy/add each property; therefore, by default, mixin - // executes a so-called "shallow copy" and aggregate types are copied/added by reference. - // example: - // make a shallow copy of an object - // | var copy = lang.mixin({}, source); - // example: - // many class constructors often take an object which specifies - // values to be configured on the object. In this case, it is - // often simplest to call `lang.mixin` on the `this` object: - // | declare("acme.Base", null, { - // | constructor: function(properties){ - // | // property configuration: - // | lang.mixin(this, properties); - // | - // | console.log(this.quip); - // | // ... - // | }, - // | quip: "I wasn't born yesterday, you know - I've seen movies.", - // | // ... - // | }); - // | - // | // create an instance of the class and configure it - // | var b = new acme.Base({quip: "That's what it does!" }); - // example: - // copy in properties from multiple objects - // | var flattened = lang.mixin( - // | { - // | name: "Frylock", - // | braces: true - // | }, - // | { - // | name: "Carl Brutanananadilewski" - // | } - // | ); - // | - // | // will print "Carl Brutanananadilewski" - // | console.log(flattened.name); - // | // will print "true" - // | console.log(flattened.braces); - - if(!dest){ dest = {}; } - for(var i = 1, l = arguments.length; i < l; i++){ - lang._mixin(dest, arguments[i]); - } - return dest; // Object - }, - - setObject: function(name, value, context){ - // summary: - // Set a property from a dot-separated string, such as "A.B.C" - // description: - // Useful for longer api chains where you have to test each object in - // the chain, or when you have an object reference in string format. - // Objects are created as needed along `path`. Returns the passed - // value if setting is successful or `undefined` if not. - // name: String - // Path to a property, in the form "A.B.C". - // value: anything - // value or object to place at location given by name - // context: Object? - // Optional. Object to use as root of path. Defaults to - // `dojo.global`. - // example: - // set the value of `foo.bar.baz`, regardless of whether - // intermediate objects already exist: - // | lang.setObject("foo.bar.baz", value); - // example: - // without `lang.setObject`, we often see code like this: - // | // ensure that intermediate objects are available - // | if(!obj["parent"]){ obj.parent = {}; } - // | if(!obj.parent["child"]){ obj.parent.child = {}; } - // | // now we can safely set the property - // | obj.parent.child.prop = "some value"; - // whereas with `lang.setObject`, we can shorten that to: - // | lang.setObject("parent.child.prop", "some value", obj); - - var parts = name.split("."), p = parts.pop(), obj = getProp(parts, true, context); - return obj && p ? (obj[p] = value) : undefined; // Object - }, - - getObject: function(name, create, context){ - // summary: - // Get a property from a dot-separated string, such as "A.B.C" - // description: - // Useful for longer api chains where you have to test each object in - // the chain, or when you have an object reference in string format. - // name: String - // Path to an property, in the form "A.B.C". - // create: Boolean? - // Optional. Defaults to `false`. If `true`, Objects will be - // created at any point along the 'path' that is undefined. - // context: Object? - // Optional. Object to use as root of path. Defaults to - // 'dojo.global'. Null may be passed. - return getProp(name.split("."), create, context); // Object - }, - - exists: function(name, obj){ - // summary: - // determine if an object supports a given method - // description: - // useful for longer api chains where you have to test each object in - // the chain. Useful for object and method detection. - // name: String - // Path to an object, in the form "A.B.C". - // obj: Object? - // Object to use as root of path. Defaults to - // 'dojo.global'. Null may be passed. - // example: - // | // define an object - // | var foo = { - // | bar: { } - // | }; - // | - // | // search the global scope - // | lang.exists("foo.bar"); // true - // | lang.exists("foo.bar.baz"); // false - // | - // | // search from a particular scope - // | lang.exists("bar", foo); // true - // | lang.exists("bar.baz", foo); // false - return lang.getObject(name, false, obj) !== undefined; // Boolean - }, - - // Crockford (ish) functions - - isString: function(it){ - // summary: - // Return true if it is a String - // it: anything - // Item to test. - return (typeof it == "string" || it instanceof String); // Boolean - }, - - isArray: function(it){ - // summary: - // Return true if it is an Array. - // Does not work on Arrays created in other windows. - // it: anything - // Item to test. - return it && (it instanceof Array || typeof it == "array"); // Boolean - }, - - isFunction: function(it){ - // summary: - // Return true if it is a Function - // it: anything - // Item to test. - return opts.call(it) === "[object Function]"; - }, - - isObject: function(it){ - // summary: - // Returns true if it is a JavaScript object (or an Array, a Function - // or null) - // it: anything - // Item to test. - return it !== undefined && - (it === null || typeof it == "object" || lang.isArray(it) || lang.isFunction(it)); // Boolean - }, - - isArrayLike: function(it){ - // summary: - // similar to isArray() but more permissive - // it: anything - // Item to test. - // returns: - // If it walks like a duck and quacks like a duck, return `true` - // description: - // Doesn't strongly test for "arrayness". Instead, settles for "isn't - // a string or number and has a length property". Arguments objects - // and DOM collections will return true when passed to - // isArrayLike(), but will return false when passed to - // isArray(). - return it && it !== undefined && // Boolean - // keep out built-in constructors (Number, String, ...) which have length - // properties - !lang.isString(it) && !lang.isFunction(it) && - !(it.tagName && it.tagName.toLowerCase() == 'form') && - (lang.isArray(it) || isFinite(it.length)); - }, - - isAlien: function(it){ - // summary: - // Returns true if it is a built-in function or some other kind of - // oddball that *should* report as a function but doesn't - return it && !lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean - }, - - extend: function(ctor, props){ - // summary: - // Adds all properties and methods of props to constructor's - // prototype, making them available to all instances created with - // constructor. - // ctor: Object - // Target constructor to extend. - // props: Object - // One or more objects to mix into ctor.prototype - for(var i=1, l=arguments.length; i 2){ - return lang._hitchArgs.apply(dojo, arguments); // Function - } - if(!method){ - method = scope; - scope = null; - } - if(lang.isString(method)){ - scope = scope || dojo.global; - if(!scope[method]){ throw(['lang.hitch: scope["', method, '"] is null (scope="', scope, '")'].join('')); } - return function(){ return scope[method].apply(scope, arguments || []); }; // Function - } - return !scope ? method : function(){ return method.apply(scope, arguments || []); }; // Function - }, - - delegate: (function(){ - // boodman/crockford delegation w/ cornford optimization - function TMP(){} - return function(obj, props){ - TMP.prototype = obj; - var tmp = new TMP(); - TMP.prototype = null; - if(props){ - lang._mixin(tmp, props); - } - return tmp; // Object - }; - })(), - /*===== - delegate: function(obj, props){ - // summary: - // Returns a new object which "looks" to obj for properties which it - // does not have a value for. Optionally takes a bag of properties to - // seed the returned object with initially. - // description: - // This is a small implementation of the Boodman/Crockford delegation - // pattern in JavaScript. An intermediate object constructor mediates - // the prototype chain for the returned object, using it to delegate - // down to obj for property lookup when object-local lookup fails. - // This can be thought of similarly to ES4's "wrap", save that it does - // not act on types but rather on pure objects. - // obj: Object - // The object to delegate to for properties not found directly on the - // return object or in props. - // props: Object... - // an object containing properties to assign to the returned object - // returns: - // an Object of anonymous type - // example: - // | var foo = { bar: "baz" }; - // | var thinger = lang.delegate(foo, { thud: "xyzzy"}); - // | thinger.bar == "baz"; // delegated to foo - // | foo.thud == undefined; // by definition - // | thinger.thud == "xyzzy"; // mixed in from props - // | foo.bar = "thonk"; - // | thinger.bar == "thonk"; // still delegated to foo's bar - }, - =====*/ - - _toArray: has("ie") ? - (function(){ - function slow(obj, offset, startWith){ - var arr = startWith||[]; - for(var x = offset || 0; x < obj.length; x++){ - arr.push(obj[x]); - } - return arr; - } - return function(obj){ - return ((obj.item) ? slow : efficient).apply(this, arguments); - }; - })() : efficient, - /*===== - _toArray: function(obj, offset, startWith){ - // summary: - // Converts an array-like object (i.e. arguments, DOMCollection) to an - // array. Returns a new Array with the elements of obj. - // obj: Object - // the object to "arrayify". We expect the object to have, at a - // minimum, a length property which corresponds to integer-indexed - // properties. - // offset: Number? - // the location in obj to start iterating from. Defaults to 0. - // Optional. - // startWith: Array? - // An array to pack with the properties of obj. If provided, - // properties in obj are appended at the end of startWith and - // startWith is the returned array. - }, - =====*/ - - partial: function(/*Function|String*/ method /*, ...*/){ - // summary: - // similar to hitch() except that the scope object is left to be - // whatever the execution context eventually becomes. - // description: - // Calling lang.partial is the functional equivalent of calling: - // | lang.hitch(null, funcName, ...); - // method: - // The function to "wrap" - var arr = [ null ]; - return lang.hitch.apply(dojo, arr.concat(lang._toArray(arguments))); // Function - }, - - clone: function(/*anything*/ src){ - // summary: - // Clones objects (including DOM nodes) and all children. - // Warning: do not clone cyclic structures. - // src: - // The object to clone - if(!src || typeof src != "object" || lang.isFunction(src)){ - // null, undefined, any non-object, or function - return src; // anything - } - if(src.nodeType && "cloneNode" in src){ - // DOM Node - return src.cloneNode(true); // Node - } - if(src instanceof Date){ - // Date - return new Date(src.getTime()); // Date - } - if(src instanceof RegExp){ - // RegExp - return new RegExp(src); // RegExp - } - var r, i, l; - if(lang.isArray(src)){ - // array - r = []; - for(i = 0, l = src.length; i < l; ++i){ - if(i in src){ - r.push(lang.clone(src[i])); - } - } - // we don't clone functions for performance reasons - // }else if(d.isFunction(src)){ - // // function - // r = function(){ return src.apply(this, arguments); }; - }else{ - // generic objects - r = src.constructor ? new src.constructor() : {}; - } - return lang._mixin(r, src, lang.clone); - }, - - - trim: String.prototype.trim ? - function(str){ return str.trim(); } : - function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }, - /*===== - trim: function(str){ - // summary: - // Trims whitespace from both sides of the string - // str: String - // String to be trimmed - // returns: String - // Returns the trimmed string - // description: - // This version of trim() was selected for inclusion into the base due - // to its compact size and relatively good performance - // (see [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript) - // Uses String.prototype.trim instead, if available. - // The fastest but longest version of this function is located at - // lang.string.trim() - }, - =====*/ - - replace: function(tmpl, map, pattern){ - // summary: - // Performs parameterized substitutions on a string. Throws an - // exception if any parameter is unmatched. - // tmpl: String - // String to be used as a template. - // map: Object|Function - // If an object, it is used as a dictionary to look up substitutions. - // If a function, it is called for every substitution with following parameters: - // a whole match, a name, an offset, and the whole template - // string (see https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace - // for more details). - // pattern: RegEx? - // Optional regular expression objects that overrides the default pattern. - // Must be global and match one item. The default is: /\{([^\}]+)\}/g, - // which matches patterns like that: "{xxx}", where "xxx" is any sequence - // of characters, which doesn't include "}". - // returns: String - // Returns the substituted string. - // example: - // | // uses a dictionary for substitutions: - // | lang.replace("Hello, {name.first} {name.last} AKA {nick}!", - // | { - // | nick: "Bob", - // | name: { - // | first: "Robert", - // | middle: "X", - // | last: "Cringely" - // | } - // | }); - // | // returns: Hello, Robert Cringely AKA Bob! - // example: - // | // uses an array for substitutions: - // | lang.replace("Hello, {0} {2}!", - // | ["Robert", "X", "Cringely"]); - // | // returns: Hello, Robert Cringely! - // example: - // | // uses a function for substitutions: - // | function sum(a){ - // | var t = 0; - // | arrayforEach(a, function(x){ t += x; }); - // | return t; - // | } - // | lang.replace( - // | "{count} payments averaging {avg} USD per payment.", - // | lang.hitch( - // | { payments: [11, 16, 12] }, - // | function(_, key){ - // | switch(key){ - // | case "count": return this.payments.length; - // | case "min": return Math.min.apply(Math, this.payments); - // | case "max": return Math.max.apply(Math, this.payments); - // | case "sum": return sum(this.payments); - // | case "avg": return sum(this.payments) / this.payments.length; - // | } - // | } - // | ) - // | ); - // | // prints: 3 payments averaging 13 USD per payment. - // example: - // | // uses an alternative PHP-like pattern for substitutions: - // | lang.replace("Hello, ${0} ${2}!", - // | ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g); - // | // returns: Hello, Robert Cringely! - - return tmpl.replace(pattern || _pattern, lang.isFunction(map) ? - map : function(_, k){ return lang.getObject(k, false, map); }); - } - }; - - 1 && lang.mixin(dojo, lang); - - return lang; -}); - - -}, -'dojo/request/util':function(){ -define("dojo/request/util", [ - 'exports', - '../errors/RequestError', - '../errors/CancelError', - '../Deferred', - '../io-query', - '../_base/array', - '../_base/lang' -], function(exports, RequestError, CancelError, Deferred, ioQuery, array, lang){ - exports.deepCopy = function deepCopy(target, source){ - for(var name in source){ - var tval = target[name], - sval = source[name]; - if(tval !== sval){ - if(tval && typeof tval === 'object' && sval && typeof sval === 'object'){ - exports.deepCopy(tval, sval); - }else{ - target[name] = sval; - } - } - } - return target; - }; - - exports.deepCreate = function deepCreate(source, properties){ - properties = properties || {}; - var target = lang.delegate(source), - name, value; - - for(name in source){ - value = source[name]; - - if(value && typeof value === 'object'){ - target[name] = exports.deepCreate(value, properties[name]); - } - } - return exports.deepCopy(target, properties); - }; - - var freeze = Object.freeze || function(obj){ return obj; }; - function okHandler(response){ - return freeze(response); - } - - exports.deferred = function deferred(response, cancel, isValid, isReady, handleResponse, last){ - var def = new Deferred(function(reason){ - cancel && cancel(def, response); - - if(!reason || !(reason instanceof RequestError) && !(reason instanceof CancelError)){ - return new CancelError('Request canceled', response); - } - return reason; - }); - - def.response = response; - def.isValid = isValid; - def.isReady = isReady; - def.handleResponse = handleResponse; - - function errHandler(error){ - error.response = response; - throw error; - } - var responsePromise = def.then(okHandler).otherwise(errHandler); - - if(exports.notify){ - responsePromise.then( - lang.hitch(exports.notify, 'emit', 'load'), - lang.hitch(exports.notify, 'emit', 'error') - ); - } - - var dataPromise = responsePromise.then(function(response){ - return response.data || response.text; - }); - - var promise = freeze(lang.delegate(dataPromise, { - response: responsePromise - })); - - - if(last){ - def.then(function(response){ - last.call(def, response); - }, function(error){ - last.call(def, response, error); - }); - } - - def.promise = promise; - def.then = promise.then; - - return def; - }; - - exports.addCommonMethods = function addCommonMethods(provider, methods){ - array.forEach(methods||['GET', 'POST', 'PUT', 'DELETE'], function(method){ - provider[(method === 'DELETE' ? 'DEL' : method).toLowerCase()] = function(url, options){ - options = lang.delegate(options||{}); - options.method = method; - return provider(url, options); - }; - }); - }; - - exports.parseArgs = function parseArgs(url, options, skipData){ - var data = options.data, - query = options.query; - - if(data && !skipData){ - if(typeof data === 'object'){ - options.data = ioQuery.objectToQuery(data); - } - } - - if(query){ - if(typeof query === 'object'){ - query = ioQuery.objectToQuery(query); - } - if(options.preventCache){ - query += (query ? '&' : '') + 'request.preventCache=' + (+(new Date)); - } - }else if(options.preventCache){ - query = 'request.preventCache=' + (+(new Date)); - } - - if(url && query){ - url += (~url.indexOf('?') ? '&' : '?') + query; - } - - return { - url: url, - options: options, - getHeader: function(headerName){ return null; } - }; - }; - - exports.checkStatus = function(stat){ - stat = stat || 0; - return (stat >= 200 && stat < 300) || // allow any 2XX response code - stat === 304 || // or, get it out of the cache - stat === 1223 || // or, Internet Explorer mangled the status code - !stat; // or, we're Titanium/browser chrome/chrome extension requesting a local file - }; -}); - -}, -'dojo/Evented':function(){ -define("dojo/Evented", ["./aspect", "./on"], function(aspect, on){ - // module: - // dojo/Evented - - "use strict"; - var after = aspect.after; - function Evented(){ - // summary: - // A class that can be used as a mixin or base class, - // to add on() and emit() methods to a class - // for listening for events and emitting events: - // - // | define(["dojo/Evented"], function(Evented){ - // | var EventedWidget = dojo.declare([Evented, dijit._Widget], {...}); - // | widget = new EventedWidget(); - // | widget.on("open", function(event){ - // | ... do something with event - // | }); - // | - // | widget.emit("open", {name:"some event", ...}); - } - Evented.prototype = { - on: function(type, listener){ - return on.parse(this, type, listener, function(target, type){ - return after(target, 'on' + type, listener, true); - }); - }, - emit: function(type, event){ - var args = [this]; - args.push.apply(args, arguments); - return on.emit.apply(on, args); - } - }; - return Evented; -}); - -}, -'dojo/mouse':function(){ -define("dojo/mouse", ["./_base/kernel", "./on", "./has", "./dom", "./_base/window"], function(dojo, on, has, dom, win){ - - // module: - // dojo/mouse - - has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat"); - has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div")); - has.add("events-mousewheel", win.doc && 'onmousewheel' in win.doc); - - var mouseButtons; - if((has("dom-quirks") && has("ie")) || !has("dom-addeventlistener")){ - mouseButtons = { - LEFT: 1, - MIDDLE: 4, - RIGHT: 2, - // helper functions - isButton: function(e, button){ return e.button & button; }, - isLeft: function(e){ return e.button & 1; }, - isMiddle: function(e){ return e.button & 4; }, - isRight: function(e){ return e.button & 2; } - }; - }else{ - mouseButtons = { - LEFT: 0, - MIDDLE: 1, - RIGHT: 2, - // helper functions - isButton: function(e, button){ return e.button == button; }, - isLeft: function(e){ return e.button == 0; }, - isMiddle: function(e){ return e.button == 1; }, - isRight: function(e){ return e.button == 2; } - }; - } - dojo.mouseButtons = mouseButtons; - -/*===== - dojo.mouseButtons = { - // LEFT: Number - // Numeric value of the left mouse button for the platform. - LEFT: 0, - // MIDDLE: Number - // Numeric value of the middle mouse button for the platform. - MIDDLE: 1, - // RIGHT: Number - // Numeric value of the right mouse button for the platform. - RIGHT: 2, - - isButton: function(e, button){ - // summary: - // Checks an event object for a pressed button - // e: Event - // Event object to examine - // button: Number - // The button value (example: dojo.mouseButton.LEFT) - return e.button == button; // Boolean - }, - isLeft: function(e){ - // summary: - // Checks an event object for the pressed left button - // e: Event - // Event object to examine - return e.button == 0; // Boolean - }, - isMiddle: function(e){ - // summary: - // Checks an event object for the pressed middle button - // e: Event - // Event object to examine - return e.button == 1; // Boolean - }, - isRight: function(e){ - // summary: - // Checks an event object for the pressed right button - // e: Event - // Event object to examine - return e.button == 2; // Boolean - } - }; -=====*/ - - function eventHandler(type, selectHandler){ - // emulation of mouseenter/leave with mouseover/out using descendant checking - var handler = function(node, listener){ - return on(node, type, function(evt){ - if(selectHandler){ - return selectHandler(evt, listener); - } - if(!dom.isDescendant(evt.relatedTarget, node)){ - return listener.call(this, evt); - } - }); - }; - handler.bubble = function(select){ - return eventHandler(type, function(evt, listener){ - // using a selector, use the select function to determine if the mouse moved inside the selector and was previously outside the selector - var target = select(evt.target); - var relatedTarget = evt.relatedTarget; - if(target && (target != (relatedTarget && relatedTarget.nodeType == 1 && select(relatedTarget)))){ - return listener.call(target, evt); - } - }); - }; - return handler; - } - var wheel; - if(has("events-mousewheel")){ - wheel = 'mousewheel'; - }else{ //firefox - wheel = function(node, listener){ - return on(node, 'DOMMouseScroll', function(evt){ - evt.wheelDelta = -evt.detail; - listener.call(this, evt); - }); - }; - } - return { - // summary: - // This module provide mouse event handling utility functions and exports - // mouseenter and mouseleave event emulation. - // example: - // To use these events, you register a mouseenter like this: - // | define(["dojo/on", dojo/mouse"], function(on, mouse){ - // | on(targetNode, mouse.enter, function(event){ - // | dojo.addClass(targetNode, "highlighted"); - // | }); - // | on(targetNode, mouse.leave, function(event){ - // | dojo.removeClass(targetNode, "highlighted"); - // | }); - - _eventHandler: eventHandler, // for dojo/touch - - // enter: Synthetic Event - // This is an extension event for the mouseenter that IE provides, emulating the - // behavior on other browsers. - enter: eventHandler("mouseover"), - - // leave: Synthetic Event - // This is an extension event for the mouseleave that IE provides, emulating the - // behavior on other browsers. - leave: eventHandler("mouseout"), - - // wheel: Normalized Mouse Wheel Event - // This is an extension event for the mousewheel that non-Mozilla browsers provide, - // emulating the behavior on Mozilla based browsers. - wheel: wheel, - - isLeft: mouseButtons.isLeft, - /*===== - isLeft: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the left button was pressed. - }, - =====*/ - - isMiddle: mouseButtons.isMiddle, - /*===== - isMiddle: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the middle button was pressed. - }, - =====*/ - - isRight: mouseButtons.isRight - /*===== - , isRight: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the right button was pressed. - } - =====*/ - }; -}); - -}, -'dojo/topic':function(){ -define("dojo/topic", ["./Evented"], function(Evented){ - - // module: - // dojo/topic - - var hub = new Evented; - return { - // summary: - // Pubsub hub. - // example: - // | topic.subscribe("some/topic", function(event){ - // | ... do something with event - // | }); - // | topic.publish("some/topic", {name:"some event", ...}); - - publish: function(topic, event){ - // summary: - // Publishes a message to a topic on the pub/sub hub. All arguments after - // the first will be passed to the subscribers, so any number of arguments - // can be provided (not just event). - // topic: String - // The name of the topic to publish to - // event: Object - // An event to distribute to the topic listeners - return hub.emit.apply(hub, arguments); - }, - - subscribe: function(topic, listener){ - // summary: - // Subscribes to a topic on the pub/sub hub - // topic: String - // The topic to subscribe to - // listener: Function - // A function to call when a message is published to the given topic - return hub.on.apply(hub, arguments); - } - }; -}); - -}, -'dojo/_base/xhr':function(){ -define("dojo/_base/xhr", [ - "./kernel", - "./sniff", - "require", - "../io-query", - /*===== "./declare", =====*/ - "../dom", - "../dom-form", - "./Deferred", - "./config", - "./json", - "./lang", - "./array", - "../on", - "../aspect", - "../request/watch", - "../request/xhr", - "../request/util" -], function(dojo, has, require, ioq, /*===== declare, =====*/ dom, domForm, Deferred, config, json, lang, array, on, aspect, watch, _xhr, util){ - // module: - // dojo/_base/xhr - - /*===== - dojo._xhrObj = function(){ - // summary: - // does the work of portably generating a new XMLHTTPRequest object. - }; - =====*/ - dojo._xhrObj = _xhr._create; - - var cfg = dojo.config; - - // mix in io-query and dom-form - dojo.objectToQuery = ioq.objectToQuery; - dojo.queryToObject = ioq.queryToObject; - dojo.fieldToObject = domForm.fieldToObject; - dojo.formToObject = domForm.toObject; - dojo.formToQuery = domForm.toQuery; - dojo.formToJson = domForm.toJson; - - // need to block async callbacks from snatching this thread as the result - // of an async callback might call another sync XHR, this hangs khtml forever - // must checked by watchInFlight() - - dojo._blockAsync = false; - - // MOW: remove dojo._contentHandlers alias in 2.0 - var handlers = dojo._contentHandlers = dojo.contentHandlers = { - // summary: - // A map of available XHR transport handle types. Name matches the - // `handleAs` attribute passed to XHR calls. - // description: - // A map of available XHR transport handle types. Name matches the - // `handleAs` attribute passed to XHR calls. Each contentHandler is - // called, passing the xhr object for manipulation. The return value - // from the contentHandler will be passed to the `load` or `handle` - // functions defined in the original xhr call. - // example: - // Creating a custom content-handler: - // | xhr.contentHandlers.makeCaps = function(xhr){ - // | return xhr.responseText.toUpperCase(); - // | } - // | // and later: - // | dojo.xhrGet({ - // | url:"foo.txt", - // | handleAs:"makeCaps", - // | load: function(data){ /* data is a toUpper version of foo.txt */ } - // | }); - - "text": function(xhr){ - // summary: - // A contentHandler which simply returns the plaintext response data - return xhr.responseText; - }, - "json": function(xhr){ - // summary: - // A contentHandler which returns a JavaScript object created from the response data - return json.fromJson(xhr.responseText || null); - }, - "json-comment-filtered": function(xhr){ - // summary: - // A contentHandler which expects comment-filtered JSON. - // description: - // A contentHandler which expects comment-filtered JSON. - // the json-comment-filtered option was implemented to prevent - // "JavaScript Hijacking", but it is less secure than standard JSON. Use - // standard JSON instead. JSON prefixing can be used to subvert hijacking. - // - // Will throw a notice suggesting to use application/json mimetype, as - // json-commenting can introduce security issues. To decrease the chances of hijacking, - // use the standard `json` contentHandler, and prefix your "JSON" with: {}&& - // - // use djConfig.useCommentedJson = true to turn off the notice - if(!config.useCommentedJson){ - console.warn("Consider using the standard mimetype:application/json." - + " json-commenting can introduce security issues. To" - + " decrease the chances of hijacking, use the standard the 'json' handler and" - + " prefix your json with: {}&&\n" - + "Use djConfig.useCommentedJson=true to turn off this message."); - } - - var value = xhr.responseText; - var cStartIdx = value.indexOf("\/*"); - var cEndIdx = value.lastIndexOf("*\/"); - if(cStartIdx == -1 || cEndIdx == -1){ - throw new Error("JSON was not comment filtered"); - } - return json.fromJson(value.substring(cStartIdx+2, cEndIdx)); - }, - "javascript": function(xhr){ - // summary: - // A contentHandler which evaluates the response data, expecting it to be valid JavaScript - - // FIXME: try Moz and IE specific eval variants? - return dojo.eval(xhr.responseText); - }, - "xml": function(xhr){ - // summary: - // A contentHandler returning an XML Document parsed from the response data - var result = xhr.responseXML; - - if(has("ie")){ - if((!result || !result.documentElement)){ - //WARNING: this branch used by the xml handling in dojo.io.iframe, - //so be sure to test dojo.io.iframe if making changes below. - var ms = function(n){ return "MSXML" + n + ".DOMDocument"; }; - var dp = ["Microsoft.XMLDOM", ms(6), ms(4), ms(3), ms(2)]; - array.some(dp, function(p){ - try{ - var dom = new ActiveXObject(p); - dom.async = false; - dom.loadXML(xhr.responseText); - result = dom; - }catch(e){ return false; } - return true; - }); - } - } - return result; // DOMDocument - }, - "json-comment-optional": function(xhr){ - // summary: - // A contentHandler which checks the presence of comment-filtered JSON and - // alternates between the `json` and `json-comment-filtered` contentHandlers. - if(xhr.responseText && /^[^{\[]*\/\*/.test(xhr.responseText)){ - return handlers["json-comment-filtered"](xhr); - }else{ - return handlers["json"](xhr); - } - } - }; - - /*===== - - // kwargs function parameter definitions. Assigning to dojo namespace rather than making them local variables - // because they are used by dojo/io modules too - - dojo.__IoArgs = declare(null, { - // url: String - // URL to server endpoint. - // content: Object? - // Contains properties with string values. These - // properties will be serialized as name1=value2 and - // passed in the request. - // timeout: Integer? - // Milliseconds to wait for the response. If this time - // passes, the then error callbacks are called. - // form: DOMNode? - // DOM node for a form. Used to extract the form values - // and send to the server. - // preventCache: Boolean? - // Default is false. If true, then a - // "dojo.preventCache" parameter is sent in the request - // with a value that changes with each request - // (timestamp). Useful only with GET-type requests. - // handleAs: String? - // Acceptable values depend on the type of IO - // transport (see specific IO calls for more information). - // rawBody: String? - // Sets the raw body for an HTTP request. If this is used, then the content - // property is ignored. This is mostly useful for HTTP methods that have - // a body to their requests, like PUT or POST. This property can be used instead - // of postData and putData for dojo/_base/xhr.rawXhrPost and dojo/_base/xhr.rawXhrPut respectively. - // ioPublish: Boolean? - // Set this explicitly to false to prevent publishing of topics related to - // IO operations. Otherwise, if djConfig.ioPublish is set to true, topics - // will be published via dojo/topic.publish() for different phases of an IO operation. - // See dojo/main.__IoPublish for a list of topics that are published. - - load: function(response, ioArgs){ - // summary: - // This function will be - // called on a successful HTTP response code. - // ioArgs: dojo/main.__IoCallbackArgs - // Provides additional information about the request. - // response: Object - // The response in the format as defined with handleAs. - }, - - error: function(response, ioArgs){ - // summary: - // This function will - // be called when the request fails due to a network or server error, the url - // is invalid, etc. It will also be called if the load or handle callback throws an - // exception, unless djConfig.debugAtAllCosts is true. This allows deployed applications - // to continue to run even when a logic error happens in the callback, while making - // it easier to troubleshoot while in debug mode. - // ioArgs: dojo/main.__IoCallbackArgs - // Provides additional information about the request. - // response: Object - // The response in the format as defined with handleAs. - }, - - handle: function(loadOrError, response, ioArgs){ - // summary: - // This function will - // be called at the end of every request, whether or not an error occurs. - // loadOrError: String - // Provides a string that tells you whether this function - // was called because of success (load) or failure (error). - // response: Object - // The response in the format as defined with handleAs. - // ioArgs: dojo/main.__IoCallbackArgs - // Provides additional information about the request. - } - }); - - dojo.__IoCallbackArgs = declare(null, { - // args: Object - // the original object argument to the IO call. - // xhr: XMLHttpRequest - // For XMLHttpRequest calls only, the - // XMLHttpRequest object that was used for the - // request. - // url: String - // The final URL used for the call. Many times it - // will be different than the original args.url - // value. - // query: String - // For non-GET requests, the - // name1=value1&name2=value2 parameters sent up in - // the request. - // handleAs: String - // The final indicator on how the response will be - // handled. - // id: String - // For dojo/io/script calls only, the internal - // script ID used for the request. - // canDelete: Boolean - // For dojo/io/script calls only, indicates - // whether the script tag that represents the - // request can be deleted after callbacks have - // been called. Used internally to know when - // cleanup can happen on JSONP-type requests. - // json: Object - // For dojo/io/script calls only: holds the JSON - // response for JSONP-type requests. Used - // internally to hold on to the JSON responses. - // You should not need to access it directly -- - // the same object should be passed to the success - // callbacks directly. - }); - - dojo.__IoPublish = declare(null, { - // summary: - // This is a list of IO topics that can be published - // if djConfig.ioPublish is set to true. IO topics can be - // published for any Input/Output, network operation. So, - // dojo.xhr, dojo.io.script and dojo.io.iframe can all - // trigger these topics to be published. - // start: String - // "/dojo/io/start" is sent when there are no outstanding IO - // requests, and a new IO request is started. No arguments - // are passed with this topic. - // send: String - // "/dojo/io/send" is sent whenever a new IO request is started. - // It passes the dojo.Deferred for the request with the topic. - // load: String - // "/dojo/io/load" is sent whenever an IO request has loaded - // successfully. It passes the response and the dojo.Deferred - // for the request with the topic. - // error: String - // "/dojo/io/error" is sent whenever an IO request has errored. - // It passes the error and the dojo.Deferred - // for the request with the topic. - // done: String - // "/dojo/io/done" is sent whenever an IO request has completed, - // either by loading or by erroring. It passes the error and - // the dojo.Deferred for the request with the topic. - // stop: String - // "/dojo/io/stop" is sent when all outstanding IO requests have - // finished. No arguments are passed with this topic. - }); - =====*/ - - - dojo._ioSetArgs = function(/*dojo/main.__IoArgs*/args, - /*Function*/canceller, - /*Function*/okHandler, - /*Function*/errHandler){ - // summary: - // sets up the Deferred and ioArgs property on the Deferred so it - // can be used in an io call. - // args: - // The args object passed into the public io call. Recognized properties on - // the args object are: - // canceller: - // The canceller function used for the Deferred object. The function - // will receive one argument, the Deferred object that is related to the - // canceller. - // okHandler: - // The first OK callback to be registered with Deferred. It has the opportunity - // to transform the OK response. It will receive one argument -- the Deferred - // object returned from this function. - // errHandler: - // The first error callback to be registered with Deferred. It has the opportunity - // to do cleanup on an error. It will receive two arguments: error (the - // Error object) and dfd, the Deferred object returned from this function. - - var ioArgs = {args: args, url: args.url}; - - //Get values from form if requested. - var formObject = null; - if(args.form){ - var form = dom.byId(args.form); - //IE requires going through getAttributeNode instead of just getAttribute in some form cases, - //so use it for all. See #2844 - var actnNode = form.getAttributeNode("action"); - ioArgs.url = ioArgs.url || (actnNode ? actnNode.value : null); - formObject = domForm.toObject(form); - } - - // set up the query params - var miArgs = [{}]; - - if(formObject){ - // potentially over-ride url-provided params w/ form values - miArgs.push(formObject); - } - if(args.content){ - // stuff in content over-rides what's set by form - miArgs.push(args.content); - } - if(args.preventCache){ - miArgs.push({"dojo.preventCache": new Date().valueOf()}); - } - ioArgs.query = ioq.objectToQuery(lang.mixin.apply(null, miArgs)); - - // .. and the real work of getting the deferred in order, etc. - ioArgs.handleAs = args.handleAs || "text"; - var d = new Deferred(function(dfd){ - dfd.canceled = true; - canceller && canceller(dfd); - - var err = dfd.ioArgs.error; - if(!err){ - err = new Error("request cancelled"); - err.dojoType="cancel"; - dfd.ioArgs.error = err; - } - return err; - }); - d.addCallback(okHandler); - - //Support specifying load, error and handle callback functions from the args. - //For those callbacks, the "this" object will be the args object. - //The callbacks will get the deferred result value as the - //first argument and the ioArgs object as the second argument. - var ld = args.load; - if(ld && lang.isFunction(ld)){ - d.addCallback(function(value){ - return ld.call(args, value, ioArgs); - }); - } - var err = args.error; - if(err && lang.isFunction(err)){ - d.addErrback(function(value){ - return err.call(args, value, ioArgs); - }); - } - var handle = args.handle; - if(handle && lang.isFunction(handle)){ - d.addBoth(function(value){ - return handle.call(args, value, ioArgs); - }); - } - - // Attach error handler last (not including topic publishing) - // to catch any errors that may have been generated from load - // or handle functions. - d.addErrback(function(error){ - return errHandler(error, d); - }); - - //Plug in topic publishing, if dojo.publish is loaded. - if(cfg.ioPublish && dojo.publish && ioArgs.args.ioPublish !== false){ - d.addCallbacks( - function(res){ - dojo.publish("/dojo/io/load", [d, res]); - return res; - }, - function(res){ - dojo.publish("/dojo/io/error", [d, res]); - return res; - } - ); - d.addBoth(function(res){ - dojo.publish("/dojo/io/done", [d, res]); - return res; - }); - } - - d.ioArgs = ioArgs; - - // FIXME: need to wire up the xhr object's abort method to something - // analogous in the Deferred - return d; - }; - - var _deferredOk = function(/*Deferred*/dfd){ - // summary: - // okHandler function for dojo._ioSetArgs call. - - var ret = handlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr); - return ret === undefined ? null : ret; - }; - var _deferError = function(/*Error*/error, /*Deferred*/dfd){ - // summary: - // errHandler function for dojo._ioSetArgs call. - - if(!dfd.ioArgs.args.failOk){ - console.error(error); - } - return error; - }; - - //Use a separate count for knowing if we are starting/stopping io calls. - var _checkPubCount = function(dfd){ - if(_pubCount <= 0){ - _pubCount = 0; - if(cfg.ioPublish && dojo.publish && (!dfd || dfd && dfd.ioArgs.args.ioPublish !== false)){ - dojo.publish("/dojo/io/stop"); - } - } - }; - - var _pubCount = 0; - aspect.after(watch, "_onAction", function(){ - _pubCount -= 1; - }); - aspect.after(watch, "_onInFlight", _checkPubCount); - - dojo._ioCancelAll = watch.cancelAll; - /*===== - dojo._ioCancelAll = function(){ - // summary: - // Cancels all pending IO requests, regardless of IO type - // (xhr, script, iframe). - }; - =====*/ - - dojo._ioNotifyStart = function(/*Deferred*/dfd){ - // summary: - // If dojo.publish is available, publish topics - // about the start of a request queue and/or the - // the beginning of request. - // - // Used by IO transports. An IO transport should - // call this method before making the network connection. - if(cfg.ioPublish && dojo.publish && dfd.ioArgs.args.ioPublish !== false){ - if(!_pubCount){ - dojo.publish("/dojo/io/start"); - } - _pubCount += 1; - dojo.publish("/dojo/io/send", [dfd]); - } - }; - - dojo._ioWatch = function(dfd, validCheck, ioCheck, resHandle){ - // summary: - // Watches the io request represented by dfd to see if it completes. - // dfd: Deferred - // The Deferred object to watch. - // validCheck: Function - // Function used to check if the IO request is still valid. Gets the dfd - // object as its only argument. - // ioCheck: Function - // Function used to check if basic IO call worked. Gets the dfd - // object as its only argument. - // resHandle: Function - // Function used to process response. Gets the dfd - // object as its only argument. - - var args = dfd.ioArgs.options = dfd.ioArgs.args; - lang.mixin(dfd, { - response: dfd.ioArgs, - isValid: function(response){ - return validCheck(dfd); - }, - isReady: function(response){ - return ioCheck(dfd); - }, - handleResponse: function(response){ - return resHandle(dfd); - } - }); - watch(dfd); - - _checkPubCount(dfd); - }; - - var _defaultContentType = "application/x-www-form-urlencoded"; - - dojo._ioAddQueryToUrl = function(/*dojo.__IoCallbackArgs*/ioArgs){ - // summary: - // Adds query params discovered by the io deferred construction to the URL. - // Only use this for operations which are fundamentally GET-type operations. - if(ioArgs.query.length){ - ioArgs.url += (ioArgs.url.indexOf("?") == -1 ? "?" : "&") + ioArgs.query; - ioArgs.query = null; - } - }; - - /*===== - dojo.__XhrArgs = declare(dojo.__IoArgs, { - // summary: - // In addition to the properties listed for the dojo._IoArgs type, - // the following properties are allowed for dojo.xhr* methods. - // handleAs: String? - // Acceptable values are: text (default), json, json-comment-optional, - // json-comment-filtered, javascript, xml. See `dojo/_base/xhr.contentHandlers` - // sync: Boolean? - // false is default. Indicates whether the request should - // be a synchronous (blocking) request. - // headers: Object? - // Additional HTTP headers to send in the request. - // failOk: Boolean? - // false is default. Indicates whether a request should be - // allowed to fail (and therefore no console error message in - // the event of a failure) - // contentType: String|Boolean - // "application/x-www-form-urlencoded" is default. Set to false to - // prevent a Content-Type header from being sent, or to a string - // to send a different Content-Type. - }); - =====*/ - - dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){ - // summary: - // Deprecated. Use dojo/request instead. - // description: - // Sends an HTTP request with the given method. - // See also dojo.xhrGet(), xhrPost(), xhrPut() and dojo.xhrDelete() for shortcuts - // for those HTTP methods. There are also methods for "raw" PUT and POST methods - // via dojo.rawXhrPut() and dojo.rawXhrPost() respectively. - // method: - // HTTP method to be used, such as GET, POST, PUT, DELETE. Should be uppercase. - // hasBody: - // If the request has an HTTP body, then pass true for hasBody. - - var rDfd; - //Make the Deferred object for this xhr request. - var dfd = dojo._ioSetArgs(args, function(dfd){ - rDfd && rDfd.cancel(); - }, _deferredOk, _deferError); - var ioArgs = dfd.ioArgs; - - //Allow for specifying the HTTP body completely. - if("postData" in args){ - ioArgs.query = args.postData; - }else if("putData" in args){ - ioArgs.query = args.putData; - }else if("rawBody" in args){ - ioArgs.query = args.rawBody; - }else if((arguments.length > 2 && !hasBody) || "POST|PUT".indexOf(method.toUpperCase()) === -1){ - //Check for hasBody being passed. If no hasBody, - //then only append query string if not a POST or PUT request. - dojo._ioAddQueryToUrl(ioArgs); - } - - var options = { - method: method, - handleAs: "text", - timeout: args.timeout, - withCredentials: args.withCredentials, - ioArgs: ioArgs - }; - - if(typeof args.headers !== 'undefined'){ - options.headers = args.headers; - } - if(typeof args.contentType !== 'undefined'){ - if(!options.headers){ - options.headers = {}; - } - options.headers['Content-Type'] = args.contentType; - } - if(typeof ioArgs.query !== 'undefined'){ - options.data = ioArgs.query; - } - if(typeof args.sync !== 'undefined'){ - options.sync = args.sync; - } - - dojo._ioNotifyStart(dfd); - try{ - rDfd = _xhr(ioArgs.url, options, true); - }catch(e){ - // If XHR creation fails, dojo/request/xhr throws - // When this happens, cancel the deferred - dfd.cancel(); - return dfd; - } - - // sync ioArgs - dfd.ioArgs.xhr = rDfd.response.xhr; - - rDfd.then(function(){ - dfd.resolve(dfd); - }).otherwise(function(error){ - ioArgs.error = error; - if(error.response){ - error.status = error.response.status; - error.responseText = error.response.text; - error.xhr = error.response.xhr; - } - dfd.reject(error); - }); - return dfd; // dojo/_base/Deferred - }; - - dojo.xhrGet = function(/*dojo.__XhrArgs*/ args){ - // summary: - // Sends an HTTP GET request to the server. - return dojo.xhr("GET", args); // dojo/_base/Deferred - }; - - dojo.rawXhrPost = dojo.xhrPost = function(/*dojo.__XhrArgs*/ args){ - // summary: - // Sends an HTTP POST request to the server. In addition to the properties - // listed for the dojo.__XhrArgs type, the following property is allowed: - // postData: - // String. Send raw data in the body of the POST request. - return dojo.xhr("POST", args, true); // dojo/_base/Deferred - }; - - dojo.rawXhrPut = dojo.xhrPut = function(/*dojo.__XhrArgs*/ args){ - // summary: - // Sends an HTTP PUT request to the server. In addition to the properties - // listed for the dojo.__XhrArgs type, the following property is allowed: - // putData: - // String. Send raw data in the body of the PUT request. - return dojo.xhr("PUT", args, true); // dojo/_base/Deferred - }; - - dojo.xhrDelete = function(/*dojo.__XhrArgs*/ args){ - // summary: - // Sends an HTTP DELETE request to the server. - return dojo.xhr("DELETE", args); // dojo/_base/Deferred - }; - - /* - dojo.wrapForm = function(formNode){ - // summary: - // A replacement for FormBind, but not implemented yet. - - // FIXME: need to think harder about what extensions to this we might - // want. What should we allow folks to do w/ this? What events to - // set/send? - throw new Error("dojo.wrapForm not yet implemented"); - } - */ - - dojo._isDocumentOk = function(x){ - return util.checkStatus(x.status); - }; - - dojo._getText = function(url){ - var result; - dojo.xhrGet({url:url, sync:true, load:function(text){ - result = text; - }}); - return result; - }; - - // Add aliases for static functions to dojo.xhr since dojo.xhr is what's returned from this module - lang.mixin(dojo.xhr, { - _xhrObj: dojo._xhrObj, - fieldToObject: domForm.fieldToObject, - formToObject: domForm.toObject, - objectToQuery: ioq.objectToQuery, - formToQuery: domForm.toQuery, - formToJson: domForm.toJson, - queryToObject: ioq.queryToObject, - contentHandlers: handlers, - _ioSetArgs: dojo._ioSetArgs, - _ioCancelAll: dojo._ioCancelAll, - _ioNotifyStart: dojo._ioNotifyStart, - _ioWatch: dojo._ioWatch, - _ioAddQueryToUrl: dojo._ioAddQueryToUrl, - _isDocumentOk: dojo._isDocumentOk, - _getText: dojo._getText, - get: dojo.xhrGet, - post: dojo.xhrPost, - put: dojo.xhrPut, - del: dojo.xhrDelete // because "delete" is a reserved word - }); - - return dojo.xhr; -}); - -}, -'dojo/_base/unload':function(){ -define(["./kernel", "./lang", "../on"], function(dojo, lang, on){ - -// module: -// dojo/unload - -var win = window; - -var unload = { - // summary: - // This module contains the document and window unload detection API. - - addOnWindowUnload: function(/*Object|Function?*/ obj, /*String|Function?*/ functionName){ - // summary: - // registers a function to be triggered when window.onunload - // fires. - // description: - // The first time that addOnWindowUnload is called Dojo - // will register a page listener to trigger your unload - // handler with. Note that registering these handlers may - // destroy "fastback" page caching in browsers that support - // it. Be careful trying to modify the DOM or access - // JavaScript properties during this phase of page unloading: - // they may not always be available. Consider - // addOnUnload() if you need to modify the DOM or do - // heavy JavaScript work since it fires at the equivalent of - // the page's "onbeforeunload" event. - // example: - // | unload.addOnWindowUnload(functionPointer) - // | unload.addOnWindowUnload(object, "functionName"); - // | unload.addOnWindowUnload(object, function(){ /* ... */}); - - if (!dojo.windowUnloaded){ - on(win, "unload", (dojo.windowUnloaded = function(){ - // summary: - // signal fired by impending window destruction. You may use - // dojo.addOnWindowUnload() to register a listener for this - // event. NOTE: if you wish to dojo.connect() to this method - // to perform page/application cleanup, be aware that this - // event WILL NOT fire if no handler has been registered with - // addOnWindowUnload(). This behavior started in Dojo 1.3. - // Previous versions always triggered windowUnloaded(). See - // addOnWindowUnload for more info. - })); - } - on(win, "unload", lang.hitch(obj, functionName)); - }, - - addOnUnload: function(/*Object?|Function?*/ obj, /*String|Function?*/ functionName){ - // summary: - // registers a function to be triggered when the page unloads. - // description: - // The first time that addOnUnload is called Dojo will - // register a page listener to trigger your unload handler - // with. - // - // In a browser environment, the functions will be triggered - // during the window.onbeforeunload event. Be careful of doing - // too much work in an unload handler. onbeforeunload can be - // triggered if a link to download a file is clicked, or if - // the link is a javascript: link. In these cases, the - // onbeforeunload event fires, but the document is not - // actually destroyed. So be careful about doing destructive - // operations in a dojo.addOnUnload callback. - // - // Further note that calling dojo.addOnUnload will prevent - // browsers from using a "fast back" cache to make page - // loading via back button instantaneous. - // example: - // | dojo.addOnUnload(functionPointer) - // | dojo.addOnUnload(object, "functionName") - // | dojo.addOnUnload(object, function(){ /* ... */}); - - on(win, "beforeunload", lang.hitch(obj, functionName)); - } -}; - -dojo.addOnWindowUnload = unload.addOnWindowUnload; -dojo.addOnUnload = unload.addOnUnload; - -return unload; - -}); - -}, -'dojo/Deferred':function(){ -define([ - "./has", - "./_base/lang", - "./errors/CancelError", - "./promise/Promise", - "./promise/instrumentation" -], function(has, lang, CancelError, Promise, instrumentation){ - "use strict"; - - // module: - // dojo/Deferred - - var PROGRESS = 0, - RESOLVED = 1, - REJECTED = 2; - var FULFILLED_ERROR_MESSAGE = "This deferred has already been fulfilled."; - - var freezeObject = Object.freeze || function(){}; - - var signalWaiting = function(waiting, type, result, rejection, deferred){ - if( 1 ){ - if(type === REJECTED && Deferred.instrumentRejected && waiting.length === 0){ - Deferred.instrumentRejected(result, false, rejection, deferred); - } - } - - for(var i = 0; i < waiting.length; i++){ - signalListener(waiting[i], type, result, rejection); - } - }; - - var signalListener = function(listener, type, result, rejection){ - var func = listener[type]; - var deferred = listener.deferred; - if(func){ - try{ - var newResult = func(result); - if(type === PROGRESS){ - if(typeof newResult !== "undefined"){ - signalDeferred(deferred, type, newResult); - } - }else{ - if(newResult && typeof newResult.then === "function"){ - listener.cancel = newResult.cancel; - newResult.then( - // Only make resolvers if they're actually going to be used - makeDeferredSignaler(deferred, RESOLVED), - makeDeferredSignaler(deferred, REJECTED), - makeDeferredSignaler(deferred, PROGRESS)); - return; - } - signalDeferred(deferred, RESOLVED, newResult); - } - }catch(error){ - signalDeferred(deferred, REJECTED, error); - } - }else{ - signalDeferred(deferred, type, result); - } - - if( 1 ){ - if(type === REJECTED && Deferred.instrumentRejected){ - Deferred.instrumentRejected(result, !!func, rejection, deferred.promise); - } - } - }; - - var makeDeferredSignaler = function(deferred, type){ - return function(value){ - signalDeferred(deferred, type, value); - }; - }; - - var signalDeferred = function(deferred, type, result){ - if(!deferred.isCanceled()){ - switch(type){ - case PROGRESS: - deferred.progress(result); - break; - case RESOLVED: - deferred.resolve(result); - break; - case REJECTED: - deferred.reject(result); - break; - } - } - }; - - var Deferred = function(canceler){ - // summary: - // Creates a new deferred. This API is preferred over - // `dojo/_base/Deferred`. - // description: - // Creates a new deferred, as an abstraction over (primarily) - // asynchronous operations. The deferred is the private interface - // that should not be returned to calling code. That's what the - // `promise` is for. See `dojo/promise/Promise`. - // canceler: Function? - // Will be invoked if the deferred is canceled. The canceler - // receives the reason the deferred was canceled as its argument. - // The deferred is rejected with its return value, or a new - // `dojo/errors/CancelError` instance. - - // promise: dojo/promise/Promise - // The public promise object that clients can add callbacks to. - var promise = this.promise = new Promise(); - - var deferred = this; - var fulfilled, result, rejection; - var canceled = false; - var waiting = []; - - if( 1 && Error.captureStackTrace){ - Error.captureStackTrace(deferred, Deferred); - Error.captureStackTrace(promise, Deferred); - } - - this.isResolved = promise.isResolved = function(){ - // summary: - // Checks whether the deferred has been resolved. - // returns: Boolean - - return fulfilled === RESOLVED; - }; - - this.isRejected = promise.isRejected = function(){ - // summary: - // Checks whether the deferred has been rejected. - // returns: Boolean - - return fulfilled === REJECTED; - }; - - this.isFulfilled = promise.isFulfilled = function(){ - // summary: - // Checks whether the deferred has been resolved or rejected. - // returns: Boolean - - return !!fulfilled; - }; - - this.isCanceled = promise.isCanceled = function(){ - // summary: - // Checks whether the deferred has been canceled. - // returns: Boolean - - return canceled; - }; - - this.progress = function(update, strict){ - // summary: - // Emit a progress update on the deferred. - // description: - // Emit a progress update on the deferred. Progress updates - // can be used to communicate updates about the asynchronous - // operation before it has finished. - // update: any - // The progress update. Passed to progbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently no progress can be emitted. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - signalWaiting(waiting, PROGRESS, update, null, deferred); - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - this.resolve = function(value, strict){ - // summary: - // Resolve the deferred. - // description: - // Resolve the deferred, putting it in a success state. - // value: any - // The result of the deferred. Passed to callbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be resolved. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - // Set fulfilled, store value. After signaling waiting listeners unset - // waiting. - signalWaiting(waiting, fulfilled = RESOLVED, result = value, null, deferred); - waiting = null; - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - var reject = this.reject = function(error, strict){ - // summary: - // Reject the deferred. - // description: - // Reject the deferred, putting it in an error state. - // error: any - // The error result of the deferred. Passed to errbacks. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be rejected. - // returns: dojo/promise/Promise - // Returns the original promise for the deferred. - - if(!fulfilled){ - if( 1 && Error.captureStackTrace){ - Error.captureStackTrace(rejection = {}, reject); - } - signalWaiting(waiting, fulfilled = REJECTED, result = error, rejection, deferred); - waiting = null; - return promise; - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - }else{ - return promise; - } - }; - - this.then = promise.then = function(callback, errback, progback){ - // summary: - // Add new callbacks to the deferred. - // description: - // Add new callbacks to the deferred. Callbacks can be added - // before or after the deferred is fulfilled. - // callback: Function? - // Callback to be invoked when the promise is resolved. - // Receives the resolution value. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // Receives the rejection error. - // progback: Function? - // Callback to be invoked when the promise emits a progress - // update. Receives the progress update. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback(s). - // This can be used for chaining many asynchronous operations. - - var listener = [progback, callback, errback]; - // Ensure we cancel the promise we're waiting for, or if callback/errback - // have returned a promise, cancel that one. - listener.cancel = promise.cancel; - listener.deferred = new Deferred(function(reason){ - // Check whether cancel is really available, returned promises are not - // required to expose `cancel` - return listener.cancel && listener.cancel(reason); - }); - if(fulfilled && !waiting){ - signalListener(listener, fulfilled, result, rejection); - }else{ - waiting.push(listener); - } - return listener.deferred.promise; - }; - - this.cancel = promise.cancel = function(reason, strict){ - // summary: - // Inform the deferred it may cancel its asynchronous operation. - // description: - // Inform the deferred it may cancel its asynchronous operation. - // The deferred's (optional) canceler is invoked and the - // deferred will be left in a rejected state. Can affect other - // promises that originate with the same deferred. - // reason: any - // A message that may be sent to the deferred's canceler, - // explaining why it's being canceled. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be canceled. - // returns: any - // Returns the rejection reason if the deferred was canceled - // normally. - - if(!fulfilled){ - // Cancel can be called even after the deferred is fulfilled - if(canceler){ - var returnedReason = canceler(reason); - reason = typeof returnedReason === "undefined" ? reason : returnedReason; - } - canceled = true; - if(!fulfilled){ - // Allow canceler to provide its own reason, but fall back to a CancelError - if(typeof reason === "undefined"){ - reason = new CancelError(); - } - reject(reason); - return reason; - }else if(fulfilled === REJECTED && result === reason){ - return reason; - } - }else if(strict === true){ - throw new Error(FULFILLED_ERROR_MESSAGE); - } - }; - - freezeObject(promise); - }; - - Deferred.prototype.toString = function(){ - // returns: String - // Returns `[object Deferred]`. - - return "[object Deferred]"; - }; - - if(instrumentation){ - instrumentation(Deferred); - } - - return Deferred; -}); - -}, -'dojo/_base/NodeList':function(){ -define("dojo/_base/NodeList", ["./kernel", "../query", "./array", "./html", "../NodeList-dom"], function(dojo, query, array){ - // module: - // dojo/_base/NodeList - - /*===== - return { - // summary: - // This module extends dojo/NodeList with the legacy connect(), coords(), - // blur(), focus(), change(), click(), error(), keydown(), keypress(), - // keyup(), load(), mousedown(), mouseenter(), mouseleave(), mousemove(), - // mouseout(), mouseover(), mouseup(), and submit() methods. - }; - =====*/ - - var NodeList = query.NodeList, - nlp = NodeList.prototype; - - nlp.connect = NodeList._adaptAsForEach(function(){ - // don't bind early to dojo.connect since we no longer explicitly depend on it - return dojo.connect.apply(this, arguments); - }); - /*===== - nlp.connect = function(methodName, objOrFunc, funcName){ - // summary: - // Attach event handlers to every item of the NodeList. Uses dojo.connect() - // so event properties are normalized. - // - // Application must manually require() "dojo/_base/connect" before using this method. - // methodName: String - // the name of the method to attach to. For DOM events, this should be - // the lower-case name of the event - // objOrFunc: Object|Function|String - // if 2 arguments are passed (methodName, objOrFunc), objOrFunc should - // reference a function or be the name of the function in the global - // namespace to attach. If 3 arguments are provided - // (methodName, objOrFunc, funcName), objOrFunc must be the scope to - // locate the bound function in - // funcName: String? - // optional. A string naming the function in objOrFunc to bind to the - // event. May also be a function reference. - // example: - // add an onclick handler to every button on the page - // | query("div:nth-child(odd)").connect("onclick", function(e){ - // | console.log("clicked!"); - // | }); - // example: - // attach foo.bar() to every odd div's onmouseover - // | query("div:nth-child(odd)").connect("onmouseover", foo, "bar"); - - return null; // NodeList - }; - =====*/ - - nlp.coords = NodeList._adaptAsMap(dojo.coords); - /*===== - nlp.coords = function(){ - // summary: - // Deprecated: Use position() for border-box x/y/w/h - // or marginBox() for margin-box w/h/l/t. - // Returns the box objects of all elements in a node list as - // an Array (*not* a NodeList). Acts like `domGeom.coords`, though assumes - // the node passed is each node in this list. - - return []; // Array - }; - =====*/ - - NodeList.events = [ - // summary: - // list of all DOM events used in NodeList - "blur", "focus", "change", "click", "error", "keydown", "keypress", - "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove", - "mouseout", "mouseover", "mouseup", "submit" - ]; - - // FIXME: pseudo-doc the above automatically generated on-event functions - - // syntactic sugar for DOM events - array.forEach(NodeList.events, function(evt){ - var _oe = "on" + evt; - nlp[_oe] = function(a, b){ - return this.connect(_oe, a, b); - }; - // FIXME: should these events trigger publishes? - /* - return (a ? this.connect(_oe, a, b) : - this.forEach(function(n){ - // FIXME: - // listeners get buried by - // addEventListener and can't be dug back - // out to be triggered externally. - // see: - // http://developer.mozilla.org/en/docs/DOM:element - - console.log(n, evt, _oe); - - // FIXME: need synthetic event support! - var _e = { target: n, faux: true, type: evt }; - // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt }); - try{ n[evt](_e); }catch(e){ console.log(e); } - try{ n[_oe](_e); }catch(e){ console.log(e); } - }) - ); - */ - } - ); - - dojo.NodeList = NodeList; - return NodeList; -}); - -}, -'dojo/_base/Color':function(){ -define(["./kernel", "./lang", "./array", "./config"], function(dojo, lang, ArrayUtil, config){ - - var Color = dojo.Color = function(/*Array|String|Object*/ color){ - // summary: - // Takes a named string, hex string, array of rgb or rgba values, - // an object with r, g, b, and a properties, or another `Color` object - // and creates a new Color instance to work from. - // - // example: - // Work with a Color instance: - // | var c = new Color(); - // | c.setColor([0,0,0]); // black - // | var hex = c.toHex(); // #000000 - // - // example: - // Work with a node's color: - // | var color = dojo.style("someNode", "backgroundColor"); - // | var n = new Color(color); - // | // adjust the color some - // | n.r *= .5; - // | console.log(n.toString()); // rgb(128, 255, 255); - if(color){ this.setColor(color); } - }; - - // FIXME: - // there's got to be a more space-efficient way to encode or discover - // these!! Use hex? - Color.named = { - // summary: - // Dictionary list of all CSS named colors, by name. Values are 3-item arrays with corresponding RG and B values. - "black": [0,0,0], - "silver": [192,192,192], - "gray": [128,128,128], - "white": [255,255,255], - "maroon": [128,0,0], - "red": [255,0,0], - "purple": [128,0,128], - "fuchsia":[255,0,255], - "green": [0,128,0], - "lime": [0,255,0], - "olive": [128,128,0], - "yellow": [255,255,0], - "navy": [0,0,128], - "blue": [0,0,255], - "teal": [0,128,128], - "aqua": [0,255,255], - "transparent": config.transparentColor || [0,0,0,0] - }; - - lang.extend(Color, { - r: 255, g: 255, b: 255, a: 1, - _set: function(r, g, b, a){ - var t = this; t.r = r; t.g = g; t.b = b; t.a = a; - }, - setColor: function(/*Array|String|Object*/ color){ - // summary: - // Takes a named string, hex string, array of rgb or rgba values, - // an object with r, g, b, and a properties, or another `Color` object - // and sets this color instance to that value. - // - // example: - // | var c = new Color(); // no color - // | c.setColor("#ededed"); // greyish - if(lang.isString(color)){ - Color.fromString(color, this); - }else if(lang.isArray(color)){ - Color.fromArray(color, this); - }else{ - this._set(color.r, color.g, color.b, color.a); - if(!(color instanceof Color)){ this.sanitize(); } - } - return this; // Color - }, - sanitize: function(){ - // summary: - // Ensures the object has correct attributes - // description: - // the default implementation does nothing, include dojo.colors to - // augment it with real checks - return this; // Color - }, - toRgb: function(){ - // summary: - // Returns 3 component array of rgb values - // example: - // | var c = new Color("#000000"); - // | console.log(c.toRgb()); // [0,0,0] - var t = this; - return [t.r, t.g, t.b]; // Array - }, - toRgba: function(){ - // summary: - // Returns a 4 component array of rgba values from the color - // represented by this object. - var t = this; - return [t.r, t.g, t.b, t.a]; // Array - }, - toHex: function(){ - // summary: - // Returns a CSS color string in hexadecimal representation - // example: - // | console.log(new Color([0,0,0]).toHex()); // #000000 - var arr = ArrayUtil.map(["r", "g", "b"], function(x){ - var s = this[x].toString(16); - return s.length < 2 ? "0" + s : s; - }, this); - return "#" + arr.join(""); // String - }, - toCss: function(/*Boolean?*/ includeAlpha){ - // summary: - // Returns a css color string in rgb(a) representation - // example: - // | var c = new Color("#FFF").toCss(); - // | console.log(c); // rgb('255','255','255') - var t = this, rgb = t.r + ", " + t.g + ", " + t.b; - return (includeAlpha ? "rgba(" + rgb + ", " + t.a : "rgb(" + rgb) + ")"; // String - }, - toString: function(){ - // summary: - // Returns a visual representation of the color - return this.toCss(true); // String - } - }); - - Color.blendColors = dojo.blendColors = function( - /*Color*/ start, - /*Color*/ end, - /*Number*/ weight, - /*Color?*/ obj - ){ - // summary: - // Blend colors end and start with weight from 0 to 1, 0.5 being a 50/50 blend, - // can reuse a previously allocated Color object for the result - var t = obj || new Color(); - ArrayUtil.forEach(["r", "g", "b", "a"], function(x){ - t[x] = start[x] + (end[x] - start[x]) * weight; - if(x != "a"){ t[x] = Math.round(t[x]); } - }); - return t.sanitize(); // Color - }; - - Color.fromRgb = dojo.colorFromRgb = function(/*String*/ color, /*Color?*/ obj){ - // summary: - // Returns a `Color` instance from a string of the form - // "rgb(...)" or "rgba(...)". Optionally accepts a `Color` - // object to update with the parsed value and return instead of - // creating a new object. - // returns: - // A Color object. If obj is passed, it will be the return value. - var m = color.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/); - return m && Color.fromArray(m[1].split(/\s*,\s*/), obj); // Color - }; - - Color.fromHex = dojo.colorFromHex = function(/*String*/ color, /*Color?*/ obj){ - // summary: - // Converts a hex string with a '#' prefix to a color object. - // Supports 12-bit #rgb shorthand. Optionally accepts a - // `Color` object to update with the parsed value. - // - // returns: - // A Color object. If obj is passed, it will be the return value. - // - // example: - // | var thing = dojo.colorFromHex("#ededed"); // grey, longhand - // - // example: - // | var thing = dojo.colorFromHex("#000"); // black, shorthand - var t = obj || new Color(), - bits = (color.length == 4) ? 4 : 8, - mask = (1 << bits) - 1; - color = Number("0x" + color.substr(1)); - if(isNaN(color)){ - return null; // Color - } - ArrayUtil.forEach(["b", "g", "r"], function(x){ - var c = color & mask; - color >>= bits; - t[x] = bits == 4 ? 17 * c : c; - }); - t.a = 1; - return t; // Color - }; - - Color.fromArray = dojo.colorFromArray = function(/*Array*/ a, /*Color?*/ obj){ - // summary: - // Builds a `Color` from a 3 or 4 element array, mapping each - // element in sequence to the rgb(a) values of the color. - // example: - // | var myColor = dojo.colorFromArray([237,237,237,0.5]); // grey, 50% alpha - // returns: - // A Color object. If obj is passed, it will be the return value. - var t = obj || new Color(); - t._set(Number(a[0]), Number(a[1]), Number(a[2]), Number(a[3])); - if(isNaN(t.a)){ t.a = 1; } - return t.sanitize(); // Color - }; - - Color.fromString = dojo.colorFromString = function(/*String*/ str, /*Color?*/ obj){ - // summary: - // Parses `str` for a color value. Accepts hex, rgb, and rgba - // style color values. - // description: - // Acceptable input values for str may include arrays of any form - // accepted by dojo.colorFromArray, hex strings such as "#aaaaaa", or - // rgb or rgba strings such as "rgb(133, 200, 16)" or "rgba(10, 10, - // 10, 50)" - // returns: - // A Color object. If obj is passed, it will be the return value. - var a = Color.named[str]; - return a && Color.fromArray(a, obj) || Color.fromRgb(str, obj) || Color.fromHex(str, obj); // Color - }; - - return Color; -}); - -}, -'dojo/promise/instrumentation':function(){ -define([ - "./tracer", - "../has", - "../_base/lang", - "../_base/array" -], function(tracer, has, lang, arrayUtil){ - function logError(error, rejection, deferred){ - var stack = ""; - if(error && error.stack){ - stack += error.stack; - } - if(rejection && rejection.stack){ - stack += "\n ----------------------------------------\n rejected" + rejection.stack.split("\n").slice(1).join("\n").replace(/^\s+/, " "); - } - if(deferred && deferred.stack){ - stack += "\n ----------------------------------------\n" + deferred.stack; - } - console.error(error, stack); - } - - function reportRejections(error, handled, rejection, deferred){ - if(!handled){ - logError(error, rejection, deferred); - } - } - - var errors = []; - var activeTimeout = false; - var unhandledWait = 1000; - function trackUnhandledRejections(error, handled, rejection, deferred){ - if(handled){ - arrayUtil.some(errors, function(obj, ix){ - if(obj.error === error){ - errors.splice(ix, 1); - return true; - } - }); - }else if(!arrayUtil.some(errors, function(obj){ return obj.error === error; })){ - errors.push({ - error: error, - rejection: rejection, - deferred: deferred, - timestamp: new Date().getTime() - }); - } - - if(!activeTimeout){ - activeTimeout = setTimeout(logRejected, unhandledWait); - } - } - - function logRejected(){ - var now = new Date().getTime(); - var reportBefore = now - unhandledWait; - errors = arrayUtil.filter(errors, function(obj){ - if(obj.timestamp < reportBefore){ - logError(obj.error, obj.rejection, obj.deferred); - return false; - } - return true; - }); - - if(errors.length){ - activeTimeout = setTimeout(logRejected, errors[0].timestamp + unhandledWait - now); - }else{ - activeTimeout = false; - } - } - - return function(Deferred){ - // summary: - // Initialize instrumentation for the Deferred class. - // description: - // Initialize instrumentation for the Deferred class. - // Done automatically by `dojo/Deferred` if the - // `deferredInstrumentation` and `useDeferredInstrumentation` - // config options are set. - // - // Sets up `dojo/promise/tracer` to log to the console. - // - // Sets up instrumentation of rejected deferreds so unhandled - // errors are logged to the console. - - var usage = has("config-useDeferredInstrumentation"); - if(usage){ - tracer.on("resolved", lang.hitch(console, "log", "resolved")); - tracer.on("rejected", lang.hitch(console, "log", "rejected")); - tracer.on("progress", lang.hitch(console, "log", "progress")); - - var args = []; - if(typeof usage === "string"){ - args = usage.split(","); - usage = args.shift(); - } - if(usage === "report-rejections"){ - Deferred.instrumentRejected = reportRejections; - }else if(usage === "report-unhandled-rejections" || usage === true || usage === 1){ - Deferred.instrumentRejected = trackUnhandledRejections; - unhandledWait = parseInt(args[0], 10) || unhandledWait; - }else{ - throw new Error("Unsupported instrumentation usage <" + usage + ">"); - } - } - }; -}); - -}, -'dojo/selector/_loader':function(){ -define(["../has", "require"], - function(has, require){ - -"use strict"; -var testDiv = document.createElement("div"); -has.add("dom-qsa2.1", !!testDiv.querySelectorAll); -has.add("dom-qsa3", function(){ - // test to see if we have a reasonable native selector engine available - try{ - testDiv.innerHTML = "

    "; // test kind of from sizzle - // Safari can't handle uppercase or unicode characters when - // in quirks mode, IE8 can't handle pseudos like :empty - return testDiv.querySelectorAll(".TEST:empty").length == 1; - }catch(e){} - }); -var fullEngine; -var acme = "./acme", lite = "./lite"; -return { - // summary: - // This module handles loading the appropriate selector engine for the given browser - - load: function(id, parentRequire, loaded, config){ - var req = require; - // here we implement the default logic for choosing a selector engine - id = id == "default" ? has("config-selectorEngine") || "css3" : id; - id = id == "css2" || id == "lite" ? lite : - id == "css2.1" ? has("dom-qsa2.1") ? lite : acme : - id == "css3" ? has("dom-qsa3") ? lite : acme : - id == "acme" ? acme : (req = parentRequire) && id; - if(id.charAt(id.length-1) == '?'){ - id = id.substring(0,id.length - 1); - var optionalLoad = true; - } - // the query engine is optional, only load it if a native one is not available or existing one has not been loaded - if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){ - return loaded(fullEngine); - } - // load the referenced selector engine - req([id], function(engine){ - if(id != "./lite"){ - fullEngine = engine; - } - loaded(engine); - }); - } -}; -}); - -}, -'dojo/promise/Promise':function(){ -define([ - "../_base/lang" -], function(lang){ - "use strict"; - - // module: - // dojo/promise/Promise - - function throwAbstract(){ - throw new TypeError("abstract"); - } - - return lang.extend(function Promise(){ - // summary: - // The public interface to a deferred. - // description: - // The public interface to a deferred. All promises in Dojo are - // instances of this class. - }, { - then: function(callback, errback, progback){ - // summary: - // Add new callbacks to the promise. - // description: - // Add new callbacks to the deferred. Callbacks can be added - // before or after the deferred is fulfilled. - // callback: Function? - // Callback to be invoked when the promise is resolved. - // Receives the resolution value. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // Receives the rejection error. - // progback: Function? - // Callback to be invoked when the promise emits a progress - // update. Receives the progress update. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback(s). - // This can be used for chaining many asynchronous operations. - - throwAbstract(); - }, - - cancel: function(reason, strict){ - // summary: - // Inform the deferred it may cancel its asynchronous operation. - // description: - // Inform the deferred it may cancel its asynchronous operation. - // The deferred's (optional) canceler is invoked and the - // deferred will be left in a rejected state. Can affect other - // promises that originate with the same deferred. - // reason: any - // A message that may be sent to the deferred's canceler, - // explaining why it's being canceled. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be canceled. - // returns: any - // Returns the rejection reason if the deferred was canceled - // normally. - - throwAbstract(); - }, - - isResolved: function(){ - // summary: - // Checks whether the promise has been resolved. - // returns: Boolean - - throwAbstract(); - }, - - isRejected: function(){ - // summary: - // Checks whether the promise has been rejected. - // returns: Boolean - - throwAbstract(); - }, - - isFulfilled: function(){ - // summary: - // Checks whether the promise has been resolved or rejected. - // returns: Boolean - - throwAbstract(); - }, - - isCanceled: function(){ - // summary: - // Checks whether the promise has been canceled. - // returns: Boolean - - throwAbstract(); - }, - - always: function(callbackOrErrback){ - // summary: - // Add a callback to be invoked when the promise is resolved - // or rejected. - // callbackOrErrback: Function? - // A function that is used both as a callback and errback. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback/errback. - - return this.then(callbackOrErrback, callbackOrErrback); - }, - - otherwise: function(errback){ - // summary: - // Add new errbacks to the promise. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the errback. - - return this.then(null, errback); - }, - - trace: function(){ - return this; - }, - - traceRejected: function(){ - return this; - }, - - toString: function(){ - // returns: string - // Returns `[object Promise]`. - - return "[object Promise]"; - } - }); -}); - -}, -'dojo/request/watch':function(){ -define([ - './util', - '../errors/RequestTimeoutError', - '../errors/CancelError', - '../_base/array', - '../_base/window', - '../has!host-browser?dom-addeventlistener?:../on:' -], function(util, RequestTimeoutError, CancelError, array, win, on){ - // avoid setting a timer per request. It degrades performance on IE - // something fierece if we don't use unified loops. - var _inFlightIntvl = null, - _inFlight = []; - - function watchInFlight(){ - // summary: - // internal method that checks each inflight XMLHttpRequest to see - // if it has completed or if the timeout situation applies. - - var now = +(new Date); - - // we need manual loop because we often modify _inFlight (and therefore 'i') while iterating - for(var i = 0, dfd; i < _inFlight.length && (dfd = _inFlight[i]); i++){ - var response = dfd.response, - options = response.options; - if((dfd.isCanceled && dfd.isCanceled()) || (dfd.isValid && !dfd.isValid(response))){ - _inFlight.splice(i--, 1); - watch._onAction && watch._onAction(); - }else if(dfd.isReady && dfd.isReady(response)){ - _inFlight.splice(i--, 1); - dfd.handleResponse(response); - watch._onAction && watch._onAction(); - }else if(dfd.startTime){ - // did we timeout? - if(dfd.startTime + (options.timeout || 0) < now){ - _inFlight.splice(i--, 1); - // Cancel the request so the io module can do appropriate cleanup. - dfd.cancel(new RequestTimeoutError('Timeout exceeded', response)); - watch._onAction && watch._onAction(); - } - } - } - - watch._onInFlight && watch._onInFlight(dfd); - - if(!_inFlight.length){ - clearInterval(_inFlightIntvl); - _inFlightIntvl = null; - } - } - - function watch(dfd){ - // summary: - // Watches the io request represented by dfd to see if it completes. - // dfd: Deferred - // The Deferred object to watch. - // response: Object - // The object used as the value of the request promise. - // validCheck: Function - // Function used to check if the IO request is still valid. Gets the dfd - // object as its only argument. - // ioCheck: Function - // Function used to check if basic IO call worked. Gets the dfd - // object as its only argument. - // resHandle: Function - // Function used to process response. Gets the dfd - // object as its only argument. - if(dfd.response.options.timeout){ - dfd.startTime = +(new Date); - } - - if(dfd.isFulfilled()){ - // bail out if the deferred is already fulfilled - return; - } - - _inFlight.push(dfd); - if(!_inFlightIntvl){ - _inFlightIntvl = setInterval(watchInFlight, 50); - } - - // handle sync requests separately from async: - // http://bugs.dojotoolkit.org/ticket/8467 - if(dfd.response.options.sync){ - watchInFlight(); - } - } - - watch.cancelAll = function cancelAll(){ - // summary: - // Cancels all pending IO requests, regardless of IO type - try{ - array.forEach(_inFlight, function(dfd){ - try{ - dfd.cancel(new CancelError('All requests canceled.')); - }catch(e){} - }); - }catch(e){} - }; - - if(win && on && win.doc.attachEvent){ - // Automatically call cancel all io calls on unload in IE - // http://bugs.dojotoolkit.org/ticket/2357 - on(win.global, 'unload', function(){ - watch.cancelAll(); - }); - } - - return watch; -}); - -}, -'dojo/on':function(){ -define(["./has!dom-addeventlistener?:./aspect", "./_base/kernel", "./has"], function(aspect, dojo, has){ - - "use strict"; - if( 1 ){ // check to make sure we are in a browser, this module should work anywhere - var major = window.ScriptEngineMajorVersion; - has.add("jscript", major && (major() + ScriptEngineMinorVersion() / 10)); - has.add("event-orientationchange", has("touch") && !has("android")); // TODO: how do we detect this? - has.add("event-stopimmediatepropagation", window.Event && !!window.Event.prototype && !!window.Event.prototype.stopImmediatePropagation); - } - var on = function(target, type, listener, dontFix){ - // summary: - // A function that provides core event listening functionality. With this function - // you can provide a target, event type, and listener to be notified of - // future matching events that are fired. - // target: Element|Object - // This is the target object or DOM element that to receive events from - // type: String|Function - // This is the name of the event to listen for or an extension event type. - // listener: Function - // This is the function that should be called when the event fires. - // returns: Object - // An object with a remove() method that can be used to stop listening for this - // event. - // description: - // To listen for "click" events on a button node, we can do: - // | define(["dojo/on"], function(listen){ - // | on(button, "click", clickHandler); - // | ... - // Evented JavaScript objects can also have their own events. - // | var obj = new Evented; - // | on(obj, "foo", fooHandler); - // And then we could publish a "foo" event: - // | on.emit(obj, "foo", {key: "value"}); - // We can use extension events as well. For example, you could listen for a tap gesture: - // | define(["dojo/on", "dojo/gesture/tap", function(listen, tap){ - // | on(button, tap, tapHandler); - // | ... - // which would trigger fooHandler. Note that for a simple object this is equivalent to calling: - // | obj.onfoo({key:"value"}); - // If you use on.emit on a DOM node, it will use native event dispatching when possible. - - if(typeof target.on == "function" && typeof type != "function"){ - // delegate to the target's on() method, so it can handle it's own listening if it wants - return target.on(type, listener); - } - // delegate to main listener code - return on.parse(target, type, listener, addListener, dontFix, this); - }; - on.pausable = function(target, type, listener, dontFix){ - // summary: - // This function acts the same as on(), but with pausable functionality. The - // returned signal object has pause() and resume() functions. Calling the - // pause() method will cause the listener to not be called for future events. Calling the - // resume() method will cause the listener to again be called for future events. - var paused; - var signal = on(target, type, function(){ - if(!paused){ - return listener.apply(this, arguments); - } - }, dontFix); - signal.pause = function(){ - paused = true; - }; - signal.resume = function(){ - paused = false; - }; - return signal; - }; - on.once = function(target, type, listener, dontFix){ - // summary: - // This function acts the same as on(), but will only call the listener once. The - // listener will be called for the first - // event that takes place and then listener will automatically be removed. - var signal = on(target, type, function(){ - // remove this listener - signal.remove(); - // proceed to call the listener - return listener.apply(this, arguments); - }); - return signal; - }; - on.parse = function(target, type, listener, addListener, dontFix, matchesTarget){ - if(type.call){ - // event handler function - // on(node, touch.press, touchListener); - return type.call(matchesTarget, target, listener); - } - - if(type.indexOf(",") > -1){ - // we allow comma delimited event names, so you can register for multiple events at once - var events = type.split(/\s*,\s*/); - var handles = []; - var i = 0; - var eventName; - while(eventName = events[i++]){ - handles.push(addListener(target, eventName, listener, dontFix, matchesTarget)); - } - handles.remove = function(){ - for(var i = 0; i < handles.length; i++){ - handles[i].remove(); - } - }; - return handles; - } - return addListener(target, type, listener, dontFix, matchesTarget); - }; - var touchEvents = /^touch/; - function addListener(target, type, listener, dontFix, matchesTarget){ - // event delegation: - var selector = type.match(/(.*):(.*)/); - // if we have a selector:event, the last one is interpreted as an event, and we use event delegation - if(selector){ - type = selector[2]; - selector = selector[1]; - // create the extension event for selectors and directly call it - return on.selector(selector, type).call(matchesTarget, target, listener); - } - // test to see if it a touch event right now, so we don't have to do it every time it fires - if(has("touch")){ - if(touchEvents.test(type)){ - // touch event, fix it - listener = fixTouchListener(listener); - } - if(!has("event-orientationchange") && (type == "orientationchange")){ - //"orientationchange" not supported <= Android 2.1, - //but works through "resize" on window - type = "resize"; - target = window; - listener = fixTouchListener(listener); - } - } - if(addStopImmediate){ - // add stopImmediatePropagation if it doesn't exist - listener = addStopImmediate(listener); - } - // normal path, the target is |this| - if(target.addEventListener){ - // the target has addEventListener, which should be used if available (might or might not be a node, non-nodes can implement this method as well) - // check for capture conversions - var capture = type in captures, - adjustedType = capture ? captures[type] : type; - target.addEventListener(adjustedType, listener, capture); - // create and return the signal - return { - remove: function(){ - target.removeEventListener(adjustedType, listener, capture); - } - }; - } - type = "on" + type; - if(fixAttach && target.attachEvent){ - return fixAttach(target, type, listener); - } - throw new Error("Target must be an event emitter"); - } - - on.selector = function(selector, eventType, children){ - // summary: - // Creates a new extension event with event delegation. This is based on - // the provided event type (can be extension event) that - // only calls the listener when the CSS selector matches the target of the event. - // - // The application must require() an appropriate level of dojo/query to handle the selector. - // selector: - // The CSS selector to use for filter events and determine the |this| of the event listener. - // eventType: - // The event to listen for - // children: - // Indicates if children elements of the selector should be allowed. This defaults to - // true - // example: - // | require(["dojo/on", "dojo/mouse", "dojo/query!css2"], function(listen, mouse){ - // | on(node, on.selector(".my-class", mouse.enter), handlerForMyHover); - return function(target, listener){ - // if the selector is function, use it to select the node, otherwise use the matches method - var matchesTarget = typeof selector == "function" ? {matches: selector} : this, - bubble = eventType.bubble; - function select(eventTarget){ - // see if we have a valid matchesTarget or default to dojo.query - matchesTarget = matchesTarget && matchesTarget.matches ? matchesTarget : dojo.query; - // there is a selector, so make sure it matches - while(!matchesTarget.matches(eventTarget, selector, target)){ - if(eventTarget == target || children === false || !(eventTarget = eventTarget.parentNode) || eventTarget.nodeType != 1){ // intentional assignment - return; - } - } - return eventTarget; - } - if(bubble){ - // the event type doesn't naturally bubble, but has a bubbling form, use that, and give it the selector so it can perform the select itself - return on(target, bubble(select), listener); - } - // standard event delegation - return on(target, eventType, function(event){ - // call select to see if we match - var eventTarget = select(event.target); - // if it matches we call the listener - return eventTarget && listener.call(eventTarget, event); - }); - }; - }; - - function syntheticPreventDefault(){ - this.cancelable = false; - } - function syntheticStopPropagation(){ - this.bubbles = false; - } - var slice = [].slice, - syntheticDispatch = on.emit = function(target, type, event){ - // summary: - // Fires an event on the target object. - // target: - // The target object to fire the event on. This can be a DOM element or a plain - // JS object. If the target is a DOM element, native event emiting mechanisms - // are used when possible. - // type: - // The event type name. You can emulate standard native events like "click" and - // "mouseover" or create custom events like "open" or "finish". - // event: - // An object that provides the properties for the event. See https://developer.mozilla.org/en/DOM/event.initEvent - // for some of the properties. These properties are copied to the event object. - // Of particular importance are the cancelable and bubbles properties. The - // cancelable property indicates whether or not the event has a default action - // that can be cancelled. The event is cancelled by calling preventDefault() on - // the event object. The bubbles property indicates whether or not the - // event will bubble up the DOM tree. If bubbles is true, the event will be called - // on the target and then each parent successively until the top of the tree - // is reached or stopPropagation() is called. Both bubbles and cancelable - // default to false. - // returns: - // If the event is cancelable and the event is not cancelled, - // emit will return true. If the event is cancelable and the event is cancelled, - // emit will return false. - // details: - // Note that this is designed to emit events for listeners registered through - // dojo/on. It should actually work with any event listener except those - // added through IE's attachEvent (IE8 and below's non-W3C event emiting - // doesn't support custom event types). It should work with all events registered - // through dojo/on. Also note that the emit method does do any default - // action, it only returns a value to indicate if the default action should take - // place. For example, emiting a keypress event would not cause a character - // to appear in a textbox. - // example: - // To fire our own click event - // | on.emit(dojo.byId("button"), "click", { - // | cancelable: true, - // | bubbles: true, - // | screenX: 33, - // | screenY: 44 - // | }); - // We can also fire our own custom events: - // | on.emit(dojo.byId("slider"), "slide", { - // | cancelable: true, - // | bubbles: true, - // | direction: "left-to-right" - // | }); - var args = slice.call(arguments, 2); - var method = "on" + type; - if("parentNode" in target){ - // node (or node-like), create event controller methods - var newEvent = args[0] = {}; - for(var i in event){ - newEvent[i] = event[i]; - } - newEvent.preventDefault = syntheticPreventDefault; - newEvent.stopPropagation = syntheticStopPropagation; - newEvent.target = target; - newEvent.type = type; - event = newEvent; - } - do{ - // call any node which has a handler (note that ideally we would try/catch to simulate normal event propagation but that causes too much pain for debugging) - target[method] && target[method].apply(target, args); - // and then continue up the parent node chain if it is still bubbling (if started as bubbles and stopPropagation hasn't been called) - }while(event && event.bubbles && (target = target.parentNode)); - return event && event.cancelable && event; // if it is still true (was cancelable and was cancelled), return the event to indicate default action should happen - }; - var captures = {}; - if(!has("event-stopimmediatepropagation")){ - var stopImmediatePropagation =function(){ - this.immediatelyStopped = true; - this.modified = true; // mark it as modified so the event will be cached in IE - }; - var addStopImmediate = function(listener){ - return function(event){ - if(!event.immediatelyStopped){// check to make sure it hasn't been stopped immediately - event.stopImmediatePropagation = stopImmediatePropagation; - return listener.apply(this, arguments); - } - }; - } - } - if(has("dom-addeventlistener")){ - // normalize focusin and focusout - captures = { - focusin: "focus", - focusout: "blur" - }; - - // emiter that works with native event handling - on.emit = function(target, type, event){ - if(target.dispatchEvent && document.createEvent){ - // use the native event emiting mechanism if it is available on the target object - // create a generic event - // we could create branch into the different types of event constructors, but - // that would be a lot of extra code, with little benefit that I can see, seems - // best to use the generic constructor and copy properties over, making it - // easy to have events look like the ones created with specific initializers - var nativeEvent = target.ownerDocument.createEvent("HTMLEvents"); - nativeEvent.initEvent(type, !!event.bubbles, !!event.cancelable); - // and copy all our properties over - for(var i in event){ - var value = event[i]; - if(!(i in nativeEvent)){ - nativeEvent[i] = event[i]; - } - } - return target.dispatchEvent(nativeEvent) && nativeEvent; - } - return syntheticDispatch.apply(on, arguments); // emit for a non-node - }; - }else{ - // no addEventListener, basically old IE event normalization - on._fixEvent = function(evt, sender){ - // summary: - // normalizes properties on the event object including event - // bubbling methods, keystroke normalization, and x/y positions - // evt: - // native event object - // sender: - // node to treat as "currentTarget" - if(!evt){ - var w = sender && (sender.ownerDocument || sender.document || sender).parentWindow || window; - evt = w.event; - } - if(!evt){return evt;} - if(lastEvent && evt.type == lastEvent.type){ - // should be same event, reuse event object (so it can be augmented) - evt = lastEvent; - } - if(!evt.target){ // check to see if it has been fixed yet - evt.target = evt.srcElement; - evt.currentTarget = (sender || evt.srcElement); - if(evt.type == "mouseover"){ - evt.relatedTarget = evt.fromElement; - } - if(evt.type == "mouseout"){ - evt.relatedTarget = evt.toElement; - } - if(!evt.stopPropagation){ - evt.stopPropagation = stopPropagation; - evt.preventDefault = preventDefault; - } - switch(evt.type){ - case "keypress": - var c = ("charCode" in evt ? evt.charCode : evt.keyCode); - if (c==10){ - // CTRL-ENTER is CTRL-ASCII(10) on IE, but CTRL-ENTER on Mozilla - c=0; - evt.keyCode = 13; - }else if(c==13||c==27){ - c=0; // Mozilla considers ENTER and ESC non-printable - }else if(c==3){ - c=99; // Mozilla maps CTRL-BREAK to CTRL-c - } - // Mozilla sets keyCode to 0 when there is a charCode - // but that stops the event on IE. - evt.charCode = c; - _setKeyChar(evt); - break; - } - } - return evt; - }; - var lastEvent, IESignal = function(handle){ - this.handle = handle; - }; - IESignal.prototype.remove = function(){ - delete _dojoIEListeners_[this.handle]; - }; - var fixListener = function(listener){ - // this is a minimal function for closing on the previous listener with as few as variables as possible - return function(evt){ - evt = on._fixEvent(evt, this); - var result = listener.call(this, evt); - if(evt.modified){ - // cache the last event and reuse it if we can - if(!lastEvent){ - setTimeout(function(){ - lastEvent = null; - }); - } - lastEvent = evt; - } - return result; - }; - }; - var fixAttach = function(target, type, listener){ - listener = fixListener(listener); - if(((target.ownerDocument ? target.ownerDocument.parentWindow : target.parentWindow || target.window || window) != top || - has("jscript") < 5.8) && - !has("config-_allow_leaks")){ - // IE will leak memory on certain handlers in frames (IE8 and earlier) and in unattached DOM nodes for JScript 5.7 and below. - // Here we use global redirection to solve the memory leaks - if(typeof _dojoIEListeners_ == "undefined"){ - _dojoIEListeners_ = []; - } - var emiter = target[type]; - if(!emiter || !emiter.listeners){ - var oldListener = emiter; - emiter = Function('event', 'var callee = arguments.callee; for(var i = 0; i 0){ - // TODO: why do we use a non-standard signature? why do we need "last"? - return array.lastIndexOf(a, x, from); - } - var l = a && a.length || 0, end = up ? l + uOver : lOver, i; - if(from === u){ - i = up ? lOver : l + uOver; - }else{ - if(from < 0){ - i = l + from; - if(i < 0){ - i = lOver; - } - }else{ - i = from >= l ? l + uOver : from; - } - } - if(l && typeof a == "string") a = a.split(""); - for(; i != end; i += delta){ - if(a[i] == x){ - return i; // Number - } - } - return -1; // Number - }; - } - - var array = { - // summary: - // The Javascript v1.6 array extensions. - - every: everyOrSome(false), - /*===== - every: function(arr, callback, thisObject){ - // summary: - // Determines whether or not every item in arr satisfies the - // condition implemented by callback. - // arr: Array|String - // the array to iterate on. If a string, operates on individual characters. - // callback: Function|String - // a function is invoked with three arguments: item, index, - // and array and returns true if the condition is met. - // thisObject: Object? - // may be used to scope the call to callback - // returns: Boolean - // description: - // This function corresponds to the JavaScript 1.6 Array.every() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's every skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/every - // example: - // | // returns false - // | array.every([1, 2, 3, 4], function(item){ return item>1; }); - // example: - // | // returns true - // | array.every([1, 2, 3, 4], function(item){ return item>0; }); - }, - =====*/ - - some: everyOrSome(true), - /*===== - some: function(arr, callback, thisObject){ - // summary: - // Determines whether or not any item in arr satisfies the - // condition implemented by callback. - // arr: Array|String - // the array to iterate over. If a string, operates on individual characters. - // callback: Function|String - // a function is invoked with three arguments: item, index, - // and array and returns true if the condition is met. - // thisObject: Object? - // may be used to scope the call to callback - // returns: Boolean - // description: - // This function corresponds to the JavaScript 1.6 Array.some() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's some skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/some - // example: - // | // is true - // | array.some([1, 2, 3, 4], function(item){ return item>1; }); - // example: - // | // is false - // | array.some([1, 2, 3, 4], function(item){ return item<1; }); - }, - =====*/ - - indexOf: index(true), - /*===== - indexOf: function(arr, value, fromIndex, findLast){ - // summary: - // locates the first index of the provided value in the - // passed array. If the value is not found, -1 is returned. - // description: - // This method corresponds to the JavaScript 1.6 Array.indexOf method, with one difference: when - // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript - // 1.6's indexOf skips the holes in the sparse array. - // For details on this method, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/indexOf - // arr: Array - // value: Object - // fromIndex: Integer? - // findLast: Boolean? - // returns: Number - }, - =====*/ - - lastIndexOf: index(false), - /*===== - lastIndexOf: function(arr, value, fromIndex){ - // summary: - // locates the last index of the provided value in the passed - // array. If the value is not found, -1 is returned. - // description: - // This method corresponds to the JavaScript 1.6 Array.lastIndexOf method, with one difference: when - // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript - // 1.6's lastIndexOf skips the holes in the sparse array. - // For details on this method, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/lastIndexOf - // arr: Array, - // value: Object, - // fromIndex: Integer? - // returns: Number - }, - =====*/ - - forEach: function(arr, callback, thisObject){ - // summary: - // for every item in arr, callback is invoked. Return values are ignored. - // If you want to break out of the loop, consider using array.every() or array.some(). - // forEach does not allow breaking out of the loop over the items in arr. - // arr: - // the array to iterate over. If a string, operates on individual characters. - // callback: - // a function is invoked with three arguments: item, index, and array - // thisObject: - // may be used to scope the call to callback - // description: - // This function corresponds to the JavaScript 1.6 Array.forEach() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's forEach skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach - // example: - // | // log out all members of the array: - // | array.forEach( - // | [ "thinger", "blah", "howdy", 10 ], - // | function(item){ - // | console.log(item); - // | } - // | ); - // example: - // | // log out the members and their indexes - // | array.forEach( - // | [ "thinger", "blah", "howdy", 10 ], - // | function(item, idx, arr){ - // | console.log(item, "at index:", idx); - // | } - // | ); - // example: - // | // use a scoped object member as the callback - // | - // | var obj = { - // | prefix: "logged via obj.callback:", - // | callback: function(item){ - // | console.log(this.prefix, item); - // | } - // | }; - // | - // | // specifying the scope function executes the callback in that scope - // | array.forEach( - // | [ "thinger", "blah", "howdy", 10 ], - // | obj.callback, - // | obj - // | ); - // | - // | // alternately, we can accomplish the same thing with lang.hitch() - // | array.forEach( - // | [ "thinger", "blah", "howdy", 10 ], - // | lang.hitch(obj, "callback") - // | ); - // arr: Array|String - // callback: Function|String - // thisObject: Object? - - var i = 0, l = arr && arr.length || 0; - if(l && typeof arr == "string") arr = arr.split(""); - if(typeof callback == "string") callback = cache[callback] || buildFn(callback); - if(thisObject){ - for(; i < l; ++i){ - callback.call(thisObject, arr[i], i, arr); - } - }else{ - for(; i < l; ++i){ - callback(arr[i], i, arr); - } - } - }, - - map: function(arr, callback, thisObject, Ctr){ - // summary: - // applies callback to each element of arr and returns - // an Array with the results - // arr: Array|String - // the array to iterate on. If a string, operates on - // individual characters. - // callback: Function|String - // a function is invoked with three arguments, (item, index, - // array), and returns a value - // thisObject: Object? - // may be used to scope the call to callback - // returns: Array - // description: - // This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map - // example: - // | // returns [2, 3, 4, 5] - // | array.map([1, 2, 3, 4], function(item){ return item+1 }); - - // TODO: why do we have a non-standard signature here? do we need "Ctr"? - var i = 0, l = arr && arr.length || 0, out = new (Ctr || Array)(l); - if(l && typeof arr == "string") arr = arr.split(""); - if(typeof callback == "string") callback = cache[callback] || buildFn(callback); - if(thisObject){ - for(; i < l; ++i){ - out[i] = callback.call(thisObject, arr[i], i, arr); - } - }else{ - for(; i < l; ++i){ - out[i] = callback(arr[i], i, arr); - } - } - return out; // Array - }, - - filter: function(arr, callback, thisObject){ - // summary: - // Returns a new Array with those items from arr that match the - // condition implemented by callback. - // arr: Array - // the array to iterate over. - // callback: Function|String - // a function that is invoked with three arguments (item, - // index, array). The return of this function is expected to - // be a boolean which determines whether the passed-in item - // will be included in the returned array. - // thisObject: Object? - // may be used to scope the call to callback - // returns: Array - // description: - // This function corresponds to the JavaScript 1.6 Array.filter() method, with one difference: when - // run over sparse arrays, this implementation passes the "holes" in the sparse array to - // the callback function with a value of undefined. JavaScript 1.6's filter skips the holes in the sparse array. - // For more details, see: - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter - // example: - // | // returns [2, 3, 4] - // | array.filter([1, 2, 3, 4], function(item){ return item>1; }); - - // TODO: do we need "Ctr" here like in map()? - var i = 0, l = arr && arr.length || 0, out = [], value; - if(l && typeof arr == "string") arr = arr.split(""); - if(typeof callback == "string") callback = cache[callback] || buildFn(callback); - if(thisObject){ - for(; i < l; ++i){ - value = arr[i]; - if(callback.call(thisObject, value, i, arr)){ - out.push(value); - } - } - }else{ - for(; i < l; ++i){ - value = arr[i]; - if(callback(value, i, arr)){ - out.push(value); - } - } - } - return out; // Array - }, - - clearCache: function(){ - cache = {}; - } - }; - - - 1 && lang.mixin(dojo, array); - - return array; -}); - -}, -'dojo/_base/json':function(){ -define(["./kernel", "../json"], function(dojo, json){ - -// module: -// dojo/_base/json - -/*===== -return { - // summary: - // This module defines the dojo JSON API. -}; -=====*/ - -dojo.fromJson = function(/*String*/ js){ - // summary: - // Parses a JavaScript expression and returns a JavaScript value. - // description: - // Throws for invalid JavaScript expressions. It does not use a strict JSON parser. It - // always delegates to eval(). The content passed to this method must therefore come - // from a trusted source. - // It is recommend that you use dojo/json's parse function for an - // implementation uses the (faster) native JSON parse when available. - // js: - // a string literal of a JavaScript expression, for instance: - // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'` - - return eval("(" + js + ")"); // Object -}; - -/*===== -dojo._escapeString = function(){ - // summary: - // Adds escape sequences for non-visual characters, double quote and - // backslash and surrounds with double quotes to form a valid string - // literal. -}; -=====*/ -dojo._escapeString = json.stringify; // just delegate to json.stringify - -dojo.toJsonIndentStr = "\t"; -dojo.toJson = function(/*Object*/ it, /*Boolean?*/ prettyPrint){ - // summary: - // Returns a [JSON](http://json.org) serialization of an object. - // description: - // Returns a [JSON](http://json.org) serialization of an object. - // Note that this doesn't check for infinite recursion, so don't do that! - // It is recommend that you use dojo/json's stringify function for an lighter - // and faster implementation that matches the native JSON API and uses the - // native JSON serializer when available. - // it: - // an object to be serialized. Objects may define their own - // serialization via a special "__json__" or "json" function - // property. If a specialized serializer has been defined, it will - // be used as a fallback. - // Note that in 1.6, toJson would serialize undefined, but this no longer supported - // since it is not supported by native JSON serializer. - // prettyPrint: - // if true, we indent objects and arrays to make the output prettier. - // The variable `dojo.toJsonIndentStr` is used as the indent string -- - // to use something other than the default (tab), change that variable - // before calling dojo.toJson(). - // Note that if native JSON support is available, it will be used for serialization, - // and native implementations vary on the exact spacing used in pretty printing. - // returns: - // A JSON string serialization of the passed-in object. - // example: - // simple serialization of a trivial object - // | var jsonStr = dojo.toJson({ howdy: "stranger!", isStrange: true }); - // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr); - // example: - // a custom serializer for an objects of a particular class: - // | dojo.declare("Furby", null, { - // | furbies: "are strange", - // | furbyCount: 10, - // | __json__: function(){ - // | }, - // | }); - - // use dojo/json - return json.stringify(it, function(key, value){ - if(value){ - var tf = value.__json__||value.json; - if(typeof tf == "function"){ - return tf.call(value); - } - } - return value; - }, prettyPrint && dojo.toJsonIndentStr); // String -}; - -return dojo; -}); - -}, -'dojo/_base/window':function(){ -define("dojo/_base/window", ["./kernel", "./lang", "../sniff"], function(dojo, lang, has){ -// module: -// dojo/_base/window - -var ret = { - // summary: - // API to save/set/restore the global/document scope. - - global: dojo.global, - /*===== - global: { - // summary: - // Alias for the current window. 'global' can be modified - // for temporary context shifting. See also withGlobal(). - // description: - // Use this rather than referring to 'window' to ensure your code runs - // correctly in managed contexts. - }, - =====*/ - - doc: this["document"] || null, - /*===== - doc: { - // summary: - // Alias for the current document. 'doc' can be modified - // for temporary context shifting. See also withDoc(). - // description: - // Use this rather than referring to 'window.document' to ensure your code runs - // correctly in managed contexts. - // example: - // | n.appendChild(dojo.doc.createElement('div')); - }, - =====*/ - - body: function(/*Document?*/ doc){ - // summary: - // Return the body element of the specified document or of dojo/_base/window::doc. - // example: - // | win.body().appendChild(dojo.doc.createElement('div')); - - // Note: document.body is not defined for a strict xhtml document - // Would like to memoize this, but dojo.doc can change vi dojo.withDoc(). - doc = doc || dojo.doc; - return doc.body || doc.getElementsByTagName("body")[0]; // Node - }, - - setContext: function(/*Object*/ globalObject, /*DocumentElement*/ globalDocument){ - // summary: - // changes the behavior of many core Dojo functions that deal with - // namespace and DOM lookup, changing them to work in a new global - // context (e.g., an iframe). The varibles dojo.global and dojo.doc - // are modified as a result of calling this function and the result of - // `dojo.body()` likewise differs. - dojo.global = ret.global = globalObject; - dojo.doc = ret.doc = globalDocument; - }, - - withGlobal: function( /*Object*/ globalObject, - /*Function*/ callback, - /*Object?*/ thisObject, - /*Array?*/ cbArguments){ - // summary: - // Invoke callback with globalObject as dojo.global and - // globalObject.document as dojo.doc. - // description: - // Invoke callback with globalObject as dojo.global and - // globalObject.document as dojo.doc. If provided, globalObject - // will be executed in the context of object thisObject - // When callback() returns or throws an error, the dojo.global - // and dojo.doc will be restored to its previous state. - - var oldGlob = dojo.global; - try{ - dojo.global = ret.global = globalObject; - return ret.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments); - }finally{ - dojo.global = ret.global = oldGlob; - } - }, - - withDoc: function( /*DocumentElement*/ documentObject, - /*Function*/ callback, - /*Object?*/ thisObject, - /*Array?*/ cbArguments){ - // summary: - // Invoke callback with documentObject as dojo/_base/window::doc. - // description: - // Invoke callback with documentObject as dojo/_base/window::doc. If provided, - // callback will be executed in the context of object thisObject - // When callback() returns or throws an error, the dojo/_base/window::doc will - // be restored to its previous state. - - var oldDoc = ret.doc, - oldQ = has("quirks"), - oldIE = has("ie"), isIE, mode, pwin; - - try{ - dojo.doc = ret.doc = documentObject; - // update dojo.isQuirks and the value of the has feature "quirks". - // remove setting dojo.isQuirks and dojo.isIE for 2.0 - dojo.isQuirks = has.add("quirks", dojo.doc.compatMode == "BackCompat", true, true); // no need to check for QuirksMode which was Opera 7 only - - if(has("ie")){ - if((pwin = documentObject.parentWindow) && pwin.navigator){ - // re-run IE detection logic and update dojo.isIE / has("ie") - // (the only time parentWindow/navigator wouldn't exist is if we were not - // passed an actual legitimate document object) - isIE = parseFloat(pwin.navigator.appVersion.split("MSIE ")[1]) || undefined; - mode = documentObject.documentMode; - if(mode && mode != 5 && Math.floor(isIE) != mode){ - isIE = mode; - } - dojo.isIE = has.add("ie", isIE, true, true); - } - } - - if(thisObject && typeof callback == "string"){ - callback = thisObject[callback]; - } - - return callback.apply(thisObject, cbArguments || []); - }finally{ - dojo.doc = ret.doc = oldDoc; - dojo.isQuirks = has.add("quirks", oldQ, true, true); - dojo.isIE = has.add("ie", oldIE, true, true); - } - } -}; - - 1 && lang.mixin(dojo, ret); - -return ret; - -}); - -}, -'dojo/dom-class':function(){ -define(["./_base/lang", "./_base/array", "./dom"], function(lang, array, dom){ - // module: - // dojo/dom-class - - var className = "className"; - - /* Part I of classList-based implementation is preserved here for posterity - var classList = "classList"; - has.add("dom-classList", function(){ - return classList in document.createElement("p"); - }); - */ - - // ============================= - // (CSS) Class Functions - // ============================= - - var cls, // exports object - spaces = /\s+/, a1 = [""]; - - function str2array(s){ - if(typeof s == "string" || s instanceof String){ - if(s && !spaces.test(s)){ - a1[0] = s; - return a1; - } - var a = s.split(spaces); - if(a.length && !a[0]){ - a.shift(); - } - if(a.length && !a[a.length - 1]){ - a.pop(); - } - return a; - } - // assumed to be an array - if(!s){ - return []; - } - return array.filter(s, function(x){ return x; }); - } - - /* Part II of classList-based implementation is preserved here for posterity - if(has("dom-classList")){ - // new classList version - cls = { - contains: function containsClass(node, classStr){ - var clslst = classStr && dom.byId(node)[classList]; - return clslst && clslst.contains(classStr); // Boolean - }, - - add: function addClass(node, classStr){ - node = dom.byId(node); - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].add(classStr[i]); - } - }, - - remove: function removeClass(node, classStr){ - node = dom.byId(node); - if(classStr === undefined){ - node[className] = ""; - }else{ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].remove(classStr[i]); - } - } - }, - - replace: function replaceClass(node, addClassStr, removeClassStr){ - node = dom.byId(node); - if(removeClassStr === undefined){ - node[className] = ""; - }else{ - removeClassStr = str2array(removeClassStr); - for(var i = 0, len = removeClassStr.length; i < len; ++i){ - node[classList].remove(removeClassStr[i]); - } - } - addClassStr = str2array(addClassStr); - for(i = 0, len = addClassStr.length; i < len; ++i){ - node[classList].add(addClassStr[i]); - } - }, - - toggle: function toggleClass(node, classStr, condition){ - node = dom.byId(node); - if(condition === undefined){ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].toggle(classStr[i]); - } - }else{ - cls[condition ? "add" : "remove"](node, classStr); - } - return condition; // Boolean - } - } - } - */ - - // regular DOM version - var fakeNode = {}; // for effective replacement - cls = { - // summary: - // This module defines the core dojo DOM class API. - - contains: function containsClass(/*DomNode|String*/ node, /*String*/ classStr){ - // summary: - // Returns whether or not the specified classes are a portion of the - // class list currently applied to the node. - // node: String|DOMNode - // String ID or DomNode reference to check the class for. - // classStr: String - // A string class name to look for. - // example: - // Do something if a node with id="someNode" has class="aSillyClassName" present - // | if(dojo.hasClass("someNode","aSillyClassName")){ ... } - - return ((" " + dom.byId(node)[className] + " ").indexOf(" " + classStr + " ") >= 0); // Boolean - }, - - add: function addClass(/*DomNode|String*/ node, /*String|Array*/ classStr){ - // summary: - // Adds the specified classes to the end of the class list on the - // passed node. Will not re-apply duplicate classes. - // - // node: String|DOMNode - // String ID or DomNode reference to add a class string too - // - // classStr: String|Array - // A String class name to add, or several space-separated class names, - // or an array of class names. - // - // example: - // Add a class to some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", "anewClass"); - // | }); - // - // example: - // Add two classes at once: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", "firstClass secondClass"); - // | }); - // - // example: - // Add two classes at once (using array): - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", ["firstClass", "secondClass"]); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple additions - // | require(["dojo/query"], function(query){ - // | query("ul > li").addClass("firstLevel"); - // | }); - - node = dom.byId(node); - classStr = str2array(classStr); - var cls = node[className], oldLen; - cls = cls ? " " + cls + " " : " "; - oldLen = cls.length; - for(var i = 0, len = classStr.length, c; i < len; ++i){ - c = classStr[i]; - if(c && cls.indexOf(" " + c + " ") < 0){ - cls += c + " "; - } - } - if(oldLen < cls.length){ - node[className] = cls.substr(1, cls.length - 2); - } - }, - - remove: function removeClass(/*DomNode|String*/ node, /*String|Array?*/ classStr){ - // summary: - // Removes the specified classes from node. No `contains()` - // check is required. - // - // node: String|DOMNode - // String ID or DomNode reference to remove the class from. - // - // classStr: String|Array - // An optional String class name to remove, or several space-separated - // class names, or an array of class names. If omitted, all class names - // will be deleted. - // - // example: - // Remove a class from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", "firstClass"); - // | }); - // - // example: - // Remove two classes from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", "firstClass secondClass"); - // | }); - // - // example: - // Remove two classes from some node (using array): - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", ["firstClass", "secondClass"]); - // | }); - // - // example: - // Remove all classes from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode"); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple removal - // | require(["dojo/query"], function(query){ - // | query("ul > li").removeClass("foo"); - // | }); - - node = dom.byId(node); - var cls; - if(classStr !== undefined){ - classStr = str2array(classStr); - cls = " " + node[className] + " "; - for(var i = 0, len = classStr.length; i < len; ++i){ - cls = cls.replace(" " + classStr[i] + " ", " "); - } - cls = lang.trim(cls); - }else{ - cls = ""; - } - if(node[className] != cls){ node[className] = cls; } - }, - - replace: function replaceClass(/*DomNode|String*/ node, /*String|Array*/ addClassStr, /*String|Array?*/ removeClassStr){ - // summary: - // Replaces one or more classes on a node if not present. - // Operates more quickly than calling dojo.removeClass and dojo.addClass - // - // node: String|DOMNode - // String ID or DomNode reference to remove the class from. - // - // addClassStr: String|Array - // A String class name to add, or several space-separated class names, - // or an array of class names. - // - // removeClassStr: String|Array? - // A String class name to remove, or several space-separated class names, - // or an array of class names. - // - // example: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.replace("someNode", "add1 add2", "remove1 remove2"); - // | }); - // - // example: - // Replace all classes with addMe - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.replace("someNode", "addMe"); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple toggles - // | require(["dojo/query"], function(query){ - // | query(".findMe").replaceClass("addMe", "removeMe"); - // | }); - - node = dom.byId(node); - fakeNode[className] = node[className]; - cls.remove(fakeNode, removeClassStr); - cls.add(fakeNode, addClassStr); - if(node[className] !== fakeNode[className]){ - node[className] = fakeNode[className]; - } - }, - - toggle: function toggleClass(/*DomNode|String*/ node, /*String|Array*/ classStr, /*Boolean?*/ condition){ - // summary: - // Adds a class to node if not present, or removes if present. - // Pass a boolean condition if you want to explicitly add or remove. - // Returns the condition that was specified directly or indirectly. - // - // node: String|DOMNode - // String ID or DomNode reference to toggle a class string - // - // classStr: String|Array - // A String class name to toggle, or several space-separated class names, - // or an array of class names. - // - // condition: - // If passed, true means to add the class, false means to remove. - // Otherwise dojo.hasClass(node, classStr) is used to detect the class presence. - // - // example: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.toggle("someNode", "hovered"); - // | }); - // - // example: - // Forcefully add a class - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.toggle("someNode", "hovered", true); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple toggles - // | require(["dojo/query"], function(query){ - // | query(".toggleMe").toggleClass("toggleMe"); - // | }); - - node = dom.byId(node); - if(condition === undefined){ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length, c; i < len; ++i){ - c = classStr[i]; - cls[cls.contains(node, c) ? "remove" : "add"](node, c); - } - }else{ - cls[condition ? "add" : "remove"](node, classStr); - } - return condition; // Boolean - } - }; - - return cls; -}); - -}, -'dojo/_base/config':function(){ -define(["../has", "require"], function(has, require){ - // module: - // dojo/_base/config - -/*===== -return { - // summary: - // This module defines the user configuration during bootstrap. - // description: - // By defining user configuration as a module value, an entire configuration can be specified in a build, - // thereby eliminating the need for sniffing and or explicitly setting in the global variable dojoConfig. - // Also, when multiple instances of dojo exist in a single application, each will necessarily be located - // at an unique absolute module identifier as given by the package configuration. Implementing configuration - // as a module allows for specifying unique, per-instance configurations. - // example: - // Create a second instance of dojo with a different, instance-unique configuration (assume the loader and - // dojo.js are already loaded). - // | // specify a configuration that creates a new instance of dojo at the absolute module identifier "myDojo" - // | require({ - // | packages:[{ - // | name:"myDojo", - // | location:".", //assume baseUrl points to dojo.js - // | }] - // | }); - // | - // | // specify a configuration for the myDojo instance - // | define("myDojo/config", { - // | // normal configuration variables go here, e.g., - // | locale:"fr-ca" - // | }); - // | - // | // load and use the new instance of dojo - // | require(["myDojo"], function(dojo){ - // | // dojo is the new instance of dojo - // | // use as required - // | }); - - // isDebug: Boolean - // Defaults to `false`. If set to `true`, ensures that Dojo provides - // extended debugging feedback via Firebug. If Firebug is not available - // on your platform, setting `isDebug` to `true` will force Dojo to - // pull in (and display) the version of Firebug Lite which is - // integrated into the Dojo distribution, thereby always providing a - // debugging/logging console when `isDebug` is enabled. Note that - // Firebug's `console.*` methods are ALWAYS defined by Dojo. If - // `isDebug` is false and you are on a platform without Firebug, these - // methods will be defined as no-ops. - isDebug: false, - - // locale: String - // The locale to assume for loading localized resources in this page, - // specified according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt). - // Must be specified entirely in lowercase, e.g. `en-us` and `zh-cn`. - // See the documentation for `dojo.i18n` and `dojo.requireLocalization` - // for details on loading localized resources. If no locale is specified, - // Dojo assumes the locale of the user agent, according to `navigator.userLanguage` - // or `navigator.language` properties. - locale: undefined, - - // extraLocale: Array - // No default value. Specifies additional locales whose - // resources should also be loaded alongside the default locale when - // calls to `dojo.requireLocalization()` are processed. - extraLocale: undefined, - - // baseUrl: String - // The directory in which `dojo.js` is located. Under normal - // conditions, Dojo auto-detects the correct location from which it - // was loaded. You may need to manually configure `baseUrl` in cases - // where you have renamed `dojo.js` or in which `` tags confuse - // some browsers (e.g. IE 6). The variable `dojo.baseUrl` is assigned - // either the value of `djConfig.baseUrl` if one is provided or the - // auto-detected root if not. Other modules are located relative to - // this path. The path should end in a slash. - baseUrl: undefined, - - // modulePaths: [deprecated] Object - // A map of module names to paths relative to `dojo.baseUrl`. The - // key/value pairs correspond directly to the arguments which - // `dojo.registerModulePath` accepts. Specifying - // `djConfig.modulePaths = { "foo": "../../bar" }` is the equivalent - // of calling `dojo.registerModulePath("foo", "../../bar");`. Multiple - // modules may be configured via `djConfig.modulePaths`. - modulePaths: {}, - - // addOnLoad: Function|Array - // Adds a callback via dojo/ready. Useful when Dojo is added after - // the page loads and djConfig.afterOnLoad is true. Supports the same - // arguments as dojo/ready. When using a function reference, use - // `djConfig.addOnLoad = function(){};`. For object with function name use - // `djConfig.addOnLoad = [myObject, "functionName"];` and for object with - // function reference use - // `djConfig.addOnLoad = [myObject, function(){}];` - addOnLoad: null, - - // parseOnLoad: Boolean - // Run the parser after the page is loaded - parseOnLoad: false, - - // require: String[] - // An array of module names to be loaded immediately after dojo.js has been included - // in a page. - require: [], - - // defaultDuration: Number - // Default duration, in milliseconds, for wipe and fade animations within dijits. - // Assigned to dijit.defaultDuration. - defaultDuration: 200, - - // dojoBlankHtmlUrl: String - // Used by some modules to configure an empty iframe. Used by dojo/io/iframe and - // dojo/back, and dijit/popup support in IE where an iframe is needed to make sure native - // controls do not bleed through the popups. Normally this configuration variable - // does not need to be set, except when using cross-domain/CDN Dojo builds. - // Save dojo/resources/blank.html to your domain and set `djConfig.dojoBlankHtmlUrl` - // to the path on your domain your copy of blank.html. - dojoBlankHtmlUrl: undefined, - - // ioPublish: Boolean? - // Set this to true to enable publishing of topics for the different phases of - // IO operations. Publishing is done via dojo/topic.publish(). See dojo/main.__IoPublish for a list - // of topics that are published. - ioPublish: false, - - // useCustomLogger: Anything? - // If set to a value that evaluates to true such as a string or array and - // isDebug is true and Firebug is not available or running, then it bypasses - // the creation of Firebug Lite allowing you to define your own console object. - useCustomLogger: undefined, - - // transparentColor: Array - // Array containing the r, g, b components used as transparent color in dojo.Color; - // if undefined, [255,255,255] (white) will be used. - transparentColor: undefined, - - // deps: Function|Array - // Defines dependencies to be used before the loader has been loaded. - // When provided, they cause the loader to execute require(deps, callback) - // once it has finished loading. Should be used with callback. - deps: undefined, - - // callback: Function|Array - // Defines a callback to be used when dependencies are defined before - // the loader has been loaded. When provided, they cause the loader to - // execute require(deps, callback) once it has finished loading. - // Should be used with deps. - callback: undefined, - - // deferredInstrumentation: Boolean - // Whether deferred instrumentation should be loaded or included - // in builds. - deferredInstrumentation: true, - - // useDeferredInstrumentation: Boolean|String - // Whether the deferred instrumentation should be used. - // - // * `"report-rejections"`: report each rejection as it occurs. - // * `true` or `1` or `"report-unhandled-rejections"`: wait 1 second - // in an attempt to detect unhandled rejections. - useDeferredInstrumentation: "report-unhandled-rejections" -}; -=====*/ - - var result = {}; - if( 1 ){ - // must be the dojo loader; take a shallow copy of require.rawConfig - var src = require.rawConfig, p; - for(p in src){ - result[p] = src[p]; - } - }else{ - var adviseHas = function(featureSet, prefix, booting){ - for(p in featureSet){ - p!="has" && has.add(prefix + p, featureSet[p], 0, booting); - } - }; - result = 1 ? - // must be a built version of the dojo loader; all config stuffed in require.rawConfig - require.rawConfig : - // a foreign loader - this.dojoConfig || this.djConfig || {}; - adviseHas(result, "config", 1); - adviseHas(result.has, "", 1); - } - return result; -}); - - -}, -'dojo/_base/event':function(){ -define("dojo/_base/event", ["./kernel", "../on", "../has", "../dom-geometry"], function(dojo, on, has, dom){ - // module: - // dojo/_base/event - - if(on._fixEvent){ - var fixEvent = on._fixEvent; - on._fixEvent = function(evt, se){ - // add some additional normalization for back-compat, this isn't in on.js because it is somewhat more expensive - evt = fixEvent(evt, se); - if(evt){ - dom.normalizeEvent(evt); - } - return evt; - }; - } - - var ret = { - // summary: - // This module defines dojo DOM event API. Usually you should use dojo/on, and evt.stopPropagation() + - // evt.preventDefault(), rather than this module. - - fix: function(/*Event*/ evt, /*DOMNode*/ sender){ - // summary: - // normalizes properties on the event object including event - // bubbling methods, keystroke normalization, and x/y positions - // evt: Event - // native event object - // sender: DOMNode - // node to treat as "currentTarget" - if(on._fixEvent){ - return on._fixEvent(evt, sender); - } - return evt; // Event - }, - - stop: function(/*Event*/ evt){ - // summary: - // prevents propagation and clobbers the default action of the - // passed event - // evt: Event - // The event object. If omitted, window.event is used on IE. - if(has("dom-addeventlistener") || (evt && evt.preventDefault)){ - evt.preventDefault(); - evt.stopPropagation(); - }else{ - evt = evt || window.event; - evt.cancelBubble = true; - on._preventDefault.call(evt); - } - } - }; - - if( 1 ){ - dojo.fixEvent = ret.fix; - dojo.stopEvent = ret.stop; - } - - return ret; -}); - -}, -'dojo/main':function(){ -define([ - "./_base/kernel", // kernel.isAsync - "./has", - "require", - "./sniff", - "./_base/lang", - "./_base/array", - "./_base/config", - "./ready", - "./_base/declare", - "./_base/connect", - "./_base/Deferred", - "./_base/json", - "./_base/Color", - "./has!dojo-firebug?./_firebug/firebug", - "./_base/browser", - "./_base/loader" -], function(kernel, has, require, sniff, lang, array, config, ready){ - // module: - // dojo/main - // summary: - // This is the package main module for the dojo package; it loads dojo base appropriate for the execution environment. - - // the preferred way to load the dojo firebug console is by setting has("dojo-firebug") true in dojoConfig - // the isDebug config switch is for backcompat and will work fine in sync loading mode; it works in - // async mode too, but there's no guarantee when the module is loaded; therefore, if you need a firebug - // console guaranteed at a particular spot in an app, either set config.has["dojo-firebug"] true before - // loading dojo.js or explicitly include dojo/_firebug/firebug in a dependency list. - if(config.isDebug){ - require(["./_firebug/firebug"]); - } - - // dojoConfig.require is deprecated; use the loader configuration property deps - 1 || has.add("dojo-config-require", 1); - if( 1 ){ - var deps= config.require; - if(deps){ - // config.require may be dot notation - deps= array.map(lang.isArray(deps) ? deps : [deps], function(item){ return item.replace(/\./g, "/"); }); - if(kernel.isAsync){ - require(deps); - }else{ - // this is a bit janky; in 1.6- dojo is defined before these requires are applied; but in 1.7+ - // dojo isn't defined until returning from this module; this is only a problem in sync mode - // since we're in sync mode, we know we've got our loader with its priority ready queue - ready(1, function(){require(deps);}); - } - } - } - - return kernel; -}); - -}, -'dojo/sniff':function(){ -define(["./has"], function(has){ - // module: - // dojo/sniff - - /*===== - return function(){ - // summary: - // This module sets has() flags based on the current browser. - // It returns the has() function. - }; - =====*/ - - if( 1 ){ - var n = navigator, - dua = n.userAgent, - dav = n.appVersion, - tv = parseFloat(dav); - - has.add("air", dua.indexOf("AdobeAIR") >= 0), - has.add("khtml", dav.indexOf("Konqueror") >= 0 ? tv : undefined); - has.add("webkit", parseFloat(dua.split("WebKit/")[1]) || undefined); - has.add("chrome", parseFloat(dua.split("Chrome/")[1]) || undefined); - has.add("safari", dav.indexOf("Safari")>=0 && !has("chrome") ? parseFloat(dav.split("Version/")[1]) : undefined); - has.add("mac", dav.indexOf("Macintosh") >= 0); - has.add("quirks", document.compatMode == "BackCompat"); - has.add("ios", /iPhone|iPod|iPad/.test(dua)); - has.add("android", parseFloat(dua.split("Android ")[1]) || undefined); - - if(!has("webkit")){ - // Opera - if(dua.indexOf("Opera") >= 0){ - // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/ - // 9.8 has both styles; <9.8, 9.9 only old style - has.add("opera", tv >= 9.8 ? parseFloat(dua.split("Version/")[1]) || tv : tv); - } - - // Mozilla and firefox - if(dua.indexOf("Gecko") >= 0 && !has("khtml") && !has("webkit")){ - has.add("mozilla", tv); - } - if(has("mozilla")){ - //We really need to get away from this. Consider a sane isGecko approach for the future. - has.add("ff", parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined); - } - - // IE - if(document.all && !has("opera")){ - var isIE = parseFloat(dav.split("MSIE ")[1]) || undefined; - - //In cases where the page has an HTTP header or META tag with - //X-UA-Compatible, then it is in emulation mode. - //Make sure isIE reflects the desired version. - //document.documentMode of 5 means quirks mode. - //Only switch the value if documentMode's major version - //is different from isIE's major version. - var mode = document.documentMode; - if(mode && mode != 5 && Math.floor(isIE) != mode){ - isIE = mode; - } - - has.add("ie", isIE); - } - - // Wii - has.add("wii", typeof opera != "undefined" && opera.wiiremote); - } - } - - return has; -}); - -}, -'dojo/request/handlers':function(){ -define([ - '../json', - '../_base/kernel', - '../_base/array', - '../has' -], function(JSON, kernel, array, has){ - has.add('activex', typeof ActiveXObject !== 'undefined'); - - var handleXML; - if(has('activex')){ - // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx - var dp = [ - 'Msxml2.DOMDocument.6.0', - 'Msxml2.DOMDocument.4.0', - 'MSXML2.DOMDocument.3.0', - 'MSXML.DOMDocument' // 2.0 - ]; - - handleXML = function(response){ - var result = response.data; - - if(!result || !result.documentElement){ - var text = response.text; - array.some(dp, function(p){ - try{ - var dom = new ActiveXObject(p); - dom.async = false; - dom.loadXML(text); - result = dom; - }catch(e){ return false; } - return true; - }); - } - - return result; - }; - } - - var handlers = { - 'javascript': function(response){ - return kernel.eval(response.text || ''); - }, - 'json': function(response){ - return JSON.parse(response.text || null); - }, - 'xml': handleXML - }; - - function handle(response){ - var handler = handlers[response.options.handleAs]; - - response.data = handler ? handler(response) : (response.data || response.text); - - return response; - } - - handle.register = function(name, handler){ - handlers[name] = handler; - }; - - return handle; -}); - -}, -'dojo/ready':function(){ -define("dojo/ready", ["./_base/kernel", "./has", "require", "./domReady", "./_base/lang"], function(dojo, has, require, domReady, lang){ - // module: - // dojo/ready - // note: - // This module should be unnecessary in dojo 2.0 - - var - // truthy if DOMContentLoaded or better (e.g., window.onload fired) has been achieved - isDomReady = 0, - - // a function to call to cause onLoad to be called when all requested modules have been loaded - requestCompleteSignal, - - // The queue of functions waiting to execute as soon as dojo.ready conditions satisfied - loadQ = [], - - // prevent recursion in onLoad - onLoadRecursiveGuard = 0, - - handleDomReady = function(){ - isDomReady = 1; - dojo._postLoad = dojo.config.afterOnLoad = true; - if(loadQ.length){ - requestCompleteSignal(onLoad); - } - }, - - // run the next function queued with dojo.ready - onLoad = function(){ - if(isDomReady && !onLoadRecursiveGuard && loadQ.length){ - //guard against recursions into this function - onLoadRecursiveGuard = 1; - var f = loadQ.shift(); - try{ - f(); - } - // FIXME: signal the error via require.on - finally{ - onLoadRecursiveGuard = 0; - } - onLoadRecursiveGuard = 0; - if(loadQ.length){ - requestCompleteSignal(onLoad); - } - } - }; - - require.on("idle", onLoad); - requestCompleteSignal = function(){ - if(require.idle()){ - onLoad(); - } // else do nothing, onLoad will be called with the next idle signal - }; - - var ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback){ - // summary: - // Add a function to execute on DOM content loaded and all requested modules have arrived and been evaluated. - // In most cases, the `domReady` plug-in should suffice and this method should not be needed. - // priority: Integer? - // The order in which to exec this callback relative to other callbacks, defaults to 1000 - // context: Object?|Function - // The context in which to run execute callback, or a callback if not using context - // callback: Function? - // The function to execute. - // - // example: - // Simple DOM and Modules ready syntax - // | require(["dojo/ready"], function(ready){ - // | ready(function(){ alert("Dom ready!"); }); - // | }); - // - // example: - // Using a priority - // | require(["dojo/ready"], function(ready){ - // | ready(2, function(){ alert("low priority ready!"); }) - // | }); - // - // example: - // Using context - // | require(["dojo/ready"], function(ready){ - // | ready(foo, function(){ - // | // in here, this == foo - // | }); - // | }); - // - // example: - // Using dojo/hitch style args: - // | require(["dojo/ready"], function(ready){ - // | var foo = { dojoReady: function(){ console.warn(this, "dojo dom and modules ready."); } }; - // | ready(foo, "dojoReady"); - // | }); - - var hitchArgs = lang._toArray(arguments); - if(typeof priority != "number"){ - callback = context; - context = priority; - priority = 1000; - }else{ - hitchArgs.shift(); - } - callback = callback ? - lang.hitch.apply(dojo, hitchArgs) : - function(){ - context(); - }; - callback.priority = priority; - for(var i = 0; i < loadQ.length && priority >= loadQ[i].priority; i++){} - loadQ.splice(i, 0, callback); - requestCompleteSignal(); - }; - - 1 || has.add("dojo-config-addOnLoad", 1); - if( 1 ){ - var dca = dojo.config.addOnLoad; - if(dca){ - ready[(lang.isArray(dca) ? "apply" : "call")](dojo, dca); - } - } - - if( 1 && dojo.config.parseOnLoad && !dojo.isAsync){ - ready(99, function(){ - if(!dojo.parser){ - dojo.deprecated("Add explicit require(['dojo/parser']);", "", "2.0"); - require(["dojo/parser"]); - } - }); - } - - if( 1 ){ - domReady(handleDomReady); - }else{ - handleDomReady(); - } - - return ready; -}); - -}, -'dojo/aspect':function(){ -define("dojo/aspect", [], function(){ - - // module: - // dojo/aspect - - "use strict"; - var undefined, nextId = 0; - function advise(dispatcher, type, advice, receiveArguments){ - var previous = dispatcher[type]; - var around = type == "around"; - var signal; - if(around){ - var advised = advice(function(){ - return previous.advice(this, arguments); - }); - signal = { - remove: function(){ - signal.cancelled = true; - }, - advice: function(target, args){ - return signal.cancelled ? - previous.advice(target, args) : // cancelled, skip to next one - advised.apply(target, args); // called the advised function - } - }; - }else{ - // create the remove handler - signal = { - remove: function(){ - var previous = signal.previous; - var next = signal.next; - if(!next && !previous){ - delete dispatcher[type]; - }else{ - if(previous){ - previous.next = next; - }else{ - dispatcher[type] = next; - } - if(next){ - next.previous = previous; - } - } - }, - id: nextId++, - advice: advice, - receiveArguments: receiveArguments - }; - } - if(previous && !around){ - if(type == "after"){ - // add the listener to the end of the list - // note that we had to change this loop a little bit to workaround a bizarre IE10 JIT bug - while(previous.next && (previous = previous.next)){} - previous.next = signal; - signal.previous = previous; - }else if(type == "before"){ - // add to beginning - dispatcher[type] = signal; - signal.next = previous; - previous.previous = signal; - } - }else{ - // around or first one just replaces - dispatcher[type] = signal; - } - return signal; - } - function aspect(type){ - return function(target, methodName, advice, receiveArguments){ - var existing = target[methodName], dispatcher; - if(!existing || existing.target != target){ - // no dispatcher in place - target[methodName] = dispatcher = function(){ - var executionId = nextId; - // before advice - var args = arguments; - var before = dispatcher.before; - while(before){ - args = before.advice.apply(this, args) || args; - before = before.next; - } - // around advice - if(dispatcher.around){ - var results = dispatcher.around.advice(this, args); - } - // after advice - var after = dispatcher.after; - while(after && after.id < executionId){ - if(after.receiveArguments){ - var newResults = after.advice.apply(this, args); - // change the return value only if a new value was returned - results = newResults === undefined ? results : newResults; - }else{ - results = after.advice.call(this, results, args); - } - after = after.next; - } - return results; - }; - if(existing){ - dispatcher.around = {advice: function(target, args){ - return existing.apply(target, args); - }}; - } - dispatcher.target = target; - } - var results = advise((dispatcher || existing), type, advice, receiveArguments); - advice = null; - return results; - }; - } - - // TODOC: after/before/around return object - - var after = aspect("after"); - /*===== - after = function(target, methodName, advice, receiveArguments){ - // summary: - // The "after" export of the aspect module is a function that can be used to attach - // "after" advice to a method. This function will be executed after the original method - // is executed. By default the function will be called with a single argument, the return - // value of the original method, or the the return value of the last executed advice (if a previous one exists). - // The fourth (optional) argument can be set to true to so the function receives the original - // arguments (from when the original method was called) rather than the return value. - // If there are multiple "after" advisors, they are executed in the order they were registered. - // target: Object - // This is the target object - // methodName: String - // This is the name of the method to attach to. - // advice: Function - // This is function to be called after the original method - // receiveArguments: Boolean? - // If this is set to true, the advice function receives the original arguments (from when the original mehtod - // was called) rather than the return value of the original/previous method. - // returns: - // A signal object that can be used to cancel the advice. If remove() is called on this signal object, it will - // stop the advice function from being executed. - }; - =====*/ - - var before = aspect("before"); - /*===== - before = function(target, methodName, advice){ - // summary: - // The "before" export of the aspect module is a function that can be used to attach - // "before" advice to a method. This function will be executed before the original method - // is executed. This function will be called with the arguments used to call the method. - // This function may optionally return an array as the new arguments to use to call - // the original method (or the previous, next-to-execute before advice, if one exists). - // If the before method doesn't return anything (returns undefined) the original arguments - // will be preserved. - // If there are multiple "before" advisors, they are executed in the reverse order they were registered. - // target: Object - // This is the target object - // methodName: String - // This is the name of the method to attach to. - // advice: Function - // This is function to be called before the original method - }; - =====*/ - - var around = aspect("around"); - /*===== - around = function(target, methodName, advice){ - // summary: - // The "around" export of the aspect module is a function that can be used to attach - // "around" advice to a method. The advisor function is immediately executed when - // the around() is called, is passed a single argument that is a function that can be - // called to continue execution of the original method (or the next around advisor). - // The advisor function should return a function, and this function will be called whenever - // the method is called. It will be called with the arguments used to call the method. - // Whatever this function returns will be returned as the result of the method call (unless after advise changes it). - // example: - // If there are multiple "around" advisors, the most recent one is executed first, - // which can then delegate to the next one and so on. For example: - // | around(obj, "foo", function(originalFoo){ - // | return function(){ - // | var start = new Date().getTime(); - // | var results = originalFoo.apply(this, arguments); // call the original - // | var end = new Date().getTime(); - // | console.log("foo execution took " + (end - start) + " ms"); - // | return results; - // | }; - // | }); - // target: Object - // This is the target object - // methodName: String - // This is the name of the method to attach to. - // advice: Function - // This is function to be called around the original method - }; - =====*/ - - return { - // summary: - // provides aspect oriented programming functionality, allowing for - // one to add before, around, or after advice on existing methods. - // example: - // | define(["dojo/aspect"], function(aspect){ - // | var signal = aspect.after(targetObject, "methodName", function(someArgument){ - // | this will be called when targetObject.methodName() is called, after the original function is called - // | }); - // - // example: - // The returned signal object can be used to cancel the advice. - // | signal.remove(); // this will stop the advice from being executed anymore - // | aspect.before(targetObject, "methodName", function(someArgument){ - // | // this will be called when targetObject.methodName() is called, before the original function is called - // | }); - - before: before, - around: around, - after: after - }; -}); - -}, -'dojo/_base/connect':function(){ -define(["./kernel", "../on", "../topic", "../aspect", "./event", "../mouse", "./sniff", "./lang", "../keys"], function(dojo, on, hub, aspect, eventModule, mouse, has, lang){ -// module: -// dojo/_base/connect - -has.add("events-keypress-typed", function(){ // keypresses should only occur a printable character is hit - var testKeyEvent = {charCode: 0}; - try{ - testKeyEvent = document.createEvent("KeyboardEvent"); - (testKeyEvent.initKeyboardEvent || testKeyEvent.initKeyEvent).call(testKeyEvent, "keypress", true, true, null, false, false, false, false, 9, 3); - }catch(e){} - return testKeyEvent.charCode == 0 && !has("opera"); -}); - -function connect_(obj, event, context, method, dontFix){ - method = lang.hitch(context, method); - if(!obj || !(obj.addEventListener || obj.attachEvent)){ - // it is a not a DOM node and we are using the dojo.connect style of treating a - // method like an event, must go right to aspect - return aspect.after(obj || dojo.global, event, method, true); - } - if(typeof event == "string" && event.substring(0, 2) == "on"){ - event = event.substring(2); - } - if(!obj){ - obj = dojo.global; - } - if(!dontFix){ - switch(event){ - // dojo.connect has special handling for these event types - case "keypress": - event = keypress; - break; - case "mouseenter": - event = mouse.enter; - break; - case "mouseleave": - event = mouse.leave; - break; - } - } - return on(obj, event, method, dontFix); -} - -var _punctMap = { - 106:42, - 111:47, - 186:59, - 187:43, - 188:44, - 189:45, - 190:46, - 191:47, - 192:96, - 219:91, - 220:92, - 221:93, - 222:39, - 229:113 -}; -var evtCopyKey = has("mac") ? "metaKey" : "ctrlKey"; - - -var _synthesizeEvent = function(evt, props){ - var faux = lang.mixin({}, evt, props); - setKeyChar(faux); - // FIXME: would prefer to use lang.hitch: lang.hitch(evt, evt.preventDefault); - // but it throws an error when preventDefault is invoked on Safari - // does Event.preventDefault not support "apply" on Safari? - faux.preventDefault = function(){ evt.preventDefault(); }; - faux.stopPropagation = function(){ evt.stopPropagation(); }; - return faux; -}; -function setKeyChar(evt){ - evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : ''; - evt.charOrCode = evt.keyChar || evt.keyCode; -} -var keypress; -if(has("events-keypress-typed")){ - // this emulates Firefox's keypress behavior where every keydown can correspond to a keypress - var _trySetKeyCode = function(e, code){ - try{ - // squelch errors when keyCode is read-only - // (e.g. if keyCode is ctrl or shift) - return (e.keyCode = code); - }catch(e){ - return 0; - } - }; - keypress = function(object, listener){ - var keydownSignal = on(object, "keydown", function(evt){ - // munge key/charCode - var k=evt.keyCode; - // These are Windows Virtual Key Codes - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp - var unprintable = (k!=13) && k!=32 && (k!=27||!has("ie")) && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222) && k!=229; - // synthesize keypress for most unprintables and CTRL-keys - if(unprintable||evt.ctrlKey){ - var c = unprintable ? 0 : k; - if(evt.ctrlKey){ - if(k==3 || k==13){ - return listener.call(evt.currentTarget, evt); // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively - }else if(c>95 && c<106){ - c -= 48; // map CTRL-[numpad 0-9] to ASCII - }else if((!evt.shiftKey)&&(c>=65&&c<=90)){ - c += 32; // map CTRL-[A-Z] to lowercase - }else{ - c = _punctMap[c] || c; // map other problematic CTRL combinations to ASCII - } - } - // simulate a keypress event - var faux = _synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c}); - listener.call(evt.currentTarget, faux); - if(has("ie")){ - _trySetKeyCode(evt, faux.keyCode); - } - } - }); - var keypressSignal = on(object, "keypress", function(evt){ - var c = evt.charCode; - c = c>=32 ? c : 0; - evt = _synthesizeEvent(evt, {charCode: c, faux: true}); - return listener.call(this, evt); - }); - return { - remove: function(){ - keydownSignal.remove(); - keypressSignal.remove(); - } - }; - }; -}else{ - if(has("opera")){ - keypress = function(object, listener){ - return on(object, "keypress", function(evt){ - var c = evt.which; - if(c==3){ - c=99; // Mozilla maps CTRL-BREAK to CTRL-c - } - // can't trap some keys at all, like INSERT and DELETE - // there is no differentiating info between DELETE and ".", or INSERT and "-" - c = c<32 && !evt.shiftKey ? 0 : c; - if(evt.ctrlKey && !evt.shiftKey && c>=65 && c<=90){ - // lowercase CTRL-[A-Z] keys - c += 32; - } - return listener.call(this, _synthesizeEvent(evt, { charCode: c })); - }); - }; - }else{ - keypress = function(object, listener){ - return on(object, "keypress", function(evt){ - setKeyChar(evt); - return listener.call(this, evt); - }); - }; - } -} - -var connect = { - // summary: - // This module defines the dojo.connect API. - // This modules also provides keyboard event handling helpers. - // This module exports an extension event for emulating Firefox's keypress handling. - // However, this extension event exists primarily for backwards compatibility and - // is not recommended. WebKit and IE uses an alternate keypress handling (only - // firing for printable characters, to distinguish from keydown events), and most - // consider the WebKit/IE behavior more desirable. - - _keypress:keypress, - - connect:function(obj, event, context, method, dontFix){ - // summary: - // `dojo.connect` is a deprecated event handling and delegation method in - // Dojo. It allows one function to "listen in" on the execution of - // any other, triggering the second whenever the first is called. Many - // listeners may be attached to a function, and source functions may - // be either regular function calls or DOM events. - // - // description: - // Connects listeners to actions, so that after event fires, a - // listener is called with the same arguments passed to the original - // function. - // - // Since `dojo.connect` allows the source of events to be either a - // "regular" JavaScript function or a DOM event, it provides a uniform - // interface for listening to all the types of events that an - // application is likely to deal with though a single, unified - // interface. DOM programmers may want to think of it as - // "addEventListener for everything and anything". - // - // When setting up a connection, the `event` parameter must be a - // string that is the name of the method/event to be listened for. If - // `obj` is null, `kernel.global` is assumed, meaning that connections - // to global methods are supported but also that you may inadvertently - // connect to a global by passing an incorrect object name or invalid - // reference. - // - // `dojo.connect` generally is forgiving. If you pass the name of a - // function or method that does not yet exist on `obj`, connect will - // not fail, but will instead set up a stub method. Similarly, null - // arguments may simply be omitted such that fewer than 4 arguments - // may be required to set up a connection See the examples for details. - // - // The return value is a handle that is needed to - // remove this connection with `dojo.disconnect`. - // - // obj: Object? - // The source object for the event function. - // Defaults to `kernel.global` if null. - // If obj is a DOM node, the connection is delegated - // to the DOM event manager (unless dontFix is true). - // - // event: String - // String name of the event function in obj. - // I.e. identifies a property `obj[event]`. - // - // context: Object|null - // The object that method will receive as "this". - // - // If context is null and method is a function, then method - // inherits the context of event. - // - // If method is a string then context must be the source - // object object for method (context[method]). If context is null, - // kernel.global is used. - // - // method: String|Function - // A function reference, or name of a function in context. - // The function identified by method fires after event does. - // method receives the same arguments as the event. - // See context argument comments for information on method's scope. - // - // dontFix: Boolean? - // If obj is a DOM node, set dontFix to true to prevent delegation - // of this connection to the DOM event manager. - // - // example: - // When obj.onchange(), do ui.update(): - // | dojo.connect(obj, "onchange", ui, "update"); - // | dojo.connect(obj, "onchange", ui, ui.update); // same - // - // example: - // Using return value for disconnect: - // | var link = dojo.connect(obj, "onchange", ui, "update"); - // | ... - // | dojo.disconnect(link); - // - // example: - // When onglobalevent executes, watcher.handler is invoked: - // | dojo.connect(null, "onglobalevent", watcher, "handler"); - // - // example: - // When ob.onCustomEvent executes, customEventHandler is invoked: - // | dojo.connect(ob, "onCustomEvent", null, "customEventHandler"); - // | dojo.connect(ob, "onCustomEvent", "customEventHandler"); // same - // - // example: - // When ob.onCustomEvent executes, customEventHandler is invoked - // with the same scope (this): - // | dojo.connect(ob, "onCustomEvent", null, customEventHandler); - // | dojo.connect(ob, "onCustomEvent", customEventHandler); // same - // - // example: - // When globalEvent executes, globalHandler is invoked - // with the same scope (this): - // | dojo.connect(null, "globalEvent", null, globalHandler); - // | dojo.connect("globalEvent", globalHandler); // same - - // normalize arguments - var a=arguments, args=[], i=0; - // if a[0] is a String, obj was omitted - args.push(typeof a[0] == "string" ? null : a[i++], a[i++]); - // if the arg-after-next is a String or Function, context was NOT omitted - var a1 = a[i+1]; - args.push(typeof a1 == "string" || typeof a1 == "function" ? a[i++] : null, a[i++]); - // absorb any additional arguments - for(var l=a.length; i returns 0 by default on IE, yet other browsers - // can return -1. - - exports.has = function hasAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Returns true if the requested attribute is specified on the - // given element, and false otherwise. - // node: DOMNode|String - // id or reference to the element to check - // name: String - // the name of the attribute - // returns: Boolean - // true if the requested attribute is specified on the - // given element, and false otherwise - - var lc = name.toLowerCase(); - return forcePropNames[prop.names[lc] || name] || _hasAttr(dom.byId(node), attrNames[lc] || name); // Boolean - }; - - exports.get = function getAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Gets an attribute on an HTML element. - // description: - // Handles normalized getting of attributes on DOM Nodes. - // node: DOMNode|String - // id or reference to the element to get the attribute on - // name: String - // the name of the attribute to get. - // returns: - // the value of the requested attribute or null if that attribute does not have a specified or - // default value; - // - // example: - // | // get the current value of the "foo" attribute on a node - // | dojo.getAttr(dojo.byId("nodeId"), "foo"); - // | // or we can just pass the id: - // | dojo.getAttr("nodeId", "foo"); - - node = dom.byId(node); - var lc = name.toLowerCase(), - propName = prop.names[lc] || name, - forceProp = forcePropNames[propName], - value = node[propName]; // should we access this attribute via a property or via getAttribute()? - - if(forceProp && typeof value != "undefined"){ - // node's property - return value; // Anything - } - if(propName != "href" && (typeof value == "boolean" || lang.isFunction(value))){ - // node's property - return value; // Anything - } - // node's attribute - // we need _hasAttr() here to guard against IE returning a default value - var attrName = attrNames[lc] || name; - return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything - }; - - exports.set = function setAttr(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets an attribute on an HTML element. - // description: - // Handles normalized setting of attributes on DOM Nodes. - // - // When passing functions as values, note that they will not be - // directly assigned to slots on the node, but rather the default - // behavior will be removed and the new behavior will be added - // using `dojo.connect()`, meaning that event handler properties - // will be normalized and that some caveats with regards to - // non-standard behaviors for onsubmit apply. Namely that you - // should cancel form submission using `dojo.stopEvent()` on the - // passed event object instead of returning a boolean value from - // the handler itself. - // node: DOMNode|String - // id or reference to the element to set the attribute on - // name: String|Object - // the name of the attribute to set, or a hash of key-value pairs to set. - // value: String? - // the value to set for the attribute, if the name is a string. - // returns: - // the DOM node - // - // example: - // | // use attr() to set the tab index - // | dojo.setAttr("nodeId", "tabIndex", 3); - // - // example: - // Set multiple values at once, including event handlers: - // | dojo.setAttr("formId", { - // | "foo": "bar", - // | "tabIndex": -1, - // | "method": "POST", - // | "onsubmit": function(e){ - // | // stop submitting the form. Note that the IE behavior - // | // of returning true or false will have no effect here - // | // since our handler is connect()ed to the built-in - // | // onsubmit behavior and so we need to use - // | // dojo.stopEvent() to ensure that the submission - // | // doesn't proceed. - // | dojo.stopEvent(e); - // | - // | // submit the form with Ajax - // | dojo.xhrPost({ form: "formId" }); - // | } - // | }); - // - // example: - // Style is s special case: Only set with an object hash of styles - // | dojo.setAttr("someNode",{ - // | id:"bar", - // | style:{ - // | width:"200px", height:"100px", color:"#000" - // | } - // | }); - // - // example: - // Again, only set style as an object hash of styles: - // | var obj = { color:"#fff", backgroundColor:"#000" }; - // | dojo.setAttr("someNode", "style", obj); - // | - // | // though shorter to use `dojo.style()` in this case: - // | dojo.setStyle("someNode", obj); - - node = dom.byId(node); - if(arguments.length == 2){ // inline'd type check - // the object form of setter: the 2nd argument is a dictionary - for(var x in name){ - exports.set(node, x, name[x]); - } - return node; // DomNode - } - var lc = name.toLowerCase(), - propName = prop.names[lc] || name, - forceProp = forcePropNames[propName]; - if(propName == "style" && typeof value != "string"){ // inline'd type check - // special case: setting a style - style.set(node, value); - return node; // DomNode - } - if(forceProp || typeof value == "boolean" || lang.isFunction(value)){ - return prop.set(node, name, value); - } - // node's attribute - node.setAttribute(attrNames[lc] || name, value); - return node; // DomNode - }; - - exports.remove = function removeAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Removes an attribute from an HTML element. - // node: DOMNode|String - // id or reference to the element to remove the attribute from - // name: String - // the name of the attribute to remove - - dom.byId(node).removeAttribute(attrNames[name.toLowerCase()] || name); - }; - - exports.getNodeProp = function getNodeProp(/*DomNode|String*/ node, /*String*/ name){ - // summary: - // Returns an effective value of a property or an attribute. - // node: DOMNode|String - // id or reference to the element to remove the attribute from - // name: String - // the name of the attribute - // returns: - // the value of the attribute - - node = dom.byId(node); - var lc = name.toLowerCase(), propName = prop.names[lc] || name; - if((propName in node) && propName != "href"){ - // node's property - return node[propName]; // Anything - } - // node's attribute - var attrName = attrNames[lc] || name; - return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything - }; -}); diff --git a/lib/dojo/dom-class.js.uncompressed.js b/lib/dojo/dom-class.js.uncompressed.js deleted file mode 100644 index c42d434dd..000000000 --- a/lib/dojo/dom-class.js.uncompressed.js +++ /dev/null @@ -1,326 +0,0 @@ -define("dojo/dom-class", ["./_base/lang", "./_base/array", "./dom"], function(lang, array, dom){ - // module: - // dojo/dom-class - - var className = "className"; - - /* Part I of classList-based implementation is preserved here for posterity - var classList = "classList"; - has.add("dom-classList", function(){ - return classList in document.createElement("p"); - }); - */ - - // ============================= - // (CSS) Class Functions - // ============================= - - var cls, // exports object - spaces = /\s+/, a1 = [""]; - - function str2array(s){ - if(typeof s == "string" || s instanceof String){ - if(s && !spaces.test(s)){ - a1[0] = s; - return a1; - } - var a = s.split(spaces); - if(a.length && !a[0]){ - a.shift(); - } - if(a.length && !a[a.length - 1]){ - a.pop(); - } - return a; - } - // assumed to be an array - if(!s){ - return []; - } - return array.filter(s, function(x){ return x; }); - } - - /* Part II of classList-based implementation is preserved here for posterity - if(has("dom-classList")){ - // new classList version - cls = { - contains: function containsClass(node, classStr){ - var clslst = classStr && dom.byId(node)[classList]; - return clslst && clslst.contains(classStr); // Boolean - }, - - add: function addClass(node, classStr){ - node = dom.byId(node); - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].add(classStr[i]); - } - }, - - remove: function removeClass(node, classStr){ - node = dom.byId(node); - if(classStr === undefined){ - node[className] = ""; - }else{ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].remove(classStr[i]); - } - } - }, - - replace: function replaceClass(node, addClassStr, removeClassStr){ - node = dom.byId(node); - if(removeClassStr === undefined){ - node[className] = ""; - }else{ - removeClassStr = str2array(removeClassStr); - for(var i = 0, len = removeClassStr.length; i < len; ++i){ - node[classList].remove(removeClassStr[i]); - } - } - addClassStr = str2array(addClassStr); - for(i = 0, len = addClassStr.length; i < len; ++i){ - node[classList].add(addClassStr[i]); - } - }, - - toggle: function toggleClass(node, classStr, condition){ - node = dom.byId(node); - if(condition === undefined){ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length; i < len; ++i){ - node[classList].toggle(classStr[i]); - } - }else{ - cls[condition ? "add" : "remove"](node, classStr); - } - return condition; // Boolean - } - } - } - */ - - // regular DOM version - var fakeNode = {}; // for effective replacement - cls = { - // summary: - // This module defines the core dojo DOM class API. - - contains: function containsClass(/*DomNode|String*/ node, /*String*/ classStr){ - // summary: - // Returns whether or not the specified classes are a portion of the - // class list currently applied to the node. - // node: String|DOMNode - // String ID or DomNode reference to check the class for. - // classStr: String - // A string class name to look for. - // example: - // Do something if a node with id="someNode" has class="aSillyClassName" present - // | if(dojo.hasClass("someNode","aSillyClassName")){ ... } - - return ((" " + dom.byId(node)[className] + " ").indexOf(" " + classStr + " ") >= 0); // Boolean - }, - - add: function addClass(/*DomNode|String*/ node, /*String|Array*/ classStr){ - // summary: - // Adds the specified classes to the end of the class list on the - // passed node. Will not re-apply duplicate classes. - // - // node: String|DOMNode - // String ID or DomNode reference to add a class string too - // - // classStr: String|Array - // A String class name to add, or several space-separated class names, - // or an array of class names. - // - // example: - // Add a class to some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", "anewClass"); - // | }); - // - // example: - // Add two classes at once: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", "firstClass secondClass"); - // | }); - // - // example: - // Add two classes at once (using array): - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.add("someNode", ["firstClass", "secondClass"]); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple additions - // | require(["dojo/query"], function(query){ - // | query("ul > li").addClass("firstLevel"); - // | }); - - node = dom.byId(node); - classStr = str2array(classStr); - var cls = node[className], oldLen; - cls = cls ? " " + cls + " " : " "; - oldLen = cls.length; - for(var i = 0, len = classStr.length, c; i < len; ++i){ - c = classStr[i]; - if(c && cls.indexOf(" " + c + " ") < 0){ - cls += c + " "; - } - } - if(oldLen < cls.length){ - node[className] = cls.substr(1, cls.length - 2); - } - }, - - remove: function removeClass(/*DomNode|String*/ node, /*String|Array?*/ classStr){ - // summary: - // Removes the specified classes from node. No `contains()` - // check is required. - // - // node: String|DOMNode - // String ID or DomNode reference to remove the class from. - // - // classStr: String|Array - // An optional String class name to remove, or several space-separated - // class names, or an array of class names. If omitted, all class names - // will be deleted. - // - // example: - // Remove a class from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", "firstClass"); - // | }); - // - // example: - // Remove two classes from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", "firstClass secondClass"); - // | }); - // - // example: - // Remove two classes from some node (using array): - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode", ["firstClass", "secondClass"]); - // | }); - // - // example: - // Remove all classes from some node: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.remove("someNode"); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple removal - // | require(["dojo/query"], function(query){ - // | query("ul > li").removeClass("foo"); - // | }); - - node = dom.byId(node); - var cls; - if(classStr !== undefined){ - classStr = str2array(classStr); - cls = " " + node[className] + " "; - for(var i = 0, len = classStr.length; i < len; ++i){ - cls = cls.replace(" " + classStr[i] + " ", " "); - } - cls = lang.trim(cls); - }else{ - cls = ""; - } - if(node[className] != cls){ node[className] = cls; } - }, - - replace: function replaceClass(/*DomNode|String*/ node, /*String|Array*/ addClassStr, /*String|Array?*/ removeClassStr){ - // summary: - // Replaces one or more classes on a node if not present. - // Operates more quickly than calling dojo.removeClass and dojo.addClass - // - // node: String|DOMNode - // String ID or DomNode reference to remove the class from. - // - // addClassStr: String|Array - // A String class name to add, or several space-separated class names, - // or an array of class names. - // - // removeClassStr: String|Array? - // A String class name to remove, or several space-separated class names, - // or an array of class names. - // - // example: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.replace("someNode", "add1 add2", "remove1 remove2"); - // | }); - // - // example: - // Replace all classes with addMe - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.replace("someNode", "addMe"); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple toggles - // | require(["dojo/query"], function(query){ - // | query(".findMe").replaceClass("addMe", "removeMe"); - // | }); - - node = dom.byId(node); - fakeNode[className] = node[className]; - cls.remove(fakeNode, removeClassStr); - cls.add(fakeNode, addClassStr); - if(node[className] !== fakeNode[className]){ - node[className] = fakeNode[className]; - } - }, - - toggle: function toggleClass(/*DomNode|String*/ node, /*String|Array*/ classStr, /*Boolean?*/ condition){ - // summary: - // Adds a class to node if not present, or removes if present. - // Pass a boolean condition if you want to explicitly add or remove. - // Returns the condition that was specified directly or indirectly. - // - // node: String|DOMNode - // String ID or DomNode reference to toggle a class string - // - // classStr: String|Array - // A String class name to toggle, or several space-separated class names, - // or an array of class names. - // - // condition: - // If passed, true means to add the class, false means to remove. - // Otherwise dojo.hasClass(node, classStr) is used to detect the class presence. - // - // example: - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.toggle("someNode", "hovered"); - // | }); - // - // example: - // Forcefully add a class - // | require(["dojo/dom-class"], function(domClass){ - // | domClass.toggle("someNode", "hovered", true); - // | }); - // - // example: - // Available in `dojo/NodeList` for multiple toggles - // | require(["dojo/query"], function(query){ - // | query(".toggleMe").toggleClass("toggleMe"); - // | }); - - node = dom.byId(node); - if(condition === undefined){ - classStr = str2array(classStr); - for(var i = 0, len = classStr.length, c; i < len; ++i){ - c = classStr[i]; - cls[cls.contains(node, c) ? "remove" : "add"](node, c); - } - }else{ - cls[condition ? "add" : "remove"](node, classStr); - } - return condition; // Boolean - } - }; - - return cls; -}); diff --git a/lib/dojo/dom-construct.js.uncompressed.js b/lib/dojo/dom-construct.js.uncompressed.js deleted file mode 100644 index 6abef71aa..000000000 --- a/lib/dojo/dom-construct.js.uncompressed.js +++ /dev/null @@ -1,329 +0,0 @@ -define("dojo/dom-construct", ["exports", "./_base/kernel", "./sniff", "./_base/window", "./dom", "./dom-attr", "./on"], - function(exports, dojo, has, win, dom, attr, on){ - // module: - // dojo/dom-construct - // summary: - // This module defines the core dojo DOM construction API. - - // TODOC: summary not showing up in output, see https://github.com/csnover/js-doc-parse/issues/42 - - // support stuff for toDom() - var tagWrap = { - option: ["select"], - tbody: ["table"], - thead: ["table"], - tfoot: ["table"], - tr: ["table", "tbody"], - td: ["table", "tbody", "tr"], - th: ["table", "thead", "tr"], - legend: ["fieldset"], - caption: ["table"], - colgroup: ["table"], - col: ["table", "colgroup"], - li: ["ul"] - }, - reTag = /<\s*([\w\:]+)/, - masterNode = {}, masterNum = 0, - masterName = "__" + dojo._scopeName + "ToDomId"; - - // generate start/end tag strings to use - // for the injection for each special tag wrap case. - for(var param in tagWrap){ - if(tagWrap.hasOwnProperty(param)){ - var tw = tagWrap[param]; - tw.pre = param == "option" ? '
    "); - - doc = doc || win.doc; - var masterId = doc[masterName]; - if(!masterId){ - doc[masterName] = masterId = ++masterNum + ""; - masterNode[masterId] = doc.createElement("div"); - } - - // make sure the frag is a string. - frag += ""; - - // find the starting tag, and get node wrapper - var match = frag.match(reTag), - tag = match ? match[1].toLowerCase() : "", - master = masterNode[masterId], - wrap, i, fc, df; - if(match && tagWrap[tag]){ - wrap = tagWrap[tag]; - master.innerHTML = wrap.pre + frag + wrap.post; - for(i = wrap.length; i; --i){ - master = master.firstChild; - } - }else{ - master.innerHTML = frag; - } - - // one node shortcut => return the node itself - if(master.childNodes.length == 1){ - return master.removeChild(master.firstChild); // DOMNode - } - - // return multiple nodes as a document fragment - df = doc.createDocumentFragment(); - while((fc = master.firstChild)){ // intentional assignment - df.appendChild(fc); - } - return df; // DocumentFragment - }; - - exports.place = function place(/*DOMNode|String*/ node, /*DOMNode|String*/ refNode, /*String|Number?*/ position){ - // summary: - // Attempt to insert node into the DOM, choosing from various positioning options. - // Returns the first argument resolved to a DOM node. - // node: DOMNode|String - // id or node reference, or HTML fragment starting with "<" to place relative to refNode - // refNode: DOMNode|String - // id or node reference to use as basis for placement - // position: String|Number? - // string noting the position of node relative to refNode or a - // number indicating the location in the childNodes collection of refNode. - // Accepted string values are: - // - // - before - // - after - // - replace - // - only - // - first - // - last - // - // "first" and "last" indicate positions as children of refNode, "replace" replaces refNode, - // "only" replaces all children. position defaults to "last" if not specified - // returns: DOMNode - // Returned values is the first argument resolved to a DOM node. - // - // .place() is also a method of `dojo/NodeList`, allowing `dojo.query` node lookups. - // example: - // Place a node by string id as the last child of another node by string id: - // | dojo.place("someNode", "anotherNode"); - // example: - // Place a node by string id before another node by string id - // | dojo.place("someNode", "anotherNode", "before"); - // example: - // Create a Node, and place it in the body element (last child): - // | dojo.place("
    ", dojo.body()); - // example: - // Put a new LI as the first child of a list by id: - // | dojo.place("
  • ", "someUl", "first"); - - refNode = dom.byId(refNode); - if(typeof node == "string"){ // inline'd type check - node = /^\s*hi

    " }); - // - // example: - // Place a new DIV in the BODY, with no attributes set - // | var n = dojo.create("div", null, dojo.body()); - // - // example: - // Create an UL, and populate it with LI's. Place the list as the first-child of a - // node with id="someId": - // | var ul = dojo.create("ul", null, "someId", "first"); - // | var items = ["one", "two", "three", "four"]; - // | dojo.forEach(items, function(data){ - // | dojo.create("li", { innerHTML: data }, ul); - // | }); - // - // example: - // Create an anchor, with an href. Place in BODY: - // | dojo.create("a", { href:"foo.html", title:"Goto FOO!" }, dojo.body()); - // - // example: - // Create a `dojo/NodeList()` from a new element (for syntactic sugar): - // | dojo.query(dojo.create('div')) - // | .addClass("newDiv") - // | .onclick(function(e){ console.log('clicked', e.target) }) - // | .place("#someNode"); // redundant, but cleaner. - - var doc = win.doc; - if(refNode){ - refNode = dom.byId(refNode); - doc = refNode.ownerDocument; - } - if(typeof tag == "string"){ // inline'd type check - tag = doc.createElement(tag); - } - if(attrs){ attr.set(tag, attrs); } - if(refNode){ exports.place(tag, refNode, pos); } - return tag; // DomNode - }; - - var _empty = has("ie") ? - function(/*DomNode*/ node){ - try{ - node.innerHTML = ""; // really fast when it works - }catch(e){ // IE can generate Unknown Error - for(var c; c = node.lastChild;){ // intentional assignment - _destroy(c, node); // destroy is better than removeChild so TABLE elements are removed in proper order - } - } - } : - function(/*DomNode*/ node){ - node.innerHTML = ""; - }; - - exports.empty = function empty(/*DOMNode|String*/ node){ - // summary: - // safely removes all children of the node. - // node: DOMNode|String - // a reference to a DOM node or an id. - // example: - // Destroy node's children byId: - // | dojo.empty("someId"); - // - // example: - // Destroy all nodes' children in a list by reference: - // | dojo.query(".someNode").forEach(dojo.empty); - - _empty(dom.byId(node)); - }; - - - function _destroy(/*DomNode*/ node, /*DomNode*/ parent){ - if(node.firstChild){ - _empty(node); - } - if(parent){ - parent.removeChild(node); - } - } - exports.destroy = function destroy(/*DOMNode|String*/ node){ - // summary: - // Removes a node from its parent, clobbering it and all of its - // children. - // - // description: - // Removes a node from its parent, clobbering it and all of its - // children. Function only works with DomNodes, and returns nothing. - // - // node: DOMNode|String - // A String ID or DomNode reference of the element to be destroyed - // - // example: - // Destroy a node byId: - // | dojo.destroy("someId"); - // - // example: - // Destroy all nodes in a list by reference: - // | dojo.query(".someNode").forEach(dojo.destroy); - - node = dom.byId(node); - if(!node){ return; } - _destroy(node, node.parentNode); - }; -}); diff --git a/lib/dojo/dom-form.js.uncompressed.js b/lib/dojo/dom-form.js.uncompressed.js deleted file mode 100644 index 101573065..000000000 --- a/lib/dojo/dom-form.js.uncompressed.js +++ /dev/null @@ -1,149 +0,0 @@ -define("dojo/dom-form", ["./_base/lang", "./dom", "./io-query", "./json"], function(lang, dom, ioq, json){ - // module: - // dojo/dom-form - - function setValue(/*Object*/ obj, /*String*/ name, /*String*/ value){ - // summary: - // For the named property in object, set the value. If a value - // already exists and it is a string, convert the value to be an - // array of values. - - // Skip it if there is no value - if(value === null){ - return; - } - - var val = obj[name]; - if(typeof val == "string"){ // inline'd type check - obj[name] = [val, value]; - }else if(lang.isArray(val)){ - val.push(value); - }else{ - obj[name] = value; - } - } - - var exclude = "file|submit|image|reset|button"; - - var form = { - // summary: - // This module defines form-processing functions. - - fieldToObject: function fieldToObject(/*DOMNode|String*/ inputNode){ - // summary: - // Serialize a form field to a JavaScript object. - // description: - // Returns the value encoded in a form field as - // as a string or an array of strings. Disabled form elements - // and unchecked radio and checkboxes are skipped. Multi-select - // elements are returned as an array of string values. - // inputNode: DOMNode|String - // returns: Object - - var ret = null; - inputNode = dom.byId(inputNode); - if(inputNode){ - var _in = inputNode.name, type = (inputNode.type || "").toLowerCase(); - if(_in && type && !inputNode.disabled){ - if(type == "radio" || type == "checkbox"){ - if(inputNode.checked){ - ret = inputNode.value; - } - }else if(inputNode.multiple){ - ret = []; - var nodes = [inputNode.firstChild]; - while(nodes.length){ - for(var node = nodes.pop(); node; node = node.nextSibling){ - if(node.nodeType == 1 && node.tagName.toLowerCase() == "option"){ - if(node.selected){ - ret.push(node.value); - } - }else{ - if(node.nextSibling){ - nodes.push(node.nextSibling); - } - if(node.firstChild){ - nodes.push(node.firstChild); - } - break; - } - } - } - }else{ - ret = inputNode.value; - } - } - } - return ret; // Object - }, - - toObject: function formToObject(/*DOMNode|String*/ formNode){ - // summary: - // Serialize a form node to a JavaScript object. - // description: - // Returns the values encoded in an HTML form as - // string properties in an object which it then returns. Disabled form - // elements, buttons, and other non-value form elements are skipped. - // Multi-select elements are returned as an array of string values. - // formNode: DOMNode|String - // example: - // This form: - // | - // | - // | - // | - // | - // | - // - // yields this object structure as the result of a call to - // formToObject(): - // - // | { - // | blah: "blah", - // | multi: [ - // | "thud", - // | "thonk" - // | ] - // | }; - - var ret = {}, elems = dom.byId(formNode).elements; - for(var i = 0, l = elems.length; i < l; ++i){ - var item = elems[i], _in = item.name, type = (item.type || "").toLowerCase(); - if(_in && type && exclude.indexOf(type) < 0 && !item.disabled){ - setValue(ret, _in, form.fieldToObject(item)); - if(type == "image"){ - ret[_in + ".x"] = ret[_in + ".y"] = ret[_in].x = ret[_in].y = 0; - } - } - } - return ret; // Object - }, - - toQuery: function formToQuery(/*DOMNode|String*/ formNode){ - // summary: - // Returns a URL-encoded string representing the form passed as either a - // node or string ID identifying the form to serialize - // formNode: DOMNode|String - // returns: String - - return ioq.objectToQuery(form.toObject(formNode)); // String - }, - - toJson: function formToJson(/*DOMNode|String*/ formNode, /*Boolean?*/ prettyPrint){ - // summary: - // Create a serialized JSON string from a form node or string - // ID identifying the form to serialize - // formNode: DOMNode|String - // prettyPrint: Boolean? - // returns: String - - return json.stringify(form.toObject(formNode), null, prettyPrint ? 4 : 0); // String - } - }; - - return form; -}); diff --git a/lib/dojo/dom-geometry.js.uncompressed.js b/lib/dojo/dom-geometry.js.uncompressed.js deleted file mode 100644 index 06b38c295..000000000 --- a/lib/dojo/dom-geometry.js.uncompressed.js +++ /dev/null @@ -1,605 +0,0 @@ -define("dojo/dom-geometry", ["./sniff", "./_base/window","./dom", "./dom-style"], - function(has, win, dom, style){ - // module: - // dojo/dom-geometry - - // the result object - var geom = { - // summary: - // This module defines the core dojo DOM geometry API. - }; - - // Box functions will assume this model. - // On IE/Opera, BORDER_BOX will be set if the primary document is in quirks mode. - // Can be set to change behavior of box setters. - - // can be either: - // "border-box" - // "content-box" (default) - geom.boxModel = "content-box"; - - // We punt per-node box mode testing completely. - // If anybody cares, we can provide an additional (optional) unit - // that overrides existing code to include per-node box sensitivity. - - // Opera documentation claims that Opera 9 uses border-box in BackCompat mode. - // but experiments (Opera 9.10.8679 on Windows Vista) indicate that it actually continues to use content-box. - // IIRC, earlier versions of Opera did in fact use border-box. - // Opera guys, this is really confusing. Opera being broken in quirks mode is not our fault. - - if(has("ie") /*|| has("opera")*/){ - // client code may have to adjust if compatMode varies across iframes - geom.boxModel = document.compatMode == "BackCompat" ? "border-box" : "content-box"; - } - - geom.getPadExtents = function getPadExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // Returns object with special values specifically useful for node - // fitting. - // description: - // Returns an object with `w`, `h`, `l`, `t` properties: - // | l/t/r/b = left/top/right/bottom padding (respectively) - // | w = the total of the left and right padding - // | h = the total of the top and bottom padding - // If 'node' has position, l/t forms the origin for child nodes. - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), px = style.toPixelValue, - l = px(node, s.paddingLeft), t = px(node, s.paddingTop), r = px(node, s.paddingRight), b = px(node, s.paddingBottom); - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - var none = "none"; - - geom.getBorderExtents = function getBorderExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object with properties useful for noting the border - // dimensions. - // description: - // - l/t/r/b = the sum of left/top/right/bottom border (respectively) - // - w = the sum of the left and right border - // - h = the sum of the top and bottom border - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var px = style.toPixelValue, s = computedStyle || style.getComputedStyle(node), - l = s.borderLeftStyle != none ? px(node, s.borderLeftWidth) : 0, - t = s.borderTopStyle != none ? px(node, s.borderTopWidth) : 0, - r = s.borderRightStyle != none ? px(node, s.borderRightWidth) : 0, - b = s.borderBottomStyle != none ? px(node, s.borderBottomWidth) : 0; - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - geom.getPadBorderExtents = function getPadBorderExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // Returns object with properties useful for box fitting with - // regards to padding. - // description: - // - l/t/r/b = the sum of left/top/right/bottom padding and left/top/right/bottom border (respectively) - // - w = the sum of the left and right padding and border - // - h = the sum of the top and bottom padding and border - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), - p = geom.getPadExtents(node, s), - b = geom.getBorderExtents(node, s); - return { - l: p.l + b.l, - t: p.t + b.t, - r: p.r + b.r, - b: p.b + b.b, - w: p.w + b.w, - h: p.h + b.h - }; - }; - - geom.getMarginExtents = function getMarginExtents(node, computedStyle){ - // summary: - // returns object with properties useful for box fitting with - // regards to box margins (i.e., the outer-box). - // - // - l/t = marginLeft, marginTop, respectively - // - w = total width, margin inclusive - // - h = total height, margin inclusive - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), px = style.toPixelValue, - l = px(node, s.marginLeft), t = px(node, s.marginTop), r = px(node, s.marginRight), b = px(node, s.marginBottom); - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - // Box getters work in any box context because offsetWidth/clientWidth - // are invariant wrt box context - // - // They do *not* work for display: inline objects that have padding styles - // because the user agent ignores padding (it's bogus styling in any case) - // - // Be careful with IMGs because they are inline or block depending on - // browser and browser mode. - - // Although it would be easier to read, there are not separate versions of - // _getMarginBox for each browser because: - // 1. the branching is not expensive - // 2. factoring the shared code wastes cycles (function call overhead) - // 3. duplicating the shared code wastes bytes - - geom.getMarginBox = function getMarginBox(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object that encodes the width, height, left and top - // positions of the node's margin box. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), me = geom.getMarginExtents(node, s), - l = node.offsetLeft - me.l, t = node.offsetTop - me.t, p = node.parentNode, px = style.toPixelValue, pcs; - if(has("mozilla")){ - // Mozilla: - // If offsetParent has a computed overflow != visible, the offsetLeft is decreased - // by the parent's border. - // We don't want to compute the parent's style, so instead we examine node's - // computed left/top which is more stable. - var sl = parseFloat(s.left), st = parseFloat(s.top); - if(!isNaN(sl) && !isNaN(st)){ - l = sl; - t = st; - }else{ - // If child's computed left/top are not parseable as a number (e.g. "auto"), we - // have no choice but to examine the parent's computed style. - if(p && p.style){ - pcs = style.getComputedStyle(p); - if(pcs.overflow != "visible"){ - l += pcs.borderLeftStyle != none ? px(node, pcs.borderLeftWidth) : 0; - t += pcs.borderTopStyle != none ? px(node, pcs.borderTopWidth) : 0; - } - } - } - }else if(has("opera") || (has("ie") == 8 && !has("quirks"))){ - // On Opera and IE 8, offsetLeft/Top includes the parent's border - if(p){ - pcs = style.getComputedStyle(p); - l -= pcs.borderLeftStyle != none ? px(node, pcs.borderLeftWidth) : 0; - t -= pcs.borderTopStyle != none ? px(node, pcs.borderTopWidth) : 0; - } - } - return {l: l, t: t, w: node.offsetWidth + me.w, h: node.offsetHeight + me.h}; - }; - - geom.getContentBox = function getContentBox(node, computedStyle){ - // summary: - // Returns an object that encodes the width, height, left and top - // positions of the node's content box, irrespective of the - // current box model. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - // clientWidth/Height are important since the automatically account for scrollbars - // fallback to offsetWidth/Height for special cases (see #3378) - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), w = node.clientWidth, h, - pe = geom.getPadExtents(node, s), be = geom.getBorderExtents(node, s); - if(!w){ - w = node.offsetWidth; - h = node.offsetHeight; - }else{ - h = node.clientHeight; - be.w = be.h = 0; - } - // On Opera, offsetLeft includes the parent's border - if(has("opera")){ - pe.l += be.l; - pe.t += be.t; - } - return {l: pe.l, t: pe.t, w: w - pe.w - be.w, h: h - pe.h - be.h}; - }; - - // Box setters depend on box context because interpretation of width/height styles - // vary wrt box context. - // - // The value of boxModel is used to determine box context. - // boxModel can be set directly to change behavior. - // - // Beware of display: inline objects that have padding styles - // because the user agent ignores padding (it's a bogus setup anyway) - // - // Be careful with IMGs because they are inline or block depending on - // browser and browser mode. - // - // Elements other than DIV may have special quirks, like built-in - // margins or padding, or values not detectable via computedStyle. - // In particular, margins on TABLE do not seems to appear - // at all in computedStyle on Mozilla. - - function setBox(/*DomNode*/ node, /*Number?*/ l, /*Number?*/ t, /*Number?*/ w, /*Number?*/ h, /*String?*/ u){ - // summary: - // sets width/height/left/top in the current (native) box-model - // dimensions. Uses the unit passed in u. - // node: - // DOM Node reference. Id string not supported for performance - // reasons. - // l: - // left offset from parent. - // t: - // top offset from parent. - // w: - // width in current box model. - // h: - // width in current box model. - // u: - // unit measure to use for other measures. Defaults to "px". - u = u || "px"; - var s = node.style; - if(!isNaN(l)){ - s.left = l + u; - } - if(!isNaN(t)){ - s.top = t + u; - } - if(w >= 0){ - s.width = w + u; - } - if(h >= 0){ - s.height = h + u; - } - } - - function isButtonTag(/*DomNode*/ node){ - // summary: - // True if the node is BUTTON or INPUT.type="button". - return node.tagName.toLowerCase() == "button" || - node.tagName.toLowerCase() == "input" && (node.getAttribute("type") || "").toLowerCase() == "button"; // boolean - } - - function usesBorderBox(/*DomNode*/ node){ - // summary: - // True if the node uses border-box layout. - - // We could test the computed style of node to see if a particular box - // has been specified, but there are details and we choose not to bother. - - // TABLE and BUTTON (and INPUT type=button) are always border-box by default. - // If you have assigned a different box to either one via CSS then - // box functions will break. - - return geom.boxModel == "border-box" || node.tagName.toLowerCase() == "table" || isButtonTag(node); // boolean - } - - geom.setContentSize = function setContentSize(/*DomNode*/ node, /*Object*/ box, /*Object*/ computedStyle){ - // summary: - // Sets the size of the node's contents, irrespective of margins, - // padding, or borders. - // node: DOMNode - // box: Object - // hash with optional "w", and "h" properties for "width", and "height" - // respectively. All specified properties should have numeric values in whole pixels. - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var w = box.w, h = box.h; - if(usesBorderBox(node)){ - var pb = geom.getPadBorderExtents(node, computedStyle); - if(w >= 0){ - w += pb.w; - } - if(h >= 0){ - h += pb.h; - } - } - setBox(node, NaN, NaN, w, h); - }; - - var nilExtents = {l: 0, t: 0, w: 0, h: 0}; - - geom.setMarginBox = function setMarginBox(/*DomNode*/ node, /*Object*/ box, /*Object*/ computedStyle){ - // summary: - // sets the size of the node's margin box and placement - // (left/top), irrespective of box model. Think of it as a - // passthrough to setBox that handles box-model vagaries for - // you. - // node: DOMNode - // box: Object - // hash with optional "l", "t", "w", and "h" properties for "left", "right", "width", and "height" - // respectively. All specified properties should have numeric values in whole pixels. - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), w = box.w, h = box.h, - // Some elements have special padding, margin, and box-model settings. - // To use box functions you may need to set padding, margin explicitly. - // Controlling box-model is harder, in a pinch you might set dojo/dom-geometry.boxModel. - pb = usesBorderBox(node) ? nilExtents : geom.getPadBorderExtents(node, s), - mb = geom.getMarginExtents(node, s); - if(has("webkit")){ - // on Safari (3.1.2), button nodes with no explicit size have a default margin - // setting an explicit size eliminates the margin. - // We have to swizzle the width to get correct margin reading. - if(isButtonTag(node)){ - var ns = node.style; - if(w >= 0 && !ns.width){ - ns.width = "4px"; - } - if(h >= 0 && !ns.height){ - ns.height = "4px"; - } - } - } - if(w >= 0){ - w = Math.max(w - pb.w - mb.w, 0); - } - if(h >= 0){ - h = Math.max(h - pb.h - mb.h, 0); - } - setBox(node, box.l, box.t, w, h); - }; - - // ============================= - // Positioning - // ============================= - - geom.isBodyLtr = function isBodyLtr(/*Document?*/ doc){ - // summary: - // Returns true if the current language is left-to-right, and false otherwise. - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Boolean - - doc = doc || win.doc; - return (win.body(doc).dir || doc.documentElement.dir || "ltr").toLowerCase() == "ltr"; // Boolean - }; - - geom.docScroll = function docScroll(/*Document?*/ doc){ - // summary: - // Returns an object with {node, x, y} with corresponding offsets. - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Object - - doc = doc || win.doc; - var node = win.doc.parentWindow || win.doc.defaultView; // use UI window, not dojo.global window. TODO: use dojo/window::get() except for circular dependency problem - return "pageXOffset" in node ? {x: node.pageXOffset, y: node.pageYOffset } : - (node = has("quirks") ? win.body(doc) : doc.documentElement) && - {x: geom.fixIeBiDiScrollLeft(node.scrollLeft || 0, doc), y: node.scrollTop || 0 }; - }; - - if(has("ie")){ - geom.getIeDocumentElementOffset = function getIeDocumentElementOffset(/*Document?*/ doc){ - // summary: - // returns the offset in x and y from the document body to the - // visual edge of the page for IE - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // description: - // The following values in IE contain an offset: - // | event.clientX - // | event.clientY - // | node.getBoundingClientRect().left - // | node.getBoundingClientRect().top - // But other position related values do not contain this offset, - // such as node.offsetLeft, node.offsetTop, node.style.left and - // node.style.top. The offset is always (2, 2) in LTR direction. - // When the body is in RTL direction, the offset counts the width - // of left scroll bar's width. This function computes the actual - // offset. - - //NOTE: assumes we're being called in an IE browser - - doc = doc || win.doc; - var de = doc.documentElement; // only deal with HTML element here, position() handles body/quirks - - if(has("ie") < 8){ - var r = de.getBoundingClientRect(), // works well for IE6+ - l = r.left, t = r.top; - if(has("ie") < 7){ - l += de.clientLeft; // scrollbar size in strict/RTL, or, - t += de.clientTop; // HTML border size in strict - } - return { - x: l < 0 ? 0 : l, // FRAME element border size can lead to inaccurate negative values - y: t < 0 ? 0 : t - }; - }else{ - return { - x: 0, - y: 0 - }; - } - }; - } - - geom.fixIeBiDiScrollLeft = function fixIeBiDiScrollLeft(/*Integer*/ scrollLeft, /*Document?*/ doc){ - // summary: - // In RTL direction, scrollLeft should be a negative value, but IE - // returns a positive one. All codes using documentElement.scrollLeft - // must call this function to fix this error, otherwise the position - // will offset to right when there is a horizontal scrollbar. - // scrollLeft: Number - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Number - - // In RTL direction, scrollLeft should be a negative value, but IE - // returns a positive one. All codes using documentElement.scrollLeft - // must call this function to fix this error, otherwise the position - // will offset to right when there is a horizontal scrollbar. - - doc = doc || win.doc; - var ie = has("ie"); - if(ie && !geom.isBodyLtr(doc)){ - var qk = has("quirks"), - de = qk ? win.body(doc) : doc.documentElement, - pwin = win.global; // TODO: use winUtils.get(doc) after resolving circular dependency b/w dom-geometry.js and dojo/window.js - if(ie == 6 && !qk && pwin.frameElement && de.scrollHeight > de.clientHeight){ - scrollLeft += de.clientLeft; // workaround ie6+strict+rtl+iframe+vertical-scrollbar bug where clientWidth is too small by clientLeft pixels - } - return (ie < 8 || qk) ? (scrollLeft + de.clientWidth - de.scrollWidth) : -scrollLeft; // Integer - } - return scrollLeft; // Integer - }; - - geom.position = function(/*DomNode*/ node, /*Boolean?*/ includeScroll){ - // summary: - // Gets the position and size of the passed element relative to - // the viewport (if includeScroll==false), or relative to the - // document root (if includeScroll==true). - // - // description: - // Returns an object of the form: - // `{ x: 100, y: 300, w: 20, h: 15 }`. - // If includeScroll==true, the x and y values will include any - // document offsets that may affect the position relative to the - // viewport. - // Uses the border-box model (inclusive of border and padding but - // not margin). Does not act as a setter. - // node: DOMNode|String - // includeScroll: Boolean? - // returns: Object - - node = dom.byId(node); - var db = win.body(node.ownerDocument), - ret = node.getBoundingClientRect(); - ret = {x: ret.left, y: ret.top, w: ret.right - ret.left, h: ret.bottom - ret.top}; - - if(has("ie") < 9){ - // On IE<9 there's a 2px offset that we need to adjust for, see dojo.getIeDocumentElementOffset() - var offset = geom.getIeDocumentElementOffset(node.ownerDocument); - - // fixes the position in IE, quirks mode - ret.x -= offset.x + (has("quirks") ? db.clientLeft + db.offsetLeft : 0); - ret.y -= offset.y + (has("quirks") ? db.clientTop + db.offsetTop : 0); - } - - // account for document scrolling - // if offsetParent is used, ret value already includes scroll position - // so we may have to actually remove that value if !includeScroll - if(includeScroll){ - var scroll = geom.docScroll(node.ownerDocument); - ret.x += scroll.x; - ret.y += scroll.y; - } - - return ret; // Object - }; - - // random "private" functions wildly used throughout the toolkit - - geom.getMarginSize = function getMarginSize(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object that encodes the width and height of - // the node's margin box - // node: DOMNode|String - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var me = geom.getMarginExtents(node, computedStyle || style.getComputedStyle(node)); - var size = node.getBoundingClientRect(); - return { - w: (size.right - size.left) + me.w, - h: (size.bottom - size.top) + me.h - }; - }; - - geom.normalizeEvent = function(event){ - // summary: - // Normalizes the geometry of a DOM event, normalizing the pageX, pageY, - // offsetX, offsetY, layerX, and layerX properties - // event: Object - if(!("layerX" in event)){ - event.layerX = event.offsetX; - event.layerY = event.offsetY; - } - if(!has("dom-addeventlistener")){ - // old IE version - // FIXME: scroll position query is duped from dojo.html to - // avoid dependency on that entire module. Now that HTML is in - // Base, we should convert back to something similar there. - var se = event.target; - var doc = (se && se.ownerDocument) || document; - // DO NOT replace the following to use dojo.body(), in IE, document.documentElement should be used - // here rather than document.body - var docBody = has("quirks") ? doc.body : doc.documentElement; - var offset = geom.getIeDocumentElementOffset(doc); - event.pageX = event.clientX + geom.fixIeBiDiScrollLeft(docBody.scrollLeft || 0, doc) - offset.x; - event.pageY = event.clientY + (docBody.scrollTop || 0) - offset.y; - } - }; - - // TODO: evaluate separate getters/setters for position and sizes? - - return geom; -}); diff --git a/lib/dojo/dom-prop.js.uncompressed.js b/lib/dojo/dom-prop.js.uncompressed.js deleted file mode 100644 index 49729af32..000000000 --- a/lib/dojo/dom-prop.js.uncompressed.js +++ /dev/null @@ -1,181 +0,0 @@ -define("dojo/dom-prop", ["exports", "./_base/kernel", "./sniff", "./_base/lang", "./dom", "./dom-style", "./dom-construct", "./_base/connect"], - function(exports, dojo, has, lang, dom, style, ctr, conn){ - // module: - // dojo/dom-prop - // summary: - // This module defines the core dojo DOM properties API. - // Indirectly depends on dojo.empty() and dojo.toDom(). - - // TODOC: summary not showing up in output, see https://github.com/csnover/js-doc-parse/issues/42 - - // ============================= - // Element properties Functions - // ============================= - - // helper to connect events - var _evtHdlrMap = {}, _ctr = 0, _attrId = dojo._scopeName + "attrid"; - - exports.names = { - // properties renamed to avoid clashes with reserved words - "class": "className", - "for": "htmlFor", - // properties written as camelCase - tabindex: "tabIndex", - readonly: "readOnly", - colspan: "colSpan", - frameborder: "frameBorder", - rowspan: "rowSpan", - valuetype: "valueType" - }; - - exports.get = function getProp(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Gets a property on an HTML element. - // description: - // Handles normalized getting of properties on DOM nodes. - // - // node: DOMNode|String - // id or reference to the element to get the property on - // name: String - // the name of the property to get. - // returns: - // the value of the requested property or its default value - // - // example: - // | // get the current value of the "foo" property on a node - // | dojo.getProp(dojo.byId("nodeId"), "foo"); - // | // or we can just pass the id: - // | dojo.getProp("nodeId", "foo"); - - node = dom.byId(node); - var lc = name.toLowerCase(), propName = exports.names[lc] || name; - return node[propName]; // Anything - }; - - exports.set = function setProp(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets a property on an HTML element. - // description: - // Handles normalized setting of properties on DOM nodes. - // - // When passing functions as values, note that they will not be - // directly assigned to slots on the node, but rather the default - // behavior will be removed and the new behavior will be added - // using `dojo.connect()`, meaning that event handler properties - // will be normalized and that some caveats with regards to - // non-standard behaviors for onsubmit apply. Namely that you - // should cancel form submission using `dojo.stopEvent()` on the - // passed event object instead of returning a boolean value from - // the handler itself. - // node: DOMNode|String - // id or reference to the element to set the property on - // name: String|Object - // the name of the property to set, or a hash object to set - // multiple properties at once. - // value: String? - // The value to set for the property - // returns: - // the DOM node - // - // example: - // | // use prop() to set the tab index - // | dojo.setProp("nodeId", "tabIndex", 3); - // | - // - // example: - // Set multiple values at once, including event handlers: - // | dojo.setProp("formId", { - // | "foo": "bar", - // | "tabIndex": -1, - // | "method": "POST", - // | "onsubmit": function(e){ - // | // stop submitting the form. Note that the IE behavior - // | // of returning true or false will have no effect here - // | // since our handler is connect()ed to the built-in - // | // onsubmit behavior and so we need to use - // | // dojo.stopEvent() to ensure that the submission - // | // doesn't proceed. - // | dojo.stopEvent(e); - // | - // | // submit the form with Ajax - // | dojo.xhrPost({ form: "formId" }); - // | } - // | }); - // - // example: - // Style is s special case: Only set with an object hash of styles - // | dojo.setProp("someNode",{ - // | id:"bar", - // | style:{ - // | width:"200px", height:"100px", color:"#000" - // | } - // | }); - // - // example: - // Again, only set style as an object hash of styles: - // | var obj = { color:"#fff", backgroundColor:"#000" }; - // | dojo.setProp("someNode", "style", obj); - // | - // | // though shorter to use `dojo.style()` in this case: - // | dojo.style("someNode", obj); - - node = dom.byId(node); - var l = arguments.length; - if(l == 2 && typeof name != "string"){ // inline'd type check - // the object form of setter: the 2nd argument is a dictionary - for(var x in name){ - exports.set(node, x, name[x]); - } - return node; // DomNode - } - var lc = name.toLowerCase(), propName = exports.names[lc] || name; - if(propName == "style" && typeof value != "string"){ // inline'd type check - // special case: setting a style - style.set(node, value); - return node; // DomNode - } - if(propName == "innerHTML"){ - // special case: assigning HTML - // the hash lists elements with read-only innerHTML on IE - if(has("ie") && node.tagName.toLowerCase() in {col: 1, colgroup: 1, - table: 1, tbody: 1, tfoot: 1, thead: 1, tr: 1, title: 1}){ - ctr.empty(node); - node.appendChild(ctr.toDom(value, node.ownerDocument)); - }else{ - node[propName] = value; - } - return node; // DomNode - } - if(lang.isFunction(value)){ - // special case: assigning an event handler - // clobber if we can - var attrId = node[_attrId]; - if(!attrId){ - attrId = _ctr++; - node[_attrId] = attrId; - } - if(!_evtHdlrMap[attrId]){ - _evtHdlrMap[attrId] = {}; - } - var h = _evtHdlrMap[attrId][propName]; - if(h){ - //h.remove(); - conn.disconnect(h); - }else{ - try{ - delete node[propName]; - }catch(e){} - } - // ensure that event objects are normalized, etc. - if(value){ - //_evtHdlrMap[attrId][propName] = on(node, propName, value); - _evtHdlrMap[attrId][propName] = conn.connect(node, propName, value); - }else{ - node[propName] = null; - } - return node; // DomNode - } - node[propName] = value; - return node; // DomNode - }; -}); diff --git a/lib/dojo/dom-style.js.uncompressed.js b/lib/dojo/dom-style.js.uncompressed.js deleted file mode 100644 index 83c95a327..000000000 --- a/lib/dojo/dom-style.js.uncompressed.js +++ /dev/null @@ -1,306 +0,0 @@ -define("dojo/dom-style", ["./sniff", "./dom"], function(has, dom){ - // module: - // dojo/dom-style - - // ============================= - // Style Functions - // ============================= - - // getComputedStyle drives most of the style code. - // Wherever possible, reuse the returned object. - // - // API functions below that need to access computed styles accept an - // optional computedStyle parameter. - // If this parameter is omitted, the functions will call getComputedStyle themselves. - // This way, calling code can access computedStyle once, and then pass the reference to - // multiple API functions. - - // Although we normally eschew argument validation at this - // level, here we test argument 'node' for (duck)type, - // by testing nodeType, ecause 'document' is the 'parentNode' of 'body' - // it is frequently sent to this function even - // though it is not Element. - var getComputedStyle, style = { - // summary: - // This module defines the core dojo DOM style API. - }; - if(has("webkit")){ - getComputedStyle = function(/*DomNode*/ node){ - var s; - if(node.nodeType == 1){ - var dv = node.ownerDocument.defaultView; - s = dv.getComputedStyle(node, null); - if(!s && node.style){ - node.style.display = ""; - s = dv.getComputedStyle(node, null); - } - } - return s || {}; - }; - }else if(has("ie") && (has("ie") < 9 || has("quirks"))){ - getComputedStyle = function(node){ - // IE (as of 7) doesn't expose Element like sane browsers - // currentStyle can be null on IE8! - return node.nodeType == 1 /* ELEMENT_NODE*/ && node.currentStyle ? node.currentStyle : {}; - }; - }else{ - getComputedStyle = function(node){ - return node.nodeType == 1 /* ELEMENT_NODE*/ ? - node.ownerDocument.defaultView.getComputedStyle(node, null) : {}; - }; - } - style.getComputedStyle = getComputedStyle; - /*===== - style.getComputedStyle = function(node){ - // summary: - // Returns a "computed style" object. - // - // description: - // Gets a "computed style" object which can be used to gather - // information about the current state of the rendered node. - // - // Note that this may behave differently on different browsers. - // Values may have different formats and value encodings across - // browsers. - // - // Note also that this method is expensive. Wherever possible, - // reuse the returned object. - // - // Use the dojo.style() method for more consistent (pixelized) - // return values. - // - // node: DOMNode - // A reference to a DOM node. Does NOT support taking an - // ID string for speed reasons. - // example: - // | dojo.getComputedStyle(dojo.byId('foo')).borderWidth; - // - // example: - // Reusing the returned object, avoiding multiple lookups: - // | var cs = dojo.getComputedStyle(dojo.byId("someNode")); - // | var w = cs.width, h = cs.height; - return; // CSS2Properties - }; - =====*/ - - var toPixel; - if(!has("ie")){ - toPixel = function(element, value){ - // style values can be floats, client code may want - // to round for integer pixels. - return parseFloat(value) || 0; - }; - }else{ - toPixel = function(element, avalue){ - if(!avalue){ return 0; } - // on IE7, medium is usually 4 pixels - if(avalue == "medium"){ return 4; } - // style values can be floats, client code may - // want to round this value for integer pixels. - if(avalue.slice && avalue.slice(-2) == 'px'){ return parseFloat(avalue); } - var s = element.style, rs = element.runtimeStyle, cs = element.currentStyle, - sLeft = s.left, rsLeft = rs.left; - rs.left = cs.left; - try{ - // 'avalue' may be incompatible with style.left, which can cause IE to throw - // this has been observed for border widths using "thin", "medium", "thick" constants - // those particular constants could be trapped by a lookup - // but perhaps there are more - s.left = avalue; - avalue = s.pixelLeft; - }catch(e){ - avalue = 0; - } - s.left = sLeft; - rs.left = rsLeft; - return avalue; - }; - } - style.toPixelValue = toPixel; - /*===== - style.toPixelValue = function(node, value){ - // summary: - // converts style value to pixels on IE or return a numeric value. - // node: DOMNode - // value: String - // returns: Number - }; - =====*/ - - // FIXME: there opacity quirks on FF that we haven't ported over. Hrm. - - var astr = "DXImageTransform.Microsoft.Alpha"; - var af = function(n, f){ - try{ - return n.filters.item(astr); - }catch(e){ - return f ? {} : null; - } - }; - - var _getOpacity = - has("ie") < 9 || (has("ie") < 10 && has("quirks")) ? function(node){ - try{ - return af(node).Opacity / 100; // Number - }catch(e){ - return 1; // Number - } - } : - function(node){ - return getComputedStyle(node).opacity; - }; - - var _setOpacity = - has("ie") < 9 || (has("ie") < 10 && has("quirks")) ? function(/*DomNode*/ node, /*Number*/ opacity){ - var ov = opacity * 100, opaque = opacity == 1; - node.style.zoom = opaque ? "" : 1; - - if(!af(node)){ - if(opaque){ - return opacity; - } - node.style.filter += " progid:" + astr + "(Opacity=" + ov + ")"; - }else{ - af(node, 1).Opacity = ov; - } - - // on IE7 Alpha(Filter opacity=100) makes text look fuzzy so disable it altogether (bug #2661), - //but still update the opacity value so we can get a correct reading if it is read later. - af(node, 1).Enabled = !opaque; - - if(node.tagName.toLowerCase() == "tr"){ - for(var td = node.firstChild; td; td = td.nextSibling){ - if(td.tagName.toLowerCase() == "td"){ - _setOpacity(td, opacity); - } - } - } - return opacity; - } : - function(node, opacity){ - return node.style.opacity = opacity; - }; - - var _pixelNamesCache = { - left: true, top: true - }; - var _pixelRegExp = /margin|padding|width|height|max|min|offset/; // |border - function _toStyleValue(node, type, value){ - //TODO: should we really be doing string case conversion here? Should we cache it? Need to profile! - type = type.toLowerCase(); - if(has("ie")){ - if(value == "auto"){ - if(type == "height"){ return node.offsetHeight; } - if(type == "width"){ return node.offsetWidth; } - } - if(type == "fontweight"){ - switch(value){ - case 700: return "bold"; - case 400: - default: return "normal"; - } - } - } - if(!(type in _pixelNamesCache)){ - _pixelNamesCache[type] = _pixelRegExp.test(type); - } - return _pixelNamesCache[type] ? toPixel(node, value) : value; - } - - var _floatStyle = has("ie") ? "styleFloat" : "cssFloat", - _floatAliases = {"cssFloat": _floatStyle, "styleFloat": _floatStyle, "float": _floatStyle}; - - // public API - - style.get = function getStyle(/*DOMNode|String*/ node, /*String?*/ name){ - // summary: - // Accesses styles on a node. - // description: - // Getting the style value uses the computed style for the node, so the value - // will be a calculated value, not just the immediate node.style value. - // Also when getting values, use specific style names, - // like "borderBottomWidth" instead of "border" since compound values like - // "border" are not necessarily reflected as expected. - // If you want to get node dimensions, use `dojo.marginBox()`, - // `dojo.contentBox()` or `dojo.position()`. - // node: DOMNode|String - // id or reference to node to get style for - // name: String? - // the style property to get - // example: - // Passing only an ID or node returns the computed style object of - // the node: - // | dojo.getStyle("thinger"); - // example: - // Passing a node and a style property returns the current - // normalized, computed value for that property: - // | dojo.getStyle("thinger", "opacity"); // 1 by default - - var n = dom.byId(node), l = arguments.length, op = (name == "opacity"); - if(l == 2 && op){ - return _getOpacity(n); - } - name = _floatAliases[name] || name; - var s = style.getComputedStyle(n); - return (l == 1) ? s : _toStyleValue(n, name, s[name] || n.style[name]); /* CSS2Properties||String||Number */ - }; - - style.set = function setStyle(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets styles on a node. - // node: DOMNode|String - // id or reference to node to set style for - // name: String|Object - // the style property to set in DOM-accessor format - // ("borderWidth", not "border-width") or an object with key/value - // pairs suitable for setting each property. - // value: String? - // If passed, sets value on the node for style, handling - // cross-browser concerns. When setting a pixel value, - // be sure to include "px" in the value. For instance, top: "200px". - // Otherwise, in some cases, some browsers will not apply the style. - // - // example: - // Passing a node, a style property, and a value changes the - // current display of the node and returns the new computed value - // | dojo.setStyle("thinger", "opacity", 0.5); // == 0.5 - // - // example: - // Passing a node, an object-style style property sets each of the values in turn and returns the computed style object of the node: - // | dojo.setStyle("thinger", { - // | "opacity": 0.5, - // | "border": "3px solid black", - // | "height": "300px" - // | }); - // - // example: - // When the CSS style property is hyphenated, the JavaScript property is camelCased. - // font-size becomes fontSize, and so on. - // | dojo.setStyle("thinger",{ - // | fontSize:"14pt", - // | letterSpacing:"1.2em" - // | }); - // - // example: - // dojo/NodeList implements .style() using the same syntax, omitting the "node" parameter, calling - // dojo.style() on every element of the list. See: `dojo.query()` and `dojo/NodeList` - // | dojo.query(".someClassName").style("visibility","hidden"); - // | // or - // | dojo.query("#baz > div").style({ - // | opacity:0.75, - // | fontSize:"13pt" - // | }); - - var n = dom.byId(node), l = arguments.length, op = (name == "opacity"); - name = _floatAliases[name] || name; - if(l == 3){ - return op ? _setOpacity(n, value) : n.style[name] = value; // Number - } - for(var x in name){ - style.set(node, x, name[x]); - } - return style.getComputedStyle(n); - }; - - return style; -}); diff --git a/lib/dojo/dom.js.uncompressed.js b/lib/dojo/dom.js.uncompressed.js deleted file mode 100644 index 92bea303f..000000000 --- a/lib/dojo/dom.js.uncompressed.js +++ /dev/null @@ -1,185 +0,0 @@ -define("dojo/dom", ["./sniff", "./_base/window"], - function(has, win){ - // module: - // dojo/dom - - // FIXME: need to add unit tests for all the semi-public methods - - if(has("ie") <= 7){ - try{ - document.execCommand("BackgroundImageCache", false, true); - }catch(e){ - // sane browsers don't have cache "issues" - } - } - - // ============================= - // DOM Functions - // ============================= - - // the result object - var dom = { - // summary: - // This module defines the core dojo DOM API. - }; - - if(has("ie")){ - dom.byId = function(id, doc){ - if(typeof id != "string"){ - return id; - } - var _d = doc || win.doc, te = id && _d.getElementById(id); - // attributes.id.value is better than just id in case the - // user has a name=id inside a form - if(te && (te.attributes.id.value == id || te.id == id)){ - return te; - }else{ - var eles = _d.all[id]; - if(!eles || eles.nodeName){ - eles = [eles]; - } - // if more than 1, choose first with the correct id - var i = 0; - while((te = eles[i++])){ - if((te.attributes && te.attributes.id && te.attributes.id.value == id) || te.id == id){ - return te; - } - } - } - }; - }else{ - dom.byId = function(id, doc){ - // inline'd type check. - // be sure to return null per documentation, to match IE branch. - return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode - }; - } - /*===== - dom.byId = function(id, doc){ - // summary: - // Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined) - // if not found. If `id` is a DomNode, this function is a no-op. - // - // id: String|DOMNode - // A string to match an HTML id attribute or a reference to a DOM Node - // - // doc: Document? - // Document to work in. Defaults to the current value of - // dojo.doc. Can be used to retrieve - // node references from other documents. - // - // example: - // Look up a node by ID: - // | var n = dojo.byId("foo"); - // - // example: - // Check if a node exists, and use it. - // | var n = dojo.byId("bar"); - // | if(n){ doStuff() ... } - // - // example: - // Allow string or DomNode references to be passed to a custom function: - // | var foo = function(nodeOrId){ - // | nodeOrId = dojo.byId(nodeOrId); - // | // ... more stuff - // | } - }; - =====*/ - - dom.isDescendant = function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){ - // summary: - // Returns true if node is a descendant of ancestor - // node: DOMNode|String - // string id or node reference to test - // ancestor: DOMNode|String - // string id or node reference of potential parent to test against - // - // example: - // Test is node id="bar" is a descendant of node id="foo" - // | if(dojo.isDescendant("bar", "foo")){ ... } - - try{ - node = dom.byId(node); - ancestor = dom.byId(ancestor); - while(node){ - if(node == ancestor){ - return true; // Boolean - } - node = node.parentNode; - } - }catch(e){ /* squelch, return false */ } - return false; // Boolean - }; - - - // TODO: do we need setSelectable in the base? - - // Add feature test for user-select CSS property - // (currently known to work in all but IE < 10 and Opera) - has.add("css-user-select", function(global, doc, element){ - // Avoid exception when dom.js is loaded in non-browser environments - if(!element){ return false; } - - var style = element.style; - var prefixes = ["Khtml", "O", "ms", "Moz", "Webkit"], - i = prefixes.length, - name = "userSelect", - prefix; - - // Iterate prefixes from most to least likely - do{ - if(typeof style[name] !== "undefined"){ - // Supported; return property name - return name; - } - }while(i-- && (name = prefixes[i] + "UserSelect")); - - // Not supported if we didn't return before now - return false; - }); - - /*===== - dom.setSelectable = function(node, selectable){ - // summary: - // Enable or disable selection on a node - // node: DOMNode|String - // id or reference to node - // selectable: Boolean - // state to put the node in. false indicates unselectable, true - // allows selection. - // example: - // Make the node id="bar" unselectable - // | dojo.setSelectable("bar"); - // example: - // Make the node id="bar" selectable - // | dojo.setSelectable("bar", true); - }; - =====*/ - - var cssUserSelect = has("css-user-select"); - dom.setSelectable = cssUserSelect ? function(node, selectable){ - // css-user-select returns a (possibly vendor-prefixed) CSS property name - dom.byId(node).style[cssUserSelect] = selectable ? "" : "none"; - } : function(node, selectable){ - node = dom.byId(node); - - // (IE < 10 / Opera) Fall back to setting/removing the - // unselectable attribute on the element and all its children - var nodes = node.getElementsByTagName("*"), - i = nodes.length; - - if(selectable){ - node.removeAttribute("unselectable"); - while(i--){ - nodes[i].removeAttribute("unselectable"); - } - }else{ - node.setAttribute("unselectable", "on"); - while(i--){ - nodes[i].setAttribute("unselectable", "on"); - } - } - }; - - return dom; -}); diff --git a/lib/dojo/domReady.js.uncompressed.js b/lib/dojo/domReady.js.uncompressed.js deleted file mode 100644 index 90d03d4c7..000000000 --- a/lib/dojo/domReady.js.uncompressed.js +++ /dev/null @@ -1,97 +0,0 @@ -define("dojo/domReady", ['./has'], function(has){ - var global = this, - doc = document, - readyStates = { 'loaded': 1, 'complete': 1 }, - fixReadyState = typeof doc.readyState != "string", - ready = !!readyStates[doc.readyState]; - - // For FF <= 3.5 - if(fixReadyState){ doc.readyState = "loading"; } - - if(!ready){ - var readyQ = [], tests = [], - detectReady = function(evt){ - evt = evt || global.event; - if(ready || (evt.type == "readystatechange" && !readyStates[doc.readyState])){ return; } - ready = 1; - - // For FF <= 3.5 - if(fixReadyState){ doc.readyState = "complete"; } - - while(readyQ.length){ - (readyQ.shift())(doc); - } - }, - on = function(node, event){ - node.addEventListener(event, detectReady, false); - readyQ.push(function(){ node.removeEventListener(event, detectReady, false); }); - }; - - if(!has("dom-addeventlistener")){ - on = function(node, event){ - event = "on" + event; - node.attachEvent(event, detectReady); - readyQ.push(function(){ node.detachEvent(event, detectReady); }); - }; - - var div = doc.createElement("div"); - try{ - if(div.doScroll && global.frameElement === null){ - // the doScroll test is only useful if we're in the top-most frame - tests.push(function(){ - // Derived with permission from Diego Perini's IEContentLoaded - // http://javascript.nwbox.com/IEContentLoaded/ - try{ - div.doScroll("left"); - return 1; - }catch(e){} - }); - } - }catch(e){} - } - - on(doc, "DOMContentLoaded"); - on(global, "load"); - - if("onreadystatechange" in doc){ - on(doc, "readystatechange"); - }else if(!fixReadyState){ - // if the ready state property exists and there's - // no readystatechange event, poll for the state - // to change - tests.push(function(){ - return readyStates[doc.readyState]; - }); - } - - if(tests.length){ - var poller = function(){ - if(ready){ return; } - var i = tests.length; - while(i--){ - if(tests[i]()){ - detectReady("poller"); - return; - } - } - setTimeout(poller, 30); - }; - poller(); - } - } - - function domReady(callback){ - // summary: - // Plugin to delay require()/define() callback from firing until the DOM has finished loading. - if(ready){ - callback(doc); - }else{ - readyQ.push(callback); - } - } - domReady.load = function(id, req, load){ - domReady(load); - }; - - return domReady; -}); diff --git a/lib/dojo/errors/CancelError.js.uncompressed.js b/lib/dojo/errors/CancelError.js.uncompressed.js deleted file mode 100644 index 2d96b0521..000000000 --- a/lib/dojo/errors/CancelError.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define("dojo/errors/CancelError", ["./create"], function(create){ - // module: - // dojo/errors/CancelError - - /*===== - return function(){ - // summary: - // Default error if a promise is canceled without a reason. - }; - =====*/ - - return create("CancelError", null, null, { dojoType: "cancel" }); -}); diff --git a/lib/dojo/errors/RequestError.js.uncompressed.js b/lib/dojo/errors/RequestError.js.uncompressed.js deleted file mode 100644 index f476cd822..000000000 --- a/lib/dojo/errors/RequestError.js.uncompressed.js +++ /dev/null @@ -1,15 +0,0 @@ -define("dojo/errors/RequestError", ['./create'], function(create){ - // module: - // dojo/errors/RequestError - - /*===== - return function(){ - // summary: - // TODOC - }; - =====*/ - - return create("RequestError", function(message, response){ - this.response = response; - }); -}); diff --git a/lib/dojo/errors/RequestTimeoutError.js.uncompressed.js b/lib/dojo/errors/RequestTimeoutError.js.uncompressed.js deleted file mode 100644 index 91e986a39..000000000 --- a/lib/dojo/errors/RequestTimeoutError.js.uncompressed.js +++ /dev/null @@ -1,15 +0,0 @@ -define("dojo/errors/RequestTimeoutError", ['./create', './RequestError'], function(create, RequestError){ - // module: - // dojo/errors/RequestTimeoutError - - /*===== - return function(){ - // summary: - // TODOC - }; - =====*/ - - return create("RequestTimeoutError", null, RequestError, { - dojoType: "timeout" - }); -}); diff --git a/lib/dojo/errors/create.js.uncompressed.js b/lib/dojo/errors/create.js.uncompressed.js deleted file mode 100644 index d303a6a77..000000000 --- a/lib/dojo/errors/create.js.uncompressed.js +++ /dev/null @@ -1,41 +0,0 @@ -define("dojo/errors/create", ["../_base/lang"], function(lang){ - return function(name, ctor, base, props){ - base = base || Error; - - var ErrorCtor = function(message){ - if(base === Error){ - if(Error.captureStackTrace){ - Error.captureStackTrace(this, ErrorCtor); - } - - // Error.call() operates on the returned error - // object rather than operating on |this| - var err = Error.call(this, message), - prop; - - // Copy own properties from err to |this| - for(prop in err){ - if(err.hasOwnProperty(prop)){ - this[prop] = err[prop]; - } - } - - // messsage is non-enumerable in ES5 - this.message = message; - // stack is non-enumerable in at least Firefox - this.stack = err.stack; - }else{ - base.apply(this, arguments); - } - if(ctor){ - ctor.apply(this, arguments); - } - }; - - ErrorCtor.prototype = lang.delegate(base.prototype, props); - ErrorCtor.prototype.name = name; - ErrorCtor.prototype.constructor = ErrorCtor; - - return ErrorCtor; - }; -}); diff --git a/lib/dojo/fx.js.uncompressed.js b/lib/dojo/fx.js.uncompressed.js deleted file mode 100644 index a3f2ceef9..000000000 --- a/lib/dojo/fx.js.uncompressed.js +++ /dev/null @@ -1,419 +0,0 @@ -define("dojo/fx", [ - "./_base/lang", - "./Evented", - "./_base/kernel", - "./_base/array", - "./_base/connect", - "./_base/fx", - "./dom", - "./dom-style", - "./dom-geometry", - "./ready", - "require" // for context sensitive loading of Toggler -], function(lang, Evented, dojo, arrayUtil, connect, baseFx, dom, domStyle, geom, ready, require){ - - // module: - // dojo/fx - - // For back-compat, remove in 2.0. - if(!dojo.isAsync){ - ready(0, function(){ - var requires = ["./fx/Toggler"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - var coreFx = dojo.fx = { - // summary: - // Effects library on top of Base animations - }; - - var _baseObj = { - _fire: function(evt, args){ - if(this[evt]){ - this[evt].apply(this, args||[]); - } - return this; - } - }; - - var _chain = function(animations){ - this._index = -1; - this._animations = animations||[]; - this._current = this._onAnimateCtx = this._onEndCtx = null; - - this.duration = 0; - arrayUtil.forEach(this._animations, function(a){ - this.duration += a.duration; - if(a.delay){ this.duration += a.delay; } - }, this); - }; - _chain.prototype = new Evented(); - lang.extend(_chain, { - _onAnimate: function(){ - this._fire("onAnimate", arguments); - }, - _onEnd: function(){ - connect.disconnect(this._onAnimateCtx); - connect.disconnect(this._onEndCtx); - this._onAnimateCtx = this._onEndCtx = null; - if(this._index + 1 == this._animations.length){ - this._fire("onEnd"); - }else{ - // switch animations - this._current = this._animations[++this._index]; - this._onAnimateCtx = connect.connect(this._current, "onAnimate", this, "_onAnimate"); - this._onEndCtx = connect.connect(this._current, "onEnd", this, "_onEnd"); - this._current.play(0, true); - } - }, - play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){ - if(!this._current){ this._current = this._animations[this._index = 0]; } - if(!gotoStart && this._current.status() == "playing"){ return this; } - var beforeBegin = connect.connect(this._current, "beforeBegin", this, function(){ - this._fire("beforeBegin"); - }), - onBegin = connect.connect(this._current, "onBegin", this, function(arg){ - this._fire("onBegin", arguments); - }), - onPlay = connect.connect(this._current, "onPlay", this, function(arg){ - this._fire("onPlay", arguments); - connect.disconnect(beforeBegin); - connect.disconnect(onBegin); - connect.disconnect(onPlay); - }); - if(this._onAnimateCtx){ - connect.disconnect(this._onAnimateCtx); - } - this._onAnimateCtx = connect.connect(this._current, "onAnimate", this, "_onAnimate"); - if(this._onEndCtx){ - connect.disconnect(this._onEndCtx); - } - this._onEndCtx = connect.connect(this._current, "onEnd", this, "_onEnd"); - this._current.play.apply(this._current, arguments); - return this; - }, - pause: function(){ - if(this._current){ - var e = connect.connect(this._current, "onPause", this, function(arg){ - this._fire("onPause", arguments); - connect.disconnect(e); - }); - this._current.pause(); - } - return this; - }, - gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){ - this.pause(); - var offset = this.duration * percent; - this._current = null; - arrayUtil.some(this._animations, function(a){ - if(a.duration <= offset){ - this._current = a; - return true; - } - offset -= a.duration; - return false; - }); - if(this._current){ - this._current.gotoPercent(offset / this._current.duration, andPlay); - } - return this; - }, - stop: function(/*boolean?*/ gotoEnd){ - if(this._current){ - if(gotoEnd){ - for(; this._index + 1 < this._animations.length; ++this._index){ - this._animations[this._index].stop(true); - } - this._current = this._animations[this._index]; - } - var e = connect.connect(this._current, "onStop", this, function(arg){ - this._fire("onStop", arguments); - connect.disconnect(e); - }); - this._current.stop(); - } - return this; - }, - status: function(){ - return this._current ? this._current.status() : "stopped"; - }, - destroy: function(){ - if(this._onAnimateCtx){ connect.disconnect(this._onAnimateCtx); } - if(this._onEndCtx){ connect.disconnect(this._onEndCtx); } - } - }); - lang.extend(_chain, _baseObj); - - coreFx.chain = function(/*dojo/_base/fx.Animation[]*/ animations){ - // summary: - // Chain a list of `dojo.Animation`s to run in sequence - // - // description: - // Return a `dojo.Animation` which will play all passed - // `dojo.Animation` instances in sequence, firing its own - // synthesized events simulating a single animation. (eg: - // onEnd of this animation means the end of the chain, - // not the individual animations within) - // - // example: - // Once `node` is faded out, fade in `otherNode` - // | fx.chain([ - // | dojo.fadeIn({ node:node }), - // | dojo.fadeOut({ node:otherNode }) - // | ]).play(); - // - return new _chain(animations); // dojo/_base/fx.Animation - }; - - var _combine = function(animations){ - this._animations = animations||[]; - this._connects = []; - this._finished = 0; - - this.duration = 0; - arrayUtil.forEach(animations, function(a){ - var duration = a.duration; - if(a.delay){ duration += a.delay; } - if(this.duration < duration){ this.duration = duration; } - this._connects.push(connect.connect(a, "onEnd", this, "_onEnd")); - }, this); - - this._pseudoAnimation = new baseFx.Animation({curve: [0, 1], duration: this.duration}); - var self = this; - arrayUtil.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop", "onEnd"], - function(evt){ - self._connects.push(connect.connect(self._pseudoAnimation, evt, - function(){ self._fire(evt, arguments); } - )); - } - ); - }; - lang.extend(_combine, { - _doAction: function(action, args){ - arrayUtil.forEach(this._animations, function(a){ - a[action].apply(a, args); - }); - return this; - }, - _onEnd: function(){ - if(++this._finished > this._animations.length){ - this._fire("onEnd"); - } - }, - _call: function(action, args){ - var t = this._pseudoAnimation; - t[action].apply(t, args); - }, - play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){ - this._finished = 0; - this._doAction("play", arguments); - this._call("play", arguments); - return this; - }, - pause: function(){ - this._doAction("pause", arguments); - this._call("pause", arguments); - return this; - }, - gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){ - var ms = this.duration * percent; - arrayUtil.forEach(this._animations, function(a){ - a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay); - }); - this._call("gotoPercent", arguments); - return this; - }, - stop: function(/*boolean?*/ gotoEnd){ - this._doAction("stop", arguments); - this._call("stop", arguments); - return this; - }, - status: function(){ - return this._pseudoAnimation.status(); - }, - destroy: function(){ - arrayUtil.forEach(this._connects, connect.disconnect); - } - }); - lang.extend(_combine, _baseObj); - - coreFx.combine = function(/*dojo/_base/fx.Animation[]*/ animations){ - // summary: - // Combine a list of `dojo.Animation`s to run in parallel - // - // description: - // Combine an array of `dojo.Animation`s to run in parallel, - // providing a new `dojo.Animation` instance encompasing each - // animation, firing standard animation events. - // - // example: - // Fade out `node` while fading in `otherNode` simultaneously - // | fx.combine([ - // | dojo.fadeIn({ node:node }), - // | dojo.fadeOut({ node:otherNode }) - // | ]).play(); - // - // example: - // When the longest animation ends, execute a function: - // | var anim = fx.combine([ - // | dojo.fadeIn({ node: n, duration:700 }), - // | dojo.fadeOut({ node: otherNode, duration: 300 }) - // | ]); - // | dojo.connect(anim, "onEnd", function(){ - // | // overall animation is done. - // | }); - // | anim.play(); // play the animation - // - return new _combine(animations); // dojo/_base/fx.Animation - }; - - coreFx.wipeIn = function(/*Object*/ args){ - // summary: - // Expand a node to it's natural height. - // - // description: - // Returns an animation that will expand the - // node defined in 'args' object from it's current height to - // it's natural height (with no scrollbar). - // Node must have no margin/border/padding. - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on) - // - // example: - // | fx.wipeIn({ - // | node:"someId" - // | }).play() - var node = args.node = dom.byId(args.node), s = node.style, o; - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - height: { - // wrapped in functions so we wait till the last second to query (in case value has changed) - start: function(){ - // start at current [computed] height, but use 1px rather than 0 - // because 0 causes IE to display the whole panel - o = s.overflow; - s.overflow = "hidden"; - if(s.visibility == "hidden" || s.display == "none"){ - s.height = "1px"; - s.display = ""; - s.visibility = ""; - return 1; - }else{ - var height = domStyle.get(node, "height"); - return Math.max(height, 1); - } - }, - end: function(){ - return node.scrollHeight; - } - } - } - }, args)); - - var fini = function(){ - s.height = "auto"; - s.overflow = o; - }; - connect.connect(anim, "onStop", fini); - connect.connect(anim, "onEnd", fini); - - return anim; // dojo/_base/fx.Animation - }; - - coreFx.wipeOut = function(/*Object*/ args){ - // summary: - // Shrink a node to nothing and hide it. - // - // description: - // Returns an animation that will shrink node defined in "args" - // from it's current height to 1px, and then hide it. - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on) - // - // example: - // | fx.wipeOut({ node:"someId" }).play() - - var node = args.node = dom.byId(args.node), s = node.style, o; - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - height: { - end: 1 // 0 causes IE to display the whole panel - } - } - }, args)); - - connect.connect(anim, "beforeBegin", function(){ - o = s.overflow; - s.overflow = "hidden"; - s.display = ""; - }); - var fini = function(){ - s.overflow = o; - s.height = "auto"; - s.display = "none"; - }; - connect.connect(anim, "onStop", fini); - connect.connect(anim, "onEnd", fini); - - return anim; // dojo/_base/fx.Animation - }; - - coreFx.slideTo = function(/*Object*/ args){ - // summary: - // Slide a node to a new top/left position - // - // description: - // Returns an animation that will slide "node" - // defined in args Object from its current position to - // the position defined by (args.left, args.top). - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on). Special args members - // are `top` and `left`, which indicate the new position to slide to. - // - // example: - // | .slideTo({ node: node, left:"40", top:"50", units:"px" }).play() - - var node = args.node = dom.byId(args.node), - top = null, left = null; - - var init = (function(n){ - return function(){ - var cs = domStyle.getComputedStyle(n); - var pos = cs.position; - top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0); - left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0); - if(pos != 'absolute' && pos != 'relative'){ - var ret = geom.position(n, true); - top = ret.y; - left = ret.x; - n.style.position="absolute"; - n.style.top=top+"px"; - n.style.left=left+"px"; - } - }; - })(node); - init(); - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - top: args.top || 0, - left: args.left || 0 - } - }, args)); - connect.connect(anim, "beforeBegin", anim, init); - - return anim; // dojo/_base/fx.Animation - }; - - return coreFx; -}); diff --git a/lib/dojo/fx/Toggler.js.uncompressed.js b/lib/dojo/fx/Toggler.js.uncompressed.js deleted file mode 100644 index c6636344c..000000000 --- a/lib/dojo/fx/Toggler.js.uncompressed.js +++ /dev/null @@ -1,101 +0,0 @@ -define("dojo/fx/Toggler", ["../_base/lang","../_base/declare","../_base/fx", "../_base/connect"], - function(lang, declare, baseFx, connectUtil){ - // module: - // dojo/fx/Toggler - -return declare("dojo.fx.Toggler", null, { - // summary: - // A simple `dojo.Animation` toggler API. - // description: - // class constructor for an animation toggler. It accepts a packed - // set of arguments about what type of animation to use in each - // direction, duration, etc. All available members are mixed into - // these animations from the constructor (for example, `node`, - // `showDuration`, `hideDuration`). - // example: - // | var t = new dojo/fx/Toggler({ - // | node: "nodeId", - // | showDuration: 500, - // | // hideDuration will default to "200" - // | showFunc: dojo/fx/wipeIn, - // | // hideFunc will default to "fadeOut" - // | }); - // | t.show(100); // delay showing for 100ms - // | // ...time passes... - // | t.hide(); - - // node: DomNode - // the node to target for the showing and hiding animations - node: null, - - // showFunc: Function - // The function that returns the `dojo.Animation` to show the node - showFunc: baseFx.fadeIn, - - // hideFunc: Function - // The function that returns the `dojo.Animation` to hide the node - hideFunc: baseFx.fadeOut, - - // showDuration: - // Time in milliseconds to run the show Animation - showDuration: 200, - - // hideDuration: - // Time in milliseconds to run the hide Animation - hideDuration: 200, - - // FIXME: need a policy for where the toggler should "be" the next - // time show/hide are called if we're stopped somewhere in the - // middle. - // FIXME: also would be nice to specify individual showArgs/hideArgs mixed into - // each animation individually. - // FIXME: also would be nice to have events from the animations exposed/bridged - - /*===== - _showArgs: null, - _showAnim: null, - - _hideArgs: null, - _hideAnim: null, - - _isShowing: false, - _isHiding: false, - =====*/ - - constructor: function(args){ - var _t = this; - - lang.mixin(_t, args); - _t.node = args.node; - _t._showArgs = lang.mixin({}, args); - _t._showArgs.node = _t.node; - _t._showArgs.duration = _t.showDuration; - _t.showAnim = _t.showFunc(_t._showArgs); - - _t._hideArgs = lang.mixin({}, args); - _t._hideArgs.node = _t.node; - _t._hideArgs.duration = _t.hideDuration; - _t.hideAnim = _t.hideFunc(_t._hideArgs); - - connectUtil.connect(_t.showAnim, "beforeBegin", lang.hitch(_t.hideAnim, "stop", true)); - connectUtil.connect(_t.hideAnim, "beforeBegin", lang.hitch(_t.showAnim, "stop", true)); - }, - - show: function(delay){ - // summary: - // Toggle the node to showing - // delay: Integer? - // Amount of time to stall playing the show animation - return this.showAnim.play(delay || 0); - }, - - hide: function(delay){ - // summary: - // Toggle the node to hidden - // delay: Integer? - // Amount of time to stall playing the hide animation - return this.hideAnim.play(delay || 0); - } -}); - -}); diff --git a/lib/dojo/fx/easing.js.uncompressed.js b/lib/dojo/fx/easing.js.uncompressed.js deleted file mode 100644 index d899bce4e..000000000 --- a/lib/dojo/fx/easing.js.uncompressed.js +++ /dev/null @@ -1,276 +0,0 @@ -define("dojo/fx/easing", ["../_base/lang"], function(lang){ - -// module: -// dojo/fx/easing - -var easingFuncs = { - // summary: - // Collection of easing functions to use beyond the default - // `dojo._defaultEasing` function. - // description: - // Easing functions are used to manipulate the iteration through - // an `dojo.Animation`s _Line. _Line being the properties of an Animation, - // and the easing function progresses through that Line determining - // how quickly (or slowly) it should go. Or more accurately: modify - // the value of the _Line based on the percentage of animation completed. - // - // All functions follow a simple naming convention of "ease type" + "when". - // If the name of the function ends in Out, the easing described appears - // towards the end of the animation. "In" means during the beginning, - // and InOut means both ranges of the Animation will applied, both - // beginning and end. - // - // One does not call the easing function directly, it must be passed to - // the `easing` property of an animation. - // example: - // | dojo.require("dojo.fx.easing"); - // | var anim = dojo.fadeOut({ - // | node: 'node', - // | duration: 2000, - // | // note there is no () - // | easing: dojo.fx.easing.quadIn - // | }).play(); - // - - linear: function(/* Decimal? */n){ - // summary: - // A linear easing function - return n; - }, - - quadIn: function(/* Decimal? */n){ - return Math.pow(n, 2); - }, - - quadOut: function(/* Decimal? */n){ - return n * (n - 2) * -1; - }, - - quadInOut: function(/* Decimal? */n){ - n = n * 2; - if(n < 1){ return Math.pow(n, 2) / 2; } - return -1 * ((--n) * (n - 2) - 1) / 2; - }, - - cubicIn: function(/* Decimal? */n){ - return Math.pow(n, 3); - }, - - cubicOut: function(/* Decimal? */n){ - return Math.pow(n - 1, 3) + 1; - }, - - cubicInOut: function(/* Decimal? */n){ - n = n * 2; - if(n < 1){ return Math.pow(n, 3) / 2; } - n -= 2; - return (Math.pow(n, 3) + 2) / 2; - }, - - quartIn: function(/* Decimal? */n){ - return Math.pow(n, 4); - }, - - quartOut: function(/* Decimal? */n){ - return -1 * (Math.pow(n - 1, 4) - 1); - }, - - quartInOut: function(/* Decimal? */n){ - n = n * 2; - if(n < 1){ return Math.pow(n, 4) / 2; } - n -= 2; - return -1 / 2 * (Math.pow(n, 4) - 2); - }, - - quintIn: function(/* Decimal? */n){ - return Math.pow(n, 5); - }, - - quintOut: function(/* Decimal? */n){ - return Math.pow(n - 1, 5) + 1; - }, - - quintInOut: function(/* Decimal? */n){ - n = n * 2; - if(n < 1){ return Math.pow(n, 5) / 2; } - n -= 2; - return (Math.pow(n, 5) + 2) / 2; - }, - - sineIn: function(/* Decimal? */n){ - return -1 * Math.cos(n * (Math.PI / 2)) + 1; - }, - - sineOut: function(/* Decimal? */n){ - return Math.sin(n * (Math.PI / 2)); - }, - - sineInOut: function(/* Decimal? */n){ - return -1 * (Math.cos(Math.PI * n) - 1) / 2; - }, - - expoIn: function(/* Decimal? */n){ - return (n == 0) ? 0 : Math.pow(2, 10 * (n - 1)); - }, - - expoOut: function(/* Decimal? */n){ - return (n == 1) ? 1 : (-1 * Math.pow(2, -10 * n) + 1); - }, - - expoInOut: function(/* Decimal? */n){ - if(n == 0){ return 0; } - if(n == 1){ return 1; } - n = n * 2; - if(n < 1){ return Math.pow(2, 10 * (n - 1)) / 2; } - --n; - return (-1 * Math.pow(2, -10 * n) + 2) / 2; - }, - - circIn: function(/* Decimal? */n){ - return -1 * (Math.sqrt(1 - Math.pow(n, 2)) - 1); - }, - - circOut: function(/* Decimal? */n){ - n = n - 1; - return Math.sqrt(1 - Math.pow(n, 2)); - }, - - circInOut: function(/* Decimal? */n){ - n = n * 2; - if(n < 1){ return -1 / 2 * (Math.sqrt(1 - Math.pow(n, 2)) - 1); } - n -= 2; - return 1 / 2 * (Math.sqrt(1 - Math.pow(n, 2)) + 1); - }, - - backIn: function(/* Decimal? */n){ - // summary: - // An easing function that starts away from the target, - // and quickly accelerates towards the end value. - // - // Use caution when the easing will cause values to become - // negative as some properties cannot be set to negative values. - var s = 1.70158; - return Math.pow(n, 2) * ((s + 1) * n - s); - }, - - backOut: function(/* Decimal? */n){ - // summary: - // An easing function that pops past the range briefly, and slowly comes back. - // description: - // An easing function that pops past the range briefly, and slowly comes back. - // - // Use caution when the easing will cause values to become negative as some - // properties cannot be set to negative values. - - n = n - 1; - var s = 1.70158; - return Math.pow(n, 2) * ((s + 1) * n + s) + 1; - }, - - backInOut: function(/* Decimal? */n){ - // summary: - // An easing function combining the effects of `backIn` and `backOut` - // description: - // An easing function combining the effects of `backIn` and `backOut`. - // Use caution when the easing will cause values to become negative - // as some properties cannot be set to negative values. - var s = 1.70158 * 1.525; - n = n * 2; - if(n < 1){ return (Math.pow(n, 2) * ((s + 1) * n - s)) / 2; } - n-=2; - return (Math.pow(n, 2) * ((s + 1) * n + s) + 2) / 2; - }, - - elasticIn: function(/* Decimal? */n){ - // summary: - // An easing function the elastically snaps from the start value - // description: - // An easing function the elastically snaps from the start value - // - // Use caution when the elasticity will cause values to become negative - // as some properties cannot be set to negative values. - if(n == 0 || n == 1){ return n; } - var p = .3; - var s = p / 4; - n = n - 1; - return -1 * Math.pow(2, 10 * n) * Math.sin((n - s) * (2 * Math.PI) / p); - }, - - elasticOut: function(/* Decimal? */n){ - // summary: - // An easing function that elasticly snaps around the target value, - // near the end of the Animation - // description: - // An easing function that elasticly snaps around the target value, - // near the end of the Animation - // - // Use caution when the elasticity will cause values to become - // negative as some properties cannot be set to negative values. - if(n==0 || n == 1){ return n; } - var p = .3; - var s = p / 4; - return Math.pow(2, -10 * n) * Math.sin((n - s) * (2 * Math.PI) / p) + 1; - }, - - elasticInOut: function(/* Decimal? */n){ - // summary: - // An easing function that elasticly snaps around the value, near - // the beginning and end of the Animation. - // description: - // An easing function that elasticly snaps around the value, near - // the beginning and end of the Animation. - // - // Use caution when the elasticity will cause values to become - // negative as some properties cannot be set to negative values. - if(n == 0) return 0; - n = n * 2; - if(n == 2) return 1; - var p = .3 * 1.5; - var s = p / 4; - if(n < 1){ - n -= 1; - return -.5 * (Math.pow(2, 10 * n) * Math.sin((n - s) * (2 * Math.PI) / p)); - } - n -= 1; - return .5 * (Math.pow(2, -10 * n) * Math.sin((n - s) * (2 * Math.PI) / p)) + 1; - }, - - bounceIn: function(/* Decimal? */n){ - // summary: - // An easing function that 'bounces' near the beginning of an Animation - return (1 - easingFuncs.bounceOut(1 - n)); // Decimal - }, - - bounceOut: function(/* Decimal? */n){ - // summary: - // An easing function that 'bounces' near the end of an Animation - var s = 7.5625; - var p = 2.75; - var l; - if(n < (1 / p)){ - l = s * Math.pow(n, 2); - }else if(n < (2 / p)){ - n -= (1.5 / p); - l = s * Math.pow(n, 2) + .75; - }else if(n < (2.5 / p)){ - n -= (2.25 / p); - l = s * Math.pow(n, 2) + .9375; - }else{ - n -= (2.625 / p); - l = s * Math.pow(n, 2) + .984375; - } - return l; - }, - - bounceInOut: function(/* Decimal? */n){ - // summary: - // An easing function that 'bounces' at the beginning and end of the Animation - if(n < 0.5){ return easingFuncs.bounceIn(n * 2) / 2; } - return (easingFuncs.bounceOut(n * 2 - 1) / 2) + 0.5; // Decimal - } -}; - -lang.setObject("dojo.fx.easing", easingFuncs); - -return easingFuncs; -}); diff --git a/lib/dojo/gears.js.uncompressed.js b/lib/dojo/gears.js.uncompressed.js deleted file mode 100644 index 4507f05ca..000000000 --- a/lib/dojo/gears.js.uncompressed.js +++ /dev/null @@ -1,65 +0,0 @@ -define("dojo/gears", ["./_base/lang", "./sniff"], function(lang, has){ - -// module: -// dojo/gears - -var gears = { - // summary: - // TODOC -}; -lang.setObject("dojo.gears", gears); - -gears._gearsObject = function(){ - // summary: - // factory method to get a Google Gears plugin instance to - // expose in the browser runtime environment, if present - var factory; - - var gearsObj = lang.getObject("google.gears"); - if(gearsObj){ return gearsObj; } // already defined elsewhere - - if(typeof GearsFactory != "undefined"){ // Firefox - factory = new GearsFactory(); - }else{ - if(has("ie")){ - // IE - try{ - factory = new ActiveXObject("Gears.Factory"); - }catch(e){ - // ok to squelch; there's no gears factory. move on. - } - }else if(navigator.mimeTypes["application/x-googlegears"]){ - // Safari? - factory = document.createElement("object"); - factory.setAttribute("type", "application/x-googlegears"); - factory.setAttribute("width", 0); - factory.setAttribute("height", 0); - factory.style.display = "none"; - document.documentElement.appendChild(factory); - } - } - - // still nothing? - if(!factory){ return null; } - - // define the global objects now; don't overwrite them though if they - // were somehow set internally by the Gears plugin, which is on their - // dev roadmap for the future - lang.setObject("google.gears.factory", factory); - return lang.getObject("google.gears"); -}; - - -// see if we have Google Gears installed, and if -// so, make it available in the runtime environment -// and in the Google standard 'google.gears' global object -gears.available = (!!gears._gearsObject())||0; -/*===== - gears.available = { - // summary: - // True if client is using Google Gears - }; - =====*/ - -return gears; -}); diff --git a/lib/dojo/has.js.uncompressed.js b/lib/dojo/has.js.uncompressed.js deleted file mode 100644 index 6171de8f3..000000000 --- a/lib/dojo/has.js.uncompressed.js +++ /dev/null @@ -1,173 +0,0 @@ -define("dojo/has", ["require", "module"], function(require, module){ - // module: - // dojo/has - // summary: - // Defines the has.js API and several feature tests used by dojo. - // description: - // This module defines the has API as described by the project has.js with the following additional features: - // - // - the has test cache is exposed at has.cache. - // - the method has.add includes a forth parameter that controls whether or not existing tests are replaced - // - the loader's has cache may be optionally copied into this module's has cahce. - // - // This module adopted from https://github.com/phiggins42/has.js; thanks has.js team! - - // try to pull the has implementation from the loader; both the dojo loader and bdLoad provide one - // if using a foreign loader, then the has cache may be initialized via the config object for this module - // WARNING: if a foreign loader defines require.has to be something other than the has.js API, then this implementation fail - var has = require.has || function(){}; - if(! 1 ){ - var - isBrowser = - // the most fundamental decision: are we in the browser? - typeof window != "undefined" && - typeof location != "undefined" && - typeof document != "undefined" && - window.location == location && window.document == document, - - // has API variables - global = this, - doc = isBrowser && document, - element = doc && doc.createElement("DiV"), - cache = (module.config && module.config()) || {}; - - has = function(name){ - // summary: - // Return the current value of the named feature. - // - // name: String|Integer - // The name (if a string) or identifier (if an integer) of the feature to test. - // - // description: - // Returns the value of the feature named by name. The feature must have been - // previously added to the cache by has.add. - - return typeof cache[name] == "function" ? (cache[name] = cache[name](global, doc, element)) : cache[name]; // Boolean - }; - - has.cache = cache; - - has.add = function(name, test, now, force){ - // summary: - // Register a new feature test for some named feature. - // name: String|Integer - // The name (if a string) or identifier (if an integer) of the feature to test. - // test: Function - // A test function to register. If a function, queued for testing until actually - // needed. The test function should return a boolean indicating - // the presence of a feature or bug. - // now: Boolean? - // Optional. Omit if `test` is not a function. Provides a way to immediately - // run the test and cache the result. - // force: Boolean? - // Optional. If the test already exists and force is truthy, then the existing - // test will be replaced; otherwise, add does not replace an existing test (that - // is, by default, the first test advice wins). - // example: - // A redundant test, testFn with immediate execution: - // | has.add("javascript", function(){ return true; }, true); - // - // example: - // Again with the redundantness. You can do this in your tests, but we should - // not be doing this in any internal has.js tests - // | has.add("javascript", true); - // - // example: - // Three things are passed to the testFunction. `global`, `document`, and a generic element - // from which to work your test should the need arise. - // | has.add("bug-byid", function(g, d, el){ - // | // g == global, typically window, yadda yadda - // | // d == document object - // | // el == the generic element. a `has` element. - // | return false; // fake test, byid-when-form-has-name-matching-an-id is slightly longer - // | }); - - (typeof cache[name]=="undefined" || force) && (cache[name]= test); - return now && has(name); - }; - - // since we're operating under a loader that doesn't provide a has API, we must explicitly initialize - // has as it would have otherwise been initialized by the dojo loader; use has.add to the builder - // can optimize these away iff desired - 1 || has.add("host-browser", isBrowser); - 1 || has.add("dom", isBrowser); - 1 || has.add("dojo-dom-ready-api", 1); - 1 || has.add("dojo-sniff", 1); - } - - if( 1 ){ - // Common application level tests - has.add("dom-addeventlistener", !!document.addEventListener); - has.add("touch", "ontouchstart" in document); - // I don't know if any of these tests are really correct, just a rough guess - has.add("device-width", screen.availWidth || innerWidth); - - // Tests for DOMNode.attributes[] behavior: - // - dom-attributes-explicit - attributes[] only lists explicitly user specified attributes - // - dom-attributes-specified-flag (IE8) - need to check attr.specified flag to skip attributes user didn't specify - // - Otherwise, in IE6-7. attributes[] will list hundreds of values, so need to do outerHTML to get attrs instead. - var form = document.createElement("form"); - has.add("dom-attributes-explicit", form.attributes.length == 0); // W3C - has.add("dom-attributes-specified-flag", form.attributes.length > 0 && form.attributes.length < 40); // IE8 - } - - has.clearElement = function(element){ - // summary: - // Deletes the contents of the element passed to test functions. - element.innerHTML= ""; - return element; - }; - - has.normalize = function(id, toAbsMid){ - // summary: - // Resolves id into a module id based on possibly-nested tenary expression that branches on has feature test value(s). - // - // toAbsMid: Function - // Resolves a relative module id into an absolute module id - var - tokens = id.match(/[\?:]|[^:\?]*/g), i = 0, - get = function(skip){ - var term = tokens[i++]; - if(term == ":"){ - // empty string module name, resolves to 0 - return 0; - }else{ - // postfixed with a ? means it is a feature to branch on, the term is the name of the feature - if(tokens[i++] == "?"){ - if(!skip && has(term)){ - // matched the feature, get the first value from the options - return get(); - }else{ - // did not match, get the second value, passing over the first - get(true); - return get(skip); - } - } - // a module - return term || 0; - } - }; - id = get(); - return id && toAbsMid(id); - }; - - has.load = function(id, parentRequire, loaded){ - // summary: - // Conditional loading of AMD modules based on a has feature test value. - // id: String - // Gives the resolved module id to load. - // parentRequire: Function - // The loader require function with respect to the module that contained the plugin resource in it's - // dependency list. - // loaded: Function - // Callback to loader that consumes result of plugin demand. - - if(id){ - parentRequire([id], loaded); - }else{ - loaded(); - } - }; - - return has; -}); diff --git a/lib/dojo/hash.js.uncompressed.js b/lib/dojo/hash.js.uncompressed.js deleted file mode 100644 index 4faf4af03..000000000 --- a/lib/dojo/hash.js.uncompressed.js +++ /dev/null @@ -1,256 +0,0 @@ -define("dojo/hash", ["./_base/kernel", "require", "./_base/config", "./_base/connect", "./_base/lang", "./ready", "./sniff"], - function(dojo, require, config, connect, lang, ready, has){ - - // module: - // dojo/hash - - dojo.hash = function(/* String? */ hash, /* Boolean? */ replace){ - // summary: - // Gets or sets the hash string in the browser URL. - // description: - // Handles getting and setting of location.hash. - // - // - If no arguments are passed, acts as a getter. - // - If a string is passed, acts as a setter. - // hash: - // the hash is set - #string. - // replace: - // If true, updates the hash value in the current history - // state instead of creating a new history state. - // returns: - // when used as a getter, returns the current hash string. - // when used as a setter, returns the new hash string. - // example: - // | topic.subscribe("/dojo/hashchange", context, callback); - // | - // | function callback (hashValue){ - // | // do something based on the hash value. - // | } - - // getter - if(!arguments.length){ - return _getHash(); - } - // setter - if(hash.charAt(0) == "#"){ - hash = hash.substring(1); - } - if(replace){ - _replace(hash); - }else{ - location.href = "#" + hash; - } - return hash; // String - }; - - // Global vars - var _recentHash, _ieUriMonitor, _connect, - _pollFrequency = config.hashPollFrequency || 100; - - //Internal functions - function _getSegment(str, delimiter){ - var i = str.indexOf(delimiter); - return (i >= 0) ? str.substring(i+1) : ""; - } - - function _getHash(){ - return _getSegment(location.href, "#"); - } - - function _dispatchEvent(){ - connect.publish("/dojo/hashchange", [_getHash()]); - } - - function _pollLocation(){ - if(_getHash() === _recentHash){ - return; - } - _recentHash = _getHash(); - _dispatchEvent(); - } - - function _replace(hash){ - if(_ieUriMonitor){ - if(_ieUriMonitor.isTransitioning()){ - setTimeout(lang.hitch(null,_replace,hash), _pollFrequency); - return; - } - var href = _ieUriMonitor.iframe.location.href; - var index = href.indexOf('?'); - // main frame will detect and update itself - _ieUriMonitor.iframe.location.replace(href.substring(0, index) + "?" + hash); - return; - } - location.replace("#"+hash); - !_connect && _pollLocation(); - } - - function IEUriMonitor(){ - // summary: - // Determine if the browser's URI has changed or if the user has pressed the - // back or forward button. If so, call _dispatchEvent. - // - // description: - // IE doesn't add changes to the URI's hash into the history unless the hash - // value corresponds to an actual named anchor in the document. To get around - // this IE difference, we use a background IFrame to maintain a back-forward - // history, by updating the IFrame's query string to correspond to the - // value of the main browser location's hash value. - // - // E.g. if the value of the browser window's location changes to - // - // #action=someAction - // - // ... then we'd update the IFrame's source to: - // - // ?action=someAction - // - // This design leads to a somewhat complex state machine, which is - // described below: - // - // ####s1 - // - // Stable state - neither the window's location has changed nor - // has the IFrame's location. Note that this is the 99.9% case, so - // we optimize for it. - // - // Transitions: s1, s2, s3 - // - // ####s2 - // - // Window's location changed - when a user clicks a hyperlink or - // code programmatically changes the window's URI. - // - // Transitions: s4 - // - // ####s3 - // - // Iframe's location changed as a result of user pressing back or - // forward - when the user presses back or forward, the location of - // the background's iframe changes to the previous or next value in - // its history. - // - // Transitions: s1 - // - // ####s4 - // - // IEUriMonitor has programmatically changed the location of the - // background iframe, but it's location hasn't yet changed. In this - // case we do nothing because we need to wait for the iframe's - // location to reflect its actual state. - // - // Transitions: s4, s5 - // - // ####s5 - // - // IEUriMonitor has programmatically changed the location of the - // background iframe, and the iframe's location has caught up with - // reality. In this case we need to transition to s1. - // - // Transitions: s1 - // - // The hashchange event is always dispatched on the transition back to s1. - - - // create and append iframe - var ifr = document.createElement("iframe"), - IFRAME_ID = "dojo-hash-iframe", - ifrSrc = config.dojoBlankHtmlUrl || require.toUrl("./resources/blank.html"); - - if(config.useXDomain && !config.dojoBlankHtmlUrl){ - console.warn("dojo.hash: When using cross-domain Dojo builds," - + " please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl" - + " to the path on your domain to blank.html"); - } - - ifr.id = IFRAME_ID; - ifr.src = ifrSrc + "?" + _getHash(); - ifr.style.display = "none"; - document.body.appendChild(ifr); - - this.iframe = dojo.global[IFRAME_ID]; - var recentIframeQuery, transitioning, expectedIFrameQuery, docTitle, ifrOffline, - iframeLoc = this.iframe.location; - - function resetState(){ - _recentHash = _getHash(); - recentIframeQuery = ifrOffline ? _recentHash : _getSegment(iframeLoc.href, "?"); - transitioning = false; - expectedIFrameQuery = null; - } - - this.isTransitioning = function(){ - return transitioning; - }; - - this.pollLocation = function(){ - if(!ifrOffline){ - try{ - //see if we can access the iframe's location without a permission denied error - var iframeSearch = _getSegment(iframeLoc.href, "?"); - //good, the iframe is same origin (no thrown exception) - if(document.title != docTitle){ //sync title of main window with title of iframe. - docTitle = this.iframe.document.title = document.title; - } - }catch(e){ - //permission denied - server cannot be reached. - ifrOffline = true; - console.error("dojo.hash: Error adding history entry. Server unreachable."); - } - } - var hash = _getHash(); - if(transitioning && _recentHash === hash){ - // we're in an iframe transition (s4 or s5) - if(ifrOffline || iframeSearch === expectedIFrameQuery){ - // s5 (iframe caught up to main window or iframe offline), transition back to s1 - resetState(); - _dispatchEvent(); - }else{ - // s4 (waiting for iframe to catch up to main window) - setTimeout(lang.hitch(this,this.pollLocation),0); - return; - } - }else if(_recentHash === hash && (ifrOffline || recentIframeQuery === iframeSearch)){ - // we're in stable state (s1, iframe query == main window hash), do nothing - }else{ - // the user has initiated a URL change somehow. - // sync iframe query <-> main window hash - if(_recentHash !== hash){ - // s2 (main window location changed), set iframe url and transition to s4 - _recentHash = hash; - transitioning = true; - expectedIFrameQuery = hash; - ifr.src = ifrSrc + "?" + expectedIFrameQuery; - ifrOffline = false; //we're updating the iframe src - set offline to false so we can check again on next poll. - setTimeout(lang.hitch(this,this.pollLocation),0); //yielded transition to s4 while iframe reloads. - return; - }else if(!ifrOffline){ - // s3 (iframe location changed via back/forward button), set main window url and transition to s1. - location.href = "#" + iframeLoc.search.substring(1); - resetState(); - _dispatchEvent(); - } - } - setTimeout(lang.hitch(this,this.pollLocation), _pollFrequency); - }; - resetState(); // initialize state (transition to s1) - setTimeout(lang.hitch(this,this.pollLocation), _pollFrequency); - } - ready(function(){ - if("onhashchange" in dojo.global && (!has("ie") || (has("ie") >= 8 && document.compatMode != "BackCompat"))){ //need this IE browser test because "onhashchange" exists in IE8 in IE7 mode - _connect = connect.connect(dojo.global,"onhashchange",_dispatchEvent); - }else{ - if(document.addEventListener){ // Non-IE - _recentHash = _getHash(); - setInterval(_pollLocation, _pollFrequency); //Poll the window location for changes - }else if(document.attachEvent){ // IE7- - //Use hidden iframe in versions of IE that don't have onhashchange event - _ieUriMonitor = new IEUriMonitor(); - } - // else non-supported browser, do nothing. - } - }); - - return dojo.hash; - -}); diff --git a/lib/dojo/hccss.js.uncompressed.js b/lib/dojo/hccss.js.uncompressed.js deleted file mode 100644 index feb953968..000000000 --- a/lib/dojo/hccss.js.uncompressed.js +++ /dev/null @@ -1,54 +0,0 @@ -define("dojo/hccss", [ - "require", // require.toUrl - "./_base/config", // config.blankGif - "./dom-class", // domClass.add - "./dom-style", // domStyle.getComputedStyle - "./has", - "./ready", // ready - "./_base/window" // win.body -], function(require, config, domClass, domStyle, has, ready, win){ - - // module: - // dojo/hccss - - /*===== - return function(){ - // summary: - // Test if computer is in high contrast mode (i.e. if browser is not displaying background images). - // Defines `has("highcontrast")` and sets `dj_a11y` CSS class on `` if machine is in high contrast mode. - // Returns `has()` method; - }; - =====*/ - - // Has() test for when background images aren't displayed. Don't call has("highcontrast") before dojo/domReady!. - has.add("highcontrast", function(){ - // note: if multiple documents, doesn't matter which one we use - var div = win.doc.createElement("div"); - div.style.cssText = "border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;" + - "background-image: url(" + (config.blankGif || require.toUrl("./resources/blank.gif")) + ");"; - win.body().appendChild(div); - - var cs = domStyle.getComputedStyle(div), - bkImg = cs.backgroundImage, - hc = (cs.borderTopColor == cs.borderRightColor) || - (bkImg && (bkImg == "none" || bkImg == "url(invalid-url:)" )); - - if(has("ie") <= 8){ - div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014 - }else{ - win.body().removeChild(div); - } - - return hc; - }); - - // Priority is 90 to run ahead of parser priority of 100. For 2.0, remove the ready() call and instead - // change this module to depend on dojo/domReady! - ready(90, function(){ - if(has("highcontrast")){ - domClass.add(win.body(), "dj_a11y"); - } - }); - - return has; -}); diff --git a/lib/dojo/html.js.uncompressed.js b/lib/dojo/html.js.uncompressed.js deleted file mode 100644 index 0e3339cf2..000000000 --- a/lib/dojo/html.js.uncompressed.js +++ /dev/null @@ -1,374 +0,0 @@ -define("dojo/html", ["./_base/kernel", "./_base/lang", "./_base/array", "./_base/declare", "./dom", "./dom-construct", "./parser"], - function(kernel, lang, darray, declare, dom, domConstruct, parser){ - // module: - // dojo/html - - var html = { - // summary: - // TODOC - }; - lang.setObject("dojo.html", html); - - // the parser might be needed.. - - // idCounter is incremented with each instantiation to allow assignment of a unique id for tracking, logging purposes - var idCounter = 0; - - html._secureForInnerHtml = function(/*String*/ cont){ - // summary: - // removes !DOCTYPE and title elements from the html string. - // - // khtml is picky about dom faults, you can't attach a style or `` node as child of body - // must go into head, so we need to cut out those tags - // cont: - // An html string for insertion into the dom - // - return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig, ""); // String - }; - - html._emptyNode = domConstruct.empty; - /*===== - dojo.html._emptyNode = function(node){ - // summary: - // Removes all child nodes from the given node. Deprecated, should use dojo/dom-constuct.empty() directly - // instead. - // node: DOMNode - // the parent element - }; - =====*/ - - html._setNodeContent = function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont){ - // summary: - // inserts the given content into the given node - // node: - // the parent element - // content: - // the content to be set on the parent element. - // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes - - // always empty - domConstruct.empty(node); - - if(cont){ - if(typeof cont == "string"){ - cont = domConstruct.toDom(cont, node.ownerDocument); - } - if(!cont.nodeType && lang.isArrayLike(cont)){ - // handle as enumerable, but it may shrink as we enumerate it - for(var startlen=cont.length, i=0; i<cont.length; i=startlen==cont.length ? i+1 : 0){ - domConstruct.place( cont[i], node, "last"); - } - }else{ - // pass nodes, documentFragments and unknowns through to dojo.place - domConstruct.place(cont, node, "last"); - } - } - - // return DomNode - return node; - }; - - // we wrap up the content-setting operation in a object - html._ContentSetter = declare("dojo.html._ContentSetter", null, - { - // node: DomNode|String - // An node which will be the parent element that we set content into - node: "", - - // content: String|DomNode|DomNode[] - // The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes - content: "", - - // id: String? - // Usually only used internally, and auto-generated with each instance - id: "", - - // cleanContent: Boolean - // Should the content be treated as a full html document, - // and the real content stripped of <html>, <body> wrapper before injection - cleanContent: false, - - // extractContent: Boolean - // Should the content be treated as a full html document, - // and the real content stripped of `<html> <body>` wrapper before injection - extractContent: false, - - // parseContent: Boolean - // Should the node by passed to the parser after the new content is set - parseContent: false, - - // parserScope: String - // Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, - // will search for data-dojo-type (or dojoType). For backwards compatibility - // reasons defaults to dojo._scopeName (which is "dojo" except when - // multi-version support is used, when it will be something like dojo16, dojo20, etc.) - parserScope: kernel._scopeName, - - // startup: Boolean - // Start the child widgets after parsing them. Only obeyed if parseContent is true. - startup: true, - - // lifecycle methods - constructor: function(/*Object*/ params, /*String|DomNode*/ node){ - // summary: - // Provides a configurable, extensible object to wrap the setting on content on a node - // call the set() method to actually set the content.. - - // the original params are mixed directly into the instance "this" - lang.mixin(this, params || {}); - - // give precedence to params.node vs. the node argument - // and ensure its a node, not an id string - node = this.node = dom.byId( this.node || node ); - - if(!this.id){ - this.id = [ - "Setter", - (node) ? node.id || node.tagName : "", - idCounter++ - ].join("_"); - } - }, - set: function(/* String|DomNode|NodeList? */ cont, /*Object?*/ params){ - // summary: - // front-end to the set-content sequence - // cont: - // An html string, node or enumerable list of nodes for insertion into the dom - // If not provided, the object's content property will be used - if(undefined !== cont){ - this.content = cont; - } - // in the re-use scenario, set needs to be able to mixin new configuration - if(params){ - this._mixin(params); - } - - this.onBegin(); - this.setContent(); - - var ret = this.onEnd(); - - if(ret && ret.then){ - // Make dojox/html/_ContentSetter.set() return a Promise that resolves when load and parse complete. - return ret; - }else{ - // Vanilla dojo/html._ContentSetter.set() returns a DOMNode for back compat. For 2.0, switch it to - // return a Deferred like above. - return this.node; - } - }, - - setContent: function(){ - // summary: - // sets the content on the node - - var node = this.node; - if(!node){ - // can't proceed - throw new Error(this.declaredClass + ": setContent given no node"); - } - try{ - node = html._setNodeContent(node, this.content); - }catch(e){ - // check if a domfault occurs when we are appending this.errorMessage - // like for instance if domNode is a UL and we try append a DIV - - // FIXME: need to allow the user to provide a content error message string - var errMess = this.onContentError(e); - try{ - node.innerHTML = errMess; - }catch(e){ - console.error('Fatal ' + this.declaredClass + '.setContent could not change content due to '+e.message, e); - } - } - // always put back the node for the next method - this.node = node; // DomNode - }, - - empty: function(){ - // summary: - // cleanly empty out existing content - - // If there is a parse in progress, cancel it. - if(this.parseDeferred){ - if(!this.parseDeferred.isResolved()){ - this.parseDeferred.cancel(); - } - delete this.parseDeferred; - } - - // destroy any widgets from a previous run - // NOTE: if you don't want this you'll need to empty - // the parseResults array property yourself to avoid bad things happening - if(this.parseResults && this.parseResults.length){ - darray.forEach(this.parseResults, function(w){ - if(w.destroy){ - w.destroy(); - } - }); - delete this.parseResults; - } - // this is fast, but if you know its already empty or safe, you could - // override empty to skip this step - domConstruct.empty(this.node); - }, - - onBegin: function(){ - // summary: - // Called after instantiation, but before set(); - // It allows modification of any of the object properties - - // including the node and content provided - before the set operation actually takes place - // This default implementation checks for cleanContent and extractContent flags to - // optionally pre-process html string content - var cont = this.content; - - if(lang.isString(cont)){ - if(this.cleanContent){ - cont = html._secureForInnerHtml(cont); - } - - if(this.extractContent){ - var match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); - if(match){ cont = match[1]; } - } - } - - // clean out the node and any cruft associated with it - like widgets - this.empty(); - - this.content = cont; - return this.node; // DomNode - }, - - onEnd: function(){ - // summary: - // Called after set(), when the new content has been pushed into the node - // It provides an opportunity for post-processing before handing back the node to the caller - // This default implementation checks a parseContent flag to optionally run the dojo parser over the new content - if(this.parseContent){ - // populates this.parseResults and this.parseDeferred if you need those.. - this._parse(); - } - return this.node; // DomNode - // TODO: for 2.0 return a Promise indicating that the parse completed. - }, - - tearDown: function(){ - // summary: - // manually reset the Setter instance if its being re-used for example for another set() - // description: - // tearDown() is not called automatically. - // In normal use, the Setter instance properties are simply allowed to fall out of scope - // but the tearDown method can be called to explicitly reset this instance. - delete this.parseResults; - delete this.parseDeferred; - delete this.node; - delete this.content; - }, - - onContentError: function(err){ - return "Error occurred setting content: " + err; - }, - - onExecError: function(err){ - return "Error occurred executing scripts: " + err; - }, - - _mixin: function(params){ - // mix properties/methods into the instance - // TODO: the intention with tearDown is to put the Setter's state - // back to that of the original constructor (vs. deleting/resetting everything regardless of ctor params) - // so we could do something here to move the original properties aside for later restoration - var empty = {}, key; - for(key in params){ - if(key in empty){ continue; } - // TODO: here's our opportunity to mask the properties we don't consider configurable/overridable - // .. but history shows we'll almost always guess wrong - this[key] = params[key]; - } - }, - _parse: function(){ - // summary: - // runs the dojo parser over the node contents, storing any results in this.parseResults - // and the parse promise in this.parseDeferred - // Any errors resulting from parsing are passed to _onError for handling - - var rootNode = this.node; - try{ - // store the results (widgets, whatever) for potential retrieval - var inherited = {}; - darray.forEach(["dir", "lang", "textDir"], function(name){ - if(this[name]){ - inherited[name] = this[name]; - } - }, this); - var self = this; - this.parseDeferred = parser.parse({ - rootNode: rootNode, - noStart: !this.startup, - inherited: inherited, - scope: this.parserScope - }).then(function(results){ - return self.parseResults = results; - }); - }catch(e){ - this._onError('Content', e, "Error parsing in _ContentSetter#"+this.id); - } - }, - - _onError: function(type, err, consoleText){ - // summary: - // shows user the string that is returned by on[type]Error - // override/implement on[type]Error and return your own string to customize - var errText = this['on' + type + 'Error'].call(this, err); - if(consoleText){ - console.error(consoleText, err); - }else if(errText){ // a empty string won't change current content - html._setNodeContent(this.node, errText, true); - } - } - }); // end declare() - - html.set = function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont, /*Object?*/ params){ - // summary: - // inserts (replaces) the given content into the given node. dojo.place(cont, node, "only") - // may be a better choice for simple HTML insertion. - // description: - // Unless you need to use the params capabilities of this method, you should use - // dojo.place(cont, node, "only"). dojo.place() has more robust support for injecting - // an HTML string into the DOM, but it only handles inserting an HTML string as DOM - // elements, or inserting a DOM node. dojo.place does not handle NodeList insertions - // or the other capabilities as defined by the params object for this method. - // node: - // the parent element that will receive the content - // cont: - // the content to be set on the parent element. - // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes - // params: - // Optional flags/properties to configure the content-setting. See dojo/html/_ContentSetter - // example: - // A safe string/node/nodelist content replacement/injection with hooks for extension - // Example Usage: - // | html.set(node, "some string"); - // | html.set(node, contentNode, {options}); - // | html.set(node, myNode.childNodes, {options}); - if(undefined == cont){ - console.warn("dojo.html.set: no cont argument provided, using empty string"); - cont = ""; - } - if(!params){ - // simple and fast - return html._setNodeContent(node, cont, true); - }else{ - // more options but slower - // note the arguments are reversed in order, to match the convention for instantiation via the parser - var op = new html._ContentSetter(lang.mixin( - params, - { content: cont, node: node } - )); - return op.set(); - } - }; - - return html; -}); diff --git a/lib/dojo/i18n.js.uncompressed.js b/lib/dojo/i18n.js.uncompressed.js deleted file mode 100644 index 64cf1d665..000000000 --- a/lib/dojo/i18n.js.uncompressed.js +++ /dev/null @@ -1,550 +0,0 @@ -define("dojo/i18n", ["./_base/kernel", "require", "./has", "./_base/array", "./_base/config", "./_base/lang", "./_base/xhr", "./json", "module"], - function(dojo, require, has, array, config, lang, xhr, json, module){ - - // module: - // dojo/i18n - - has.add("dojo-preload-i18n-Api", - // if true, define the preload localizations machinery - 1 - ); - - 1 || has.add("dojo-v1x-i18n-Api", - // if true, define the v1.x i18n functions - 1 - ); - - var - thisModule = dojo.i18n = - { - // summary: - // This module implements the dojo/i18n! plugin and the v1.6- i18n API - // description: - // We choose to include our own plugin to leverage functionality already contained in dojo - // and thereby reduce the size of the plugin compared to various loader implementations. Also, this - // allows foreign AMD loaders to be used without their plugins. - }, - - nlsRe = - // regexp for reconstructing the master bundle name from parts of the regexp match - // nlsRe.exec("foo/bar/baz/nls/en-ca/foo") gives: - // ["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"] - // nlsRe.exec("foo/bar/baz/nls/foo") gives: - // ["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""] - // so, if match[5] is blank, it means this is the top bundle definition. - // courtesy of http://requirejs.org - /(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/, - - getAvailableLocales = function( - root, - locale, - bundlePath, - bundleName - ){ - // summary: - // return a vector of module ids containing all available locales with respect to the target locale - // For example, assuming: - // - // - the root bundle indicates specific bundles for "fr" and "fr-ca", - // - bundlePath is "myPackage/nls" - // - bundleName is "myBundle" - // - // Then a locale argument of "fr-ca" would return - // - // ["myPackage/nls/myBundle", "myPackage/nls/fr/myBundle", "myPackage/nls/fr-ca/myBundle"] - // - // Notice that bundles are returned least-specific to most-specific, starting with the root. - // - // If root===false indicates we're working with a pre-AMD i18n bundle that doesn't tell about the available locales; - // therefore, assume everything is available and get 404 errors that indicate a particular localization is not available - - for(var result = [bundlePath + bundleName], localeParts = locale.split("-"), current = "", i = 0; i<localeParts.length; i++){ - current += (current ? "-" : "") + localeParts[i]; - if(!root || root[current]){ - result.push(bundlePath + current + "/" + bundleName); - } - } - return result; - }, - - cache = {}, - - getBundleName = function(moduleName, bundleName, locale){ - locale = locale ? locale.toLowerCase() : dojo.locale; - moduleName = moduleName.replace(/\./g, "/"); - bundleName = bundleName.replace(/\./g, "/"); - return (/root/i.test(locale)) ? - (moduleName + "/nls/" + bundleName) : - (moduleName + "/nls/" + locale + "/" + bundleName); - }, - - getL10nName = dojo.getL10nName = function(moduleName, bundleName, locale){ - return moduleName = module.id + "!" + getBundleName(moduleName, bundleName, locale); - }, - - doLoad = function(require, bundlePathAndName, bundlePath, bundleName, locale, load){ - // summary: - // get the root bundle which instructs which other bundles are required to construct the localized bundle - require([bundlePathAndName], function(root){ - var current = lang.clone(root.root), - availableLocales = getAvailableLocales(!root._v1x && root, locale, bundlePath, bundleName); - require(availableLocales, function(){ - for (var i = 1; i<availableLocales.length; i++){ - current = lang.mixin(lang.clone(current), arguments[i]); - } - // target may not have been resolve (e.g., maybe only "fr" exists when "fr-ca" was requested) - var target = bundlePathAndName + "/" + locale; - cache[target] = current; - load(); - }); - }); - }, - - normalize = function(id, toAbsMid){ - // summary: - // id may be relative. - // preload has form `*preload*<path>/nls/<module>*<flattened locales>` and - // therefore never looks like a relative - return /^\./.test(id) ? toAbsMid(id) : id; - }, - - getLocalesToLoad = function(targetLocale){ - var list = config.extraLocale || []; - list = lang.isArray(list) ? list : [list]; - list.push(targetLocale); - return list; - }, - - load = function(id, require, load){ - // summary: - // id is in one of the following formats - // - // 1. <path>/nls/<bundle> - // => load the bundle, localized to config.locale; load all bundles localized to - // config.extraLocale (if any); return the loaded bundle localized to config.locale. - // - // 2. <path>/nls/<locale>/<bundle> - // => load then return the bundle localized to <locale> - // - // 3. *preload*<path>/nls/<module>*<JSON array of available locales> - // => for config.locale and all config.extraLocale, load all bundles found - // in the best-matching bundle rollup. A value of 1 is returned, which - // is meaningless other than to say the plugin is executing the requested - // preloads - // - // In cases 1 and 2, <path> is always normalized to an absolute module id upon entry; see - // normalize. In case 3, it <path> is assumed to be absolute; this is arranged by the builder. - // - // To load a bundle means to insert the bundle into the plugin's cache and publish the bundle - // value to the loader. Given <path>, <bundle>, and a particular <locale>, the cache key - // - // <path>/nls/<bundle>/<locale> - // - // will hold the value. Similarly, then plugin will publish this value to the loader by - // - // define("<path>/nls/<bundle>/<locale>", <bundle-value>); - // - // Given this algorithm, other machinery can provide fast load paths be preplacing - // values in the plugin's cache, which is public. When a load is demanded the - // cache is inspected before starting any loading. Explicitly placing values in the plugin - // cache is an advanced/experimental feature that should not be needed; use at your own risk. - // - // For the normal AMD algorithm, the root bundle is loaded first, which instructs the - // plugin what additional localized bundles are required for a particular locale. These - // additional locales are loaded and a mix of the root and each progressively-specific - // locale is returned. For example: - // - // 1. The client demands "dojo/i18n!some/path/nls/someBundle - // - // 2. The loader demands load(some/path/nls/someBundle) - // - // 3. This plugin require's "some/path/nls/someBundle", which is the root bundle. - // - // 4. Assuming config.locale is "ab-cd-ef" and the root bundle indicates that localizations - // are available for "ab" and "ab-cd-ef" (note the missing "ab-cd", then the plugin - // requires "some/path/nls/ab/someBundle" and "some/path/nls/ab-cd-ef/someBundle" - // - // 5. Upon receiving all required bundles, the plugin constructs the value of the bundle - // ab-cd-ef as... - // - // mixin(mixin(mixin({}, require("some/path/nls/someBundle"), - // require("some/path/nls/ab/someBundle")), - // require("some/path/nls/ab-cd-ef/someBundle")); - // - // This value is inserted into the cache and published to the loader at the - // key/module-id some/path/nls/someBundle/ab-cd-ef. - // - // The special preload signature (case 3) instructs the plugin to stop servicing all normal requests - // (further preload requests will be serviced) until all ongoing preloading has completed. - // - // The preload signature instructs the plugin that a special rollup module is available that contains - // one or more flattened, localized bundles. The JSON array of available locales indicates which locales - // are available. Here is an example: - // - // *preload*some/path/nls/someModule*["root", "ab", "ab-cd-ef"] - // - // This indicates the following rollup modules are available: - // - // some/path/nls/someModule_ROOT - // some/path/nls/someModule_ab - // some/path/nls/someModule_ab-cd-ef - // - // Each of these modules is a normal AMD module that contains one or more flattened bundles in a hash. - // For example, assume someModule contained the bundles some/bundle/path/someBundle and - // some/bundle/path/someOtherBundle, then some/path/nls/someModule_ab would be expressed as follows: - // - // define({ - // some/bundle/path/someBundle:<value of someBundle, flattened with respect to locale ab>, - // some/bundle/path/someOtherBundle:<value of someOtherBundle, flattened with respect to locale ab>, - // }); - // - // E.g., given this design, preloading for locale=="ab" can execute the following algorithm: - // - // require(["some/path/nls/someModule_ab"], function(rollup){ - // for(var p in rollup){ - // var id = p + "/ab", - // cache[id] = rollup[p]; - // define(id, rollup[p]); - // } - // }); - // - // Similarly, if "ab-cd" is requested, the algorithm can determine that "ab" is the best available and - // load accordingly. - // - // The builder will write such rollups for every layer if a non-empty localeList profile property is - // provided. Further, the builder will include the following cache entry in the cache associated with - // any layer. - // - // "*now":function(r){r(['dojo/i18n!*preload*<path>/nls/<module>*<JSON array of available locales>']);} - // - // The *now special cache module instructs the loader to apply the provided function to context-require - // with respect to the particular layer being defined. This causes the plugin to hold all normal service - // requests until all preloading is complete. - // - // Notice that this algorithm is rarely better than the standard AMD load algorithm. Consider the normal case - // where the target locale has a single segment and a layer depends on a single bundle: - // - // Without Preloads: - // - // 1. Layer loads root bundle. - // 2. bundle is demanded; plugin loads single localized bundle. - // - // With Preloads: - // - // 1. Layer causes preloading of target bundle. - // 2. bundle is demanded; service is delayed until preloading complete; bundle is returned. - // - // In each case a single transaction is required to load the target bundle. In cases where multiple bundles - // are required and/or the locale has multiple segments, preloads still requires a single transaction whereas - // the normal path requires an additional transaction for each additional bundle/locale-segment. However all - // of these additional transactions can be done concurrently. Owing to this analysis, the entire preloading - // algorithm can be discard during a build by setting the has feature dojo-preload-i18n-Api to false. - - if(has("dojo-preload-i18n-Api")){ - var split = id.split("*"), - preloadDemand = split[1] == "preload"; - if(preloadDemand){ - if(!cache[id]){ - // use cache[id] to prevent multiple preloads of the same preload; this shouldn't happen, but - // who knows what over-aggressive human optimizers may attempt - cache[id] = 1; - preloadL10n(split[2], json.parse(split[3]), 1, require); - } - // don't stall the loader! - load(1); - } - if(preloadDemand || waitForPreloads(id, require, load)){ - return; - } - } - - var match = nlsRe.exec(id), - bundlePath = match[1] + "/", - bundleName = match[5] || match[4], - bundlePathAndName = bundlePath + bundleName, - localeSpecified = (match[5] && match[4]), - targetLocale = localeSpecified || dojo.locale, - loadTarget = bundlePathAndName + "/" + targetLocale, - loadList = localeSpecified ? [targetLocale] : getLocalesToLoad(targetLocale), - remaining = loadList.length, - finish = function(){ - if(!--remaining){ - load(lang.delegate(cache[loadTarget])); - } - }; - array.forEach(loadList, function(locale){ - var target = bundlePathAndName + "/" + locale; - if(has("dojo-preload-i18n-Api")){ - checkForLegacyModules(target); - } - if(!cache[target]){ - doLoad(require, bundlePathAndName, bundlePath, bundleName, locale, finish); - }else{ - finish(); - } - }); - }; - - if(has("dojo-unit-tests")){ - var unitTests = thisModule.unitTests = []; - } - - if(has("dojo-preload-i18n-Api") || 1 ){ - var normalizeLocale = thisModule.normalizeLocale = function(locale){ - var result = locale ? locale.toLowerCase() : dojo.locale; - return result == "root" ? "ROOT" : result; - }, - - isXd = function(mid, contextRequire){ - return ( 1 && 1 ) ? - contextRequire.isXdUrl(require.toUrl(mid + ".js")) : - true; - }, - - preloading = 0, - - preloadWaitQueue = [], - - preloadL10n = thisModule._preloadLocalizations = function(/*String*/bundlePrefix, /*Array*/localesGenerated, /*boolean?*/ guaranteedAmdFormat, /*function?*/ contextRequire){ - // summary: - // Load available flattened resource bundles associated with a particular module for dojo/locale and all dojo/config.extraLocale (if any) - // description: - // Only called by built layer files. The entire locale hierarchy is loaded. For example, - // if locale=="ab-cd", then ROOT, "ab", and "ab-cd" are loaded. This is different than v1.6- - // in that the v1.6- would only load ab-cd...which was *always* flattened. - // - // If guaranteedAmdFormat is true, then the module can be loaded with require thereby circumventing the detection algorithm - // and the extra possible extra transaction. - - // If this function is called from legacy code, then guaranteedAmdFormat and contextRequire will be undefined. Since the function - // needs a require in order to resolve module ids, fall back to the context-require associated with this dojo/i18n module, which - // itself may have been mapped. - contextRequire = contextRequire || require; - - function doRequire(mid, callback){ - if(isXd(mid, contextRequire) || guaranteedAmdFormat){ - contextRequire([mid], callback); - }else{ - syncRequire([mid], callback, contextRequire); - } - } - - function forEachLocale(locale, func){ - // given locale= "ab-cd-ef", calls func on "ab-cd-ef", "ab-cd", "ab", "ROOT"; stops calling the first time func returns truthy - var parts = locale.split("-"); - while(parts.length){ - if(func(parts.join("-"))){ - return; - } - parts.pop(); - } - func("ROOT"); - } - - function preload(locale){ - locale = normalizeLocale(locale); - forEachLocale(locale, function(loc){ - if(array.indexOf(localesGenerated, loc)>=0){ - var mid = bundlePrefix.replace(/\./g, "/")+"_"+loc; - preloading++; - doRequire(mid, function(rollup){ - for(var p in rollup){ - cache[require.toAbsMid(p) + "/" + loc] = rollup[p]; - } - --preloading; - while(!preloading && preloadWaitQueue.length){ - load.apply(null, preloadWaitQueue.shift()); - } - }); - return true; - } - return false; - }); - } - - preload(); - array.forEach(dojo.config.extraLocale, preload); - }, - - waitForPreloads = function(id, require, load){ - if(preloading){ - preloadWaitQueue.push([id, require, load]); - } - return preloading; - }, - - checkForLegacyModules = function() - {}; - } - - if( 1 ){ - // this code path assumes the dojo loader and won't work with a standard AMD loader - var amdValue = {}, - evalBundle = - // use the function ctor to keep the minifiers away (also come close to global scope, but this is secondary) - new Function( - "__bundle", // the bundle to evalutate - "__checkForLegacyModules", // a function that checks if __bundle defined __mid in the global space - "__mid", // the mid that __bundle is intended to define - "__amdValue", - - // returns one of: - // 1 => the bundle was an AMD bundle - // a legacy bundle object that is the value of __mid - // instance of Error => could not figure out how to evaluate bundle - - // used to detect when __bundle calls define - "var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;}," - + " require = function(){define.called = 1;};" - - + "try{" - + "define.called = 0;" - + "eval(__bundle);" - + "if(define.called==1)" - // bundle called define; therefore signal it's an AMD bundle - + "return __amdValue;" - - + "if((__checkForLegacyModules = __checkForLegacyModules(__mid)))" - // bundle was probably a v1.6- built NLS flattened NLS bundle that defined __mid in the global space - + "return __checkForLegacyModules;" - - + "}catch(e){}" - // evaulating the bundle was *neither* an AMD *nor* a legacy flattened bundle - // either way, re-eval *after* surrounding with parentheses - - + "try{" - + "return eval('('+__bundle+')');" - + "}catch(e){" - + "return e;" - + "}" - ), - - syncRequire = function(deps, callback, require){ - var results = []; - array.forEach(deps, function(mid){ - var url = require.toUrl(mid + ".js"); - - function load(text){ - var result = evalBundle(text, checkForLegacyModules, mid, amdValue); - if(result===amdValue){ - // the bundle was an AMD module; re-inject it through the normal AMD path - // we gotta do this since it could be an anonymous module and simply evaluating - // the text here won't provide the loader with the context to know what - // module is being defined()'d. With browser caching, this should be free; further - // this entire code path can be circumvented by using the AMD format to begin with - results.push(cache[url] = amdValue.result); - }else{ - if(result instanceof Error){ - console.error("failed to evaluate i18n bundle; url=" + url, result); - result = {}; - } - // nls/<locale>/<bundle-name> indicates not the root. - results.push(cache[url] = (/nls\/[^\/]+\/[^\/]+$/.test(url) ? result : {root:result, _v1x:1})); - } - } - - if(cache[url]){ - results.push(cache[url]); - }else{ - var bundle = require.syncLoadNls(mid); - // don't need to check for legacy since syncLoadNls returns a module if the module - // (1) was already loaded, or (2) was in the cache. In case 1, if syncRequire is called - // from getLocalization --> load, then load will have called checkForLegacyModules() before - // calling syncRequire; if syncRequire is called from preloadLocalizations, then we - // don't care about checkForLegacyModules() because that will be done when a particular - // bundle is actually demanded. In case 2, checkForLegacyModules() is never relevant - // because cached modules are always v1.7+ built modules. - if(bundle){ - results.push(bundle); - }else{ - if(!xhr){ - try{ - require.getText(url, true, load); - }catch(e){ - results.push(cache[url] = {}); - } - }else{ - xhr.get({ - url:url, - sync:true, - load:load, - error:function(){ - results.push(cache[url] = {}); - } - }); - } - } - } - }); - callback && callback.apply(null, results); - }; - - checkForLegacyModules = function(target){ - // legacy code may have already loaded [e.g] the raw bundle x/y/z at x.y.z; when true, push into the cache - for(var result, names = target.split("/"), object = dojo.global[names[0]], i = 1; object && i<names.length-1; object = object[names[i++]]){} - if(object){ - result = object[names[i]]; - if(!result){ - // fallback for incorrect bundle build of 1.6 - result = object[names[i].replace(/-/g,"_")]; - } - if(result){ - cache[target] = result; - } - } - return result; - }; - - thisModule.getLocalization = function(moduleName, bundleName, locale){ - var result, - l10nName = getBundleName(moduleName, bundleName, locale); - load( - l10nName, - - // isXd() and syncRequire() need a context-require in order to resolve the mid with respect to a reference module. - // Since this legacy function does not have the concept of a reference module, resolve with respect to this - // dojo/i18n module, which, itself may have been mapped. - (!isXd(l10nName, require) ? function(deps, callback){ syncRequire(deps, callback, require); } : require), - - function(result_){ result = result_; } - ); - return result; - }; - - if(has("dojo-unit-tests")){ - unitTests.push(function(doh){ - doh.register("tests.i18n.unit", function(t){ - var check; - - check = evalBundle("{prop:1}", checkForLegacyModules, "nonsense", amdValue); - t.is({prop:1}, check); t.is(undefined, check[1]); - - check = evalBundle("({prop:1})", checkForLegacyModules, "nonsense", amdValue); - t.is({prop:1}, check); t.is(undefined, check[1]); - - check = evalBundle("{'prop-x':1}", checkForLegacyModules, "nonsense", amdValue); - t.is({'prop-x':1}, check); t.is(undefined, check[1]); - - check = evalBundle("({'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is({'prop-x':1}, check); t.is(undefined, check[1]); - - check = evalBundle("define({'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is(amdValue, check); t.is({'prop-x':1}, amdValue.result); - - check = evalBundle("define('some/module', {'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is(amdValue, check); t.is({'prop-x':1}, amdValue.result); - - check = evalBundle("this is total nonsense and should throw an error", checkForLegacyModules, "nonsense", amdValue); - t.is(check instanceof Error, true); - }); - }); - } - } - - return lang.mixin(thisModule, { - dynamic:true, - normalize:normalize, - load:load, - cache:cache - }); -}); diff --git a/lib/dojo/io-query.js.uncompressed.js b/lib/dojo/io-query.js.uncompressed.js deleted file mode 100644 index 1e9de9349..000000000 --- a/lib/dojo/io-query.js.uncompressed.js +++ /dev/null @@ -1,97 +0,0 @@ -define("dojo/io-query", ["./_base/lang"], function(lang){ - -// module: -// dojo/io-query - -var backstop = {}; - -return { -// summary: -// This module defines query string processing functions. - - objectToQuery: function objectToQuery(/*Object*/ map){ - // summary: - // takes a name/value mapping object and returns a string representing - // a URL-encoded version of that object. - // example: - // this object: - // - // | { - // | blah: "blah", - // | multi: [ - // | "thud", - // | "thonk" - // | ] - // | }; - // - // yields the following query string: - // - // | "blah=blah&multi=thud&multi=thonk" - - // FIXME: need to implement encodeAscii!! - var enc = encodeURIComponent, pairs = []; - for(var name in map){ - var value = map[name]; - if(value != backstop[name]){ - var assign = enc(name) + "="; - if(lang.isArray(value)){ - for(var i = 0, l = value.length; i < l; ++i){ - pairs.push(assign + enc(value[i])); - } - }else{ - pairs.push(assign + enc(value)); - } - } - } - return pairs.join("&"); // String - }, - - queryToObject: function queryToObject(/*String*/ str){ - // summary: - // Create an object representing a de-serialized query section of a - // URL. Query keys with multiple values are returned in an array. - // - // example: - // This string: - // - // | "foo=bar&foo=baz&thinger=%20spaces%20=blah&zonk=blarg&" - // - // results in this object structure: - // - // | { - // | foo: [ "bar", "baz" ], - // | thinger: " spaces =blah", - // | zonk: "blarg" - // | } - // - // Note that spaces and other urlencoded entities are correctly - // handled. - - // FIXME: should we grab the URL string if we're not passed one? - var dec = decodeURIComponent, qp = str.split("&"), ret = {}, name, val; - for(var i = 0, l = qp.length, item; i < l; ++i){ - item = qp[i]; - if(item.length){ - var s = item.indexOf("="); - if(s < 0){ - name = dec(item); - val = ""; - }else{ - name = dec(item.slice(0, s)); - val = dec(item.slice(s + 1)); - } - if(typeof ret[name] == "string"){ // inline'd type check - ret[name] = [ret[name]]; - } - - if(lang.isArray(ret[name])){ - ret[name].push(val); - }else{ - ret[name] = val; - } - } - } - return ret; // Object - } -}; -}); \ No newline at end of file diff --git a/lib/dojo/io/iframe.js.uncompressed.js b/lib/dojo/io/iframe.js.uncompressed.js deleted file mode 100644 index 3ce93e0b2..000000000 --- a/lib/dojo/io/iframe.js.uncompressed.js +++ /dev/null @@ -1,190 +0,0 @@ -define("dojo/io/iframe", [ - "../_base/config", "../_base/json", "../_base/kernel", /*===== "../_base/declare", =====*/ "../_base/lang", - "../_base/xhr", "../sniff", "../_base/window", - "../dom", "../dom-construct", "../query", "require", "../aspect", "../request/iframe" -], function(config, json, kernel, /*===== declare, =====*/ lang, xhr, has, win, dom, domConstruct, query, require, aspect, _iframe){ - -// module: -// dojo/io/iframe - -kernel.deprecated("dojo/io/iframe", "Use dojo/request/iframe.", "2.0"); - -/*===== -var __ioArgs = declare(kernel.__IoArgs, { - // method: String? - // The HTTP method to use. "GET" or "POST" are the only supported - // values. It will try to read the value from the form node's - // method, then try this argument. If neither one exists, then it - // defaults to POST. - // handleAs: String? - // Specifies what format the result data should be given to the - // load/handle callback. Valid values are: text, html, xml, json, - // javascript. IMPORTANT: For all values EXCEPT html and xml, The - // server response should be an HTML file with a textarea element. - // The response data should be inside the textarea element. Using an - // HTML document the only reliable, cross-browser way this - // transport can know when the response has loaded. For the html - // handleAs value, just return a normal HTML document. NOTE: xml - // is now supported with this transport (as of 1.1+); a known issue - // is if the XML document in question is malformed, Internet Explorer - // will throw an uncatchable error. - // content: Object? - // If "form" is one of the other args properties, then the content - // object properties become hidden form form elements. For - // instance, a content object of {name1 : "value1"} is converted - // to a hidden form element with a name of "name1" and a value of - // "value1". If there is not a "form" property, then the content - // object is converted into a name=value&name=value string, by - // using xhr.objectToQuery(). -}); -=====*/ - -/*===== -return kernel.io.iframe = { - // summary: - // Deprecated, use dojo/request/iframe instead. - // Sends an Ajax I/O call using and Iframe (for instance, to upload files) - - create: function(fname, onloadstr, uri){ - // summary: - // Creates a hidden iframe in the page. Used mostly for IO - // transports. You do not need to call this to start a - // dojo/io/iframe request. Just call send(). - // fname: String - // The name of the iframe. Used for the name attribute on the - // iframe. - // onloadstr: String - // A string of JavaScript that will be executed when the content - // in the iframe loads. - // uri: String - // The value of the src attribute on the iframe element. If a - // value is not given, then dojo/resources/blank.html will be - // used. - }, - setSrc: function(iframe, src, replace){ - // summary: - // Sets the URL that is loaded in an IFrame. The replace parameter - // indicates whether location.replace() should be used when - // changing the location of the iframe. - }, - doc: function(iframeNode){ - // summary: - // Returns the document object associated with the iframe DOM Node argument. - } -}; -=====*/ - - -var mid = _iframe._iframeName; -mid = mid.substring(0, mid.lastIndexOf('_')); - -var iframe = lang.delegate(_iframe, { - // summary: - // Deprecated, use dojo/request/iframe instead. - // Sends an Ajax I/O call using and Iframe (for instance, to upload files) - - create: function(){ - return iframe._frame = _iframe.create.apply(_iframe, arguments); - }, - - // cover up delegated methods - get: null, - post: null, - - send: function(/*__ioArgs*/args){ - // summary: - // Function that sends the request to the server. - // This transport can only process one send() request at a time, so if send() is called - // multiple times, it will queue up the calls and only process one at a time. - var rDfd; - - //Set up the deferred. - var dfd = xhr._ioSetArgs(args, - function(/*Deferred*/dfd){ - // summary: - // canceller function for xhr._ioSetArgs call. - rDfd && rDfd.cancel(); - }, - function(/*Deferred*/dfd){ - // summary: - // okHandler function for xhr._ioSetArgs call. - var value = null, - ioArgs = dfd.ioArgs; - try{ - var handleAs = ioArgs.handleAs; - - //Assign correct value based on handleAs value. - if(handleAs === "xml" || handleAs === "html"){ - value = rDfd.response.data; - }else{ - value = rDfd.response.text; - if(handleAs === "json"){ - value = json.fromJson(value); - }else if(handleAs === "javascript"){ - value = kernel.eval(value); - } - } - }catch(e){ - value = e; - } - return value; - }, - function(/*Error*/error, /*Deferred*/dfd){ - // summary: - // errHandler function for xhr._ioSetArgs call. - dfd.ioArgs._hasError = true; - return error; - } - ); - - var ioArgs = dfd.ioArgs; - - var method = "GET", - form = dom.byId(args.form); - if(args.method && args.method.toUpperCase() === "POST" && form){ - method = "POST"; - } - - var options = { - method: method, - handleAs: args.handleAs === "json" || args.handleAs === "javascript" ? "text" : args.handleAs, - form: args.form, - query: form ? null : args.content, - data: form ? args.content : null, - timeout: args.timeout, - ioArgs: ioArgs - }; - - if(options.method){ - options.method = options.method.toUpperCase(); - } - - if(config.ioPublish && kernel.publish && ioArgs.args.ioPublish !== false){ - var start = aspect.after(_iframe, "_notifyStart", function(data){ - if(data.options.ioArgs === ioArgs){ - start.remove(); - xhr._ioNotifyStart(dfd); - } - }, true); - } - rDfd = _iframe(ioArgs.url, options, true); - - ioArgs._callNext = rDfd._callNext; - - rDfd.then(function(){ - dfd.resolve(dfd); - }).otherwise(function(error){ - dfd.ioArgs.error = error; - dfd.reject(error); - }); - - return dfd; - }, - - _iframeOnload: win.global[mid + '_onload'] -}); - -lang.setObject("dojo.io.iframe", iframe); - -return iframe; -}); diff --git a/lib/dojo/io/script.js.uncompressed.js b/lib/dojo/io/script.js.uncompressed.js deleted file mode 100644 index 3fea9f208..000000000 --- a/lib/dojo/io/script.js.uncompressed.js +++ /dev/null @@ -1,249 +0,0 @@ -define("dojo/io/script", [ - "../_base/connect", /*===== "../_base/declare", =====*/ "../_base/kernel", "../_base/lang", - "../sniff", "../_base/window","../_base/xhr", - "../dom", "../dom-construct", "../request/script" -], function(connect, /*===== declare, =====*/ kernel, lang, has, win, xhr, dom, domConstruct, _script){ - - // module: - // dojo/io/script - - kernel.deprecated("dojo/io/script", "Use dojo/request/script.", "2.0"); - - /*===== - var __ioArgs = declare(kernel.__IoArgs, { - // summary: - // All the properties described in the dojo.__ioArgs type, apply to this - // type as well, EXCEPT "handleAs". It is not applicable to - // dojo/io/script.get() calls, since it is implied by the usage of - // "jsonp" (response will be a JSONP call returning JSON) - // or the response is pure JavaScript defined in - // the body of the script that was attached. - // callbackParamName: String - // Deprecated as of Dojo 1.4 in favor of "jsonp", but still supported for - // legacy code. See notes for jsonp property. - // jsonp: String - // The URL parameter name that indicates the JSONP callback string. - // For instance, when using Yahoo JSONP calls it is normally, - // jsonp: "callback". For AOL JSONP calls it is normally - // jsonp: "c". - // checkString: String - // A string of JavaScript that when evaluated like so: - // "typeof(" + checkString + ") != 'undefined'" - // being true means that the script fetched has been loaded. - // Do not use this if doing a JSONP type of call (use callbackParamName instead). - // frameDoc: Document - // The Document object for a child iframe. If this is passed in, the script - // will be attached to that document. This can be helpful in some comet long-polling - // scenarios with Firefox and Opera. - }); - =====*/ - - var script = { - // summary: - // TODOC - - get: function(/*__ioArgs*/ args){ - // summary: - // sends a get request using a dynamically created script tag. - var rDfd; - var dfd = this._makeScriptDeferred(args, function(dfd){ - rDfd && rDfd.cancel(); - }); - var ioArgs = dfd.ioArgs; - xhr._ioAddQueryToUrl(ioArgs); - - xhr._ioNotifyStart(dfd); - - rDfd = _script.get(ioArgs.url, { - timeout: args.timeout, - jsonp: ioArgs.jsonp, - checkString: args.checkString, - ioArgs: ioArgs, - frameDoc: args.frameDoc, - canAttach: function(rDfd){ - // sync values - ioArgs.requestId = rDfd.id; - ioArgs.scriptId = rDfd.scriptId; - ioArgs.canDelete = rDfd.canDelete; - - return script._canAttach(ioArgs); - } - }, true); - - rDfd.then(function(){ - dfd.resolve(dfd); - }).otherwise(function(error){ - dfd.ioArgs.error = error; - dfd.reject(error); - }); - - return dfd; - }, - - attach: _script._attach, - remove: _script._remove, - - _makeScriptDeferred: function(/*Object*/ args, /*Function?*/ cancel){ - // summary: - // sets up a Deferred object for an IO request. - var dfd = xhr._ioSetArgs(args, cancel || this._deferredCancel, this._deferredOk, this._deferredError); - - var ioArgs = dfd.ioArgs; - ioArgs.id = kernel._scopeName + "IoScript" + (this._counter++); - ioArgs.canDelete = false; - - //Special setup for jsonp case - ioArgs.jsonp = args.callbackParamName || args.jsonp; - if(ioArgs.jsonp){ - //Add the jsonp parameter. - ioArgs.query = ioArgs.query || ""; - if(ioArgs.query.length > 0){ - ioArgs.query += "&"; - } - ioArgs.query += ioArgs.jsonp + - "=" + (args.frameDoc ? "parent." : "") + - kernel._scopeName + ".io.script.jsonp_" + ioArgs.id + "._jsonpCallback"; - - ioArgs.frameDoc = args.frameDoc; - - //Setup the Deferred to have the jsonp callback. - ioArgs.canDelete = true; - dfd._jsonpCallback = this._jsonpCallback; - this["jsonp_" + ioArgs.id] = dfd; - } - return dfd; // dojo/_base/Deferred - }, - - _deferredCancel: function(/*Deferred*/ dfd){ - // summary: - // canceller function for xhr._ioSetArgs call. - - //DO NOT use "this" and expect it to be script. - dfd.canceled = true; - }, - - _deferredOk: function(/*Deferred*/ dfd){ - // summary: - // okHandler function for xhr._ioSetArgs call. - - //DO NOT use "this" and expect it to be script. - var ioArgs = dfd.ioArgs; - - //Favor JSONP responses, script load events then lastly ioArgs. - //The ioArgs are goofy, but cannot return the dfd since that stops - //the callback chain in Deferred. The return value is not that important - //in that case, probably a checkString case. - return ioArgs.json || ioArgs.scriptLoaded || ioArgs; - }, - - _deferredError: function(/*Error*/ error, /*Deferred*/ dfd){ - // summary: - // errHandler function for xhr._ioSetArgs call. - - console.log("dojo.io.script error", error); - return error; - }, - - _deadScripts: [], - _counter: 1, - - _addDeadScript: function(/*Object*/ ioArgs){ - // summary: - // sets up an entry in the deadScripts array. - script._deadScripts.push({id: ioArgs.id, frameDoc: ioArgs.frameDoc}); - //Being extra paranoid about leaks: - ioArgs.frameDoc = null; - }, - - _validCheck: function(/*Deferred*/ dfd){ - // summary: - // inflight check function to see if dfd is still valid. - - // TODO: why isn't dfd accessed? - - //Do script cleanup here. We wait for one inflight pass - //to make sure we don't get any weird things by trying to remove a script - //tag that is part of the call chain (IE 6 has been known to - //crash in that case). - var deadScripts = script._deadScripts; - if(deadScripts && deadScripts.length > 0){ - for(var i = 0; i < deadScripts.length; i++){ - //Remove the script tag - script.remove(deadScripts[i].id, deadScripts[i].frameDoc); - deadScripts[i].frameDoc = null; - } - script._deadScripts = []; - } - - return true; - }, - - _ioCheck: function(dfd){ - // summary: - // inflight check function to see if IO finished. - // dfd: Deferred - var ioArgs = dfd.ioArgs; - //Check for finished jsonp - if(ioArgs.json || (ioArgs.scriptLoaded && !ioArgs.args.checkString)){ - return true; - } - - //Check for finished "checkString" case. - var checkString = ioArgs.args.checkString; - return checkString && eval("typeof(" + checkString + ") != 'undefined'"); - - - }, - - _resHandle: function(/*Deferred*/ dfd){ - // summary: - // inflight function to handle a completed response. - if(script._ioCheck(dfd)){ - dfd.callback(dfd); - }else{ - //This path should never happen since the only way we can get - //to _resHandle is if _ioCheck is true. - dfd.errback(new Error("inconceivable dojo.io.script._resHandle error")); - } - }, - - _canAttach: function(/*===== ioArgs =====*/ ){ - // summary: - // A method that can be overridden by other modules - // to control when the script attachment occurs. - // ioArgs: Object - return true; - }, - - _jsonpCallback: function(/*JSON Object*/ json){ - // summary: - // generic handler for jsonp callback. A pointer to this function - // is used for all jsonp callbacks. NOTE: the "this" in this - // function will be the Deferred object that represents the script - // request. - this.ioArgs.json = json; - kernel.global[_script._callbacksProperty][this.ioArgs.requestId](json); - } - }; - - lang.setObject("dojo.io.script", script); - - /*===== - script.attach = function(id, url, frameDocument){ - // summary: - // creates a new `<script>` tag pointing to the specified URL and - // adds it to the document. - // description: - // Attaches the script element to the DOM. Use this method if you - // just want to attach a script to the DOM and do not care when or - // if it loads. - }; - script.remove = function(id, frameDocument){ - // summary: - // removes the script element with the given id, from the given frameDocument. - // If no frameDocument is passed, the current document is used. - }; - =====*/ - - return script; -}); diff --git a/lib/dojo/jaxer.js.uncompressed.js b/lib/dojo/jaxer.js.uncompressed.js deleted file mode 100644 index 903e9ac40..000000000 --- a/lib/dojo/jaxer.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define("dojo/jaxer", ["./_base/kernel"], function(dojo){ - // module: - // dojo/jaxer - -dojo.deprecated("(dojo)/jaxer interface", "Jaxer is no longer supported by the Dojo Toolkit, will be removed with DTK 1.9."); -if(typeof print == "function"){ - console.debug = Jaxer.Log.debug; - console.warn = Jaxer.Log.warn; - console.error = Jaxer.Log.error; - console.info = Jaxer.Log.info; - console.log = Jaxer.Log.warn; -} - -onserverload = dojo._loadInit; - -return dojo; -}); diff --git a/lib/dojo/json.js.uncompressed.js b/lib/dojo/json.js.uncompressed.js deleted file mode 100644 index d77bf5a96..000000000 --- a/lib/dojo/json.js.uncompressed.js +++ /dev/null @@ -1,162 +0,0 @@ -define("dojo/json", ["./has"], function(has){ - "use strict"; - var hasJSON = typeof JSON != "undefined"; - has.add("json-parse", hasJSON); // all the parsers work fine - // Firefox 3.5/Gecko 1.9 fails to use replacer in stringify properly https://bugzilla.mozilla.org/show_bug.cgi?id=509184 - has.add("json-stringify", hasJSON && JSON.stringify({a:0}, function(k,v){return v||1;}) == '{"a":1}'); - - /*===== - return { - // summary: - // Functions to parse and serialize JSON - - parse: function(str, strict){ - // summary: - // Parses a [JSON](http://json.org) string to return a JavaScript object. - // description: - // This function follows [native JSON API](https://developer.mozilla.org/en/JSON) - // Throws for invalid JSON strings. This delegates to eval() if native JSON - // support is not available. By default this will evaluate any valid JS expression. - // With the strict parameter set to true, the parser will ensure that only - // valid JSON strings are parsed (otherwise throwing an error). Without the strict - // parameter, the content passed to this method must come - // from a trusted source. - // str: - // a string literal of a JSON item, for instance: - // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'` - // strict: - // When set to true, this will ensure that only valid, secure JSON is ever parsed. - // Make sure this is set to true for untrusted content. Note that on browsers/engines - // without native JSON support, setting this to true will run slower. - }, - stringify: function(value, replacer, spacer){ - // summary: - // Returns a [JSON](http://json.org) serialization of an object. - // description: - // Returns a [JSON](http://json.org) serialization of an object. - // This function follows [native JSON API](https://developer.mozilla.org/en/JSON) - // Note that this doesn't check for infinite recursion, so don't do that! - // value: - // A value to be serialized. - // replacer: - // A replacer function that is called for each value and can return a replacement - // spacer: - // A spacer string to be used for pretty printing of JSON - // example: - // simple serialization of a trivial object - // | define(["dojo/json"], function(JSON){ - // | var jsonStr = JSON.stringify({ howdy: "stranger!", isStrange: true }); - // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr); - } - }; - =====*/ - - if(has("json-stringify")){ - return JSON; - }else{ - var escapeString = function(/*String*/str){ - // summary: - // Adds escape sequences for non-visual characters, double quote and - // backslash and surrounds with double quotes to form a valid string - // literal. - return ('"' + str.replace(/(["\\])/g, '\\$1') + '"'). - replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n"). - replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r"); // string - }; - return { - parse: has("json-parse") ? JSON.parse : function(str, strict){ - if(strict && !/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){ - throw new SyntaxError("Invalid characters in JSON"); - } - return eval('(' + str + ')'); - }, - stringify: function(value, replacer, spacer){ - var undef; - if(typeof replacer == "string"){ - spacer = replacer; - replacer = null; - } - function stringify(it, indent, key){ - if(replacer){ - it = replacer(key, it); - } - var val, objtype = typeof it; - if(objtype == "number"){ - return isFinite(it) ? it + "" : "null"; - } - if(objtype == "boolean"){ - return it + ""; - } - if(it === null){ - return "null"; - } - if(typeof it == "string"){ - return escapeString(it); - } - if(objtype == "function" || objtype == "undefined"){ - return undef; // undefined - } - // short-circuit for objects that support "json" serialization - // if they return "self" then just pass-through... - if(typeof it.toJSON == "function"){ - return stringify(it.toJSON(key), indent, key); - } - if(it instanceof Date){ - return '"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g, function(t, prop, plus){ - var num = it["getUTC" + prop]() + (plus ? 1 : 0); - return num < 10 ? "0" + num : num; - }); - } - if(it.valueOf() !== it){ - // primitive wrapper, try again unwrapped: - return stringify(it.valueOf(), indent, key); - } - var nextIndent= spacer ? (indent + spacer) : ""; - /* we used to test for DOM nodes and throw, but FF serializes them as {}, so cross-browser consistency is probably not efficiently attainable */ - - var sep = spacer ? " " : ""; - var newLine = spacer ? "\n" : ""; - - // array - if(it instanceof Array){ - var itl = it.length, res = []; - for(key = 0; key < itl; key++){ - var obj = it[key]; - val = stringify(obj, nextIndent, key); - if(typeof val != "string"){ - val = "null"; - } - res.push(newLine + nextIndent + val); - } - return "[" + res.join(",") + newLine + indent + "]"; - } - // generic object code path - var output = []; - for(key in it){ - var keyStr; - if(it.hasOwnProperty(key)){ - if(typeof key == "number"){ - keyStr = '"' + key + '"'; - }else if(typeof key == "string"){ - keyStr = escapeString(key); - }else{ - // skip non-string or number keys - continue; - } - val = stringify(it[key], nextIndent, key); - if(typeof val != "string"){ - // skip non-serializable values - continue; - } - // At this point, the most non-IE browsers don't get in this branch - // (they have native JSON), so push is definitely the way to - output.push(newLine + nextIndent + keyStr + ":" + sep + val); - } - } - return "{" + output.join(",") + newLine + indent + "}"; // String - } - return stringify(value, "", ""); - } - }; - } -}); diff --git a/lib/dojo/keys.js.uncompressed.js b/lib/dojo/keys.js.uncompressed.js deleted file mode 100644 index 65567a2aa..000000000 --- a/lib/dojo/keys.js.uncompressed.js +++ /dev/null @@ -1,77 +0,0 @@ -define("dojo/keys", ["./_base/kernel", "./sniff"], function(dojo, has){ - - // module: - // dojo/keys - - return dojo.keys = { - // summary: - // Definitions for common key values. Client code should test keyCode against these named constants, - // as the actual codes can vary by browser. - - BACKSPACE: 8, - TAB: 9, - CLEAR: 12, - ENTER: 13, - SHIFT: 16, - CTRL: 17, - ALT: 18, - META: has("webkit") ? 91 : 224, // the apple key on macs - PAUSE: 19, - CAPS_LOCK: 20, - ESCAPE: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT_ARROW: 37, - UP_ARROW: 38, - RIGHT_ARROW: 39, - DOWN_ARROW: 40, - INSERT: 45, - DELETE: 46, - HELP: 47, - LEFT_WINDOW: 91, - RIGHT_WINDOW: 92, - SELECT: 93, - NUMPAD_0: 96, - NUMPAD_1: 97, - NUMPAD_2: 98, - NUMPAD_3: 99, - NUMPAD_4: 100, - NUMPAD_5: 101, - NUMPAD_6: 102, - NUMPAD_7: 103, - NUMPAD_8: 104, - NUMPAD_9: 105, - NUMPAD_MULTIPLY: 106, - NUMPAD_PLUS: 107, - NUMPAD_ENTER: 108, - NUMPAD_MINUS: 109, - NUMPAD_PERIOD: 110, - NUMPAD_DIVIDE: 111, - F1: 112, - F2: 113, - F3: 114, - F4: 115, - F5: 116, - F6: 117, - F7: 118, - F8: 119, - F9: 120, - F10: 121, - F11: 122, - F12: 123, - F13: 124, - F14: 125, - F15: 126, - NUM_LOCK: 144, - SCROLL_LOCK: 145, - UP_DPAD: 175, - DOWN_DPAD: 176, - LEFT_DPAD: 177, - RIGHT_DPAD: 178, - // virtual key mapping - copyKey: has("mac") && !has("air") ? (has("safari") ? 91 : 224 ) : 17 - }; -}); diff --git a/lib/dojo/loadInit.js.uncompressed.js b/lib/dojo/loadInit.js.uncompressed.js deleted file mode 100644 index 373931d12..000000000 --- a/lib/dojo/loadInit.js.uncompressed.js +++ /dev/null @@ -1,7 +0,0 @@ -define("dojo/loadInit", ["./_base/loader"], function(loader){ - return { - dynamic:0, - normalize:function(id){return id;}, - load:loader.loadInit - }; -}); diff --git a/lib/dojo/main.js.uncompressed.js b/lib/dojo/main.js.uncompressed.js deleted file mode 100644 index a3dd80569..000000000 --- a/lib/dojo/main.js.uncompressed.js +++ /dev/null @@ -1,52 +0,0 @@ -define("dojo/main", [ - "./_base/kernel", // kernel.isAsync - "./has", - "require", - "./sniff", - "./_base/lang", - "./_base/array", - "./_base/config", - "./ready", - "./_base/declare", - "./_base/connect", - "./_base/Deferred", - "./_base/json", - "./_base/Color", - "./has!dojo-firebug?./_firebug/firebug", - "./_base/browser", - "./_base/loader" -], function(kernel, has, require, sniff, lang, array, config, ready){ - // module: - // dojo/main - // summary: - // This is the package main module for the dojo package; it loads dojo base appropriate for the execution environment. - - // the preferred way to load the dojo firebug console is by setting has("dojo-firebug") true in dojoConfig - // the isDebug config switch is for backcompat and will work fine in sync loading mode; it works in - // async mode too, but there's no guarantee when the module is loaded; therefore, if you need a firebug - // console guaranteed at a particular spot in an app, either set config.has["dojo-firebug"] true before - // loading dojo.js or explicitly include dojo/_firebug/firebug in a dependency list. - if(config.isDebug){ - require(["./_firebug/firebug"]); - } - - // dojoConfig.require is deprecated; use the loader configuration property deps - 1 || has.add("dojo-config-require", 1); - if( 1 ){ - var deps= config.require; - if(deps){ - // config.require may be dot notation - deps= array.map(lang.isArray(deps) ? deps : [deps], function(item){ return item.replace(/\./g, "/"); }); - if(kernel.isAsync){ - require(deps); - }else{ - // this is a bit janky; in 1.6- dojo is defined before these requires are applied; but in 1.7+ - // dojo isn't defined until returning from this module; this is only a problem in sync mode - // since we're in sync mode, we know we've got our loader with its priority ready queue - ready(1, function(){require(deps);}); - } - } - } - - return kernel; -}); diff --git a/lib/dojo/mouse.js.uncompressed.js b/lib/dojo/mouse.js.uncompressed.js deleted file mode 100644 index 473345b14..000000000 --- a/lib/dojo/mouse.js.uncompressed.js +++ /dev/null @@ -1,171 +0,0 @@ -define("dojo/mouse", ["./_base/kernel", "./on", "./has", "./dom", "./_base/window"], function(dojo, on, has, dom, win){ - - // module: - // dojo/mouse - - has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat"); - has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div")); - has.add("events-mousewheel", win.doc && 'onmousewheel' in win.doc); - - var mouseButtons; - if((has("dom-quirks") && has("ie")) || !has("dom-addeventlistener")){ - mouseButtons = { - LEFT: 1, - MIDDLE: 4, - RIGHT: 2, - // helper functions - isButton: function(e, button){ return e.button & button; }, - isLeft: function(e){ return e.button & 1; }, - isMiddle: function(e){ return e.button & 4; }, - isRight: function(e){ return e.button & 2; } - }; - }else{ - mouseButtons = { - LEFT: 0, - MIDDLE: 1, - RIGHT: 2, - // helper functions - isButton: function(e, button){ return e.button == button; }, - isLeft: function(e){ return e.button == 0; }, - isMiddle: function(e){ return e.button == 1; }, - isRight: function(e){ return e.button == 2; } - }; - } - dojo.mouseButtons = mouseButtons; - -/*===== - dojo.mouseButtons = { - // LEFT: Number - // Numeric value of the left mouse button for the platform. - LEFT: 0, - // MIDDLE: Number - // Numeric value of the middle mouse button for the platform. - MIDDLE: 1, - // RIGHT: Number - // Numeric value of the right mouse button for the platform. - RIGHT: 2, - - isButton: function(e, button){ - // summary: - // Checks an event object for a pressed button - // e: Event - // Event object to examine - // button: Number - // The button value (example: dojo.mouseButton.LEFT) - return e.button == button; // Boolean - }, - isLeft: function(e){ - // summary: - // Checks an event object for the pressed left button - // e: Event - // Event object to examine - return e.button == 0; // Boolean - }, - isMiddle: function(e){ - // summary: - // Checks an event object for the pressed middle button - // e: Event - // Event object to examine - return e.button == 1; // Boolean - }, - isRight: function(e){ - // summary: - // Checks an event object for the pressed right button - // e: Event - // Event object to examine - return e.button == 2; // Boolean - } - }; -=====*/ - - function eventHandler(type, selectHandler){ - // emulation of mouseenter/leave with mouseover/out using descendant checking - var handler = function(node, listener){ - return on(node, type, function(evt){ - if(selectHandler){ - return selectHandler(evt, listener); - } - if(!dom.isDescendant(evt.relatedTarget, node)){ - return listener.call(this, evt); - } - }); - }; - handler.bubble = function(select){ - return eventHandler(type, function(evt, listener){ - // using a selector, use the select function to determine if the mouse moved inside the selector and was previously outside the selector - var target = select(evt.target); - var relatedTarget = evt.relatedTarget; - if(target && (target != (relatedTarget && relatedTarget.nodeType == 1 && select(relatedTarget)))){ - return listener.call(target, evt); - } - }); - }; - return handler; - } - var wheel; - if(has("events-mousewheel")){ - wheel = 'mousewheel'; - }else{ //firefox - wheel = function(node, listener){ - return on(node, 'DOMMouseScroll', function(evt){ - evt.wheelDelta = -evt.detail; - listener.call(this, evt); - }); - }; - } - return { - // summary: - // This module provide mouse event handling utility functions and exports - // mouseenter and mouseleave event emulation. - // example: - // To use these events, you register a mouseenter like this: - // | define(["dojo/on", dojo/mouse"], function(on, mouse){ - // | on(targetNode, mouse.enter, function(event){ - // | dojo.addClass(targetNode, "highlighted"); - // | }); - // | on(targetNode, mouse.leave, function(event){ - // | dojo.removeClass(targetNode, "highlighted"); - // | }); - - _eventHandler: eventHandler, // for dojo/touch - - // enter: Synthetic Event - // This is an extension event for the mouseenter that IE provides, emulating the - // behavior on other browsers. - enter: eventHandler("mouseover"), - - // leave: Synthetic Event - // This is an extension event for the mouseleave that IE provides, emulating the - // behavior on other browsers. - leave: eventHandler("mouseout"), - - // wheel: Normalized Mouse Wheel Event - // This is an extension event for the mousewheel that non-Mozilla browsers provide, - // emulating the behavior on Mozilla based browsers. - wheel: wheel, - - isLeft: mouseButtons.isLeft, - /*===== - isLeft: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the left button was pressed. - }, - =====*/ - - isMiddle: mouseButtons.isMiddle, - /*===== - isMiddle: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the middle button was pressed. - }, - =====*/ - - isRight: mouseButtons.isRight - /*===== - , isRight: function(){ - // summary: - // Test an event object (from a mousedown event) to see if the right button was pressed. - } - =====*/ - }; -}); diff --git a/lib/dojo/nls/ar/colors.js.uncompressed.js b/lib/dojo/nls/ar/colors.js.uncompressed.js deleted file mode 100644 index 0b7fa59db..000000000 --- a/lib/dojo/nls/ar/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ar/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "أزرق فاتح", - antiquewhite: "أبيض عتيق", - aqua: "أزرق مائي", - aquamarine: "أزرق مائل للأخضر (زبرجد)", - azure: "أزرق سماوي", - beige: "بيج", - bisque: "أصفر برتقالي الى رمادي مصفر", - black: "أسود", - blanchedalmond: "أخضر مائل للبياض", - blue: "أزرق", - blueviolet: "أزرق-بنفسجي", - brown: "بني", - burlywood: "خشبي", - cadetblue: "أزرق ملون بالرمادي", - chartreuse: "أخضر مائل للصفرة", - chocolate: "بني غامق", - coral: "مرجاني", - cornflowerblue: "أزرق عنبري", - cornsilk: "حريري", - crimson: "قرمزي", - cyan: "أزرق سماوي", - darkblue: "أزرق داكن", - darkcyan: "أزرق سماوي داكن", - darkgoldenrod: "أصفر ذهبي داكن", - darkgray: "رمادي داكن", - darkgreen: "أخضر داكن", - darkgrey: "رمادي داكن", // same as darkgray - darkkhaki: "كاكي داكن", - darkmagenta: "قرمزي داكن", - darkolivegreen: "أخضر زيتوني داكن", - darkorange: "برتقالي داكن", - darkorchid: "أرجواني داكن", - darkred: "أحمر داكن", - darksalmon: "فضي داكن", - darkseagreen: "أخضر مائل للأزرق داكن", - darkslateblue: "أزرق اردوازي داكن", - darkslategray: "رمادي اردوازي داكن", - darkslategrey: "رمادي اردوازي داكن", // same as darkslategray - darkturquoise: "تركواز داكن", - darkviolet: "بنفسجي داكن", - deeppink: "أحمر وردي غامق", - deepskyblue: "أزرق سماوي غامق", - dimgray: "رمادي شاحب", - dimgrey: "رمادي شاحب", // same as dimgray - dodgerblue: "أزرق عنبري", - firebrick: "أصفر زاهي", - floralwhite: "أبيض زهري", - forestgreen: "أخضر بلون أشجار الغابات", - fuchsia: "فوشيا", - gainsboro: "رمادي مائل للأزرق فاتح", - ghostwhite: "أبيض شفاف", - gold: "ذهبي", - goldenrod: "أصفر ذهبي", - gray: "رمادي", - green: "أخضر", - greenyellow: "أخضر مائل للأصفر", - grey: "رمادي", // same as gray - honeydew: "أبيض مائل للأخضر", - hotpink: "أحمر وردي زاهي", - indianred: "أحمر هندي", - indigo: "نيلي", - ivory: "عاجي", - khaki: "كاكي", - lavender: "أرجواني شاحب", - lavenderblush: "أحمر أرجواني", - lawngreen: "أخضر بلون العشب", - lemonchiffon: "أصفر شفاف", - lightblue: "أزرق فاتح", - lightcoral: "مرجاني فاتح", - lightcyan: "سماوي فاتح", - lightgoldenrodyellow: "أصفر ذهبي فاتح", - lightgray: "رمادي فاتح", - lightgreen: "أخضر فاتح", - lightgrey: "رمادي فاتح", // same as lightgray - lightpink: "وردي فاتح", - lightsalmon: "فضي فاتح", - lightseagreen: "أخضر مائل للأزرق فاتح", - lightskyblue: "أزرق سماوي فاتح", - lightslategray: "رمادي اردوازي فاتح", - lightslategrey: "رمادي اردوازي فاتح", // same as lightslategray - lightsteelblue: "أزرق معدني فاتح", - lightyellow: "أصفر فاتح", - lime: "ليموني", - limegreen: "أخضر ليموني", - linen: "كتاني", - magenta: "أحمر قرمزي", - maroon: "أحمر داكن", - mediumaquamarine: "أزرق مائل للأخضر (زبرجد) متوسط", - mediumblue: "أزرق متوسط", - mediumorchid: "أرجواني متوسط", - mediumpurple: "قرمزي متوسط", - mediumseagreen: "أخضر مائل للأزرق متوسط", - mediumslateblue: "أزرق اردوازي متوسط", - mediumspringgreen: "أخضر ربيعي متوسط", - mediumturquoise: "تركواز متوسط", - mediumvioletred: "أحمر-بنفسجي متوسط", - midnightblue: "أزرق بحري", - mintcream: "أصفر شاحب مائل للأخضر الزرعي", - mistyrose: "وردي", - moccasin: "نحاسي أحمر", - navajowhite: "أبيض ملاحي", - navy: "أزرق داكن", - oldlace: "برتقالي مائل للأصفر شاحب", - olive: "أخضر زيتوني داكن", - olivedrab: "أسود فاتح", - orange: "برتقالي", - orangered: "أحمر مائل للبرتقالي", - orchid: "أرجواني فاتح", - palegoldenrod: "أصفر ذهبي شاحب", - palegreen: "أخضر شاحب", - paleturquoise: "تركواز شاحب", - palevioletred: "أحمر-بنفسجي شاحب", - papayawhip: "خوخي فاتح", - peachpuff: "خوخي مائل للأصفر", - peru: "بني جملي", - pink: "وردي", - plum: "أرجواني داكن", - powderblue: "أزرق مائل للأصفر", - purple: "ارجواني", - red: "أحمر", - rosybrown: "بني وردي", - royalblue: "أزرق ملكي", - saddlebrown: "بني فاتح", - salmon: "برتقالي وردي شاحب", - sandybrown: "بني مائل للصفرة", - seagreen: "أخضر مائل للأزرق", - seashell: "أبيض مائل للأصفر فاتح", - sienna: "بني محروق", - silver: "فضي", - skyblue: "أزرق سماوي", - slateblue: "أزرق اردوازي", - slategray: "رمادي اردوازي", - slategrey: "رمادي اردوازي", // same as slategray - snow: "أبيض ثلجي", - springgreen: "أخضر ربيعي", - steelblue: "أزرق معدني", - tan: "خمري", - teal: "بترولي", - thistle: "ارجواني شاحب", - tomato: "أحمر مائل للأصفر", - transparent: "شفاف", - turquoise: "تركواز", - violet: "بنفسجي", - wheat: "أخضر قمحي", - white: "أبيض", - whitesmoke: "دخان أبيض", - yellow: "أصفر", - yellowgreen: "أخضر مائل للأصفر" -}) -); diff --git a/lib/dojo/nls/az/colors.js.uncompressed.js b/lib/dojo/nls/az/colors.js.uncompressed.js deleted file mode 100644 index 5092b4682..000000000 --- a/lib/dojo/nls/az/colors.js.uncompressed.js +++ /dev/null @@ -1,151 +0,0 @@ -define( -"dojo/nls/az/colors", ({ - "lightsteelblue":"açıq metal mavi", - "orangered" :"narıncı qırmızı", - "midnightblue" :"gecə mavisi", - "cadetblue" :"dəniz mavisi" , - "seashell" :"dəniz səthi", - "slategrey" :"boz şifer rəngi", - "coral" :"mərcan", - "darkturquoise" :"tünd firuzəyi", - "antiquewhite" :"antik ağ", - "mediumspringgreen" :"orta bahar yaşılı", - "salmon" :"somon", - "darkgrey" :"tünd boz", - "ivory" :"fil dişi", - "greenyellow" :"yaşıl-sarı", - "mistyrose" :"gül qurusu", - "lightsalmon" :"açıq somon", - "silver" :"gümüşü", - "dimgrey" :"açıq boz", - "orange" :"narıncı", - "white" :"ağ", - "navajowhite" :"navajo ağı", - "royalblue" :"parlaq tünd mavi" , - "deeppink" :"tünd çəhrayı", - "lime" :"lomon yaşılı", - "oldlace" :"köhnə krujeva", - "chartreuse" :"chartreuse", - "darkcyan" :"tünd firuzəyi", - "yellow" :"sarı", - "linen" :"kətan", - "olive" :"zeytun", - "gold" :"qızıl", - "lawngreen" :"çəmən yaşılı", - "lightyellow" :"açıq sarı", - "tan" :"günəş yanığı", - "darkviolet" :"tünd bənövşəyi", - "lightslategrey" :"tünd şifer bozu", - "grey" :"boz", - "darkkhaki" :"tünd haki", - "green" :"yaşıl", - "deepskyblue" :"tünd səma mavisi", - "aqua" :"dəniz mavisi", - "sienna" :"tünd qəhvəyi", - "mintcream" :"nanəli krem", - "rosybrown" :"çəhrayımsı qəhvəyi", - "mediumslateblue" :"orta şıfer bozu", - "magenta" :"magenta", - "lightseagreen" :"açıq dəniz yaşılı", - "cyan" :"firuzəyi", - "olivedrab" :"əsgər yaşılı", - "darkgoldenrod" :"tünd sarı", - "slateblue" :"şifer mavisi", - "mediumaquamarine" :"orta akvamarin", - "lavender" :"lavanta", - "mediumseagreen" :"orta dəniz yaşılı", - "maroon" :"tünd qırmızı", - "darkslategray" :"tünd şifer bozu", - "mediumturquoise" :"orta firuzəyi", - "ghostwhite" :"ala", - "darkblue" :"tünd mavi", - "mediumvioletred" :"orta bənövşəyi-qırmızı", - "brown" :"qəhvəyi", - "lightgray" :"açıq boz", - "sandybrown" :"qum rəngi", - "pink" :"çəhrayı", - "firebrick" :"yanmış kərpic rəngi", - "indigo" :"indigo", - "snow" :"qar", - "darkorchid" :"tünd orkide", - "turquoise" :"firuzəyi", - "chocolate" :"şokolad", - "springgreen" :"bahar yaşılı", - "moccasin" :"mokosen", - "navy" :"tünd göy", - "lemonchiffon" :"limon rəngi", - "teal" :"teal mavi", - "floralwhite" :"çiçək ağı", - "cornflowerblue" :"peyğəmbər çiçək mavisi", - "paleturquoise" :"solğun firuzəyi", - "purple" :"tünd qırmızı", - "gainsboro" :"gainsboro", - "plum" :"gavalı", - "red" :"qırmızı", - "blue" :"göy", - "forestgreen" :"tünd dəniz yaşılı", - "darkgreen" :"tünd yaşıl", - "honeydew" :"bal saqqızı", - "darkseagreen" :"tünd dəniz yaşılı", - "lightcoral" :"açıq mərcan", - "palevioletred" :"solğun bənövşəyi-qırmızı", - "mediumpurple" :"orta tünd qırmızı", - "saddlebrown" :"açıq qəhvəyi", - "darkmagenta" :"tünd magenta", - "thistle" :"dəvə tikanı", - "whitesmoke" :"ağ duman", - "wheat" :"buğdayı", - "violet" :"bənövşəyi", - "lightskyblue" :"açıq səma mavisi" , - "goldenrod" :"sapsarı", - "mediumblue" :"orta göy", - "skyblue" :"göy mavisi", - "crimson" :"crimson", - "darksalmon" :"tünd somon", - "darkred" :"tünd qırmızı", - "darkslategrey" :"tünd şifer bozu", - "peru" :"peru", - "lightgrey" :"açıq boz", - "lightgoldenrodyellow" :"açıq qızılı", - "blanchedalmond" :"solğun badamı", - "aliceblue" :"alice mavisi", - "bisque" :"biskvit", - "slategray" :"şifer bozu", - "palegoldenrod" :"açıq qızılı", - "darkorange" :"tünd narıncı", - "aquamarine" :"akvamarin", - "lightgreen" :"açıq yaşıl", - "burlywood" :"sarımsı qəhvə rəngi", - "dodgerblue" :"toz mavisi", - "darkgray" :"tünd boz", - "lightcyan" :"açıq firuzəyi", - "powderblue" :"pudra mavisi", - "blueviolet" :"mavi-bənövşəyi", - "orchid" :"orkide", - "dimgray" :"solğun boz", - "beige" :"bej", - "fuchsia" :"fuşya", - "lavenderblush" :"lavanta tünd qırmızısı", - "hotpink" :"tünd çəhrayı", - "steelblue" :"metal mavisi", - "tomato" :"pomidor", - "lightpink" :"açıq çəhrayı", - "limegreen" :"əhəng yaşılı", - "indianred" :"qızıldərili qırmızısı", - "papayawhip" :"papaya qamçısı", - "lightslategray" :"açıq şifer bozu", - "gray" :"boz", - "mediumorchid" :"orta orkide", - "cornsilk" :"qarğıdalı rəngi", - "black" :"qara", - "seagreen" :"dəniz yaşılı", - "darkslateblue" :"tünd şifer bozu", - "khaki" :"haki", - "lightblue" :"açıq mavi", - "palegreen" :"solğun yaşıl", - "azure" :"azur mavisi", - "peachpuff" :"açıq şaftalı", - "darkolivegreen" :"tünd zeytun yaşılı", - "yellowgreen" :"sarı-yaşıl" -}) -); diff --git a/lib/dojo/nls/ca/colors.js.uncompressed.js b/lib/dojo/nls/ca/colors.js.uncompressed.js deleted file mode 100644 index 520654d94..000000000 --- a/lib/dojo/nls/ca/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ca/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "blau cian clar", - antiquewhite: "blanc antic", - aqua: "aigua", - aquamarine: "aiguamarina", - azure: "atzur", - beige: "beix", - bisque: "crema", - black: "negre", - blanchedalmond: "ametlla pàl·lid", - blue: "blau", - blueviolet: "blau violeta", - brown: "marró", - burlywood: "marró arenós", - cadetblue: "blau marí", - chartreuse: "Llimona pàl·lid", - chocolate: "xocolata", - coral: "corall", - cornflowerblue: "blau blauet", - cornsilk: "cru", - crimson: "carmesí", - cyan: "cian", - darkblue: "blau fosc", - darkcyan: "cian fosc", - darkgoldenrod: "ocre fosc", - darkgray: "gris fosc", - darkgreen: "verd fosc", - darkgrey: "gris fosc", // same as darkgray - darkkhaki: "caqui fosc", - darkmagenta: "magenta fosc", - darkolivegreen: "verd oliva fosc", - darkorange: "taronja fosc", - darkorchid: "orquídia fosc", - darkred: "vermell fosc", - darksalmon: "salmó fosc", - darkseagreen: "verd marí fosc", - darkslateblue: "blau pissarra fosc", - darkslategray: "gris pissarra fosc", - darkslategrey: "gris pissarra fosc", // same as darkslategray - darkturquoise: "turquesa fosc", - darkviolet: "violeta fosc", - deeppink: "rosa profund", - deepskyblue: "blau cel profund", - dimgray: "gris fosc", - dimgrey: "gris fosc", // same as dimgray - dodgerblue: "blau Dodger", - firebrick: "maó refractari", - floralwhite: "blanc floral", - forestgreen: "verd bosc", - fuchsia: "fúcsia", - gainsboro: "gainsboro", - ghostwhite: "blanc fantasma", - gold: "daurat", - goldenrod: "ocre", - gray: "gris", - green: "verd", - greenyellow: "verd grogós", - grey: "gris", // same as gray - honeydew: "rosada de mel", - hotpink: "rosa fúcsia", - indianred: "vermell indi", - indigo: "índigo", - ivory: "marbre", - khaki: "caqui", - lavender: "lavanda", - lavenderblush: "lavanda vermellosa", - lawngreen: "verd gespa", - lemonchiffon: "groc brisa", - lightblue: "blau clar", - lightcoral: "corall clar", - lightcyan: "cian clar", - lightgoldenrodyellow: "groc ocre clar", - lightgray: "gris clar", - lightgreen: "verd clar", - lightgrey: "gris clar", // same as lightgray - lightpink: "rosa clar", - lightsalmon: "salmó clar", - lightseagreen: "verd marí clar", - lightskyblue: "blau cel clar", - lightslategray: "gris pissarra clar", - lightslategrey: "gris pissarra clar", // same as lightslategray - lightsteelblue: "blau acer clar", - lightyellow: "groc clar", - lime: "verd llimona", - limegreen: "verd llimona verda", - linen: "lli", - magenta: "magenta", - maroon: "marró vermellós", - mediumaquamarine: "aiguamarina mitjana", - mediumblue: "blau mitjà", - mediumorchid: "orquídia mitjana", - mediumpurple: "porpra mitjana", - mediumseagreen: "verd marí mitjà", - mediumslateblue: "blau pissarra mitjà", - mediumspringgreen: "verd primavera mitjà", - mediumturquoise: "turquesa mitjana", - mediumvioletred: "vermell violeta mitjà", - midnightblue: "blau mitjanit", - mintcream: "menta pàl·lid", - mistyrose: "rosa dens", - moccasin: "mocassí", - navajowhite: "blanc Navajo", - navy: "blau marí", - oldlace: "rosa cremós", - olive: "oliva", - olivedrab: "gris oliva", - orange: "taronja", - orangered: "taronja vermellós", - orchid: "orquídia", - palegoldenrod: "ocre pàl·lid", - palegreen: "verd pàl·lid", - paleturquoise: "turquesa pàl·lid", - palevioletred: "vermell porpra pàl·lid", - papayawhip: "préssec pastel", - peachpuff: "préssec", - peru: "Perú", - pink: "rosa", - plum: "pruna", - powderblue: "blau grisós", - purple: "porpra", - red: "vermell", - rosybrown: "marró rosat", - royalblue: "blau marí intens", - saddlebrown: "marró mitjà", - salmon: "salmó", - sandybrown: "marró arenós", - seagreen: "verd marí", - seashell: "petxina marina", - sienna: "siena", - silver: "argent", - skyblue: "blau cel", - slateblue: "blau pissarra", - slategray: "gris pissarra", - slategrey: "gris pissarra", // same as slategray - snow: "neu", - springgreen: "verd de primavera", - steelblue: "blau acer", - tan: "tan", - teal: "verd blavós", - thistle: "card", - tomato: "tomàquet", - transparent: "transparent", - turquoise: "turquesa", - violet: "violeta", - wheat: "blat", - white: "blanc", - whitesmoke: "blanc fumat", - yellow: "groc", - yellowgreen: "verd grogós" -}) -); diff --git a/lib/dojo/nls/colors.js.uncompressed.js b/lib/dojo/nls/colors.js.uncompressed.js deleted file mode 100644 index 277fec6d7..000000000 --- a/lib/dojo/nls/colors.js.uncompressed.js +++ /dev/null @@ -1,191 +0,0 @@ -define("dojo/nls/colors", { root: -//begin v1.x content -({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - -//Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). -//TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? -aliceblue: "alice blue", -antiquewhite: "antique white", -aqua: "aqua", -aquamarine: "aquamarine", -azure: "azure", -beige: "beige", -bisque: "bisque", -black: "black", -blanchedalmond: "blanched almond", -blue: "blue", -blueviolet: "blue-violet", -brown: "brown", -burlywood: "burlywood", -cadetblue: "cadet blue", -chartreuse: "chartreuse", -chocolate: "chocolate", -coral: "coral", -cornflowerblue: "cornflower blue", -cornsilk: "cornsilk", -crimson: "crimson", -cyan: "cyan", -darkblue: "dark blue", -darkcyan: "dark cyan", -darkgoldenrod: "dark goldenrod", -darkgray: "dark gray", -darkgreen: "dark green", -darkgrey: "dark gray", // same as darkgray -darkkhaki: "dark khaki", -darkmagenta: "dark magenta", -darkolivegreen: "dark olive green", -darkorange: "dark orange", -darkorchid: "dark orchid", -darkred: "dark red", -darksalmon: "dark salmon", -darkseagreen: "dark sea green", -darkslateblue: "dark slate blue", -darkslategray: "dark slate gray", -darkslategrey: "dark slate gray", // same as darkslategray -darkturquoise: "dark turquoise", -darkviolet: "dark violet", -deeppink: "deep pink", -deepskyblue: "deep sky blue", -dimgray: "dim gray", -dimgrey: "dim gray", // same as dimgray -dodgerblue: "dodger blue", -firebrick: "fire brick", -floralwhite: "floral white", -forestgreen: "forest green", -fuchsia: "fuchsia", -gainsboro: "gainsboro", -ghostwhite: "ghost white", -gold: "gold", -goldenrod: "goldenrod", -gray: "gray", -green: "green", -greenyellow: "green-yellow", -grey: "gray", // same as gray -honeydew: "honeydew", -hotpink: "hot pink", -indianred: "indian red", -indigo: "indigo", -ivory: "ivory", -khaki: "khaki", -lavender: "lavender", -lavenderblush: "lavender blush", -lawngreen: "lawn green", -lemonchiffon: "lemon chiffon", -lightblue: "light blue", -lightcoral: "light coral", -lightcyan: "light cyan", -lightgoldenrodyellow: "light goldenrod yellow", -lightgray: "light gray", -lightgreen: "light green", -lightgrey: "light gray", // same as lightgray -lightpink: "light pink", -lightsalmon: "light salmon", -lightseagreen: "light sea green", -lightskyblue: "light sky blue", -lightslategray: "light slate gray", -lightslategrey: "light slate gray", // same as lightslategray -lightsteelblue: "light steel blue", -lightyellow: "light yellow", -lime: "lime", -limegreen: "lime green", -linen: "linen", -magenta: "magenta", -maroon: "maroon", -mediumaquamarine: "medium aquamarine", -mediumblue: "medium blue", -mediumorchid: "medium orchid", -mediumpurple: "medium purple", -mediumseagreen: "medium sea green", -mediumslateblue: "medium slate blue", -mediumspringgreen: "medium spring green", -mediumturquoise: "medium turquoise", -mediumvioletred: "medium violet-red", -midnightblue: "midnight blue", -mintcream: "mint cream", -mistyrose: "misty rose", -moccasin: "moccasin", -navajowhite: "navajo white", -navy: "navy", -oldlace: "old lace", -olive: "olive", -olivedrab: "olive drab", -orange: "orange", -orangered: "orange red", -orchid: "orchid", -palegoldenrod: "pale goldenrod", -palegreen: "pale green", -paleturquoise: "pale turquoise", -palevioletred: "pale violet-red", -papayawhip: "papaya whip", -peachpuff: "peach puff", -peru: "peru", -pink: "pink", -plum: "plum", -powderblue: "powder blue", -purple: "purple", -red: "red", -rosybrown: "rosy brown", -royalblue: "royal blue", -saddlebrown: "saddle brown", -salmon: "salmon", -sandybrown: "sandy brown", -seagreen: "sea green", -seashell: "seashell", -sienna: "sienna", -silver: "silver", -skyblue: "sky blue", -slateblue: "slate blue", -slategray: "slate gray", -slategrey: "slate gray", // same as slategray -snow: "snow", -springgreen: "spring green", -steelblue: "steel blue", -tan: "tan", -teal: "teal", -thistle: "thistle", -tomato: "tomato", -transparent: "transparent", -turquoise: "turquoise", -violet: "violet", -wheat: "wheat", -white: "white", -whitesmoke: "white smoke", -yellow: "yellow", -yellowgreen: "yellow green" -}) -//end v1.x content -, -"zh": true, -"zh-tw": true, -"tr": true, -"th": true, -"sv": true, -"sl": true, -"sk": true, -"ru": true, -"ro": true, -"pt": true, -"pt-pt": true, -"pl": true, -"nl": true, -"nb": true, -"ko": true, -"kk": true, -"ja": true, -"it": true, -"hu": true, -"hr": true, -"he": true, -"fr": true, -"fi": true, -"es": true, -"el": true, -"de": true, -"da": true, -"cs": true, -"ca": true, -"az": true, -"ar": true -}); diff --git a/lib/dojo/nls/cs/colors.js.uncompressed.js b/lib/dojo/nls/cs/colors.js.uncompressed.js deleted file mode 100644 index c625f216e..000000000 --- a/lib/dojo/nls/cs/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/cs/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "modravá", - antiquewhite: "krémově bílá", - aqua: "azurová", - aquamarine: "akvamarínová", - azure: "bledě azurová", - beige: "bledě béžová", - bisque: "bledě oranžová", - black: "černá", - blanchedalmond: "mandlová", - blue: "modrá", - blueviolet: "modrofialová", - brown: "červenohnědá", - burlywood: "krémová", - cadetblue: "šedomodrá", - chartreuse: "chartreuska", - chocolate: "hnědobéžová", - coral: "korálová červená", - cornflowerblue: "chrpově modrá", - cornsilk: "režná", - crimson: "karmínová", - cyan: "azurová", - darkblue: "tmavě modrá", - darkcyan: "tmavě azurová", - darkgoldenrod: "tmavě béžová", - darkgray: "tmavě šedá", - darkgreen: "tmavě zelená", - darkgrey: "tmavě šedá", // same as darkgray - darkkhaki: "pískově hnědá", - darkmagenta: "tmavě purpurová", - darkolivegreen: "tmavě olivová", - darkorange: "tmavě oranžová", - darkorchid: "tmavě orchidejová", - darkred: "tmavě červená", - darksalmon: "tmavě lososová", - darkseagreen: "tmavá mořská zelená", - darkslateblue: "tmavá břidlicová modrá", - darkslategray: "tmavá břidlicová šedá", - darkslategrey: "tmavá břidlicová šedá", // same as darkslategray - darkturquoise: "tmavě tyrkysová", - darkviolet: "tmavě fialová", - deeppink: "sytě růžová", - deepskyblue: "sytá nebeská modrá", - dimgray: "kouřově šedá", - dimgrey: "kouřově šedá", // same as dimgray - dodgerblue: "jasně modrá", - firebrick: "cihlová", - floralwhite: "květinově bílá", - forestgreen: "lesní zelená", - fuchsia: "fuchsiová", - gainsboro: "bledě šedá", - ghostwhite: "modravě bílá", - gold: "zlatá", - goldenrod: "béžová", - gray: "šedá", - green: "zelená", - greenyellow: "zelenožlutá", - grey: "šedá", // same as gray - honeydew: "nazelenalá", - hotpink: "jasně růžová", - indianred: "indiánská červená", - indigo: "indigově modrá", - ivory: "slonovinová", - khaki: "písková", - lavender: "levandulová", - lavenderblush: "levandulová růžová", - lawngreen: "jasně zelená", - lemonchiffon: "světle citrónová", - lightblue: "světle modrá", - lightcoral: "světle korálová", - lightcyan: "světle azurová", - lightgoldenrodyellow: "světle žlutá", - lightgray: "světle šedá", - lightgreen: "světle zelená", - lightgrey: "světle šedá", // same as lightgray - lightpink: "světle růžová", - lightsalmon: "světle lososová", - lightseagreen: "světlá mořská zelená", - lightskyblue: "světlá nebeská modrá", - lightslategray: "světlá břidlicová šedá", - lightslategrey: "světlá břidlicová šedá", // same as lightslategray - lightsteelblue: "světlá ocelová modrá", - lightyellow: "bledě žlutá", - lime: "limetková", - limegreen: "limetkově zelená", - linen: "bledě šedobéžová", - magenta: "purpurová", - maroon: "kaštanová", - mediumaquamarine: "střední akvamarínová", - mediumblue: "středně modrá", - mediumorchid: "středně orchidejová", - mediumpurple: "středně nachová", - mediumseagreen: "střední mořská zelená", - mediumslateblue: "střední břidlicová modrá", - mediumspringgreen: "střední jarní zelená", - mediumturquoise: "středně tyrkysová", - mediumvioletred: "středně fialovočervená", - midnightblue: "temně modrá", - mintcream: "mentolová", - mistyrose: "růžovobílá", - moccasin: "bledě krémová", - navajowhite: "světle krémová", - navy: "námořnická modrá", - oldlace: "světle béžová", - olive: "olivová", - olivedrab: "khaki", - orange: "oranžová", - orangered: "oranžovočervená", - orchid: "orchidejová", - palegoldenrod: "bledě písková", - palegreen: "bledě zelená", - paleturquoise: "bledě tyrkysová", - palevioletred: "bledě fialovočervená", - papayawhip: "papájová", - peachpuff: "broskvová", - peru: "karamelová", - pink: "růžová", - plum: "švestková", - powderblue: "bledě modrá", - purple: "nachová", - red: "červená", - rosybrown: "růžovohnědá", - royalblue: "královská modrá", - saddlebrown: "hnědá", - salmon: "lososová", - sandybrown: "oranžovohnědá", - seagreen: "mořská zelená", - seashell: "lasturová", - sienna: "siena", - silver: "stříbrná", - skyblue: "nebeská modrá", - slateblue: "břidlicová modrá", - slategray: "břidlicová šedá", - slategrey: "břidlicová šedá", // same as slategray - snow: "sněhobílá", - springgreen: "jarní zelená", - steelblue: "ocelová modrá", - tan: "šedobéžová", - teal: "šedozelená", - thistle: "bodláková", - tomato: "tomatová", - transparent: "průhledná", - turquoise: "tyrkysová", - violet: "fialová", - wheat: "zlatohnědá", - white: "bílá", - whitesmoke: "kouřově bílá", - yellow: "žlutá", - yellowgreen: "žlutozelená" -}) -); diff --git a/lib/dojo/nls/da/colors.js.uncompressed.js b/lib/dojo/nls/da/colors.js.uncompressed.js deleted file mode 100644 index 4b40f4834..000000000 --- a/lib/dojo/nls/da/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/da/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "babyblå", - antiquewhite: "antikhvid", - aqua: "akvablå", - aquamarine: "akvamarin", - azure: "azurblå", - beige: "beige", - bisque: "gulgrå", - black: "sort", - blanchedalmond: "blanceret mandel", - blue: "blå", - blueviolet: "blåviolet", - brown: "brun", - burlywood: "tobak", - cadetblue: "kadetblå", - chartreuse: "chartreuse", - chocolate: "rust", - coral: "koralrød", - cornflowerblue: "kornblomstblå", - cornsilk: "majs", - crimson: "blodrød", - cyan: "cyan", - darkblue: "mørkeblå", - darkcyan: "mørk cyan", - darkgoldenrod: "mørk gyldenris", - darkgray: "mørkegrå", - darkgreen: "mørkegrøn", - darkgrey: "mørkegrå", // same as darkgray - darkkhaki: "mørk khaki", - darkmagenta: "mørk magenta", - darkolivegreen: "mørk olivengrøn", - darkorange: "mørk orange", - darkorchid: "mørk orkide", - darkred: "mørkerød", - darksalmon: "mørk laksefarvet", - darkseagreen: "mørk havgrøn", - darkslateblue: "mørk skiferblå", - darkslategray: "mørk skifergrå", - darkslategrey: "mørk skifergrå", // same as darkslategray - darkturquoise: "mørk turkis", - darkviolet: "mørkelilla", - deeppink: "dyb pink", - deepskyblue: "dyb himmelblå", - dimgray: "svag grå", - dimgrey: "svag grå", // same as dimgray - dodgerblue: "dodgerblå", - firebrick: "chamottesten", - floralwhite: "blomsterhvid", - forestgreen: "skovgrøn", - fuchsia: "lyslilla", - gainsboro: "gainsboro", - ghostwhite: "spøgelseshvid", - gold: "guld", - goldenrod: "gyldenris", - gray: "grå", - green: "grøn", - greenyellow: "grøngul", - grey: "grå", // same as gray - honeydew: "honningdug", - hotpink: "mørk rosa", - indianred: "lys rødbrun", - indigo: "indigo", - ivory: "elfenben", - khaki: "khaki", - lavender: "lysviolet", - lavenderblush: "lavendelrød", - lawngreen: "græsgrøn", - lemonchiffon: "citronfromage", - lightblue: "lyseblå", - lightcoral: "lys koralrød", - lightcyan: "lys cyan", - lightgoldenrodyellow: "lys gyldenrisgul", - lightgray: "lysegrå", - lightgreen: "lysegrøn", - lightgrey: "lysegrå", // same as lightgray - lightpink: "lys pink", - lightsalmon: "lys laksefarvet", - lightseagreen: "lys havgrøn", - lightskyblue: "lys himmelblå", - lightslategray: "lys skifergrå", - lightslategrey: "lys skifergrå", // same as lightslategray - lightsteelblue: "lys stålblå", - lightyellow: "lysegul", - lime: "lime", - limegreen: "limegrøn", - linen: "lærred", - magenta: "magenta", - maroon: "rødbrun", - mediumaquamarine: "mellem akvamarin", - mediumblue: "mellemblå", - mediumorchid: "mellem orkide", - mediumpurple: "mellemlilla", - mediumseagreen: "mellemhavgrøn", - mediumslateblue: "mellemskiferblå", - mediumspringgreen: "mellemforårsgrøn", - mediumturquoise: "mellemturkis", - mediumvioletred: "mellemviolet", - midnightblue: "midnatsblå", - mintcream: "pebermyntecreme", - mistyrose: "blegrosa", - moccasin: "fruesko", - navajowhite: "navajo-hvid", - navy: "marineblå", - oldlace: "kniplingshvid", - olive: "olivengrøn", - olivedrab: "brungrøn", - orange: "orange", - orangered: "orangerød", - orchid: "orkide", - palegoldenrod: "bleg gyldenris", - palegreen: "bleggrøn", - paleturquoise: "bleg turkis", - palevioletred: "blegviolet", - papayawhip: "papaya", - peachpuff: "fersken", - peru: "peru", - pink: "pink", - plum: "blomme", - powderblue: "pudderblå", - purple: "lilla", - red: "rød", - rosybrown: "rosabrun", - royalblue: "kongeblå", - saddlebrown: "saddelbrun", - salmon: "laksefarvet", - sandybrown: "sandbrun", - seagreen: "havgrøn", - seashell: "muslingeskal", - sienna: "sienna", - silver: "sølv", - skyblue: "himmelblå", - slateblue: "skiferblå", - slategray: "skifergrå", - slategrey: "skifergrå", // same as slategray - snow: "sne", - springgreen: "forårsgrøn", - steelblue: "metalblå", - tan: "tan", - teal: "blågrøn", - thistle: "tidsel", - tomato: "tomat", - transparent: "transparent", - turquoise: "turkis", - violet: "lilla", - wheat: "korngul", - white: "hvid", - whitesmoke: "hvid røg", - yellow: "gul", - yellowgreen: "gulgrøn" -}) -); diff --git a/lib/dojo/nls/de/colors.js.uncompressed.js b/lib/dojo/nls/de/colors.js.uncompressed.js deleted file mode 100644 index 8d376c49a..000000000 --- a/lib/dojo/nls/de/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/de/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "Alice-blau", - antiquewhite: "Antikweiß", - aqua: "Wasserblau", - aquamarine: "Aquamarin", - azure: "Azur", - beige: "Beige", - bisque: "Bisquit", - black: "Schwarz", - blanchedalmond: "Mandelweiß", - blue: "Blau", - blueviolet: "Blauviolett", - brown: "Braun", - burlywood: "Burlywood", - cadetblue: "Kadettenblau", - chartreuse: "Helles Gelbgrün", - chocolate: "Schokoladenbraun", - coral: "Koralle", - cornflowerblue: "Kornblumenblau", - cornsilk: "Kornseide", - crimson: "Karmesinrot", - cyan: "Zyan", - darkblue: "Dunkelblau", - darkcyan: "Dunkelzyan", - darkgoldenrod: "Dunkelgoldgelb", - darkgray: "Dunkelgrau", - darkgreen: "Dunkelgrün", - darkgrey: "Dunkelgrau", // same as darkgray - darkkhaki: "Dunkelkhaki", - darkmagenta: "Dunkelmagenta", - darkolivegreen: "Dunkelolivgrün", - darkorange: "Dunkelorange", - darkorchid: "Dunkelorchidee", - darkred: "Dunkelrot", - darksalmon: "Dunkellachs", - darkseagreen: "Dunkles Meergrün", - darkslateblue: "Dunkelschieferblau", - darkslategray: "Dunkelschiefergrau", - darkslategrey: "Dunkelschiefergrau", // same as darkslategray - darkturquoise: "Dunkeltürkis", - darkviolet: "Dunkelviolett", - deeppink: "Tiefrosa", - deepskyblue: "Dunkles Himmelblau", - dimgray: "Blassgrau", - dimgrey: "Blassgrau", // same as dimgray - dodgerblue: "Dodger-blau", - firebrick: "Schamottestein", - floralwhite: "Blütenweiß", - forestgreen: "Forstgrün", - fuchsia: "Fuchsia", - gainsboro: "Gainsboro", - ghostwhite: "Geisterweiß", - gold: "Gold", - goldenrod: "Goldgelb", - gray: "Grau", - green: "Grün", - greenyellow: "Grüngelb", - grey: "Grau", // same as gray - honeydew: "Honigtau", - hotpink: "Knallrosa", - indianred: "Indischrot", - indigo: "Indigoblau", - ivory: "Elfenbein", - khaki: "Khaki", - lavender: "Lavendelblau", - lavenderblush: "Lavendelhauch", - lawngreen: "Grasgrün", - lemonchiffon: "Zitronenchiffon", - lightblue: "Hellblau", - lightcoral: "Hellkoralle", - lightcyan: "Hellzyan", - lightgoldenrodyellow: "Hellgoldgelb", - lightgray: "Hellgrau", - lightgreen: "Hellgrün", - lightgrey: "Hellgrau", // same as lightgray - lightpink: "Hellrosa", - lightsalmon: "Helllachs", - lightseagreen: "Helles Meergrün", - lightskyblue: "Helles Himmelblau", - lightslategray: "Helles Schiefergrau", - lightslategrey: "Helles Schiefergrau", // same as lightslategray - lightsteelblue: "Helles Stahlblau", - lightyellow: "Hellgelb", - lime: "Limone", - limegreen: "Limonengrün", - linen: "Leinen", - magenta: "Magenta", - maroon: "Kastanienbraun", - mediumaquamarine: "Mittelaquamarin", - mediumblue: "Mittelblau", - mediumorchid: "Mittelorchidee", - mediumpurple: "Mittelpurpur", - mediumseagreen: "Mittelmeeresgrün", - mediumslateblue: "Mittelschieferblau ", - mediumspringgreen: "Mittelfrühlingsgrün", - mediumturquoise: "Mitteltürkis ", - mediumvioletred: "Mittelviolettrot ", - midnightblue: "Mitternachtblau", - mintcream: "Mintcreme", - mistyrose: "Blassrose", - moccasin: "Mokassin", - navajowhite: "Navajo-weiß", - navy: "Marineblau", - oldlace: "Alte Spitze", - olive: "Oliv", - olivedrab: "Olivgrau", - orange: "Orange", - orangered: "Orangerot", - orchid: "Orchidee", - palegoldenrod: "Blassgoldgelb", - palegreen: "Blassgrün", - paleturquoise: "Blasstürkis", - palevioletred: "Blassviolettrot ", - papayawhip: "Papayacreme", - peachpuff: "Pfirsich", - peru: "Peru", - pink: "Rosa", - plum: "Pflaume", - powderblue: "Pulverblau", - purple: "Purpurrot", - red: "Rot", - rosybrown: "Rosigbraun", - royalblue: "Königsblau", - saddlebrown: "Sattelbraun", - salmon: "Lachs", - sandybrown: "Sandbraun", - seagreen: "Meeresgrün", - seashell: "Muschelweiß", - sienna: "Sienna", - silver: "Silbergrau", - skyblue: "Himmelblau", - slateblue: "Schieferblau", - slategray: "Schiefergrau", - slategrey: "Schiefergrau", // same as slategray - snow: "Schneeweiß", - springgreen: "Frühlingsgrün", - steelblue: "Stahlblau", - tan: "Hautfarben", - teal: "Smaragdgrün", - thistle: "Distel", - tomato: "Tomatenrot", - transparent: "Transparent", - turquoise: "Türkis", - violet: "Violett", - wheat: "Weizen", - white: "Weiß", - whitesmoke: "Rauchweiß", - yellow: "Gelb", - yellowgreen: "Gelbgrün" -}) -); diff --git a/lib/dojo/nls/el/colors.js.uncompressed.js b/lib/dojo/nls/el/colors.js.uncompressed.js deleted file mode 100644 index 8f4bc0eca..000000000 --- a/lib/dojo/nls/el/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/el/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "σιέλ", - antiquewhite: "ξεθωριασμένο λευκό", - aqua: "γαλάζιο", - aquamarine: "γαλαζοπράσινο", - azure: "μπλε του ουρανού", - beige: "μπεζ", - bisque: "σκούρο κρεμ", - black: "μαύρο", - blanchedalmond: "ζαχαρί", - blue: "μπλε", - blueviolet: "βιολετί", - brown: "καφέ", - burlywood: "καφέ του ξύλου", - cadetblue: "μπλε του στρατού", - chartreuse: "φωτεινό κιτρινοπράσινο", - chocolate: "σοκολατί", - coral: "κοραλί", - cornflowerblue: "μεσαίο μπλε", - cornsilk: "ασημί του καλαμποκιού", - crimson: "βαθύ κόκκινο", - cyan: "κυανό", - darkblue: "σκούρο μπλε", - darkcyan: "σκούρο κυανό", - darkgoldenrod: "σκούρο χρυσοκίτρινο", - darkgray: "σκούρο γκρι", - darkgreen: "σκούρο πράσινο", - darkgrey: "σκούρο γκρι", // same as darkgray - darkkhaki: "σκούρο χακί", - darkmagenta: "σκούρο ματζέντα", - darkolivegreen: "σκούρο πράσινο λαδί", - darkorange: "σκούρο πορτοκαλί", - darkorchid: "σκούρα ορχιδέα", - darkred: "σκούρο κόκκινο", - darksalmon: "σκούρο σομόν", - darkseagreen: "σκούρο πράσινο της θάλασσας", - darkslateblue: "σκούρο μεταλλικό μπλε", - darkslategray: "σκούρο μεταλλικό γκρι", - darkslategrey: "σκούρο μεταλλικό γκρι", // same as darkslategray - darkturquoise: "σκούρο τυρκουάζ", - darkviolet: "σκούρο βιολετί", - deeppink: "βαθύ ροζ", - deepskyblue: "βαθύ μπλε το ουρανού", - dimgray: "αχνό γκρι", - dimgrey: "αχνό γκρι", // same as dimgray - dodgerblue: "σκούρο ελεκτρίκ", - firebrick: "κεραμιδί", - floralwhite: "λευκό των ανθών", - forestgreen: "πράσινο του δάσους", - fuchsia: "φούξια", - gainsboro: "γκρι σιέλ", - ghostwhite: "άσπρο", - gold: "χρυσαφί", - goldenrod: "χρυσοκίτρινο", - gray: "γκρι", - green: "πράσινο", - greenyellow: "πρασινοκίτρινο", - grey: "γκρι", // same as gray - honeydew: "μελί", - hotpink: "έντονο ροζ", - indianred: "ινδικό κόκκινο", - indigo: "λουλακί", - ivory: "ιβουάρ", - khaki: "χακί", - lavender: "λίλα", - lavenderblush: "μωβ λεβάντας", - lawngreen: "σκούρο πράσινο", - lemonchiffon: "λεμονί", - lightblue: "ανοιχτό μπλε", - lightcoral: "ανοιχτό κοραλί", - lightcyan: "ανοιχτό κυανό", - lightgoldenrodyellow: "ανοιχτό χρυσοκίτρινο", - lightgray: "ανοιχτό γκρι", - lightgreen: "ανοιχτό πράσινο", - lightgrey: "ανοιχτό γκρι", // same as lightgray - lightpink: "ανοιχτό ροζ", - lightsalmon: "ανοιχτό σομόν", - lightseagreen: "ανοιχτό πράσινο της θάλασσας", - lightskyblue: "ανοιχτό μπλε το ουρανού", - lightslategray: "ανοιχτό μεταλλικό γκρι", - lightslategrey: "ανοιχτό μεταλλικό γκρι", // same as lightslategray - lightsteelblue: "ανοιχτό μπλε ατσαλιού", - lightyellow: "ανοιχτό κίτρινο", - lime: "λαχανί", - limegreen: "πράσινο λαχανί", - linen: "σπαγγί", - magenta: "ματζέντα", - maroon: "βυσσινί", - mediumaquamarine: "μεσαίο γαλαζοπράσινο", - mediumblue: "μεσαίο μπλε", - mediumorchid: "μεσαία ορχιδέα", - mediumpurple: "μεσαίο μωβ", - mediumseagreen: "μεσαίο πράσινο της θάλασσας", - mediumslateblue: "μεσαίο μεταλλικό μπλε", - mediumspringgreen: "μεσαίο πράσινο της άνοιξης", - mediumturquoise: "μεσαίο τυρκουάζ", - mediumvioletred: "μεσαίο κόκκινο βιολετί", - midnightblue: "πολύ σκούρο μπλε", - mintcream: "βεραμάν", - mistyrose: "τριανταφυλλί", - moccasin: "μόκα", - navajowhite: "άσπρο Ναβάχο", - navy: "μπλε του ναυτικού", - oldlace: "εκρού", - olive: "πράσινο λαδί", - olivedrab: "λαδί", - orange: "πορτοκαλί", - orangered: "πορτοκαλοκόκκινο", - orchid: "ορχιδέα", - palegoldenrod: "αχνό χρυσοκίτρινο", - palegreen: "αχνό πράσινο", - paleturquoise: "αχνό τυρκουάζ", - palevioletred: "αχνό κόκκινο βιολετί", - papayawhip: "αχνό ροζ", - peachpuff: "ροδακινί", - peru: "περού", - pink: "ροζ", - plum: "δαμασκηνί", - powderblue: "αχνό μπλε", - purple: "μωβ", - red: "κόκκινο", - rosybrown: "καστανό", - royalblue: "έντονο μπλε", - saddlebrown: "βαθύ καφέ", - salmon: "σομόν", - sandybrown: "μπεζ της άμμου", - seagreen: "πράσινο της θάλασσας", - seashell: "κοχύλι", - sienna: "καφεκίτρινο", - silver: "ασημί", - skyblue: "μπλε του ουρανού", - slateblue: "μεταλλικό μπλε", - slategray: "μεταλλικό γκρι", - slategrey: "μεταλλικό γκρι", // same as slategray - snow: "χιονί", - springgreen: "πράσινο της άνοιξης", - steelblue: "μπλε ατσαλιού", - tan: "ώχρα", - teal: "πετρόλ", - thistle: "μωβ βιολετί", - tomato: "κόκκινο της ντομάτας", - transparent: "διαφανές", - turquoise: "τυρκουάζ", - violet: "βιολετί", - wheat: "σταρένιο", - white: "λευκό", - whitesmoke: "λευκός καπνός", - yellow: "κίτρινο", - yellowgreen: "κιτρινοπράσινο" -}) -); diff --git a/lib/dojo/nls/es/colors.js.uncompressed.js b/lib/dojo/nls/es/colors.js.uncompressed.js deleted file mode 100644 index 121f3510a..000000000 --- a/lib/dojo/nls/es/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/es/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "blanco azulado", - antiquewhite: "blanco antiguo", - aqua: "aguamarina", - aquamarine: "aguamarina 2", - azure: "blanco cielo", - beige: "beige", - bisque: "miel", - black: "negro", - blanchedalmond: "almendra pálido", - blue: "azul", - blueviolet: "azul violáceo", - brown: "marrón", - burlywood: "madera", - cadetblue: "azul cadete", - chartreuse: "verde pálido 2", - chocolate: "chocolate", - coral: "coral", - cornflowerblue: "azul aciano", - cornsilk: "crudo", - crimson: "carmesí", - cyan: "cian", - darkblue: "azul oscuro", - darkcyan: "cian oscuro", - darkgoldenrod: "ocre oscuro", - darkgray: "gris oscuro", - darkgreen: "verde oscuro", - darkgrey: "gris oscuro", // same as darkgray - darkkhaki: "caqui oscuro", - darkmagenta: "magenta oscuro", - darkolivegreen: "verde oliva oscuro", - darkorange: "naranja oscuro", - darkorchid: "orquídea oscuro", - darkred: "rojo oscuro", - darksalmon: "salmón oscuro", - darkseagreen: "verde mar oscuro", - darkslateblue: "azul pizarra oscuro", - darkslategray: "gris pizarra oscuro", - darkslategrey: "gris pizarra oscuro", // same as darkslategray - darkturquoise: "turquesa oscuro", - darkviolet: "violeta oscuro", - deeppink: "rosa fuerte", - deepskyblue: "azul cielo fuerte", - dimgray: "gris marengo", - dimgrey: "gris marengo", // same as dimgray - dodgerblue: "azul fuerte", - firebrick: "teja", - floralwhite: "blanco manteca", - forestgreen: "verde pino", - fuchsia: "fucsia", - gainsboro: "azul gainsboro", - ghostwhite: "blanco ligero", - gold: "oro", - goldenrod: "ocre", - gray: "gris", - green: "verde", - greenyellow: "amarillo verdoso", - grey: "gris", // same as gray - honeydew: "flor de rocío", - hotpink: "rosa oscuro", - indianred: "rojo teja", - indigo: "añil", - ivory: "marfil", - khaki: "caqui", - lavender: "lavanda", - lavenderblush: "lavanda rosácea", - lawngreen: "verde césped", - lemonchiffon: "amarillo pastel", - lightblue: "azul claro", - lightcoral: "coral claro", - lightcyan: "cian claro", - lightgoldenrodyellow: "ocre claro", - lightgray: "gris claro", - lightgreen: "verde claro", - lightgrey: "gris claro", // same as lightgray - lightpink: "rosa claro", - lightsalmon: "salmón claro", - lightseagreen: "verde mar claro", - lightskyblue: "azul cielo claro", - lightslategray: "gris pizarra claro", - lightslategrey: "gris pizarra claro", // same as lightslategray - lightsteelblue: "azul acero claro", - lightyellow: "amarillo claro", - lime: "lima", - limegreen: "lima limón", - linen: "blanco arena", - magenta: "magenta", - maroon: "granate", - mediumaquamarine: "aguamarina medio", - mediumblue: "azul medio", - mediumorchid: "orquídea medio", - mediumpurple: "púrpura medio", - mediumseagreen: "verde mar medio", - mediumslateblue: "azul pizarra medio", - mediumspringgreen: "verde primavera medio", - mediumturquoise: "turquesa medio", - mediumvioletred: "rojo violáceo medio", - midnightblue: "azul medianoche", - mintcream: "crema menta", - mistyrose: "rosa difuminado", - moccasin: "arena", - navajowhite: "blanco navajo", - navy: "azul marino", - oldlace: "encaje antiguo", - olive: "verde oliva", - olivedrab: "verde oliva pardusco", - orange: "naranja", - orangered: "rojo anaranjado", - orchid: "orquídea", - palegoldenrod: "ocre pálido", - palegreen: "verde pálido", - paleturquoise: "turquesa pálido", - palevioletred: "rojo violáceo pálido", - papayawhip: "papaya claro", - peachpuff: "melocotón", - peru: "perú", - pink: "rosa", - plum: "ciruela", - powderblue: "azul suave", - purple: "púrpura", - red: "rojo", - rosybrown: "marrón rosáceo", - royalblue: "azul real", - saddlebrown: "cuero", - salmon: "salmón", - sandybrown: "marrón arcilla", - seagreen: "verde mar", - seashell: "blanco marfil", - sienna: "siena", - silver: "plateado", - skyblue: "azul cielo", - slateblue: "azul pizarra", - slategray: "gris pizarra", - slategrey: "gris pizarra", // same as slategray - snow: "nieve", - springgreen: "verde fuerte", - steelblue: "azul acero", - tan: "canela", - teal: "verde azulado", - thistle: "cardo", - tomato: "tomate", - transparent: "transparente", - turquoise: "turquesa", - violet: "violeta", - wheat: "trigo", - white: "blanco", - whitesmoke: "blanco ahumado", - yellow: "amarillo", - yellowgreen: "verde amarillento" -}) -); diff --git a/lib/dojo/nls/fi/colors.js.uncompressed.js b/lib/dojo/nls/fi/colors.js.uncompressed.js deleted file mode 100644 index 935c23b31..000000000 --- a/lib/dojo/nls/fi/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/fi/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "vaaleanharmaansininen", - antiquewhite: "antiikinvalkoinen", - aqua: "sinivihreä", - aquamarine: "vedenvihreä", - azure: "taivaansininen", - beige: "vaaleanruskea", - bisque: "vaaleanruskea", - black: "musta", - blanchedalmond: "kuorittu manteli", - blue: "sininen", - blueviolet: "sinivioletti", - brown: "ruskea", - burlywood: "puunruskea", - cadetblue: "meren vihreä", - chartreuse: "kellanvihreä", - chocolate: "suklaanruskea", - coral: "koralli", - cornflowerblue: "syvänsininen", - cornsilk: "maissinkeltainen", - crimson: "karmiininpunainen", - cyan: "syaani", - darkblue: "tummansininen", - darkcyan: "tumma turkoosi", - darkgoldenrod: "tumma kultapiisku", - darkgray: "tummanharmaa", - darkgreen: "tummanvihreä", - darkgrey: "tummanharmaa", // same as darkgray - darkkhaki: "tumma khaki", - darkmagenta: "tumma magenta", - darkolivegreen: "tummanoliivinvihreä", - darkorange: "tummanoranssi", - darkorchid: "tumma orkidea", - darkred: "tummanpunainen", - darksalmon: "tumma lohenpunainen", - darkseagreen: "tumma merenvihreä", - darkslateblue: "tumma siniharmaa", - darkslategray: "tummanharmaa", - darkslategrey: "tummanharmaa", // same as darkslategray - darkturquoise: "tumma turkoosi", - darkviolet: "tummanvioletti", - deeppink: "syvä vaaleanpunainen", - deepskyblue: "tumma taivaansininen", - dimgray: "himmeänharmaa", - dimgrey: "himmeänharmaa", // same as dimgray - dodgerblue: "Dodger-sininen", - firebrick: "poltetun tiilen punainen", - floralwhite: "kukanvalkoinen", - forestgreen: "metsänvihreä", - fuchsia: "purppura", - gainsboro: "gainsboro", - ghostwhite: "lakananvalkoinen", - gold: "kulta", - goldenrod: "kullanruskea", - gray: "harmaa", - green: "vihreä", - greenyellow: "vihreänkeltainen", - grey: "harmaa", // same as gray - honeydew: "hunajameloninvihreä", - hotpink: "pinkki", - indianred: "kirkkaanpunainen", - indigo: "indigo", - ivory: "norsunluu", - khaki: "khaki", - lavender: "laventeli", - lavenderblush: "laventelinpunainen", - lawngreen: "ruohonvihreä", - lemonchiffon: "sitruunankeltainen", - lightblue: "vaaleansininen", - lightcoral: "vaalea koralli", - lightcyan: "vaalea syaani", - lightgoldenrodyellow: "vaalea kultapiiskunkeltainen", - lightgray: "vaaleanharmaa", - lightgreen: "vaaleanvihreä", - lightgrey: "vaaleanharmaa", // same as lightgray - lightpink: "vaaleanpunainen", - lightsalmon: "vaalea lohenpunainen", - lightseagreen: "vaalea merenvihreä", - lightskyblue: "vaalea taivaansininen", - lightslategray: "vaaleanharmaa", - lightslategrey: "vaaleanharmaa", // same as lightslategray - lightsteelblue: "vaalea teräksensininen", - lightyellow: "vaaleankeltainen", - lime: "vaaleanvihreä", - limegreen: "limetinvihreä", - linen: "pellavanvaalea", - magenta: "magenta", - maroon: "kastanjanruskea", - mediumaquamarine: "keskivaalea vedenvihreä", - mediumblue: "keskisininen", - mediumorchid: "keskivaalea orkidea", - mediumpurple: "keskivaalea violetti", - mediumseagreen: "keskivaalea merenvihreä", - mediumslateblue: "keskivaalea siniharmaa", - mediumspringgreen: "keskivaalea keväänvihreä", - mediumturquoise: "keskivaalea turkoosi", - mediumvioletred: "keskivaalea lila", - midnightblue: "yönsininen", - mintcream: "minttukreemi", - mistyrose: "utuinen ruusu", - moccasin: "nahanruskea", - navajowhite: "navajonvalkoinen", - navy: "laivastonsininen", - oldlace: "vanha pitsi", - olive: "oliivinvihreä", - olivedrab: "oliivinruskea", - orange: "oranssi", - orangered: "oranssinpunainen", - orchid: "orkidea", - palegoldenrod: "haalea kultapiisku", - palegreen: "haalea vihreä", - paleturquoise: "haalea turkoosi", - palevioletred: "haalea lila", - papayawhip: "papaijavaahto", - peachpuff: "persikka", - peru: "peru", - pink: "vaaleanpunainen", - plum: "luumunpunainen", - powderblue: "harmaansininen", - purple: "violetti", - red: "punainen", - rosybrown: "punertavanruskea", - royalblue: "syvänsininen", - saddlebrown: "satulanruskea", - salmon: "lohenpunainen", - sandybrown: "hiekanruskea", - seagreen: "merenvihreä", - seashell: "simpukankuori", - sienna: "siena", - silver: "hopea", - skyblue: "taivaansininen", - slateblue: "savensininen", - slategray: "savenharmaa", - slategrey: "savenharmaa", // same as slategray - snow: "lumivalkoinen", - springgreen: "keväänvihreä", - steelblue: "teräksensininen", - tan: "kellanruskea", - teal: "sinivihreä", - thistle: "ohdake", - tomato: "tomaatinpunainen", - transparent: "läpinäkyvä", - turquoise: "turkoosi", - violet: "violetti", - wheat: "vehnänkeltainen", - white: "valkoinen", - whitesmoke: "savunvalkea", - yellow: "keltainen", - yellowgreen: "kellanvihreä" -}) -); diff --git a/lib/dojo/nls/fr/colors.js.uncompressed.js b/lib/dojo/nls/fr/colors.js.uncompressed.js deleted file mode 100644 index e04b51271..000000000 --- a/lib/dojo/nls/fr/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/fr/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "bleu gris", - antiquewhite: "blanc antique", - aqua: "bleu-vert", - aquamarine: "aigue-marine", - azure: "bleu azur", - beige: "beige", - bisque: "beige rosé", - black: "noir", - blanchedalmond: "coquille d'œuf", - blue: "bleu", - blueviolet: "bleu-violet", - brown: "brun", - burlywood: "bois précieux", - cadetblue: "bleu pétrole", - chartreuse: "vert vif", - chocolate: "chocolat", - coral: "corail", - cornflowerblue: "bleuet", - cornsilk: "vanille", - crimson: "cramoisi", - cyan: "cyan", - darkblue: "bleu foncé", - darkcyan: "cyan foncé", - darkgoldenrod: "jaune paille foncé", - darkgray: "gris foncé", - darkgreen: "vert foncé", - darkgrey: "gris foncé", // same as darkgray - darkkhaki: "kaki foncé", - darkmagenta: "magenta foncé", - darkolivegreen: "olive foncé", - darkorange: "orange foncé", - darkorchid: "lilas foncé", - darkred: "rouge foncé", - darksalmon: "saumon foncé", - darkseagreen: "vert d'eau foncé", - darkslateblue: "bleu ardoise foncé", - darkslategray: "gris ardoise foncé", - darkslategrey: "gris ardoise foncé", // same as darkslategray - darkturquoise: "turquoise foncé", - darkviolet: "violet foncé", - deeppink: "rose soutenu", - deepskyblue: "bleu ciel soutenu", - dimgray: "gris soutenu", - dimgrey: "gris soutenu", // same as dimgray - dodgerblue: "bleu France", - firebrick: "rouge brique", - floralwhite: "lys", - forestgreen: "vert sapin", - fuchsia: "fuchsia", - gainsboro: "gris souris", - ghostwhite: "blanc laiteux", - gold: "or", - goldenrod: "jaune paille", - gray: "gris", - green: "vert", - greenyellow: "vert-jaune", - grey: "gris", // same as gray - honeydew: "opalin", - hotpink: "rose intense", - indianred: "rose indien", - indigo: "indigo", - ivory: "ivoire", - khaki: "kaki", - lavender: "lavande", - lavenderblush: "lavandin", - lawngreen: "vert prairie", - lemonchiffon: "mousse de citron", - lightblue: "bleu clair", - lightcoral: "corail clair", - lightcyan: "cyan clair", - lightgoldenrodyellow: "jaune paille clair", - lightgray: "gris clair", - lightgreen: "vert clair", - lightgrey: "gris clair", // same as lightgray - lightpink: "rose clair", - lightsalmon: "saumon clair", - lightseagreen: "vert d'eau clair", - lightskyblue: "bleu ciel clair", - lightslategray: "gris ardoise clair", - lightslategrey: "gris ardoise clair", // same as lightslategray - lightsteelblue: "bleu acier clair", - lightyellow: "jaune clair", - lime: "vert citron", - limegreen: "citron vert", - linen: "écru", - magenta: "magenta", - maroon: "marron", - mediumaquamarine: "aigue-marine moyen", - mediumblue: "bleu moyen", - mediumorchid: "lilas moyen", - mediumpurple: "pourpre moyen", - mediumseagreen: "vert d'eau moyen", - mediumslateblue: "bleu ardoise moyen", - mediumspringgreen: "vert printemps moyen", - mediumturquoise: "turquoise moyen", - mediumvioletred: "rouge violacé moyen", - midnightblue: "bleu nuit", - mintcream: "crème de menthe", - mistyrose: "rose pâle", - moccasin: "chamois", - navajowhite: "chair", - navy: "bleu marine", - oldlace: "blanc cassé", - olive: "olive", - olivedrab: "brun verdâtre", - orange: "orange", - orangered: "rouge orangé", - orchid: "lilas", - palegoldenrod: "jaune paille pâle", - palegreen: "vert pâle", - paleturquoise: "turquoise pâle", - palevioletred: "rouge violacé pâle", - papayawhip: "crème de papaye", - peachpuff: "pêche", - peru: "caramel", - pink: "rose", - plum: "prune", - powderblue: "bleu de smalt", - purple: "pourpre", - red: "rouge", - rosybrown: "vieux rose", - royalblue: "bleu roi", - saddlebrown: "brun cuir", - salmon: "saumon", - sandybrown: "sable", - seagreen: "vert d'eau", - seashell: "coquillage", - sienna: "terre de sienne", - silver: "argent", - skyblue: "bleu ciel", - slateblue: "bleu ardoise", - slategray: "gris ardoise", - slategrey: "gris ardoise", // same as slategray - snow: "neige", - springgreen: "vert printemps", - steelblue: "bleu acier", - tan: "grège", - teal: "sarcelle", - thistle: "chardon", - tomato: "tomate", - transparent: "transparent", - turquoise: "turquoise", - violet: "violet", - wheat: "blé", - white: "blanc", - whitesmoke: "blanc cendré", - yellow: "jaune", - yellowgreen: "vert jaunâtre" -}) -); diff --git a/lib/dojo/nls/he/colors.js.uncompressed.js b/lib/dojo/nls/he/colors.js.uncompressed.js deleted file mode 100644 index 2ba5f110f..000000000 --- a/lib/dojo/nls/he/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/he/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. -//Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). -//TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? -aliceblue: "כחול פלדה", -antiquewhite: "לבן עתיק", -aqua: "אקווה", -aquamarine: "אקוומארין", -azure: "תכלת עז", -beige: "בז'", -bisque: "לבן שקד", -black: "שחור", -blanchedalmond: "שקד", -blue: "כחול", -blueviolet: "כחול-סגול", -brown: "חום", -burlywood: "חום דהוי", -cadetblue: "כחול ים", -chartreuse: "ירוק-צהוב", -chocolate: "שוקולד", -coral: "אלמוג", -cornflowerblue: "כחול דרדר", -cornsilk: "צהבהב", -crimson: "ארגמן", -cyan: "טורקיז", -darkblue: "כחול כהה", -darkcyan: "טורקיז כהה", -darkgoldenrod: "זהוב כהה", -darkgray: "אפור כהה", -darkgreen: "ירוק כהה", -darkgrey: "אפור כהה", // same as darkgray -darkkhaki: "חאקי כהה", -darkmagenta: "בורדו כהה", -darkolivegreen: "ירוק זית כהה", -darkorange: "כתום כהה", -darkorchid: "סחלב כהה", -darkred: "אדום כהה", -darksalmon: "סלמון כהה", -darkseagreen: "ירוק ים כהה", -darkslateblue: "כחול צפחה כהה", -darkslategray: "אפור צפחה כהה", -darkslategrey: "אפור צפחה כהה", // same as darkslategray -darkturquoise: "טורקיז כהה", -darkviolet: "סגול כהה", -deeppink: "ורוד עמוק", -deepskyblue: "כחול שמיים עמוק", -dimgray: "אפור עמום", -dimgrey: "אפור עמום", // same as dimgray -dodgerblue: "כחול", -firebrick: "לבנה שרופה", -floralwhite: "לבן פרחוני", -forestgreen: "ירוק יער", -fuchsia: "ורוד בהיר", -gainsboro: "גיינסבורו", -ghostwhite: "לבן רפאים", -gold: "זהב", -goldenrod: "זהוב", -gray: "אפור", -green: "ירוק", -greenyellow: "ירוק-צהוב", -grey: "אפור", // same as gray -honeydew: "ירקרק", -hotpink: "ורוד לוהט", -indianred: "אדום דהוי", -indigo: "אינדיגו", -ivory: "שנהב", -khaki: "חאקי", -lavender: "לבנדר", -lavenderblush: "סומק לבנדר", -lawngreen: "ירוק דשא", -lemonchiffon: "ירוק לימון", -lightblue: "תכלת", -lightcoral: "אלמוג בהיר", -lightcyan: "טורקיז בהיר", -lightgoldenrodyellow: "צהוב בהיר", -lightgray: "אפור בהיר", -lightgreen: "ירוק בהיר", -lightgrey: "אפור בהיר", // same as lightgray -lightpink: "ורוד בהיר", -lightsalmon: "סלמון בהיר", -lightseagreen: "ירוק ים בהיר", -lightskyblue: "כחול שמיים בהיר", -lightslategray: "אפור צפחה בהיר", -lightslategrey: "אפור צפחה בהיר", // same as lightslategray -lightsteelblue: "כחול פלדה בהיר", -lightyellow: "צהוב בהיר", -lime: "לימון", -limegreen: "ירוק לימוני", -linen: "פשתן", -magenta: "בורדו", -maroon: "חום אדמדם", -mediumaquamarine: "כחול בינוני", -mediumblue: "תכלת בינוני", -mediumorchid: "סחלב בינוני", -mediumpurple: "סגול בינוני", -mediumseagreen: "ירוק ים בינוני", -mediumslateblue: "כחול צפחה בינוני", -mediumspringgreen: "ירוק אביב בינוני", -mediumturquoise: "טורקיז בינוני", -mediumvioletred: "סגול-אדום בינוני", -midnightblue: "כחול כהה", -mintcream: "קרם מנטה", -mistyrose: "ורוד מעורפל", -moccasin: "מוקסין", -navajowhite: "לבן נוואחו", -navy: "כחול כהה", -oldlace: "תחרה עתיקה", -olive: "זית", -olivedrab: "זית עמום", -orange: "כתום", -orangered: "כתום אדום", -orchid: "סחלב", -palegoldenrod: "זהוב בהיר", -palegreen: "ירוק בהיר", -paleturquoise: "טורקיז בהיר", -palevioletred: "סגול-אדום בהיר", -papayawhip: "פפאיה", -peachpuff: "קציפת אפרסק", -peru: "פרו", -pink: "ורוד", -plum: "שזיף", -powderblue: "כחול חיוור", -purple: "סגול", -red: "אדום", -rosybrown: "חום ורדרד", -royalblue: "כחול מלכותי", -saddlebrown: "חום דהוי", -salmon: "סלמון", -sandybrown: "חום חולי", -seagreen: "ירוק ים", -seashell: "צדף", -sienna: "סיינה", -silver: "כסף", -skyblue: "כחול שמיים", -slateblue: "כחול צפחה", -slategray: "אפור צפחה", -slategrey: "אפור צפחה", // same as slategray -snow: "שלג", -springgreen: "ירוק אביב", -steelblue: "כחול פלדה", -tan: "חום אדמדם", -teal: "כחול-ירוק כהה", -thistle: "דרדר", -tomato: "עגבניה", -transparent: "שקוף", -turquoise: "טורקיז", -violet: "סגול", -wheat: "חיוט", -white: "לבן", -whitesmoke: "עשן לבן", -yellow: "צהוב", -yellowgreen: "ירוק צהוב" -}) -); diff --git a/lib/dojo/nls/hr/colors.js.uncompressed.js b/lib/dojo/nls/hr/colors.js.uncompressed.js deleted file mode 100644 index 5cd5dbc73..000000000 --- a/lib/dojo/nls/hr/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/hr/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. -//Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). -//TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "alice plava", - antiquewhite: "antique bijela", - aqua: "aqua", - aquamarine: "akvamarin", - azure: "azurna", - beige: "bež", - bisque: "svjetlo smeđe ružičasta", - black: "crna", - blanchedalmond: "svjetlo bademasta", - blue: "plava", - blueviolet: "plavo ljubičasta", - brown: "smeđa", - burlywood: "tamno smeđa", - cadetblue: "kadet plava", - chartreuse: "chartreuse", - chocolate: "čokoladna", - coral: "koraljna", - cornflowerblue: "različak plava", - cornsilk: "cornsilk", - crimson: "rumena", - cyan: "cijan", - darkblue: "tamno plava", - darkcyan: "tamno cijan", - darkgoldenrod: "tamno zlatno žuta", - darkgray: "tamno siva", - darkgreen: "tamno zelena", - darkgrey: "tamno siva", // same as darkgray - darkkhaki: "tamno sivo smeđa", - darkmagenta: "tamno grimizna", - darkolivegreen: "tamno maslinasto zelena", - darkorange: "tamno narančasta", - darkorchid: "tamno ružičasta", - darkred: "tamno crvena", - darksalmon: "tamno žuto ružičasta", - darkseagreen: "tamno plavo zelena", - darkslateblue: "tamno sivo plava", - darkslategray: "tamno plavo siva", - darkslategrey: "tamno plavo siva", // same as darkslategray - darkturquoise: "tamno tirkizna", - darkviolet: "tamno ljubičasta", - deeppink: "intenzivno ružičasta", - deepskyblue: "intenzivno nebesko plava", - dimgray: "mutno siva", - dimgrey: "mutno siva", // same as dimgray - dodgerblue: "dodger plava", - firebrick: "žarko crvena", - floralwhite: "cvjetno bijela", - forestgreen: "šumsko zelena", - fuchsia: "fuksija", - gainsboro: "gainsboro", - ghostwhite: "sivo bijela", - gold: "zlatna", - goldenrod: "zlatno žuta", - gray: "siva", - green: "zelena", - greenyellow: "zeleno žuta", - grey: "siva", // same as gray - honeydew: "honeydew", - hotpink: "žarko ružičasta", - indianred: "indijski crveno", - indigo: "indigo", - ivory: "slonovača", - khaki: "sivo smeđa", - lavender: "lavanda", - lavenderblush: "rumena lavanda", - lawngreen: "livadno zelena", - lemonchiffon: "nježno žuta", - lightblue: "svjetlo plava", - lightcoral: "svjetlo koraljna", - lightcyan: "svjetlo cijan", - lightgoldenrodyellow: "svjetlo zlatno žuta", - lightgray: "svjetlo siva", - lightgreen: "svjetlo zelena", - lightgrey: "svjetlo siva", // same as lightgray - lightpink: "svjetlo ružičasta", - lightsalmon: "svjetlo žuto ružičasta", - lightseagreen: "svjetlo plavo zelena", - lightskyblue: "svjetlo nebesko plava", - lightslategray: "svjetlo plavo siva", - lightslategrey: "svjetlo plavo siva", // same as lightslategray - lightsteelblue: "svjetlo čelično plava", - lightyellow: "svjetlo žuta", - lime: "limeta", - limegreen: "limeta zelena", - linen: "platno", - magenta: "grimizna", - maroon: "kestenjasta", - mediumaquamarine: "srednje akvamarin", - mediumblue: "srednje plava", - mediumorchid: "srednje ružičasta", - mediumpurple: "srednje purpurna", - mediumseagreen: "srednje plavo zelena", - mediumslateblue: "srednje sivo plava", - mediumspringgreen: "srednje proljetno zelena", - mediumturquoise: "srednje tirkizna", - mediumvioletred: "srednje ljubičasto crvena", - midnightblue: "ponoćno plava", - mintcream: "blijedo zelena", - mistyrose: "mutno ružičasta", - moccasin: "moccasin", - navajowhite: "krem bijela", - navy: "mornarsko plava", - oldlace: "old lace", - olive: "maslinasta", - olivedrab: "maslinasto siva", - orange: "narančasta", - orangered: "narančasto crvena", - orchid: "ružičasta", - palegoldenrod: "blijedo zlatno žuta", - palegreen: "blijedo zelena", - paleturquoise: "blijedo tirkizna", - palevioletred: "blijedo ljubičasto crvena", - papayawhip: "blijedo narančasta", - peachpuff: "breskva", - peru: "peru", - pink: "roza", - plum: "šljiva", - powderblue: "blijedo plava", - purple: "purpurna", - red: "crvena", - rosybrown: "ružičasto smeđa", - royalblue: "kraljevski plava", - saddlebrown: "srednje smeđa", - salmon: "žuto ružičasta", - sandybrown: "pješčano smeđa", - seagreen: "plavo zelena", - seashell: "nježno ružičasta", - sienna: "sjena", - silver: "srebrna", - skyblue: "nebesko plava", - slateblue: "sivo plava", - slategray: "plavo siva", - slategrey: "plavo siva", // same as slategray - snow: "snijeg", - springgreen: "proljetno zeleno", - steelblue: "čelično plava", - tan: "ten", - teal: "teal", - thistle: "čičak", - tomato: "rajčica", - transparent: "prozirno", - turquoise: "tirkizna", - violet: "ljubičasta", - wheat: "pšenica", - white: "bijela", - whitesmoke: "bijeli dim", - yellow: "žuta", - yellowgreen: "žuto zelena" -}) -); diff --git a/lib/dojo/nls/hu/colors.js.uncompressed.js b/lib/dojo/nls/hu/colors.js.uncompressed.js deleted file mode 100644 index 92773aeab..000000000 --- a/lib/dojo/nls/hu/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/hu/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "Alice kék", - antiquewhite: "antik fehér", - aqua: "vízszín", - aquamarine: "akvamarin", - azure: "azúrkék", - beige: "bézs", - bisque: "porcelán", - black: "fekete", - blanchedalmond: "hámozott mandula", - blue: "kék", - blueviolet: "ibolyakék", - brown: "barna", - burlywood: "nyersfa", - cadetblue: "kadétkék", - chartreuse: "chartreuse", - chocolate: "csokoládé", - coral: "korall", - cornflowerblue: "búzavirágkék", - cornsilk: "kukoricahaj", - crimson: "karmazsinvörös", - cyan: "ciánkék", - darkblue: "sötétkék", - darkcyan: "sötét ciánkék", - darkgoldenrod: "sötét aranyvessző", - darkgray: "sötétszürke", - darkgreen: "sötétzöld", - darkgrey: "sötétszürke", // same as darkgray - darkkhaki: "sötét khakiszín", - darkmagenta: "sötétbíbor", - darkolivegreen: "sötét olajzöld", - darkorange: "sötét narancssárga", - darkorchid: "sötét orchidea", - darkred: "sötétvörös", - darksalmon: "sötét lazacszín", - darkseagreen: "sötét tengerzöld", - darkslateblue: "sötét palakék", - darkslategray: "sötét palaszürke", - darkslategrey: "sötét palaszürke", // same as darkslategray - darkturquoise: "sötét türkizkék", - darkviolet: "sötét ibolyaszín", - deeppink: "sötétrózsaszín", - deepskyblue: "sötét égszínkék", - dimgray: "halványszürke", - dimgrey: "halványszürke", // same as dimgray - dodgerblue: "dodger kék", - firebrick: "téglavörös", - floralwhite: "virágfehér", - forestgreen: "erdőzöld", - fuchsia: "fukszia", - gainsboro: "gainsboro", - ghostwhite: "szellemfehér", - gold: "arany", - goldenrod: "aranyvessző", - gray: "szürke", - green: "zöld", - greenyellow: "zöldessárga", - grey: "szürke", // same as gray - honeydew: "mézharmat", - hotpink: "meleg rózsaszín", - indianred: "indiánvörös", - indigo: "indigó", - ivory: "elefántcsont", - khaki: "khakiszín", - lavender: "levendula", - lavenderblush: "pirosas levendula", - lawngreen: "fűzöld", - lemonchiffon: "sárga műselyem", - lightblue: "világoskék", - lightcoral: "világos korall", - lightcyan: "világos ciánkék", - lightgoldenrodyellow: "világos aranyvessző sárga", - lightgray: "világosszürke", - lightgreen: "világoszöld", - lightgrey: "világosszürke", // same as lightgray - lightpink: "világos rózsaszín", - lightsalmon: "világos lazacszín", - lightseagreen: "világos tengerzöld", - lightskyblue: "világos égszínkék", - lightslategray: "világos palaszürke", - lightslategrey: "világos palaszürke", // same as lightslategray - lightsteelblue: "világos acélkék", - lightyellow: "világossárga", - lime: "lime", - limegreen: "limezöld", - linen: "vászonfehér", - magenta: "bíbor", - maroon: "gesztenyebarna", - mediumaquamarine: "közepes akvamarin", - mediumblue: "közepes kék", - mediumorchid: "közepes orchidea", - mediumpurple: "közepes lila", - mediumseagreen: "közepes tengerzöld", - mediumslateblue: "közepes palakék", - mediumspringgreen: "közepes tavaszzöld", - mediumturquoise: "közepes türkizkék", - mediumvioletred: "közepes ibolyavörös", - midnightblue: "éjkék", - mintcream: "mentaszósz", - mistyrose: "halvány rózsaszín", - moccasin: "mokkaszín", - navajowhite: "navajo fehér", - navy: "tengerészkék", - oldlace: "régi csipke", - olive: "olajzöld", - olivedrab: "olajzöld drapp", - orange: "narancssárga", - orangered: "narancsvörös", - orchid: "orchidea", - palegoldenrod: "halvány aranyvessző", - palegreen: "halványzöld", - paleturquoise: "halvány türkizkék", - palevioletred: "halvány ibolyavörös", - papayawhip: "papayahab", - peachpuff: "barackszín", - peru: "peru", - pink: "rózsaszín", - plum: "szilvakék", - powderblue: "púderkék", - purple: "lila", - red: "vörös", - rosybrown: "barnásrózsaszín", - royalblue: "királykék", - saddlebrown: "nyeregbarna", - salmon: "lazacszín", - sandybrown: "homokbarna", - seagreen: "tengerzöld", - seashell: "kagyló", - sienna: "vörösesbarna", - silver: "ezüst", - skyblue: "égszínkék", - slateblue: "palakék", - slategray: "palaszürke", - slategrey: "palaszürke", // same as slategray - snow: "hó", - springgreen: "tavaszzöld", - steelblue: "acélkék", - tan: "rozsdabarna", - teal: "pávakék", - thistle: "bogáncs", - tomato: "paradicsom", - transparent: "átlátszó", - turquoise: "türkizkék", - violet: "ibolyaszín", - wheat: "búza", - white: "fehér", - whitesmoke: "fehér füst", - yellow: "sárga", - yellowgreen: "sárgászöld" -}) -); diff --git a/lib/dojo/nls/it/colors.js.uncompressed.js b/lib/dojo/nls/it/colors.js.uncompressed.js deleted file mode 100644 index aafbb2d79..000000000 --- a/lib/dojo/nls/it/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/it/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "bianco ghiaccio", - antiquewhite: "rosa antico", - aqua: "verde acqua", - aquamarine: "acquamarina", - azure: "azure", - beige: "beige", - bisque: "terracotta", - black: "nero", - blanchedalmond: "beige 2", - blue: "blu", - blueviolet: "violetto bluastro", - brown: "marrone", - burlywood: "legno massiccio", - cadetblue: "verde petrolio", - chartreuse: "verde brillante", - chocolate: "cioccolato", - coral: "corallo", - cornflowerblue: "blu fiordaliso", - cornsilk: "crema", - crimson: "rosso scarlatto", - cyan: "ciano", - darkblue: "blu scuro", - darkcyan: "celeste scuro", - darkgoldenrod: "ocra scuro", - darkgray: "grigio scuro", - darkgreen: "verde scuro", - darkgrey: "grigio scuro", // same as darkgray - darkkhaki: "cachi scuro", - darkmagenta: "magenta scuro", - darkolivegreen: "verde oliva scuro", - darkorange: "arancione scuro", - darkorchid: "orchidea scuro", - darkred: "rosso scuro", - darksalmon: "salmone scuro", - darkseagreen: "verde acqua scuro", - darkslateblue: "blu ardesia scuro", - darkslategray: "grigio ardesia scuro", - darkslategrey: "grigio ardesia scuro", // same as darkslategray - darkturquoise: "turchese scuro", - darkviolet: "viola scuro", - deeppink: "ciclamino", - deepskyblue: "azzurro intenso", - dimgray: "grigio tenue", - dimgrey: "grigio tenue", // same as dimgray - dodgerblue: "dodger blue", - firebrick: "mattone", - floralwhite: "bianco grigio", - forestgreen: "verde pino scuro", - fuchsia: "fucsia", - gainsboro: "gainsboro", - ghostwhite: "bianco gesso", - gold: "oro", - goldenrod: "dorato", - gray: "grigio", - green: "verde", - greenyellow: "verde-giallo", - grey: "grigio", // same as gray - honeydew: "miele", - hotpink: "rosa acceso", - indianred: "terra indiana", - indigo: "indaco", - ivory: "avorio", - khaki: "cachi", - lavender: "lavanda", - lavenderblush: "lavanda rosa", - lawngreen: "verde brillante chiaro", - lemonchiffon: "lemon chiffon", - lightblue: "blu chiaro", - lightcoral: "corallo chiaro", - lightcyan: "ciano chiaro", - lightgoldenrodyellow: "giallo dorato chiaro", - lightgray: "grigio chiaro", - lightgreen: "verde chiaro", - lightgrey: "grigio chiaro", // same as lightgray - lightpink: "rosa chiaro", - lightsalmon: "salmone chiaro", - lightseagreen: "verde acqua chiaro", - lightskyblue: "azzurro chiaro", - lightslategray: "grigio ardesia chiaro", - lightslategrey: "grigio ardesia chiaro", // same as lightslategray - lightsteelblue: "blu acciaio chiaro", - lightyellow: "giallo chiaro", - lime: "lime", - limegreen: "verde lime", - linen: "lino", - magenta: "magenta", - maroon: "Bordeaux", - mediumaquamarine: "acquamarina medio", - mediumblue: "blu medio", - mediumorchid: "orchidea medio", - mediumpurple: "viola medio", - mediumseagreen: "verde acqua medio", - mediumslateblue: "blu ardesia medio", - mediumspringgreen: "verde brillante medio", - mediumturquoise: "turchese medio", - mediumvioletred: "violetto rosso medio", - midnightblue: "blu notte", - mintcream: "bianco nuvola", - mistyrose: "rosa pallido", - moccasin: "mocassino", - navajowhite: "sabbia", - navy: "blu scuro", - oldlace: "mandorla", - olive: "verde oliva", - olivedrab: "verde bottiglia", - orange: "arancione", - orangered: "vermiglio", - orchid: "orchidea", - palegoldenrod: "dorato pallido", - palegreen: "verde pallido", - paleturquoise: "turchese pallido", - palevioletred: "violetto rosso pallido", - papayawhip: "papaya", - peachpuff: "pesche", - peru: "perù", - pink: "rosa", - plum: "prugna", - powderblue: "azzurro polvere", - purple: "viola", - red: "rosso", - rosybrown: "caffè latte", - royalblue: "royal blue", - saddlebrown: "cacao", - salmon: "salmone", - sandybrown: "argilla", - seagreen: "verde acqua", - seashell: "sabbia rosa", - sienna: "terra di siena", - silver: "argento", - skyblue: "azzurro", - slateblue: "blu ardesia", - slategray: "grigio ardesia", - slategrey: "grigio ardesia", // same as slategray - snow: "neve", - springgreen: "verde brillante", - steelblue: "blu brillante", - tan: "tan", - teal: "verde acqua", - thistle: "rosa cenere", - tomato: "pomodoro", - transparent: "trasparente", - turquoise: "turchese", - violet: "violetto", - wheat: "tabacco", - white: "bianco", - whitesmoke: "bianco fumo", - yellow: "giallo", - yellowgreen: "giallo verde" -}) -); diff --git a/lib/dojo/nls/ja/colors.js.uncompressed.js b/lib/dojo/nls/ja/colors.js.uncompressed.js deleted file mode 100644 index 7051d786b..000000000 --- a/lib/dojo/nls/ja/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ja/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "アリスブルー", - antiquewhite: "アンティークホワイト", - aqua: "アクア", - aquamarine: "碧緑", - azure: "薄い空色", - beige: "ベージュ", - bisque: "ビスク", - black: "黒", - blanchedalmond: "皮なしアーモンド", - blue: "青", - blueviolet: "青紫", - brown: "茶", - burlywood: "バーリーウッド", - cadetblue: "くすんだ青", - chartreuse: "淡黄緑", - chocolate: "チョコレート", - coral: "珊瑚", - cornflowerblue: "コーンフラワーブルー", - cornsilk: "コーンシルク", - crimson: "深紅", - cyan: "シアンブルー", - darkblue: "ダークブルー", - darkcyan: "ダークシアンブルー", - darkgoldenrod: "ダークゴールデンロッド", - darkgray: "ダークグレイ", - darkgreen: "ダークグリーン", - darkgrey: "ダークグレイ", // same as darkgray - darkkhaki: "ダークカーキ", - darkmagenta: "ダークマジェンタ", - darkolivegreen: "ダークオリーブグリーン", - darkorange: "ダークオレンジ", - darkorchid: "ダークオーキッド", - darkred: "ダークレッド", - darksalmon: "ダークサーモン", - darkseagreen: "ダークシーグリーン", - darkslateblue: "ダークスレートブルー", - darkslategray: "ダークスレートグレイ", - darkslategrey: "ダークスレートグレイ", // same as darkslategray - darkturquoise: "ダークターコイズ", - darkviolet: "ダークバイオレット", - deeppink: "濃いピンク", - deepskyblue: "濃い空色", - dimgray: "くすんだグレイ", - dimgrey: "くすんだグレイ", // same as dimgray - dodgerblue: "ドッジャーブルー", - firebrick: "赤煉瓦色", - floralwhite: "フローラルホワイト", - forestgreen: "フォレストグリーン", - fuchsia: "紫紅色", - gainsboro: "ゲインズボーロ", - ghostwhite: "ゴーストホワイト", - gold: "金", - goldenrod: "ゴールデンロッド", - gray: "グレイ", - green: "緑", - greenyellow: "緑黄色", - grey: "グレイ", // same as gray - honeydew: "ハニーデュー", - hotpink: "ホットピンク", - indianred: "インディアンレッド", - indigo: "藍色", - ivory: "アイボリー", - khaki: "カーキ", - lavender: "ラベンダー", - lavenderblush: "ラベンダーブラッシ", - lawngreen: "ローングリーン", - lemonchiffon: "レモンシフォン", - lightblue: "ライトブルー", - lightcoral: "ライトコーラル", - lightcyan: "ライトシアン", - lightgoldenrodyellow: "ライトゴールデンロッドイエロー", - lightgray: "ライトグレイ", - lightgreen: "ライトグリーン", - lightgrey: "ライトグレイ", // same as lightgray - lightpink: "ライトピンク", - lightsalmon: "ライトサーモン", - lightseagreen: "ライトシーグリーン", - lightskyblue: "ライトスカイブルー", - lightslategray: "ライトスレートグレイ", - lightslategrey: "ライトスレートグレイ", // same as lightslategray - lightsteelblue: "ライトスチールブルー", - lightyellow: "ライトイエロー", - lime: "ライム", - limegreen: "ライムグリーン", - linen: "亜麻色", - magenta: "赤紫", - maroon: "えび茶", - mediumaquamarine: "ミディアムアクアマリーン", - mediumblue: "ミディアムブルー", - mediumorchid: "ミディアムオーキッド", - mediumpurple: "ミディアムパープル", - mediumseagreen: "ミディアムシーグリーン", - mediumslateblue: "ミディアムスレートブルー", - mediumspringgreen: "ミディアムスプリンググリーン", - mediumturquoise: "ミディアムターコイズ", - mediumvioletred: "ミディアムバイオレットレッド", - midnightblue: "ミッドナイトブルー", - mintcream: "ミントクリーム", - mistyrose: "ミスティローズ", - moccasin: "モカシン", - navajowhite: "ナバホホワイト", - navy: "濃紺", - oldlace: "オールドレイス", - olive: "オリーブ", - olivedrab: "濃黄緑", - orange: "オレンジ", - orangered: "オレンジレッド", - orchid: "薄紫", - palegoldenrod: "ペイルゴールデンロッド", - palegreen: "ペイルグリーン", - paleturquoise: "ペイルターコイズ", - palevioletred: "ペイルバイオレットレッド", - papayawhip: "パパイアホイップ", - peachpuff: "ピーチパフ", - peru: "ペルー", - pink: "ピンク", - plum: "深紫", - powderblue: "淡青", - purple: "紫", - red: "赤", - rosybrown: "ロージーブラウン", - royalblue: "藤色", - saddlebrown: "サドルブラウン", - salmon: "サーモン", - sandybrown: "砂褐色", - seagreen: "シーグリーン", - seashell: "シーシェル", - sienna: "黄褐色", - silver: "銀", - skyblue: "スカイブルー", - slateblue: "スレートブルー", - slategray: "スレートグレイ", - slategrey: "スレートグレイ", // same as slategray - snow: "雪色", - springgreen: "スプリンググリーン", - steelblue: "鋼色", - tan: "茶褐色", - teal: "ティール", - thistle: "シスル", - tomato: "トマト色", - transparent: "透明", - turquoise: "ターコイズ", - violet: "すみれ色", - wheat: "小麦色", - white: "白", - whitesmoke: "ホワイトスモーク", - yellow: "黄", - yellowgreen: "黄緑" -}) -); diff --git a/lib/dojo/nls/kk/colors.js.uncompressed.js b/lib/dojo/nls/kk/colors.js.uncompressed.js deleted file mode 100644 index d7aa08c4c..000000000 --- a/lib/dojo/nls/kk/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/kk/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "бозғылт көк", - antiquewhite: "ақ антик", - aqua: "су түсі", - aquamarine: "жасылдау-көк", - azure: "көкшіл", - beige: "сарғыш", - bisque: "бисквит", - black: "қара", - blanchedalmond: "ағартылған бадам", - blue: "көк", - blueviolet: "көк-ақшыл көк", - brown: "қоңыр", - burlywood: "ағаш тамыры", - cadetblue: "кадет көк", - chartreuse: "жасылдау-сары", - chocolate: "шоколад", - coral: "коралл", - cornflowerblue: "көктікен көк", - cornsilk: "жібек", - crimson: "таңқұрай", - cyan: "циан", - darkblue: "күңгірт көк", - darkcyan: "күңгірт циан", - darkgoldenrod: "қара алтын", - darkgray: "қою сұры", - darkgreen: "қою жасыл", - darkgrey: "қою сұры", // same as darkgray - darkkhaki: "қою хаки", - darkmagenta: "қою қызыл күрең", - darkolivegreen: "қою қоңырлау жасыл", - darkorange: "қою қызғылт сары", - darkorchid: "күңгірт орсель", - darkred: "күңгірт қызыл", - darksalmon: "қою сарылау қызғылт", - darkseagreen: "қою теңіз толқыны", - darkslateblue: "күңгірт грифель көк", - darkslategray: "күңгірт көкшіл сұры", - darkslategrey: "күңгірт көкшіл сұры", // same as darkslategray - darkturquoise: "күңгірт көгілдір", - darkviolet: "күңгірт қызыл күрең", - deeppink: "қою қызғылт", - deepskyblue: "қою аспан көк", - dimgray: "күңгірт сұры", - dimgrey: "күңгірт сұры", // same as dimgray - dodgerblue: "көк доджер", - firebrick: "қызыл кірпіш", - floralwhite: "гүлді ақ", - forestgreen: "шөпті жасыл", - fuchsia: "фуксия", - gainsboro: "gainsboro", - ghostwhite: "елесті ақ", - gold: "алтындай", - goldenrod: "алтын", - gray: "сұры", - green: "жасыл", - greenyellow: "жасыл-сары", - grey: "сұры", // same as gray - honeydew: "балдай", - hotpink: "ашық қызғылт", - indianred: "үнділік қызыл", - indigo: "индиго", - ivory: "піл сүйег", - khaki: "хаки", - lavender: "бозғылт ақшыл көк", - lavenderblush: "күңгірт ақшыл қызыл", - lawngreen: "көгал жасыл", - lemonchiffon: "лимон шиффон", - lightblue: "ақшыл көк", - lightcoral: "ашық коралл", - lightcyan: "ашық көгілдір", - lightgoldenrodyellow: "ашық алтындай сары", - lightgray: "ашық сұры", - lightgreen: "ақшыл жасыл", - lightgrey: "ашық сұры", // same as lightgray - lightpink: "ақшыл қызғылт", - lightsalmon: "ашық сарғыш қызғылт", - lightseagreen: "ашық теңіз толқыны", - lightskyblue: "ашық аспан көк", - lightslategray: "ашық көкшіл сұры", - lightslategrey: "ашық көкшіл сұры", // same as lightslategray - lightsteelblue: "ашық сұрғылт көк", - lightyellow: "ашық сары", - lime: "әк", - limegreen: "әк жасыл", - linen: "зығыр", - magenta: "фуксин", - maroon: "сарғылт", - mediumaquamarine: "орташа жасылдау көк", - mediumblue: "орташа көк", - mediumorchid: "орташа ақшыл", - mediumpurple: "орташа қызыл күрең", - mediumseagreen: "орташа теңіз толқыны", - mediumslateblue: "орташа көкшіл сұры", - mediumspringgreen: "орташа ашық жасыл", - mediumturquoise: "орташа көгілдір", - mediumvioletred: "орташа ақшыл көк-қызыл", - midnightblue: "түн ортасы көк", - mintcream: "жалбыз майы", - mistyrose: "көмескі қызғылт", - moccasin: "мокасин", - navajowhite: "навахо ақ", - navy: "теңіз көк", - oldlace: "ескі бау", - olive: "зәйтүнді", - olivedrab: "жасылдау сары", - orange: "қызғылт сары", - orangered: "қызғылт сары қызыл", - orchid: "орхидея", - palegoldenrod: "бозғылт алтын", - palegreen: "бозғылт жасыл", - paleturquoise: "бозғылт көгілдір", - palevioletred: "бозғылт ақшыл көк-қызыл", - papayawhip: "папайя қамшысы", - peachpuff: "шабдалы", - peru: "перу", - pink: "қызғылт", - plum: "алхоры", - powderblue: "жасылдау көк", - purple: "қызыл күрең", - red: "қызыл", - rosybrown: "қызғылт қоңыр", - royalblue: "патша көк", - saddlebrown: "тоқым қоңыр", - salmon: "сомон", - sandybrown: "құмды қоңыр", - seagreen: "теңіз толқыны", - seashell: "теңіз қабыршағы", - sienna: "сиенна", - silver: "күмістей", - skyblue: "аспан көк", - slateblue: "грифель көк", - slategray: "көкшіл сұры", - slategrey: "көкшіл сұры", // same as slategray - snow: "қар", - springgreen: "көктем жасыл", - steelblue: "көкшіл сұрғылт", - tan: "сарғыш қоңыр", - teal: "шүрегей", - thistle: "артишок", - tomato: "қызанақ", - transparent: "мөлдір", - turquoise: "көгілдір", - violet: "күлгін", - wheat: "бидай", - white: "ақ", - whitesmoke: "ақ түтін", - yellow: "сары", - yellowgreen: "сарғыш жасыл" -}) -); diff --git a/lib/dojo/nls/ko/colors.js.uncompressed.js b/lib/dojo/nls/ko/colors.js.uncompressed.js deleted file mode 100644 index 901b3c9db..000000000 --- a/lib/dojo/nls/ko/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ko/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "앨리스 블루(alice blue)", - antiquewhite: "앤틱 화이트(antique white)", - aqua: "아쿠아(aqua)", - aquamarine: "아쿠아마린(aquamarine)", - azure: "애쥬어(azure)", - beige: "베이지(beige)", - bisque: "비스크(bisque)", - black: "블랙(black)", - blanchedalmond: "블랜치 아몬드(blanched almond)", - blue: "블루(blue)", - blueviolet: "블루 바이올렛(blue-violet)", - brown: "브라운(brown)", - burlywood: "벌리우드(burlywood)", - cadetblue: "카뎃 블루(cadet blue)", - chartreuse: "샤르트뢰즈(chartreuse)", - chocolate: "초콜렛(chocolate)", - coral: "코랄(coral)", - cornflowerblue: "콘플라워 블루(cornflower blue)", - cornsilk: "콘실크(cornsilk)", - crimson: "크림슨(crimson)", - cyan: "시안(cyan)", - darkblue: "다크 블루(dark blue)", - darkcyan: "다크 시안(dark cyan)", - darkgoldenrod: "다크 골든로드(dark goldenrod)", - darkgray: "다크 그레이(dark gray)", - darkgreen: "다크 그린(dark green)", - darkgrey: "다크 그레이(dark gray)", // same as darkgray - darkkhaki: "다크 카키(dark khaki)", - darkmagenta: "다크 마젠타(dark magenta)", - darkolivegreen: "다크 올리브 그린(dark olive green)", - darkorange: "다크 오렌지(dark orange)", - darkorchid: "다크 오키드(dark orchid)", - darkred: "다크 레드(dark red)", - darksalmon: "다크 샐몬(dark salmon)", - darkseagreen: "다크 씨 그린(dark sea green)", - darkslateblue: "다크 슬레이트 블루(dark slate blue)", - darkslategray: "다크 슬레이트 그레이(dark slate gray)", - darkslategrey: "다크 슬레이트 그레이(dark slate gray)", // same as darkslategray - darkturquoise: "다크 터콰즈(dark turquoise)", - darkviolet: "다크 바이올렛(dark violet)", - deeppink: "딥 핑크(deep pink)", - deepskyblue: "딥 스카이 블루(deep sky blue)", - dimgray: "딤 그레이(dim gray)", - dimgrey: "딤 그레이(dim gray)", // same as dimgray - dodgerblue: "다저 블루(dodger blue)", - firebrick: "파이어 브릭(fire brick)", - floralwhite: "플로랄 화이트(floral white)", - forestgreen: "포레스트 그린(forest green)", - fuchsia: "후크샤(fuchsia)", - gainsboro: "게인스브로(gainsboro)", - ghostwhite: "고스트 화이트(ghost white)", - gold: "골드(gold)", - goldenrod: "골든로드(goldenrod)", - gray: "그레이(gray)", - green: "그린(green)", - greenyellow: "그린 옐로우(green-yellow)", - grey: "그레이(gray)", // same as gray - honeydew: "허니듀(honeydew)", - hotpink: "핫 핑크(hot pink)", - indianred: "인디안 레드(indian red)", - indigo: "인디고(indigo)", - ivory: "아이보리(ivory)", - khaki: "카키(khaki)", - lavender: "라벤더(lavender)", - lavenderblush: "라벤더 블러쉬(lavender blush)", - lawngreen: "론 그린(lawn green)", - lemonchiffon: "레몬 쉬폰(lemon chiffon)", - lightblue: "라이트 블루(light blue)", - lightcoral: "라이트 코랄(light coral)", - lightcyan: "라이트 시안(light cyan)", - lightgoldenrodyellow: "라이트 골든로드 옐로우(light goldenrod yellow)", - lightgray: "라이트 그레이(light gray)", - lightgreen: "라이트 그린(light green)", - lightgrey: "라이트 그레이(light gray)", // same as lightgray - lightpink: "라이트 핑크(light pink)", - lightsalmon: "라이트 샐몬(light salmon)", - lightseagreen: "라이트 씨 그린(light sea green)", - lightskyblue: "라이트 스카이 블루(light sky blue)", - lightslategray: "라이트 슬레이트 그레이(light slate gray)", - lightslategrey: "라이트 슬레이트 그레이(light slate gray)", // same as lightslategray - lightsteelblue: "라이트 스틸 블루(light steel blue)", - lightyellow: "라이트 옐로우(light yellow)", - lime: "라임(lime)", - limegreen: "라임 그린(lime green)", - linen: "리넨(linen)", - magenta: "마젠타(magenta)", - maroon: "마룬(maroon)", - mediumaquamarine: "미디엄 아쿠아마린(medium aquamarine)", - mediumblue: "미디엄 블루(medium blue)", - mediumorchid: "미디엄 오키드(medium orchid)", - mediumpurple: "미디엄 퍼플(medium purple)", - mediumseagreen: "미디엄 씨 그린(medium sea green)", - mediumslateblue: "미디엄 슬레이트 블루(medium slate blue)", - mediumspringgreen: "미디엄 스프링 그린(medium spring green)", - mediumturquoise: "미디엄 터콰즈(medium turquoise)", - mediumvioletred: "미디엄 바이올렛 레드(medium violet-red)", - midnightblue: "미드나잇 블루(midnight blue)", - mintcream: "민트 크림(mint cream)", - mistyrose: "미스티 로즈(misty rose)", - moccasin: "모카신(moccasin)", - navajowhite: "나바호 화이트(navajo white)", - navy: "네이비(navy)", - oldlace: "올드 레이스(old lace)", - olive: "올리브(olive)", - olivedrab: "올리브 드랩(olive drab)", - orange: "오렌지(orange)", - orangered: "오렌지 레드(orange red)", - orchid: "오키드(orchid)", - palegoldenrod: "페일 골든로드(pale goldenrod)", - palegreen: "페일 그린(pale green)", - paleturquoise: "페일 터콰즈(pale turquoise)", - palevioletred: "페일 바이올렛 레드(pale violet-red)", - papayawhip: "파파야 휩(papaya whip)", - peachpuff: "피치 퍼프(peach puff)", - peru: "페루(peru)", - pink: "핑크(pink)", - plum: "플럼(plum)", - powderblue: "파우더 블루(powder blue)", - purple: "퍼플(purple)", - red: "레드(red)", - rosybrown: "로지 브라운(rosy brown)", - royalblue: "로얄 블루(royal blue)", - saddlebrown: "새들 브라운(saddle brown)", - salmon: "샐몬(salmon)", - sandybrown: "샌디 브라운(sandy brown)", - seagreen: "씨 그린(sea green)", - seashell: "씨쉘(seashell)", - sienna: "시에나(sienna)", - silver: "실버(silver)", - skyblue: "스카이 블루(sky blue)", - slateblue: "슬레이트 블루(slate blue)", - slategray: "슬레이트 그레이(slate gray)", - slategrey: "슬레이트 그레이(slate gray)", // same as slategray - snow: "스노우(snow)", - springgreen: "스프링 그린(spring green)", - steelblue: "스틸 블루(steel blue)", - tan: "탠(tan)", - teal: "틸(teal)", - thistle: "시슬(thistle)", - tomato: "토마토(tomato)", - transparent: "투명(transparent)", - turquoise: "터콰즈(turquoise)", - violet: "바이올렛(violet)", - wheat: "휘트(wheat)", - white: "화이트(white)", - whitesmoke: "화이트 스모크(white smoke)", - yellow: "옐로우(yellow)", - yellowgreen: "옐로우 그린(yellow green)" -}) -); diff --git a/lib/dojo/nls/nb/colors.js.uncompressed.js b/lib/dojo/nls/nb/colors.js.uncompressed.js deleted file mode 100644 index 8345bbbea..000000000 --- a/lib/dojo/nls/nb/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/nb/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "blåhvit", - antiquewhite: "antikk hvit", - aqua: "akva", - aquamarine: "akvamarin", - azure: "asur", - beige: "beige", - bisque: "gulrosa", - black: "svart", - blanchedalmond: "lys mandel", - blue: "blå", - blueviolet: "blåfiolett", - brown: "brun", - burlywood: "matt mellombrun", - cadetblue: "mørk grønnblå", - chartreuse: "løvgrønn", - chocolate: "sjokolade", - coral: "korall", - cornflowerblue: "kornblå", - cornsilk: "cornsilk", - crimson: "karmosinrødt", - cyan: "cyan", - darkblue: "mørk blå", - darkcyan: "mørk cyan", - darkgoldenrod: "mørk gyldenris", - darkgray: "mørk grå", - darkgreen: "mørk grønn", - darkgrey: "mørk grå", // same as darkgray - darkkhaki: "mørk khaki", - darkmagenta: "mørk magenta", - darkolivegreen: "mørk olivengrønn", - darkorange: "mørk oransje", - darkorchid: "mørk orkide", - darkred: "mørk rød", - darksalmon: "mørk lakserosa", - darkseagreen: "mørk sjøgrønn", - darkslateblue: "mørk skiferblå", - darkslategray: "mørk skifergrå", - darkslategrey: "mørk skifergrå", // same as darkslategray - darkturquoise: "mørk turkis", - darkviolet: "mørk fiolett", - deeppink: "dyp rosa", - deepskyblue: "dyp himmelblå", - dimgray: "mørk mørkegrå", - dimgrey: "mørk mørkegrå", // same as dimgray - dodgerblue: "lys havblå", - firebrick: "mursteinsrød", - floralwhite: "blomsterhvit", - forestgreen: "skoggrønn", - fuchsia: "fuksia", - gainsboro: "lys lys grå", - ghostwhite: "egghvit", - gold: "gull", - goldenrod: "gyldenris", - gray: "grå", - green: "grønn", - greenyellow: "gulgrønn", - grey: "grå", // same as gray - honeydew: "grønnhvit", - hotpink: "halvmørk rosa", - indianred: "rustrød", - indigo: "indigo", - ivory: "elfenbenshvit", - khaki: "khaki", - lavender: "lavendel", - lavenderblush: "lillahvit", - lawngreen: "plengrønn", - lemonchiffon: "ferskenfarget", - lightblue: "lys blå", - lightcoral: "lys korall", - lightcyan: "lys cyan", - lightgoldenrodyellow: "lys gyldenrisgul", - lightgray: "lys grå", - lightgreen: "lys grønn", - lightgrey: "lys grå", // same as lightgray - lightpink: "lys rosa", - lightsalmon: "lys lakserosa", - lightseagreen: "lys sjøgrønn", - lightskyblue: "lys himmelblå", - lightslategray: "lys skifergrå", - lightslategrey: "lys skifergrå", // same as lightslategray - lightsteelblue: "lys stålblå", - lightyellow: "lys gul", - lime: "lime", - limegreen: "limegrønn", - linen: "lin", - magenta: "magenta", - maroon: "rødbrun", - mediumaquamarine: "middels akvamarin", - mediumblue: "mellomblå", - mediumorchid: "middels orkide", - mediumpurple: "middels purpur", - mediumseagreen: "middels sjøgrønn", - mediumslateblue: "middels skiferblå", - mediumspringgreen: "middels vårgrønn", - mediumturquoise: "middels turkis", - mediumvioletred: "middels fiolettrød", - midnightblue: "midnattsblå", - mintcream: "mintkrem", - mistyrose: "lys rosenrød", - moccasin: "lys gulbrun", - navajowhite: "gulbrun", - navy: "marineblå", - oldlace: "kniplingshvit", - olive: "oliven", - olivedrab: "middels olivengrønn", - orange: "oransje", - orangered: "rødoransje", - orchid: "orkide", - palegoldenrod: "svak gyldenris", - palegreen: "svak grønn", - paleturquoise: "svak turkis", - palevioletred: "svak fiolettrød", - papayawhip: "lys papaya", - peachpuff: "brunrosa", - peru: "lys nøttebrun", - pink: "rosa", - plum: "plommefarget", - powderblue: "lys grønnblå", - purple: "purpur", - red: "rød", - rosybrown: "brunlilla", - royalblue: "kongeblå", - saddlebrown: "mørk nøttebrun", - salmon: "lakserosa", - sandybrown: "sandbrun", - seagreen: "sjøgrønn", - seashell: "skjellhvit", - sienna: "nøttebrun", - silver: "sølvfarget", - skyblue: "himmelblå", - slateblue: "skiferblå", - slategray: "skifergrå", - slategrey: "skifergrå", // same as slategray - snow: "snøhvit", - springgreen: "vårgrønn", - steelblue: "stålblå", - tan: "matt mellombrun", - teal: "mørk grønnblå", - thistle: "lys grålilla", - tomato: "tomatrød", - transparent: "gjennomsiktig", - turquoise: "turkis", - violet: "fiolett", - wheat: "varm sienna", - white: "hvit", - whitesmoke: "røykhvit", - yellow: "gul", - yellowgreen: "gulgrønn" -}) -); diff --git a/lib/dojo/nls/nl/colors.js.uncompressed.js b/lib/dojo/nls/nl/colors.js.uncompressed.js deleted file mode 100644 index d4fa3d981..000000000 --- a/lib/dojo/nls/nl/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/nl/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "lichtblauw", - antiquewhite: "antiekwit", - aqua: "aqua", - aquamarine: "aquamarijn", - azure: "azuur", - beige: "beige", - bisque: "oranjegeel", - black: "zwart", - blanchedalmond: "amandel", - blue: "blauw", - blueviolet: "violet", - brown: "bruin", - burlywood: "lichtbruin", - cadetblue: "donkerstaalblauw", - chartreuse: "groengeel", - chocolate: "chocoladebruin", - coral: "koraalrood", - cornflowerblue: "korenbloemblauw", - cornsilk: "maïsgeel", - crimson: "karmozijnrood", - cyan: "cyaan", - darkblue: "donkerblauw", - darkcyan: "donkercyaan", - darkgoldenrod: "donkergoud", - darkgray: "donkergrijs", - darkgreen: "donkergroen", - darkgrey: "donkergrijs", // same as darkgray - darkkhaki: "donkerkaki", - darkmagenta: "donkermagenta", - darkolivegreen: "donkerolijfgroen", - darkorange: "donkeroranje", - darkorchid: "donkerorchidee", - darkred: "donkerrood", - darksalmon: "donkerzalm", - darkseagreen: "donkerzeegroen", - darkslateblue: "donkergrijsblauw", - darkslategray: "donkerblauwgrijs", - darkslategrey: "donkerblauwgrijs", // same as darkslategray - darkturquoise: "donkerturquoise", - darkviolet: "donkerviolet", - deeppink: "donkerroze", - deepskyblue: "diephemelblauw", - dimgray: "dofgrijs", - dimgrey: "dofgrijs", // same as dimgray - dodgerblue: "helderblauw", - firebrick: "vuursteenrood", - floralwhite: "rozewit", - forestgreen: "bosgroen", - fuchsia: "fuchsia", - gainsboro: "lichtblauwgrijs", - ghostwhite: "spierwit", - gold: "goud", - goldenrod: "goudbruin", - gray: "grijs", - green: "groen", - greenyellow: "groengeel", - grey: "grijs", // same as gray - honeydew: "meloen", - hotpink: "acaciaroze", - indianred: "indisch rood", - indigo: "indigo", - ivory: "ivoorwit", - khaki: "kaki", - lavender: "lavendelblauw", - lavenderblush: "lavendelblos", - lawngreen: "grasgroen", - lemonchiffon: "citroengeel", - lightblue: "lichtblauw", - lightcoral: "lichtkoraal", - lightcyan: "lichtcyaan", - lightgoldenrodyellow: "lichtgoudgeel", - lightgray: "lichtgrijs", - lightgreen: "lichtgroen", - lightgrey: "lichtgrijs", // same as lightgray - lightpink: "lichtroze", - lightsalmon: "lichtzalm", - lightseagreen: "lichtzeegroen", - lightskyblue: "lichthemelsblauw", - lightslategray: "lichtblauwgrijs", - lightslategrey: "lichtblauwgrijs", // same as lightslategray - lightsteelblue: "lichtstaalblauw", - lightyellow: "lichtgeel", - lime: "limoen", - limegreen: "limoengroen", - linen: "linnen", - magenta: "magenta", - maroon: "kastanjebruin", - mediumaquamarine: "midaquamarijn", - mediumblue: "midblauw", - mediumorchid: "midorchidee", - mediumpurple: "midpurper", - mediumseagreen: "midzeegroen", - mediumslateblue: "midgrijsblauw", - mediumspringgreen: "midlentegroen", - mediumturquoise: "midturquoise", - mediumvioletred: "midvioletrood", - midnightblue: "nachtblauw", - mintcream: "mintroomgeel", - mistyrose: "matroze", - moccasin: "moccasin", - navajowhite: "navajowit", - navy: "marineblauw", - oldlace: "kant", - olive: "olijfgroen", - olivedrab: "grijsbruin", - orange: "oranje", - orangered: "oranjerood", - orchid: "orchidee", - palegoldenrod: "bleekgeel", - palegreen: "bleekgroen", - paleturquoise: "bleekturquoise", - palevioletred: "bleekvioletrood", - papayawhip: "papajaroze", - peachpuff: "perzikroze", - peru: "bruin", - pink: "roze", - plum: "pruim", - powderblue: "lichtblauw-wit", - purple: "purper", - red: "rood", - rosybrown: "roodbruin", - royalblue: "koningsblauw", - saddlebrown: "leerbruin", - salmon: "zalm", - sandybrown: "zandbruin", - seagreen: "zeegroen", - seashell: "schelp", - sienna: "sienna", - silver: "zilvergrijs", - skyblue: "hemelsblauw", - slateblue: "leiblauw", - slategray: "leigrijs", - slategrey: "leigrijs", // same as slategray - snow: "sneeuwwit", - springgreen: "lentegroen", - steelblue: "staalblauw", - tan: "geelbruin", - teal: "grijsblauw", - thistle: "distel", - tomato: "tomaat", - transparent: "transparant", - turquoise: "turquoise", - violet: "violet", - wheat: "tarwebruin", - white: "wit", - whitesmoke: "rookwit", - yellow: "geel", - yellowgreen: "geelgroen" -}) -); diff --git a/lib/dojo/nls/pl/colors.js.uncompressed.js b/lib/dojo/nls/pl/colors.js.uncompressed.js deleted file mode 100644 index ad95f626a..000000000 --- a/lib/dojo/nls/pl/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/pl/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "bladoniebieski", - antiquewhite: "biel antyczna", - aqua: "morski", - aquamarine: "akwamaryna", - azure: "lazurowy", - beige: "beżowy", - bisque: "cielistobeżowy", - black: "czarny", - blanchedalmond: "obrany migdał", - blue: "niebieski", - blueviolet: "błękitnofiołkowy", - brown: "brązowy", - burlywood: "piaskowobeżowy", - cadetblue: "szaroniebieski", - chartreuse: "żółtooliwkowy", - chocolate: "czekoladowy", - coral: "koralowy", - cornflowerblue: "niebieskochabrowy", - cornsilk: "białożółty", - crimson: "karmazynowy", - cyan: "niebieskozielony", - darkblue: "ciemnoniebieski", - darkcyan: "ciemnoniebieskozielony", - darkgoldenrod: "ciemne stare złoto", - darkgray: "ciemnoszary", - darkgreen: "ciemnozielony", - darkgrey: "ciemnoszary", // same as darkgray - darkkhaki: "ciemny khaki", - darkmagenta: "ciemnoamarantowy", - darkolivegreen: "ciemnooliwkowozielony", - darkorange: "ciemnopomarańczowy", - darkorchid: "ciemna orchidea", - darkred: "ciemnoczerwony", - darksalmon: "ciemnołososiowy", - darkseagreen: "ciemna zieleń morska", - darkslateblue: "ciemny gołębi", - darkslategray: "ciemny mysi", - darkslategrey: "ciemny mysi", // same as darkslategray - darkturquoise: "ciemnoturkusowy", - darkviolet: "ciemnofiołkowy", - deeppink: "głęboki róż", - deepskyblue: "intensywny błękit nieba", - dimgray: "przyciemniony szary", - dimgrey: "przyciemniony szary", // same as dimgray - dodgerblue: "niebieski Dodgersów", - firebrick: "podpalana cegła", - floralwhite: "złamana biel", - forestgreen: "leśna zieleń", - fuchsia: "fuksjowy", - gainsboro: "jasnoniebieskawoszary", - ghostwhite: "sina biel", - gold: "złoty", - goldenrod: "stare złoto", - gray: "szary", - green: "zielony", - greenyellow: "zielonożółty", - grey: "szary", // same as gray - honeydew: "miodowy", - hotpink: "odblaskoworóżowy", - indianred: "kasztanowy", - indigo: "indygo", - ivory: "kość słoniowa", - khaki: "khaki", - lavender: "lawendowy", - lavenderblush: "lawendoworóżowy", - lawngreen: "trawiasty", - lemonchiffon: "babka cytrynowa", - lightblue: "jasnoniebieski", - lightcoral: "jasnokoralowy", - lightcyan: "jasnoniebieskozielony", - lightgoldenrodyellow: "jasne stare złoto", - lightgray: "jasnoszary", - lightgreen: "jasnozielony", - lightgrey: "jasnoszary", // same as lightgray - lightpink: "jasnoróżowy", - lightsalmon: "jasnołososiowy", - lightseagreen: "jasna zieleń morska", - lightskyblue: "jasny błękit nieba", - lightslategray: "jasny mysi", - lightslategrey: "jasny mysi", // same as lightslategray - lightsteelblue: "jasnostalowoniebieski", - lightyellow: "jasnożółty", - lime: "limonkowy", - limegreen: "limonkowozielony", - linen: "lniany", - magenta: "amarantowy", - maroon: "rdzawoczerwony", - mediumaquamarine: "średnia akwamaryna", - mediumblue: "średni niebieski", - mediumorchid: "średnia orchidea", - mediumpurple: "średni fioletowy", - mediumseagreen: "średnia zieleń morska", - mediumslateblue: "średni gołębi", - mediumspringgreen: "średnia wiosenna zieleń", - mediumturquoise: "średni turkusowy", - mediumvioletred: "średni fiołkowowoczerwony", - midnightblue: "atramentowoniebieski", - mintcream: "miętowokremowy", - mistyrose: "mglistoróżany", - moccasin: "mokasynowy", - navajowhite: "biel Nawaho", - navy: "granatowy", - oldlace: "ecru", - olive: "oliwkowy", - olivedrab: "oliwkowozielony", - orange: "pomarańczowy", - orangered: "czerwona pomarańcza", - orchid: "orchidea", - palegoldenrod: "blade stare złoto", - palegreen: "bladozielony", - paleturquoise: "bladoturkusowy", - palevioletred: "bladofiołkowoczerwony", - papayawhip: "kremowa papaja", - peachpuff: "cielisty brzoskwiniowy", - peru: "palona glina", - pink: "różowy", - plum: "śliwkowy", - powderblue: "jasnobladobłękitny", - purple: "fioletowy", - red: "czerwony", - rosybrown: "różanobrązowy", - royalblue: "królewska purpura", - saddlebrown: "brąz skórzany", - salmon: "łososiowy", - sandybrown: "piaskowobrązowy", - seagreen: "zieleń morska", - seashell: "matowoliliowy", - sienna: "sjena", - silver: "srebrny", - skyblue: "błękit nieba", - slateblue: "gołębi", - slategray: "mysi", - slategrey: "mysi", // same as slategray - snow: "śnieżny", - springgreen: "wiosenna zieleń", - steelblue: "stalowoniebieski", - tan: "śniady", - teal: "zielonomodry", - thistle: "kwiat ostu", - tomato: "pomidorowy", - transparent: "przezroczysty", - turquoise: "turkusowy", - violet: "fiołkowy", - wheat: "pszeniczny", - white: "biały", - whitesmoke: "siwy", - yellow: "żółty", - yellowgreen: "żółtozielony" -}) -); diff --git a/lib/dojo/nls/pt-pt/colors.js.uncompressed.js b/lib/dojo/nls/pt-pt/colors.js.uncompressed.js deleted file mode 100644 index 542b7a101..000000000 --- a/lib/dojo/nls/pt-pt/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/pt-pt/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "azul alice", - antiquewhite: "branco antigo", - aqua: "verde-água", - aquamarine: "verde-azulado", - azure: "azul-celeste", - beige: "bege", - bisque: "rosa-velho", - black: "preto", - blanchedalmond: "amêndoa claro", - blue: "azul", - blueviolet: "azul violeta", - brown: "castanho", - burlywood: "castanho pinho", - cadetblue: "azul cadete", - chartreuse: "amarelo esverdeado", - chocolate: "chocolate", - coral: "coral", - cornflowerblue: "azul-violáceo", - cornsilk: "branco seda", - crimson: "carmesim", - cyan: "ciano", - darkblue: "azul escuro", - darkcyan: "ciano escuro", - darkgoldenrod: "ouro velho escuro", - darkgray: "cinzento escuro", - darkgreen: "verde escuro", - darkgrey: "cinzento escuro", // same as darkgray - darkkhaki: "caqui escuro", - darkmagenta: "magenta escuro", - darkolivegreen: "verde-azeitona escuro", - darkorange: "laranja escuro", - darkorchid: "orquídea escuro", - darkred: "vermelho escuro", - darksalmon: "salmão escuro", - darkseagreen: "verde marinho escuro", - darkslateblue: "azul ardósia escuro", - darkslategray: "cinzento ardósia escuro", - darkslategrey: "cinzento ardósia escuro", // same as darkslategray - darkturquoise: "turquesa escuro", - darkviolet: "violeta escuro", - deeppink: "rosa profundo", - deepskyblue: "azul céu profundo", - dimgray: "cinzento esbatido", - dimgrey: "cinzento esbatido", // same as dimgray - dodgerblue: "azul furtivo", - firebrick: "tijolo fogo", - floralwhite: "branco floral", - forestgreen: "verde floresta", - fuchsia: "fúcsia", - gainsboro: "cinzento azulado claro", - ghostwhite: "branco sombreado", - gold: "dourado", - goldenrod: "ouro velho", - gray: "cinzento", - green: "verde", - greenyellow: "amarelo esverdeado", - grey: "cinzento", // same as gray - honeydew: "mel", - hotpink: "rosa forte", - indianred: "almagre", - indigo: "índigo", - ivory: "marfim", - khaki: "caqui", - lavender: "alfazema", - lavenderblush: "alfazema rosado", - lawngreen: "verde relva", - lemonchiffon: "limão chiffon", - lightblue: "azul claro", - lightcoral: "coral claro", - lightcyan: "ciano claro", - lightgoldenrodyellow: "ouro velho amarelado claro", - lightgray: "cinzento claro", - lightgreen: "verde claro", - lightgrey: "cinzento claro", // same as lightgray - lightpink: "rosa claro", - lightsalmon: "salmão claro", - lightseagreen: "verde marinho claro", - lightskyblue: "azul céu claro", - lightslategray: "cinzento ardósia claro", - lightslategrey: "cinzento ardósia claro", // same as lightslategray - lightsteelblue: "azul-aço claro", - lightyellow: "amarelo claro", - lime: "lima", - limegreen: "verde-lima", - linen: "linho", - magenta: "magenta", - maroon: "bordeaux", - mediumaquamarine: "verde-azulado médio", - mediumblue: "azul médio", - mediumorchid: "orquídea médio", - mediumpurple: "roxo médio", - mediumseagreen: "verde marinho médio", - mediumslateblue: "azul ardósia médio", - mediumspringgreen: "verde primavera médio", - mediumturquoise: "turquesa médio", - mediumvioletred: "violeta avermelhado médio", - midnightblue: "azul meia-noite", - mintcream: "creme de menta", - mistyrose: "rosa pálido", - moccasin: "mocassim", - navajowhite: "branco navajo", - navy: "azul marinho", - oldlace: "renda antiga", - olive: "azeitona", - olivedrab: "azeitona claro", - orange: "laranja", - orangered: "vermelho alaranjado", - orchid: "orquídea", - palegoldenrod: "ouro velho pálido", - palegreen: "verde pálido", - paleturquoise: "turquesa pálido", - palevioletred: "violeta avermelhado pálido", - papayawhip: "creme de papaia", - peachpuff: "pêssego", - peru: "peru", - pink: "rosa", - plum: "cor-de-ameixa", - powderblue: "azul de esmalte", - purple: "roxo", - red: "vermelho", - rosybrown: "castanho rosado", - royalblue: "azul real", - saddlebrown: "castanho sela", - salmon: "salmão", - sandybrown: "castanho areia", - seagreen: "verde marinho", - seashell: "concha", - sienna: "castanho-avermelhado", - silver: "prateado", - skyblue: "azul céu", - slateblue: "azul ardósia", - slategray: "cinzento ardósia", - slategrey: "cinzento ardósia", // same as slategray - snow: "branco-neve", - springgreen: "verde primavera", - steelblue: "azul-aço", - tan: "castanho claro", - teal: "verde-azulado", - thistle: "cardo", - tomato: "vermelho tomate", - transparent: "transparente", - turquoise: "turquesa", - violet: "violeta", - wheat: "trigo", - white: "branco", - whitesmoke: "fumo branco", - yellow: "amarelo", - yellowgreen: "verde amarelado" -}) -); diff --git a/lib/dojo/nls/pt/colors.js.uncompressed.js b/lib/dojo/nls/pt/colors.js.uncompressed.js deleted file mode 100644 index 02893b563..000000000 --- a/lib/dojo/nls/pt/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/pt/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "azul alice", - antiquewhite: "branco antigo", - aqua: "aqua", - aquamarine: "água marinha", - azure: "azul celeste", - beige: "bege", - bisque: "bisque", - black: "preto", - blanchedalmond: "amêndoa pelada", - blue: "azul", - blueviolet: "azul violeta", - brown: "marrom", - burlywood: "burlywood", - cadetblue: "azul cadet", - chartreuse: "chartreuse", - chocolate: "chocolate", - coral: "coral", - cornflowerblue: "azul centaurea", - cornsilk: "cornsilk", - crimson: "carmesim", - cyan: "ciano", - darkblue: "azul escuro", - darkcyan: "ciano escuro", - darkgoldenrod: "goldenrod escuro", - darkgray: "cinza escuro", - darkgreen: "verde escuro", - darkgrey: "cinza escuro", // same as darkgray - darkkhaki: "cáqui escuro", - darkmagenta: "magenta escuro", - darkolivegreen: "verde oliva escuro", - darkorange: "laranja escuro", - darkorchid: "orquídea escuro", - darkred: "vermelho escuro", - darksalmon: "salmão escuro", - darkseagreen: "verde marinho escuro", - darkslateblue: "azul ardósia escuro", - darkslategray: "cinza ardósia escuro", - darkslategrey: "cinza ardósia escuro", // same as darkslategray - darkturquoise: "turquesa escuro", - darkviolet: "violeta escuro", - deeppink: "rosa profundo", - deepskyblue: "azul céu intenso", - dimgray: "cinza turvo", - dimgrey: "cinza turvo", // same as dimgray - dodgerblue: "azul dodger", - firebrick: "firebrick", - floralwhite: "branco floral", - forestgreen: "verde floresta", - fuchsia: "fúcsia", - gainsboro: "gainsboro", - ghostwhite: "branco ghost", - gold: "dourado", - goldenrod: "goldenrod", - gray: "cinza", - green: "verde", - greenyellow: "amarelo esverdeado", - grey: "cinza", // same as gray - honeydew: "honeydew", - hotpink: "rosa quente", - indianred: "vermelho indiano", - indigo: "índigo", - ivory: "marfim", - khaki: "cáqui", - lavender: "lavanda", - lavenderblush: "lavanda avermelhada", - lawngreen: "verde grama", - lemonchiffon: "limão chiffon", - lightblue: "azul claro", - lightcoral: "coral claro", - lightcyan: "ciano claro", - lightgoldenrodyellow: "amarelo goldenrod claro", - lightgray: "cinza claro", - lightgreen: "verde claro", - lightgrey: "cinza claro", // same as lightgray - lightpink: "rosa claro", - lightsalmon: "salmão claro", - lightseagreen: "verde marinho claro", - lightskyblue: "azul céu claro", - lightslategray: "cinza ardósia claro", - lightslategrey: "cinza ardósia claro", // same as lightslategray - lightsteelblue: "azul aço claro", - lightyellow: "amarelo claro", - lime: "lima", - limegreen: "verde lima", - linen: "linho", - magenta: "magenta", - maroon: "castanho", - mediumaquamarine: "água marinha médio", - mediumblue: "azul médio", - mediumorchid: "orquídea médio", - mediumpurple: "roxo médio", - mediumseagreen: "verde marinho médio", - mediumslateblue: "azul ardósia médio", - mediumspringgreen: "verde primavera médio", - mediumturquoise: "turquesa médio", - mediumvioletred: "vermelho violeta médio", - midnightblue: "azul meia-noite", - mintcream: "creme de menta", - mistyrose: "rosa enevoado", - moccasin: "moccasin", - navajowhite: "branco navajo", - navy: "marinho", - oldlace: "cadarço velho", - olive: "oliva", - olivedrab: "verde oliva", - orange: "laranja", - orangered: "vermelho alaranjado", - orchid: "orquídea", - palegoldenrod: "goldenrod esbranquiçado", - palegreen: "verde esbranquiçado", - paleturquoise: "turquesa esbranquiçado", - palevioletred: "vermelho violeta esbranquiçado", - papayawhip: "creme de papaya", - peachpuff: "peach puff", - peru: "peru", - pink: "rosa", - plum: "ameixa", - powderblue: "azul talco", - purple: "roxo", - red: "vermelho", - rosybrown: "marrom rosado", - royalblue: "azul royal", - saddlebrown: "marrom saddle", - salmon: "salmão", - sandybrown: "marrom cor de areia", - seagreen: "verde marinho", - seashell: "seashell", - sienna: "sienna", - silver: "prateado", - skyblue: "azul céu", - slateblue: "azul ardósia", - slategray: "cinza ardósia", - slategrey: "cinza ardósia", // same as slategray - snow: "branco neve", - springgreen: "verde primavera", - steelblue: "azul aço", - tan: "tan", - teal: "azul esverdeado", - thistle: "thistle", - tomato: "tomate", - transparent: "transparente", - turquoise: "turquesa", - violet: "violeta", - wheat: "trigo", - white: "branco", - whitesmoke: "fumaça branca", - yellow: "amarelo", - yellowgreen: "verde amarelado" -}) -); diff --git a/lib/dojo/nls/ro/colors.js.uncompressed.js b/lib/dojo/nls/ro/colors.js.uncompressed.js deleted file mode 100644 index 5b0d11b64..000000000 --- a/lib/dojo/nls/ro/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ro/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "alice blue", - antiquewhite: "antique white", - aqua: "aqua", - aquamarine: "aquamarine", - azure: "azuriu", - beige: "bej", - bisque: "bisque", - black: "negru", - blanchedalmond: "blanched almond", - blue: "albastru", - blueviolet: "albastru-violet", - brown: "brun", - burlywood: "burlywood", - cadetblue: "albastru cadet", - chartreuse: "chartreuse", - chocolate: "ciocolată", - coral: "coral", - cornflowerblue: "cornflower blue", - cornsilk: "cornsilk", - crimson: "stacojiu", - cyan: "cyan", - darkblue: "albastru închis", - darkcyan: "cyan închis", - darkgoldenrod: "goldenrod închis", - darkgray: "gri închis", - darkgreen: "verde închis", - darkgrey: "gri închis", // same as darkgray - darkkhaki: "kaki închis", - darkmagenta: "magenta închis", - darkolivegreen: "verde măslină închis", - darkorange: "portocaliu închis", - darkorchid: "orchid închis", - darkred: "roşu închis", - darksalmon: "somon închis", - darkseagreen: "verde marin închis", - darkslateblue: "albastru ardezie închis", - darkslategray: "gri ardezie închis", - darkslategrey: "gri ardezie închis", // same as darkslategray - darkturquoise: "turcoaz închis", - darkviolet: "violet închis", - deeppink: "roz profund", - deepskyblue: "albastru cer profund", - dimgray: "dim gray", - dimgrey: "dim gray", // same as dimgray - dodgerblue: "dodger blue", - firebrick: "cărămiziu aprins", - floralwhite: "floral white", - forestgreen: "forest green", - fuchsia: "fuchsia", - gainsboro: "gainsboro", - ghostwhite: "ghost white", - gold: "auriu", - goldenrod: "goldenrod", - gray: "gri", - green: "verde", - greenyellow: "verde-gălbui", - grey: "gri", // same as gray - honeydew: "honeydew", - hotpink: "roz aprins", - indianred: "roşu indian", - indigo: "indigo", - ivory: "ivoriu", - khaki: "kaki", - lavender: "lavandă", - lavenderblush: "lavender blush", - lawngreen: "lawn green", - lemonchiffon: "lemon chiffon", - lightblue: "albastru deschis", - lightcoral: "coral deschis", - lightcyan: "cyan deschis", - lightgoldenrodyellow: "goldenrod gălbui deschis", - lightgray: "gri deschis", - lightgreen: "verde dschis", - lightgrey: "gri deschis", // same as lightgray - lightpink: "roz deschis", - lightsalmon: "somon deschis", - lightseagreen: "verde marin deschis", - lightskyblue: "albastru cer deschis", - lightslategray: "gri ardezie deschis", - lightslategrey: "gri ardezie deschis", // same as lightslategray - lightsteelblue: "albastru metalic deschis", - lightyellow: "galben deschis", - lime: "lime", - limegreen: "verde lime", - linen: "linen", - magenta: "magenta", - maroon: "maro", - mediumaquamarine: "aquamarin mediu", - mediumblue: "albastru mediu", - mediumorchid: "orchid mediu", - mediumpurple: "purpuriu mediu", - mediumseagreen: "verde marin mediu", - mediumslateblue: "albastru ardezie mediu", - mediumspringgreen: "verde primăvară mediu", - mediumturquoise: "turcoaz mediu", - mediumvioletred: "roşu-violet mediu", - midnightblue: "midnight blue", - mintcream: "mint cream", - mistyrose: "misty rose", - moccasin: "moccasin", - navajowhite: "navajo white", - navy: "navy", - oldlace: "old lace", - olive: "oliv", - olivedrab: "oliv şters", - orange: "portocaliu", - orangered: "roşu portocaliu", - orchid: "orchid", - palegoldenrod: "goldenrod pal", - palegreen: "verde pal", - paleturquoise: "turcoaz pal", - palevioletred: "roşu-violet pal", - papayawhip: "papaya whip", - peachpuff: "peach puff", - peru: "peru", - pink: "roz", - plum: "plum", - powderblue: "powder blue", - purple: "purpuriu", - red: "roşu", - rosybrown: "rosy brown", - royalblue: "albastru regal", - saddlebrown: "saddle brown", - salmon: "somon", - sandybrown: "sandy brown", - seagreen: "verde marin", - seashell: "seashell", - sienna: "sienna", - silver: "argintiu", - skyblue: "albastru cer", - slateblue: "albastru ardezie", - slategray: "gri ardezie", - slategrey: "gri ardezie", // same as slategray - snow: "zăpadă", - springgreen: "verde primăvară", - steelblue: "albastru metalic", - tan: "tan", - teal: "teal", - thistle: "thistle", - tomato: "tomato", - transparent: "transparent", - turquoise: "turcoaz", - violet: "violet", - wheat: "wheat", - white: "alb", - whitesmoke: "white smoke", - yellow: "galben", - yellowgreen: "verde gălbui" -}) -); diff --git a/lib/dojo/nls/ru/colors.js.uncompressed.js b/lib/dojo/nls/ru/colors.js.uncompressed.js deleted file mode 100644 index 902d07baf..000000000 --- a/lib/dojo/nls/ru/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/ru/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "серо-голубой", - antiquewhite: "белый антик", - aqua: "зеленовато-голубой", - aquamarine: "аквамарин", - azure: "лазурный", - beige: "бежевый", - bisque: "бисквитный", - black: "черный", - blanchedalmond: "светло-миндальный", - blue: "синий", - blueviolet: "сине-фиолетовый", - brown: "коричневый", - burlywood: "светло-коричневый", - cadetblue: "серо-синий", - chartreuse: "желто-салатный", - chocolate: "шоколадный", - coral: "коралловый", - cornflowerblue: "фиолетово-синий", - cornsilk: "шелковый оттенок", - crimson: "малиновый", - cyan: "циан", - darkblue: "темно-синий", - darkcyan: "темный циан", - darkgoldenrod: "темно-золотистый", - darkgray: "темно-серый", - darkgreen: "темно-зеленый", - darkgrey: "темно-серый", // same as darkgray - darkkhaki: "темный хаки", - darkmagenta: "темно-пурпурный", - darkolivegreen: "темно-оливковый", - darkorange: "темно-оранжевый", - darkorchid: "темный орсель", - darkred: "темно-красный", - darksalmon: "темно-лососевый", - darkseagreen: "темный морской волны", - darkslateblue: "темный грифельно-синий", - darkslategray: "темный грифельно-серый", - darkslategrey: "темный грифельно-серый", // same as darkslategray - darkturquoise: "темный бирюзовый", - darkviolet: "темно-фиолетовый", - deeppink: "темно-розовый", - deepskyblue: "темный небесно-голубой", - dimgray: "тускло-серый", - dimgrey: "тускло-серый", // same as dimgray - dodgerblue: "бледно-синий", - firebrick: "кирпичный", - floralwhite: "цветочно-белый", - forestgreen: "зеленый лесной", - fuchsia: "фуксин", - gainsboro: "бледно-серый", - ghostwhite: "призрачно-белый", - gold: "золотой", - goldenrod: "золотистый", - gray: "серый", - green: "зеленый", - greenyellow: "зелено-желтый", - grey: "серый", // same as gray - honeydew: "медовый", - hotpink: "красно-розовый", - indianred: "индийский красный", - indigo: "индиго", - ivory: "слоновой кости", - khaki: "хаки", - lavender: "бледно-лиловый", - lavenderblush: "розовато-лиловый", - lawngreen: "зеленая лужайка", - lemonchiffon: "бледно-лимонный", - lightblue: "светло-синий", - lightcoral: "светло-коралловый", - lightcyan: "светлый циан", - lightgoldenrodyellow: "светло-золотистый", - lightgray: "светло-серый", - lightgreen: "светло-зеленый", - lightgrey: "светло-серый", // same as lightgray - lightpink: "светло-розовый", - lightsalmon: "светло-лососевый", - lightseagreen: "светлый морской волны", - lightskyblue: "светлый небесно-голубой", - lightslategray: "светлый грифельно-серый", - lightslategrey: "светлый грифельно-серый", // same as lightslategray - lightsteelblue: "светлый стальной", - lightyellow: "светло-желтый", - lime: "лайм", - limegreen: "зеленый лайм", - linen: "хлопковый", - magenta: "пурпурный", - maroon: "темно-бордовый", - mediumaquamarine: "нейтральный аквамарин", - mediumblue: "нейтральный синий", - mediumorchid: "нейтральный орсель", - mediumpurple: "нейтральный фиолетовый", - mediumseagreen: "нейтральный морской волны", - mediumslateblue: "нейтральный грифельно-синий", - mediumspringgreen: "нейтральный весенне-зеленый", - mediumturquoise: "нейтральный бирюзовый", - mediumvioletred: "нейтральный фиолетово-красный", - midnightblue: "полуночно-синий", - mintcream: "мятно-кремовый", - mistyrose: "блекло-розовый", - moccasin: "мокасин", - navajowhite: "белый навахо", - navy: "темно-синий", - oldlace: "матово-белый", - olive: "оливковый", - olivedrab: "желтовато-серый", - orange: "оранжевый", - orangered: "оранжево-красный", - orchid: "орсель", - palegoldenrod: "бледно-золотистый", - palegreen: "бледно-зеленый", - paleturquoise: "бледно-бирюзовый", - palevioletred: "бледный фиолетово-красный", - papayawhip: "черенок папайи", - peachpuff: "персиковый", - peru: "перу", - pink: "розовый", - plum: "сливовый", - powderblue: "пороховой", - purple: "фиолетовый", - red: "красный", - rosybrown: "розово-коричневый", - royalblue: "королевский голубой", - saddlebrown: "кожано-коричневый", - salmon: "лососевый", - sandybrown: "коричнево-песчаный", - seagreen: "морской волны", - seashell: "морская раковина", - sienna: "охра", - silver: "серебристый", - skyblue: "небесно-голубой", - slateblue: "грифельно-синий", - slategray: "грифельно-серый", - slategrey: "грифельно-серый", // same as slategray - snow: "белоснежный", - springgreen: "весенний зеленый", - steelblue: "стальной", - tan: "рыжевато-коричневый", - teal: "чирок", - thistle: "чертополох", - tomato: "помидор", - transparent: "прозрачный", - turquoise: "бирюзовый", - violet: "фиолетовый", - wheat: "пшеница", - white: "белый", - whitesmoke: "дымчато-белый", - yellow: "желтый", - yellowgreen: "желто-зеленый" -}) -); diff --git a/lib/dojo/nls/sk/colors.js.uncompressed.js b/lib/dojo/nls/sk/colors.js.uncompressed.js deleted file mode 100644 index 700f727ab..000000000 --- a/lib/dojo/nls/sk/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/sk/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "modrá (alice)", - antiquewhite: "antická biela", - aqua: "vodová", - aquamarine: "akvamarínová", - azure: "azúrová", - beige: "béžová", - bisque: "porcelánová", - black: "čierna", - blanchedalmond: "bledá mandľová", - blue: "modrá", - blueviolet: "modro-fialová", - brown: "hnedá", - burlywood: "drevená hnedá", - cadetblue: "červeno modrá", - chartreuse: "kartúzska", - chocolate: "čokoládová", - coral: "koralová", - cornflowerblue: "nevädzová modrá", - cornsilk: "ôstie kukurice", - crimson: "karmínová", - cyan: "zelenomodrá", - darkblue: "tmavomodrá", - darkcyan: "tmavá zelenomodrá", - darkgoldenrod: "tmavá zlatobyľ", - darkgray: "tmavosivá", - darkgreen: "tmavozelená", - darkgrey: "tmavosivá", // same as darkgray - darkkhaki: "tmavá žltohnedá", - darkmagenta: "tmavá purpurová", - darkolivegreen: "tmavá olivovo zelená", - darkorange: "tmavá oranžová", - darkorchid: "tmavá orchidea", - darkred: "tmavočervená", - darksalmon: "tmavá lososová", - darkseagreen: "tmavá morská zelená", - darkslateblue: "tmavá bridlicová modrá", - darkslategray: "tmavá bridlicová sivá", - darkslategrey: "tmavá bridlicová sivá", // same as darkslategray - darkturquoise: "tmavá tyrkysová", - darkviolet: "tmavofialová", - deeppink: "hlboká ružová", - deepskyblue: "hlboká modrá obloha", - dimgray: "matná sivá", - dimgrey: "matná sivá", // same as dimgray - dodgerblue: "modrá (dodger)", - firebrick: "pálená tehla", - floralwhite: "biely kvet", - forestgreen: "lesná zelená", - fuchsia: "fuchsia", - gainsboro: "sivá - gainsboro", - ghostwhite: "biela (ghost white)", - gold: "zlatá", - goldenrod: "zlatobyľ", - gray: "sivá", - green: "zelená", - greenyellow: "zelenožltá", - grey: "sivá", // same as gray - honeydew: "ambrózia", - hotpink: "horúca ružová", - indianred: "indiánska červená", - indigo: "indigo", - ivory: "slonovina", - khaki: "kaki", - lavender: "levanduľa", - lavenderblush: "rumencová levanduľa", - lawngreen: "trávová zelená", - lemonchiffon: "citrónový šifón", - lightblue: "svetlomodrá", - lightcoral: "svetlá koralová", - lightcyan: "svetlá zelenomodrá", - lightgoldenrodyellow: "svetlá zlatobyľová žltá", - lightgray: "svetlosivá", - lightgreen: "svetlozelená", - lightgrey: "svetlosivá", // same as lightgray - lightpink: "svetloružová", - lightsalmon: "svetlá lososová", - lightseagreen: "svetlá morská zelená", - lightskyblue: "svetlá modrá obloha", - lightslategray: "svetlá bridlicová sivá", - lightslategrey: "svetlá bridlicová sivá", // same as lightslategray - lightsteelblue: "svetlá oceľovomodrá", - lightyellow: "svetložltá", - lime: "limetková", - limegreen: "limetková zelená", - linen: "ľan", - magenta: "purpurová", - maroon: "gaštanová hnedá", - mediumaquamarine: "stredná akvamarínová", - mediumblue: "stredná modrá", - mediumorchid: "stredná orchideová", - mediumpurple: "stredná purpurová", - mediumseagreen: "stredná morská zelená", - mediumslateblue: "stredná bridlicová modrá", - mediumspringgreen: "stredná jarná zelená", - mediumturquoise: "stredná tyrkysová", - mediumvioletred: "stredná fialovočervená", - midnightblue: "polnočná modrá", - mintcream: "mätová krémová", - mistyrose: "zahmlená ruža", - moccasin: "mokasínová", - navajowhite: "navajská biela", - navy: "námornícka", - oldlace: "stará čipka", - olive: "olivová", - olivedrab: "fádna olivová", - orange: "oranžová", - orangered: "oranžovo červená", - orchid: "orchideová", - palegoldenrod: "bledá zlatobyľová", - palegreen: "bledá zelená", - paleturquoise: "bledá tyrkysová", - palevioletred: "bledá fialovo červená", - papayawhip: "papájový krém", - peachpuff: "broskyňový nádych", - peru: "peru", - pink: "ružová", - plum: "slivková", - powderblue: "prášková modrá", - purple: "purpurová", - red: "červená", - rosybrown: "ružovo hnedá", - royalblue: "kráľovská modrá", - saddlebrown: "sedlová hnedá", - salmon: "lososová", - sandybrown: "piesková hnedá", - seagreen: "morská zelená", - seashell: "lastúrová", - sienna: "sienská", - silver: "strieborná", - skyblue: "modré nebo", - slateblue: "bridlicová modrá", - slategray: "bridlicová sivá", - slategrey: "bridlicová sivá", // same as slategray - snow: "snehová", - springgreen: "jarná zelená", - steelblue: "oceľovomodrá", - tan: "žltohnedá", - teal: "zelenomodrá", - thistle: "bodliaková", - tomato: "paradajková", - transparent: "priesvitná", - turquoise: "tyrkysová", - violet: "fialová", - wheat: "pšeničná", - white: "biela", - whitesmoke: "biely dym", - yellow: "žltá", - yellowgreen: "žltozelená" -}) -); diff --git a/lib/dojo/nls/sl/colors.js.uncompressed.js b/lib/dojo/nls/sl/colors.js.uncompressed.js deleted file mode 100644 index 9a73f479c..000000000 --- a/lib/dojo/nls/sl/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/sl/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. -//Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). -//TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "alice blue modra", - antiquewhite: "antično bela", - aqua: "svetlo modra", - aquamarine: "akvamarin", - azure: "azurno modra", - beige: "bež", - bisque: "porcelanasta", - black: "črna", - blanchedalmond: "obledelo mandljeva", - blue: "modra", - blueviolet: "modro vijolična", - brown: "rjava", - burlywood: "peščeno sivo-rjava", - cadetblue: "kadetsko modra", - chartreuse: "chartreuse", - chocolate: "čokoladna", - coral: "koralna", - cornflowerblue: "plavičasto modra", - cornsilk: "koruzna", - crimson: "karminasta", - cyan: "cijan", - darkblue: "temno modra", - darkcyan: "temno cijan", - darkgoldenrod: "temna zlata rozga", - darkgray: "temno siva", - darkgreen: "temno zelena", - darkgrey: "temno siva", // same as darkgray - darkkhaki: "temno kaki", - darkmagenta: "temna magenta", - darkolivegreen: "temna olivno zelena", - darkorange: "temno oranžna", - darkorchid: "temno orhidejasta", - darkred: "temno rdeča", - darksalmon: "temno lososova", - darkseagreen: "temno morsko zelena", - darkslateblue: "temno skrilasto modra", - darkslategray: "temno skrilasto siva", - darkslategrey: "temno skrilasto siva", // same as darkslategray - darkturquoise: "temno turkizna", - darkviolet: "temno vijolična", - deeppink: "temno rožnata", - deepskyblue: "temno nebeško modra", - dimgray: "pepelnato siva", - dimgrey: "pepelnato siva", // same as dimgray - dodgerblue: "dodgersko modra", - firebrick: "opečnata", - floralwhite: "cvetno bela", - forestgreen: "gozdno zelena", - fuchsia: "roza", - gainsboro: "gainsboro", - ghostwhite: "senčnato bela", - gold: "zlata", - goldenrod: "zlata rozga", - gray: "siva", - green: "zelena", - greenyellow: "zeleno-rumena", - grey: "siva", // same as gray - honeydew: "medena rosa", - hotpink: "kričeče rožnata", - indianred: "indijansko rdeča", - indigo: "indigo", - ivory: "slonokoščena", - khaki: "kaki", - lavender: "sivka", - lavenderblush: "rožnato sivka", - lawngreen: "travniško zelena", - lemonchiffon: "limonast šifon", - lightblue: "svetlo modra", - lightcoral: "svetlo koralna", - lightcyan: "svetlo cijan", - lightgoldenrodyellow: "svetlo rumena zlata rozga", - lightgray: "svetlo siva", - lightgreen: "svetlo zelena", - lightgrey: "svetlo siva", // same as lightgray - lightpink: "svetlo rožnata", - lightsalmon: "svetlo lososova", - lightseagreen: "svetlo morsko zelena", - lightskyblue: "svetlo nebeško modra", - lightslategray: "svetlo skrilasto siva", - lightslategrey: "svetlo skrilasto siva", // same as lightslategray - lightsteelblue: "svetlo kovinsko modra", - lightyellow: "svetlo rumena", - lime: "svetlo zelena", - limegreen: "apneno zelena", - linen: "lanena", - magenta: "magenta", - maroon: "kostanjeva", - mediumaquamarine: "srednji akvamarin", - mediumblue: "srednje modra", - mediumorchid: "srednje orhidejasta", - mediumpurple: "srednje škrlatna", - mediumseagreen: "srednje morsko zelena", - mediumslateblue: "srednje skrilasto modra", - mediumspringgreen: "srednje pomladno zelena", - mediumturquoise: "srednje turkizna", - mediumvioletred: "srednje vijolično rdeča", - midnightblue: "polnočno modra", - mintcream: "metina krema", - mistyrose: "megleno rožnata", - moccasin: "mokasinasta", - navajowhite: "navajo bela", - navy: "mornarsko modra", - oldlace: "stara čipka", - olive: "olivno zelena", - olivedrab: "umazano olivna", - orange: "oranžna", - orangered: "oranžno-rdeča", - orchid: "orhidejasta", - palegoldenrod: "bleda zlata rozga", - palegreen: "bledo zelena", - paleturquoise: "bledo turkizna", - palevioletred: "bledo vijolično-rdeča", - papayawhip: "papaja", - peachpuff: "breskova", - peru: "perujska", - pink: "rožnata", - plum: "slivova", - powderblue: "kobaltovo modra", - purple: "škrlatna", - red: "rdeča", - rosybrown: "rožnato rjava", - royalblue: "kraljevsko modra", - saddlebrown: "sedlasto rjava", - salmon: "lososova", - sandybrown: "peščeno rjava", - seagreen: "morsko zelena", - seashell: "morska lupina", - sienna: "sienna", - silver: "srebrna", - skyblue: "nebeško modra", - slateblue: "skrilasto modra", - slategray: "skrilasto siva", - slategrey: "skrilasto siva", // same as slategray - snow: "snežena", - springgreen: "pomladno zelena", - steelblue: "kovinsko modra", - tan: "rumeno-rjava", - teal: "modrozelena", - thistle: "osatna", - tomato: "paradižnikova", - transparent: "prosojno", - turquoise: "turkizna", - violet: "vijolična", - wheat: "pšenična", - white: "bela", - whitesmoke: "megleno bela", - yellow: "rumena", - yellowgreen: "rumeno-zelena" -}) -); diff --git a/lib/dojo/nls/sv/colors.js.uncompressed.js b/lib/dojo/nls/sv/colors.js.uncompressed.js deleted file mode 100644 index 2aba2e334..000000000 --- a/lib/dojo/nls/sv/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/sv/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "aliceblå", - antiquewhite: "antikvitt", - aqua: "akvamarin", - aquamarine: "akvamarin", - azure: "azurblått", - beige: "beige", - bisque: "biskvi", - black: "svart", - blanchedalmond: "skållad mandel", - blue: "blått", - blueviolet: "blåviolett", - brown: "brunt", - burlywood: "träfärgat", - cadetblue: "kadettblått", - chartreuse: "chartreuse", - chocolate: "choklad", - coral: "korall", - cornflowerblue: "kornblått", - cornsilk: "gulvitt", - crimson: "karmosinrött", - cyan: "cyan", - darkblue: "mörkblått", - darkcyan: "mörkt cyan", - darkgoldenrod: "mörkt gullris", - darkgray: "mörkgrått", - darkgreen: "mörkgrönt", - darkgrey: "mörkgrått", // same as darkgray - darkkhaki: "mörkt kaki", - darkmagenta: "mörk magenta", - darkolivegreen: "mörkt olivgrönt", - darkorange: "mörkorange", - darkorchid: "mörkt orkidé", - darkred: "mörkrött", - darksalmon: "mörkt laxfärgat", - darkseagreen: "mörkt havsgrönt", - darkslateblue: "mörkt skifferblått", - darkslategray: "mörkt skiffergrått", - darkslategrey: "mörkt skiffergrått", // same as darkslategray - darkturquoise: "mörkturkost", - darkviolet: "mörkviolett", - deeppink: "djuprosa", - deepskyblue: "mörkt himmelsblått", - dimgray: "smutsgrått", - dimgrey: "smutsgrått", // same as dimgray - dodgerblue: "dodgerblått", - firebrick: "tegelstensrött", - floralwhite: "blomvitt", - forestgreen: "skogsgrönt", - fuchsia: "fuchsia", - gainsboro: "gainsboro", - ghostwhite: "spökvitt", - gold: "guld", - goldenrod: "gullris", - gray: "grått", - green: "grönt", - greenyellow: "gröngult", - grey: "grått", // same as gray - honeydew: "honungsdagg", - hotpink: "varmrosa", - indianred: "indianrött", - indigo: "indigo", - ivory: "elfenbensvitt", - khaki: "kaki", - lavender: "lavendel", - lavenderblush: "lavendelskimrande", - lawngreen: "gräsmattegrönt", - lemonchiffon: "citronchiffong", - lightblue: "ljusblått", - lightcoral: "ljuskorall", - lightcyan: "ljust cyan", - lightgoldenrodyellow: "ljust gullrisgult", - lightgray: "ljusgrått", - lightgreen: "ljusgrönt", - lightgrey: "ljusgrått", // same as lightgray - lightpink: "ljusrosa", - lightsalmon: "ljust laxfärgat", - lightseagreen: "ljust havsgrönt", - lightskyblue: "ljust himmelsblått", - lightslategray: "ljust skiffergrått", - lightslategrey: "ljust skiffergrått", // same as lightslategray - lightsteelblue: "ljust stålblått", - lightyellow: "ljusgult", - lime: "lime", - limegreen: "limegrönt", - linen: "linne", - magenta: "magenta", - maroon: "rödbrunt", - mediumaquamarine: "mellanakvamarin", - mediumblue: "mellanblått", - mediumorchid: "mellanorkidé", - mediumpurple: "mellanlila", - mediumseagreen: "mellanhavsgrönt", - mediumslateblue: "mellanskifferblått", - mediumspringgreen: "mellanvårgrönt", - mediumturquoise: "mellanturkost", - mediumvioletred: "mellanviolettrött", - midnightblue: "midnattsblått", - mintcream: "mintgrädde", - mistyrose: "dunkelrosa", - moccasin: "mockasin", - navajowhite: "navajovitt", - navy: "marinblått", - oldlace: "spetsvitt", - olive: "olivfärgat", - olivedrab: "olivsmutsgult", - orange: "orange", - orangered: "orangerött", - orchid: "orkidé", - palegoldenrod: "blekt gullris", - palegreen: "blekgrönt", - paleturquoise: "blekturkost", - palevioletred: "blekviolettrött", - papayawhip: "papayaröra", - peachpuff: "persika", - peru: "peru", - pink: "rosa", - plum: "plommon", - powderblue: "pulverblått", - purple: "lila", - red: "rött", - rosybrown: "rosenbrunt", - royalblue: "kungligt blått", - saddlebrown: "sadelbrunt", - salmon: "laxfärgat", - sandybrown: "sandbrunt", - seagreen: "havsgrönt", - seashell: "snäckskal", - sienna: "sienna", - silver: "silver", - skyblue: "himmelsblått", - slateblue: "skifferblått", - slategray: "skiffergrått", - slategrey: "skiffergrått", // same as slategray - snow: "snö", - springgreen: "vårgrönt", - steelblue: "stålblått", - tan: "mellanbrunt", - teal: "blågrönt", - thistle: "tistel", - tomato: "tomatrött", - transparent: "transparent", - turquoise: "turkost", - violet: "violett", - wheat: "vete", - white: "vitt", - whitesmoke: "vit rök", - yellow: "gult", - yellowgreen: "gulgrönt" -}) -); diff --git a/lib/dojo/nls/th/colors.js.uncompressed.js b/lib/dojo/nls/th/colors.js.uncompressed.js deleted file mode 100644 index 520bdacfa..000000000 --- a/lib/dojo/nls/th/colors.js.uncompressed.js +++ /dev/null @@ -1,157 +0,0 @@ -define( -"dojo/nls/th/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - -//Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). -//TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? -aliceblue: "ฟ้าจาง", -antiquewhite: "สีเนื้อ", -aqua: "ฟ้าน้ำทะเล", -aquamarine: "อะความารีน", -azure: "น้ำเงินฟ้า", -beige: "น้ำตาลเบจ", -bisque: "ขาวข้าวสาร", -black: "ดำ", -blanchedalmond: "เนื้ออ่อน", -blue: "น้ำเงิน", -blueviolet: "น้ำเงินม่วง", -brown: "น้ำตาล", -burlywood: "น้ำตาลอ่อน", -cadetblue: "เขียวน้ำเงินหม่น", -chartreuse: "เขียวสะท้อนแสง", -chocolate: "ช็อกโกแลต", -coral: "แสดเข้มนวล", -cornflowerblue: "สีคอร์นฟลาวเวอร์บลู", -cornsilk: "cornsilk", -crimson: "แดงเลือดหมู", -cyan: "เขียวแกมน้ำเงิน", -darkblue: "น้ำเงินเข้ม", -darkcyan: "เขียวแกมน้ำเงินเข้ม", -darkgoldenrod: "ทองเหลืองเข้ม", -darkgray: "เทาเข้ม", -darkgreen: "เขียวเข้ม", -darkgrey: "เทาเข้ม", // same as darkgray -darkkhaki: "กากีเข้ม", -darkmagenta: "แดงแกมม่วงเข้ม", -darkolivegreen: "เขียวโอลีฟเข้ม", -darkorange: "ส้มเข้ม", -darkorchid: "สีม่วงกล้วยไม้เข้ม", -darkred: "แดงเข้ม", -darksalmon: "ส้มเข้ม", -darkseagreen: "เขียวทะเลเข้ม", -darkslateblue: "น้ำเงินนวลเข้ม", -darkslategray: "เทานวลเข้ม", -darkslategrey: "เทานวลเข้ม", // same as darkslategray -darkturquoise: "ฟ้าขี้นกการเวกเข้ม", -darkviolet: "ม่วงเข้ม", -deeppink: "ชมพูเข้ม", -deepskyblue: "ฟ้าสด", -dimgray: "เทาทึม", -dimgrey: "เทาทึม", // same as dimgray -dodgerblue: "ฟ้าสะท้อนแสง", -firebrick: "สีอิฐ", -floralwhite: "ขาวแกมชมพู", -forestgreen: "หยก", -fuchsia: "บานเย็น", -gainsboro: "เทานวล", -ghostwhite: "น้ำข้าว", -gold: "ทอง", -goldenrod: "ทองเหลือง", -gray: "เทา", -green: "เขียว", -greenyellow: "เขียวแกมเหลือง", -grey: "เทา", // same as gray -honeydew: "ขาวแกมเขียว", -hotpink: "ชมพูจัด", -indianred: "แดงอมเหลือง", -indigo: "คราม", -ivory: "งาช้าง", -khaki: "กากี", -lavender: "ม่วงลาเวนเดอร์", -lavenderblush: "นมเย็น", -lawngreen: "เขียวหญ้าอ่อน", -lemonchiffon: "lemon chiffon", -lightblue: "น้ำเงินอ่อน", -lightcoral: "ชมพูอมแดง", -lightcyan: "เขียวแกมน้ำเงินอ่อน", -lightgoldenrodyellow: "ทองเหลืองอ่อน", -lightgray: "เทาอ่อน", -lightgreen: "เขียวอ่อน", -lightgrey: "เทาอ่อน", // same as lightgray -lightpink: "ชมพูอ่อน", -lightsalmon: "ส้มจาง", -lightseagreen: "เขียวทะเลอ่อน", -lightskyblue: "ฟ้าอ่อน", -lightslategray: "เทานวลอ่อน", -lightslategrey: "เทานวลอ่อน", // same as lightslategray -lightsteelblue: "น้ำเงินนวลอ่อน", -lightyellow: "เหลืองอ่อน", -lime: "เหลืองมะนาว", -limegreen: "เขียวมะนาว", -linen: "ลินนิน", -magenta: "แดงแกมม่วง", -maroon: "น้ำตาลแดง", -mediumaquamarine: "อะความารีนกลางๆ", -mediumblue: "น้ำเงินกลางๆ", -mediumorchid: "ม่วงกล้วยไม้กลางๆ", -mediumpurple: "ม่วงอัญชัญ", -mediumseagreen: " เขียวทะเลกลางๆ", -mediumslateblue: "น้ำเงินนวลกลางๆ", -mediumspringgreen: "สีเขียวนวลกลางๆ", -mediumturquoise: "ฟ้าขี้นกการเวกกลางๆ", -mediumvioletred: "แดงอมม่วงกลางๆ", -midnightblue: "น้ำเงินทึบ", -mintcream: "ขาวกะทิ", -mistyrose: "ชมพูหม่น", -moccasin: "ม็อคค่า", -navajowhite: "ส้มหนังกลับ", -navy: "น้ำเงินเข้ม", -oldlace: "ขาวนวล", -olive: "โอลีฟ", -olivedrab: "เขียวมะกอกแก่", -orange: "ส้ม", -orangered: "ส้มแกมแดง", -orchid: "สีกล้วยไม้", -palegoldenrod: "ทองเหลืองจาง", -palegreen: "เขียวจาง", -paleturquoise: "ฟ้าขี้นกการเวกจาง", -palevioletred: "แดงอมม่วงจาง", -papayawhip: "ชมพูจาง", -peachpuff: " สีพีช", -peru: "ส้มดินเผา", -pink: "ชมพู", -plum: "ม่วงอ่อน", -powderblue: "ฟ้าหม่น", -purple: "ม่วง", -red: "แดง", -rosybrown: "กะปิ", -royalblue: "น้ำเงินเข้ม", -saddlebrown: "น้ำตาล", -salmon: "ส้มอ่อน", -sandybrown: "น้ำตาลลูกรัง", -seagreen: "เขียวทะเล", -seashell: "สีขาวหอยทะเล", -sienna: "น้ำตาลอมแดง", -silver: "เงิน", -skyblue: "ฟ้า", -slateblue: "น้ำเงินนวล", -slategray: "เทาอมน้ำเงินนวล", -slategrey: "เทาอมน้ำเงินนวล", // same as slategray -snow: "ขาวหิมะ", -springgreen: "เขียว", -steelblue: "น้ำเงินด้าน", -tan: "แทน", -teal: "เขียวหัวเป็ด", -thistle: "ม่วงจาง", -tomato: "แสด", -transparent: "สีใส", -turquoise: "ฟ้าขี้นกการเวก", -violet: "ม่วง", -wheat: "เหลืองรำข้าว", -white: "ขาว", -whitesmoke: "ขาวควัน", -yellow: "เหลือง", -yellowgreen: "เหลืองแกมเขียว" -}) -); diff --git a/lib/dojo/nls/tr/colors.js.uncompressed.js b/lib/dojo/nls/tr/colors.js.uncompressed.js deleted file mode 100644 index 8b9020f06..000000000 --- a/lib/dojo/nls/tr/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/tr/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "alice mavisi", - antiquewhite: "antik beyaz", - aqua: "deniz mavisi", - aquamarine: "akuamarin", - azure: "azur mavisi", - beige: "bej", - bisque: "bisküvi", - black: "siyah", - blanchedalmond: "soluk badem", - blue: "mavi", - blueviolet: "mavi-mor", - brown: "kahverengi", - burlywood: "sarımsı kahverengi", - cadetblue: "denizci mavisi", - chartreuse: "chartreuse", - chocolate: "çikolata", - coral: "mercan", - cornflowerblue: "peygamber çiçeği mavisi", - cornsilk: "mısır rengi", - crimson: "crimson", - cyan: "camgöbeği", - darkblue: "koyu mavi", - darkcyan: "koyu camgöbeği", - darkgoldenrod: "koyu sarı", - darkgray: "koyu gri", - darkgreen: "koyu yeşil", - darkgrey: "koyu gri", // same as darkgray - darkkhaki: "koyu haki", - darkmagenta: "koyu mor", - darkolivegreen: "koyu zeytin yeşili", - darkorange: "koyu turuncu", - darkorchid: "koyu orkide", - darkred: "koyu kırmızı", - darksalmon: "koyu somon", - darkseagreen: "koyu deniz yeşili", - darkslateblue: "koyu arduvaz mavisi", - darkslategray: "koyu arduvaz grisi", - darkslategrey: "koyu arduvaz grisi", // same as darkslategray - darkturquoise: "koyu turkuaz", - darkviolet: "koyu eflatun", - deeppink: "koyu pembe", - deepskyblue: "koyu gök mavisi", - dimgray: "soluk gri", - dimgrey: "soluk gri", // same as dimgray - dodgerblue: "toz mavisi", - firebrick: "canlı kiremit", - floralwhite: "çiçek beyazı", - forestgreen: "koyu deniz yeşili", - fuchsia: "fuşya", - gainsboro: "gainsboro", - ghostwhite: "silik beyaz", - gold: "altın", - goldenrod: "sarısabır", - gray: "gri", - green: "yeşil", - greenyellow: "yeşil-sarı", - grey: "gri", // same as gray - honeydew: "çam sakızı", - hotpink: "sıcak pembe", - indianred: "kızılderili kırmızısı", - indigo: "çivit mavisi", - ivory: "fildişi", - khaki: "haki", - lavender: "lavanta", - lavenderblush: "lavanta pembesi", - lawngreen: "çimen yeşili", - lemonchiffon: "limoni", - lightblue: "açık mavi", - lightcoral: "açık mercan", - lightcyan: "açık camgöbeği", - lightgoldenrodyellow: "açık sarısabır", - lightgray: "açık gri", - lightgreen: "açık yeşil", - lightgrey: "açık gri", // same as lightgray - lightpink: "açık pembe", - lightsalmon: "açık somon", - lightseagreen: "açık deniz yeşili", - lightskyblue: "açık gök mavisi", - lightslategray: "açık arduvaz grisi", - lightslategrey: "açık arduvaz grisi", // same as lightslategray - lightsteelblue: "açık metalik mavi", - lightyellow: "açık sarı", - lime: "limon yeşili", - limegreen: "küf yeşili", - linen: "keten", - magenta: "macenta", - maroon: "kestane", - mediumaquamarine: "orta akuamarin", - mediumblue: "orta mavi", - mediumorchid: "orta orkide", - mediumpurple: "orta mor", - mediumseagreen: "orta deniz yeşili", - mediumslateblue: "orta arduvaz mavisi", - mediumspringgreen: "orta bahar yeşili", - mediumturquoise: "orta turkuaz", - mediumvioletred: "orta menekşe kırmızısı", - midnightblue: "gece mavisi", - mintcream: "naneli krem", - mistyrose: "gülkurusu", - moccasin: "mokosen", - navajowhite: "navajo beyazı", - navy: "lacivert", - oldlace: "eski dantel", - olive: "zeytin", - olivedrab: "asker yeşili", - orange: "turuncu", - orangered: "turuncu kırmızı", - orchid: "orkide", - palegoldenrod: "soluk sarısabır", - palegreen: "soluk yeşil", - paleturquoise: "soluk turkuaz", - palevioletred: "soluk menekşe kırmızısı", - papayawhip: "papaya sapı", - peachpuff: "açık şeftali", - peru: "peru", - pink: "pembe", - plum: "erik", - powderblue: "pudra mavisi", - purple: "mor", - red: "kırmızı", - rosybrown: "pembemsi kahverengi", - royalblue: "parlak koyu mavi", - saddlebrown: "açık kahve", - salmon: "somon", - sandybrown: "kum rengi", - seagreen: "deniz yeşili", - seashell: "deniz kabuğu", - sienna: "koyu kahve", - silver: "gümüş", - skyblue: "gök mavisi", - slateblue: "arduvaz mavisi", - slategray: "arduvaz grisi", - slategrey: "arduvaz grisi", // same as slategray - snow: "kar", - springgreen: "bahar yeşili", - steelblue: "metalik mavi", - tan: "güneş yanığı", - teal: "Teal mavi", - thistle: "devedikeni", - tomato: "domates", - transparent: "saydam", - turquoise: "turkuaz", - violet: "eflatun", - wheat: "buğday", - white: "beyaz", - whitesmoke: "beyaz duman", - yellow: "sarı", - yellowgreen: "sarı yeşil" -}) -); diff --git a/lib/dojo/nls/tt-rss-layer_ROOT.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ROOT.js.uncompressed.js deleted file mode 100644 index 8ea8beba2..000000000 --- a/lib/dojo/nls/tt-rss-layer_ROOT.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ROOT',{ -'dijit/form/nls/validate':{"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."} -, -'dijit/nls/loading':{"loadingState":"Loading...","errorState":"Sorry, an error occurred"} -, -'dojo/nls/colors':{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Previous choices","nextMessage":"More choices"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ar.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ar.js.uncompressed.js deleted file mode 100644 index 0d5e8937b..000000000 --- a/lib/dojo/nls/tt-rss-layer_ar.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ar',{ -'dijit/form/nls/validate':{"rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة."} -, -'dijit/nls/loading':{"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ"} -, -'dojo/nls/colors':{"lightsteelblue":"أزرق معدني فاتح","orangered":"أحمر مائل للبرتقالي","midnightblue":"أزرق بحري","cadetblue":"أزرق ملون بالرمادي","seashell":"أبيض مائل للأصفر فاتح","slategrey":"رمادي اردوازي","coral":"مرجاني","darkturquoise":"تركواز داكن","antiquewhite":"أبيض عتيق","mediumspringgreen":"أخضر ربيعي متوسط","transparent":"شفاف","salmon":"برتقالي وردي شاحب","darkgrey":"رمادي داكن","ivory":"عاجي","greenyellow":"أخضر مائل للأصفر","mistyrose":"وردي","lightsalmon":"فضي فاتح","silver":"فضي","dimgrey":"رمادي شاحب","orange":"برتقالي","white":"أبيض","navajowhite":"أبيض ملاحي","royalblue":"أزرق ملكي","deeppink":"أحمر وردي غامق","lime":"ليموني","oldlace":"برتقالي مائل للأصفر شاحب","chartreuse":"أخضر مائل للصفرة","darkcyan":"أزرق سماوي داكن","yellow":"أصفر","linen":"كتاني","olive":"أخضر زيتوني داكن","gold":"ذهبي","lawngreen":"أخضر بلون العشب","lightyellow":"أصفر فاتح","tan":"خمري","darkviolet":"بنفسجي داكن","lightslategrey":"رمادي اردوازي فاتح","grey":"رمادي","darkkhaki":"كاكي داكن","green":"أخضر","deepskyblue":"أزرق سماوي غامق","aqua":"أزرق مائي","sienna":"بني محروق","mintcream":"أصفر شاحب مائل للأخضر الزرعي","rosybrown":"بني وردي","mediumslateblue":"أزرق اردوازي متوسط","magenta":"أحمر قرمزي","lightseagreen":"أخضر مائل للأزرق فاتح","cyan":"أزرق سماوي","olivedrab":"أسود فاتح","darkgoldenrod":"أصفر ذهبي داكن","slateblue":"أزرق اردوازي","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","lavender":"أرجواني شاحب","mediumseagreen":"أخضر مائل للأزرق متوسط","maroon":"أحمر داكن","darkslategray":"رمادي اردوازي داكن","mediumturquoise":"تركواز متوسط","ghostwhite":"أبيض شفاف","darkblue":"أزرق داكن","mediumvioletred":"أحمر-بنفسجي متوسط","brown":"بني","lightgray":"رمادي فاتح","sandybrown":"بني مائل للصفرة","pink":"وردي","firebrick":"أصفر زاهي","indigo":"نيلي","snow":"أبيض ثلجي","darkorchid":"أرجواني داكن","turquoise":"تركواز","chocolate":"بني غامق","springgreen":"أخضر ربيعي","moccasin":"نحاسي أحمر","navy":"أزرق داكن","lemonchiffon":"أصفر شفاف","teal":"بترولي","floralwhite":"أبيض زهري","cornflowerblue":"أزرق عنبري","paleturquoise":"تركواز شاحب","purple":"ارجواني","gainsboro":"رمادي مائل للأزرق فاتح","plum":"أرجواني داكن","red":"أحمر","blue":"أزرق","forestgreen":"أخضر بلون أشجار الغابات","darkgreen":"أخضر داكن","honeydew":"أبيض مائل للأخضر","darkseagreen":"أخضر مائل للأزرق داكن","lightcoral":"مرجاني فاتح","palevioletred":"أحمر-بنفسجي شاحب","mediumpurple":"قرمزي متوسط","saddlebrown":"بني فاتح","darkmagenta":"قرمزي داكن","thistle":"ارجواني شاحب","whitesmoke":"دخان أبيض","wheat":"أخضر قمحي","violet":"بنفسجي","lightskyblue":"أزرق سماوي فاتح","goldenrod":"أصفر ذهبي","mediumblue":"أزرق متوسط","skyblue":"أزرق سماوي","crimson":"قرمزي","darksalmon":"فضي داكن","darkred":"أحمر داكن","darkslategrey":"رمادي اردوازي داكن","peru":"بني جملي","lightgrey":"رمادي فاتح","lightgoldenrodyellow":"أصفر ذهبي فاتح","blanchedalmond":"أخضر مائل للبياض","aliceblue":"أزرق فاتح","bisque":"أصفر برتقالي الى رمادي مصفر","slategray":"رمادي اردوازي","palegoldenrod":"أصفر ذهبي شاحب","darkorange":"برتقالي داكن","aquamarine":"أزرق مائل للأخضر (زبرجد)","lightgreen":"أخضر فاتح","burlywood":"خشبي","dodgerblue":"أزرق عنبري","darkgray":"رمادي داكن","lightcyan":"سماوي فاتح","powderblue":"أزرق مائل للأصفر","blueviolet":"أزرق-بنفسجي","orchid":"أرجواني فاتح","dimgray":"رمادي شاحب","beige":"بيج","fuchsia":"فوشيا","lavenderblush":"أحمر أرجواني","hotpink":"أحمر وردي زاهي","steelblue":"أزرق معدني","tomato":"أحمر مائل للأصفر","lightpink":"وردي فاتح","limegreen":"أخضر ليموني","indianred":"أحمر هندي","papayawhip":"خوخي فاتح","lightslategray":"رمادي اردوازي فاتح","gray":"رمادي","mediumorchid":"أرجواني متوسط","cornsilk":"حريري","black":"أسود","seagreen":"أخضر مائل للأزرق","darkslateblue":"أزرق اردوازي داكن","khaki":"كاكي","lightblue":"أزرق فاتح","palegreen":"أخضر شاحب","azure":"أزرق سماوي","peachpuff":"خوخي مائل للأصفر","darkolivegreen":"أخضر زيتوني داكن","yellowgreen":"أخضر مائل للأصفر"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 ترليو","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 تريليون","decimalFormat":"#,##0.###;#,##0.###-","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات"} -, -'dijit/nls/common':{"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"حفظ","itemClose":"اغلاق"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ca.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ca.js.uncompressed.js deleted file mode 100644 index 45582b1f5..000000000 --- a/lib/dojo/nls/tt-rss-layer_ca.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ca',{ -'dijit/form/nls/validate':{"rangeMessage":"Aquest valor és fora de l'interval","invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari"} -, -'dijit/nls/loading':{"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."} -, -'dojo/nls/colors':{"lightsteelblue":"blau acer clar","orangered":"taronja vermellós","midnightblue":"blau mitjanit","cadetblue":"blau marí","seashell":"petxina marina","slategrey":"gris pissarra","coral":"corall","darkturquoise":"turquesa fosc","antiquewhite":"blanc antic","mediumspringgreen":"verd primavera mitjà","transparent":"transparent","salmon":"salmó","darkgrey":"gris fosc","ivory":"marbre","greenyellow":"verd grogós","mistyrose":"rosa dens","lightsalmon":"salmó clar","silver":"argent","dimgrey":"gris fosc","orange":"taronja","white":"blanc","navajowhite":"blanc Navajo","royalblue":"blau marí intens","deeppink":"rosa profund","lime":"verd llimona","oldlace":"rosa cremós","chartreuse":"Llimona pàl·lid","darkcyan":"cian fosc","yellow":"groc","linen":"lli","olive":"oliva","gold":"daurat","lawngreen":"verd gespa","lightyellow":"groc clar","tan":"tan","darkviolet":"violeta fosc","lightslategrey":"gris pissarra clar","grey":"gris","darkkhaki":"caqui fosc","green":"verd","deepskyblue":"blau cel profund","aqua":"aigua","sienna":"siena","mintcream":"menta pàl·lid","rosybrown":"marró rosat","mediumslateblue":"blau pissarra mitjà","magenta":"magenta","lightseagreen":"verd marí clar","cyan":"cian","olivedrab":"gris oliva","darkgoldenrod":"ocre fosc","slateblue":"blau pissarra","mediumaquamarine":"aiguamarina mitjana","lavender":"lavanda","mediumseagreen":"verd marí mitjà","maroon":"marró vermellós","darkslategray":"gris pissarra fosc","mediumturquoise":"turquesa mitjana","ghostwhite":"blanc fantasma","darkblue":"blau fosc","mediumvioletred":"vermell violeta mitjà","brown":"marró","lightgray":"gris clar","sandybrown":"marró arenós","pink":"rosa","firebrick":"maó refractari","indigo":"índigo","snow":"neu","darkorchid":"orquídia fosc","turquoise":"turquesa","chocolate":"xocolata","springgreen":"verd de primavera","moccasin":"mocassí","navy":"blau marí","lemonchiffon":"groc brisa","teal":"verd blavós","floralwhite":"blanc floral","cornflowerblue":"blau blauet","paleturquoise":"turquesa pàl·lid","purple":"porpra","gainsboro":"gainsboro","plum":"pruna","red":"vermell","blue":"blau","forestgreen":"verd bosc","darkgreen":"verd fosc","honeydew":"rosada de mel","darkseagreen":"verd marí fosc","lightcoral":"corall clar","palevioletred":"vermell porpra pàl·lid","mediumpurple":"porpra mitjana","saddlebrown":"marró mitjà","darkmagenta":"magenta fosc","thistle":"card","whitesmoke":"blanc fumat","wheat":"blat","violet":"violeta","lightskyblue":"blau cel clar","goldenrod":"ocre","mediumblue":"blau mitjà","skyblue":"blau cel","crimson":"carmesí","darksalmon":"salmó fosc","darkred":"vermell fosc","darkslategrey":"gris pissarra fosc","peru":"Perú","lightgrey":"gris clar","lightgoldenrodyellow":"groc ocre clar","blanchedalmond":"ametlla pàl·lid","aliceblue":"blau cian clar","bisque":"crema","slategray":"gris pissarra","palegoldenrod":"ocre pàl·lid","darkorange":"taronja fosc","aquamarine":"aiguamarina","lightgreen":"verd clar","burlywood":"marró arenós","dodgerblue":"blau Dodger","darkgray":"gris fosc","lightcyan":"cian clar","powderblue":"blau grisós","blueviolet":"blau violeta","orchid":"orquídia","dimgray":"gris fosc","beige":"beix","fuchsia":"fúcsia","lavenderblush":"lavanda vermellosa","hotpink":"rosa fúcsia","steelblue":"blau acer","tomato":"tomàquet","lightpink":"rosa clar","limegreen":"verd llimona verda","indianred":"vermell indi","papayawhip":"préssec pastel","lightslategray":"gris pissarra clar","gray":"gris","mediumorchid":"orquídia mitjana","cornsilk":"cru","black":"negre","seagreen":"verd marí","darkslateblue":"blau pissarra fosc","khaki":"caqui","lightblue":"blau clar","palegreen":"verd pàl·lid","azure":"atzur","peachpuff":"préssec","darkolivegreen":"verd oliva fosc","yellowgreen":"verd grogós"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"} -, -'dijit/nls/common':{"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_cs.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_cs.js.uncompressed.js deleted file mode 100644 index 7633823ac..000000000 --- a/lib/dojo/nls/tt-rss-layer_cs.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_cs',{ -'dijit/form/nls/validate':{"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."} -, -'dijit/nls/loading':{"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"} -, -'dojo/nls/colors':{"lightsteelblue":"světlá ocelová modrá","orangered":"oranžovočervená","midnightblue":"temně modrá","cadetblue":"šedomodrá","seashell":"lasturová","slategrey":"břidlicová šedá","coral":"korálová červená","darkturquoise":"tmavě tyrkysová","antiquewhite":"krémově bílá","mediumspringgreen":"střední jarní zelená","transparent":"průhledná","salmon":"lososová","darkgrey":"tmavě šedá","ivory":"slonovinová","greenyellow":"zelenožlutá","mistyrose":"růžovobílá","lightsalmon":"světle lososová","silver":"stříbrná","dimgrey":"kouřově šedá","orange":"oranžová","white":"bílá","navajowhite":"světle krémová","royalblue":"královská modrá","deeppink":"sytě růžová","lime":"limetková","oldlace":"světle béžová","chartreuse":"chartreuska","darkcyan":"tmavě azurová","yellow":"žlutá","linen":"bledě šedobéžová","olive":"olivová","gold":"zlatá","lawngreen":"jasně zelená","lightyellow":"bledě žlutá","tan":"šedobéžová","darkviolet":"tmavě fialová","lightslategrey":"světlá břidlicová šedá","grey":"šedá","darkkhaki":"pískově hnědá","green":"zelená","deepskyblue":"sytá nebeská modrá","aqua":"azurová","sienna":"siena","mintcream":"mentolová","rosybrown":"růžovohnědá","mediumslateblue":"střední břidlicová modrá","magenta":"purpurová","lightseagreen":"světlá mořská zelená","cyan":"azurová","olivedrab":"khaki","darkgoldenrod":"tmavě béžová","slateblue":"břidlicová modrá","mediumaquamarine":"střední akvamarínová","lavender":"levandulová","mediumseagreen":"střední mořská zelená","maroon":"kaštanová","darkslategray":"tmavá břidlicová šedá","mediumturquoise":"středně tyrkysová","ghostwhite":"modravě bílá","darkblue":"tmavě modrá","mediumvioletred":"středně fialovočervená","brown":"červenohnědá","lightgray":"světle šedá","sandybrown":"oranžovohnědá","pink":"růžová","firebrick":"cihlová","indigo":"indigově modrá","snow":"sněhobílá","darkorchid":"tmavě orchidejová","turquoise":"tyrkysová","chocolate":"hnědobéžová","springgreen":"jarní zelená","moccasin":"bledě krémová","navy":"námořnická modrá","lemonchiffon":"světle citrónová","teal":"šedozelená","floralwhite":"květinově bílá","cornflowerblue":"chrpově modrá","paleturquoise":"bledě tyrkysová","purple":"nachová","gainsboro":"bledě šedá","plum":"švestková","red":"červená","blue":"modrá","forestgreen":"lesní zelená","darkgreen":"tmavě zelená","honeydew":"nazelenalá","darkseagreen":"tmavá mořská zelená","lightcoral":"světle korálová","palevioletred":"bledě fialovočervená","mediumpurple":"středně nachová","saddlebrown":"hnědá","darkmagenta":"tmavě purpurová","thistle":"bodláková","whitesmoke":"kouřově bílá","wheat":"zlatohnědá","violet":"fialová","lightskyblue":"světlá nebeská modrá","goldenrod":"béžová","mediumblue":"středně modrá","skyblue":"nebeská modrá","crimson":"karmínová","darksalmon":"tmavě lososová","darkred":"tmavě červená","darkslategrey":"tmavá břidlicová šedá","peru":"karamelová","lightgrey":"světle šedá","lightgoldenrodyellow":"světle žlutá","blanchedalmond":"mandlová","aliceblue":"modravá","bisque":"bledě oranžová","slategray":"břidlicová šedá","palegoldenrod":"bledě písková","darkorange":"tmavě oranžová","aquamarine":"akvamarínová","lightgreen":"světle zelená","burlywood":"krémová","dodgerblue":"jasně modrá","darkgray":"tmavě šedá","lightcyan":"světle azurová","powderblue":"bledě modrá","blueviolet":"modrofialová","orchid":"orchidejová","dimgray":"kouřově šedá","beige":"bledě béžová","fuchsia":"fuchsiová","lavenderblush":"levandulová růžová","hotpink":"jasně růžová","steelblue":"ocelová modrá","tomato":"tomatová","lightpink":"světle růžová","limegreen":"limetkově zelená","indianred":"indiánská červená","papayawhip":"papájová","lightslategray":"světlá břidlicová šedá","gray":"šedá","mediumorchid":"středně orchidejová","cornsilk":"režná","black":"černá","seagreen":"mořská zelená","darkslateblue":"tmavá břidlicová modrá","khaki":"písková","lightblue":"světle modrá","palegreen":"bledě zelená","azure":"bledě azurová","peachpuff":"broskvová","darkolivegreen":"tmavě olivová","yellowgreen":"žlutozelená"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 bilionů","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Předchozí volby","nextMessage":"Další volby"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_da.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_da.js.uncompressed.js deleted file mode 100644 index 92fe4261f..000000000 --- a/lib/dojo/nls/tt-rss-layer_da.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_da',{ -'dijit/form/nls/validate':{"rangeMessage":"Værdien er uden for intervallet.","invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er påkrævet."} -, -'dijit/nls/loading':{"loadingState":"Indlæser...","errorState":"Der er opstået en fejl"} -, -'dojo/nls/colors':{"lightsteelblue":"lys stålblå","orangered":"orangerød","midnightblue":"midnatsblå","cadetblue":"kadetblå","seashell":"muslingeskal","slategrey":"skifergrå","coral":"koralrød","darkturquoise":"mørk turkis","antiquewhite":"antikhvid","mediumspringgreen":"mellemforårsgrøn","transparent":"transparent","salmon":"laksefarvet","darkgrey":"mørkegrå","ivory":"elfenben","greenyellow":"grøngul","mistyrose":"blegrosa","lightsalmon":"lys laksefarvet","silver":"sølv","dimgrey":"svag grå","orange":"orange","white":"hvid","navajowhite":"navajo-hvid","royalblue":"kongeblå","deeppink":"dyb pink","lime":"lime","oldlace":"kniplingshvid","chartreuse":"chartreuse","darkcyan":"mørk cyan","yellow":"gul","linen":"lærred","olive":"olivengrøn","gold":"guld","lawngreen":"græsgrøn","lightyellow":"lysegul","tan":"tan","darkviolet":"mørkelilla","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grøn","deepskyblue":"dyb himmelblå","aqua":"akvablå","sienna":"sienna","mintcream":"pebermyntecreme","rosybrown":"rosabrun","mediumslateblue":"mellemskiferblå","magenta":"magenta","lightseagreen":"lys havgrøn","cyan":"cyan","olivedrab":"brungrøn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"mellem akvamarin","lavender":"lysviolet","mediumseagreen":"mellemhavgrøn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"mellemturkis","ghostwhite":"spøgelseshvid","darkblue":"mørkeblå","mediumvioletred":"mellemviolet","brown":"brun","lightgray":"lysegrå","sandybrown":"sandbrun","pink":"pink","firebrick":"chamottesten","indigo":"indigo","snow":"sne","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"rust","springgreen":"forårsgrøn","moccasin":"fruesko","navy":"marineblå","lemonchiffon":"citronfromage","teal":"blågrøn","floralwhite":"blomsterhvid","cornflowerblue":"kornblomstblå","paleturquoise":"bleg turkis","purple":"lilla","gainsboro":"gainsboro","plum":"blomme","red":"rød","blue":"blå","forestgreen":"skovgrøn","darkgreen":"mørkegrøn","honeydew":"honningdug","darkseagreen":"mørk havgrøn","lightcoral":"lys koralrød","palevioletred":"blegviolet","mediumpurple":"mellemlilla","saddlebrown":"saddelbrun","darkmagenta":"mørk magenta","thistle":"tidsel","whitesmoke":"hvid røg","wheat":"korngul","violet":"lilla","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellemblå","skyblue":"himmelblå","crimson":"blodrød","darksalmon":"mørk laksefarvet","darkred":"mørkerød","darkslategrey":"mørk skifergrå","peru":"peru","lightgrey":"lysegrå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"blanceret mandel","aliceblue":"babyblå","bisque":"gulgrå","slategray":"skifergrå","palegoldenrod":"bleg gyldenris","darkorange":"mørk orange","aquamarine":"akvamarin","lightgreen":"lysegrøn","burlywood":"tobak","dodgerblue":"dodgerblå","darkgray":"mørkegrå","lightcyan":"lys cyan","powderblue":"pudderblå","blueviolet":"blåviolet","orchid":"orkide","dimgray":"svag grå","beige":"beige","fuchsia":"lyslilla","lavenderblush":"lavendelrød","hotpink":"mørk rosa","steelblue":"metalblå","tomato":"tomat","lightpink":"lys pink","limegreen":"limegrøn","indianred":"lys rødbrun","papayawhip":"papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"mellem orkide","cornsilk":"majs","black":"sort","seagreen":"havgrøn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lyseblå","palegreen":"bleggrøn","azure":"azurblå","peachpuff":"fersken","darkolivegreen":"mørk olivengrøn","yellowgreen":"gulgrøn"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":",","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Forrige valg","nextMessage":"Flere valg"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_de.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_de.js.uncompressed.js deleted file mode 100644 index c6e0504d9..000000000 --- a/lib/dojo/nls/tt-rss-layer_de.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_de',{ -'dijit/form/nls/validate':{"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."} -, -'dijit/nls/loading':{"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."} -, -'dojo/nls/colors':{"lightsteelblue":"Helles Stahlblau","orangered":"Orangerot","midnightblue":"Mitternachtblau","cadetblue":"Kadettenblau","seashell":"Muschelweiß","slategrey":"Schiefergrau","coral":"Koralle","darkturquoise":"Dunkeltürkis","antiquewhite":"Antikweiß","mediumspringgreen":"Mittelfrühlingsgrün","transparent":"Transparent","salmon":"Lachs","darkgrey":"Dunkelgrau","ivory":"Elfenbein","greenyellow":"Grüngelb","mistyrose":"Blassrose","lightsalmon":"Helllachs","silver":"Silbergrau","dimgrey":"Blassgrau","orange":"Orange","white":"Weiß","navajowhite":"Navajo-weiß","royalblue":"Königsblau","deeppink":"Tiefrosa","lime":"Limone","oldlace":"Alte Spitze","chartreuse":"Helles Gelbgrün","darkcyan":"Dunkelzyan","yellow":"Gelb","linen":"Leinen","olive":"Oliv","gold":"Gold","lawngreen":"Grasgrün","lightyellow":"Hellgelb","tan":"Hautfarben","darkviolet":"Dunkelviolett","lightslategrey":"Helles Schiefergrau","grey":"Grau","darkkhaki":"Dunkelkhaki","green":"Grün","deepskyblue":"Dunkles Himmelblau","aqua":"Wasserblau","sienna":"Sienna","mintcream":"Mintcreme","rosybrown":"Rosigbraun","mediumslateblue":"Mittelschieferblau ","magenta":"Magenta","lightseagreen":"Helles Meergrün","cyan":"Zyan","olivedrab":"Olivgrau","darkgoldenrod":"Dunkelgoldgelb","slateblue":"Schieferblau","mediumaquamarine":"Mittelaquamarin","lavender":"Lavendelblau","mediumseagreen":"Mittelmeeresgrün","maroon":"Kastanienbraun","darkslategray":"Dunkelschiefergrau","mediumturquoise":"Mitteltürkis ","ghostwhite":"Geisterweiß","darkblue":"Dunkelblau","mediumvioletred":"Mittelviolettrot ","brown":"Braun","lightgray":"Hellgrau","sandybrown":"Sandbraun","pink":"Rosa","firebrick":"Schamottestein","indigo":"Indigoblau","snow":"Schneeweiß","darkorchid":"Dunkelorchidee","turquoise":"Türkis","chocolate":"Schokoladenbraun","springgreen":"Frühlingsgrün","moccasin":"Mokassin","navy":"Marineblau","lemonchiffon":"Zitronenchiffon","teal":"Smaragdgrün","floralwhite":"Blütenweiß","cornflowerblue":"Kornblumenblau","paleturquoise":"Blasstürkis","purple":"Purpurrot","gainsboro":"Gainsboro","plum":"Pflaume","red":"Rot","blue":"Blau","forestgreen":"Forstgrün","darkgreen":"Dunkelgrün","honeydew":"Honigtau","darkseagreen":"Dunkles Meergrün","lightcoral":"Hellkoralle","palevioletred":"Blassviolettrot ","mediumpurple":"Mittelpurpur","saddlebrown":"Sattelbraun","darkmagenta":"Dunkelmagenta","thistle":"Distel","whitesmoke":"Rauchweiß","wheat":"Weizen","violet":"Violett","lightskyblue":"Helles Himmelblau","goldenrod":"Goldgelb","mediumblue":"Mittelblau","skyblue":"Himmelblau","crimson":"Karmesinrot","darksalmon":"Dunkellachs","darkred":"Dunkelrot","darkslategrey":"Dunkelschiefergrau","peru":"Peru","lightgrey":"Hellgrau","lightgoldenrodyellow":"Hellgoldgelb","blanchedalmond":"Mandelweiß","aliceblue":"Alice-blau","bisque":"Bisquit","slategray":"Schiefergrau","palegoldenrod":"Blassgoldgelb","darkorange":"Dunkelorange","aquamarine":"Aquamarin","lightgreen":"Hellgrün","burlywood":"Burlywood","dodgerblue":"Dodger-blau","darkgray":"Dunkelgrau","lightcyan":"Hellzyan","powderblue":"Pulverblau","blueviolet":"Blauviolett","orchid":"Orchidee","dimgray":"Blassgrau","beige":"Beige","fuchsia":"Fuchsia","lavenderblush":"Lavendelhauch","hotpink":"Knallrosa","steelblue":"Stahlblau","tomato":"Tomatenrot","lightpink":"Hellrosa","limegreen":"Limonengrün","indianred":"Indischrot","papayawhip":"Papayacreme","lightslategray":"Helles Schiefergrau","gray":"Grau","mediumorchid":"Mittelorchidee","cornsilk":"Kornseide","black":"Schwarz","seagreen":"Meeresgrün","darkslateblue":"Dunkelschieferblau","khaki":"Khaki","lightblue":"Hellblau","palegreen":"Blassgrün","azure":"Azur","peachpuff":"Pfirsich","darkolivegreen":"Dunkelolivgrün","yellowgreen":"Gelbgrün"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bio","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 Billionen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_el.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_el.js.uncompressed.js deleted file mode 100644 index 963cf7c01..000000000 --- a/lib/dojo/nls/tt-rss-layer_el.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_el',{ -'dijit/form/nls/validate':{"rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί."} -, -'dijit/nls/loading':{"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα"} -, -'dojo/nls/colors':{"lightsteelblue":"ανοιχτό μπλε ατσαλιού","orangered":"πορτοκαλοκόκκινο","midnightblue":"πολύ σκούρο μπλε","cadetblue":"μπλε του στρατού","seashell":"κοχύλι","slategrey":"μεταλλικό γκρι","coral":"κοραλί","darkturquoise":"σκούρο τυρκουάζ","antiquewhite":"ξεθωριασμένο λευκό","mediumspringgreen":"μεσαίο πράσινο της άνοιξης","transparent":"διαφανές","salmon":"σομόν","darkgrey":"σκούρο γκρι","ivory":"ιβουάρ","greenyellow":"πρασινοκίτρινο","mistyrose":"τριανταφυλλί","lightsalmon":"ανοιχτό σομόν","silver":"ασημί","dimgrey":"αχνό γκρι","orange":"πορτοκαλί","white":"λευκό","navajowhite":"άσπρο Ναβάχο","royalblue":"έντονο μπλε","deeppink":"βαθύ ροζ","lime":"λαχανί","oldlace":"εκρού","chartreuse":"φωτεινό κιτρινοπράσινο","darkcyan":"σκούρο κυανό","yellow":"κίτρινο","linen":"σπαγγί","olive":"πράσινο λαδί","gold":"χρυσαφί","lawngreen":"σκούρο πράσινο","lightyellow":"ανοιχτό κίτρινο","tan":"ώχρα","darkviolet":"σκούρο βιολετί","lightslategrey":"ανοιχτό μεταλλικό γκρι","grey":"γκρι","darkkhaki":"σκούρο χακί","green":"πράσινο","deepskyblue":"βαθύ μπλε το ουρανού","aqua":"γαλάζιο","sienna":"καφεκίτρινο","mintcream":"βεραμάν","rosybrown":"καστανό","mediumslateblue":"μεσαίο μεταλλικό μπλε","magenta":"ματζέντα","lightseagreen":"ανοιχτό πράσινο της θάλασσας","cyan":"κυανό","olivedrab":"λαδί","darkgoldenrod":"σκούρο χρυσοκίτρινο","slateblue":"μεταλλικό μπλε","mediumaquamarine":"μεσαίο γαλαζοπράσινο","lavender":"λίλα","mediumseagreen":"μεσαίο πράσινο της θάλασσας","maroon":"βυσσινί","darkslategray":"σκούρο μεταλλικό γκρι","mediumturquoise":"μεσαίο τυρκουάζ","ghostwhite":"άσπρο","darkblue":"σκούρο μπλε","mediumvioletred":"μεσαίο κόκκινο βιολετί","brown":"καφέ","lightgray":"ανοιχτό γκρι","sandybrown":"μπεζ της άμμου","pink":"ροζ","firebrick":"κεραμιδί","indigo":"λουλακί","snow":"χιονί","darkorchid":"σκούρα ορχιδέα","turquoise":"τυρκουάζ","chocolate":"σοκολατί","springgreen":"πράσινο της άνοιξης","moccasin":"μόκα","navy":"μπλε του ναυτικού","lemonchiffon":"λεμονί","teal":"πετρόλ","floralwhite":"λευκό των ανθών","cornflowerblue":"μεσαίο μπλε","paleturquoise":"αχνό τυρκουάζ","purple":"μωβ","gainsboro":"γκρι σιέλ","plum":"δαμασκηνί","red":"κόκκινο","blue":"μπλε","forestgreen":"πράσινο του δάσους","darkgreen":"σκούρο πράσινο","honeydew":"μελί","darkseagreen":"σκούρο πράσινο της θάλασσας","lightcoral":"ανοιχτό κοραλί","palevioletred":"αχνό κόκκινο βιολετί","mediumpurple":"μεσαίο μωβ","saddlebrown":"βαθύ καφέ","darkmagenta":"σκούρο ματζέντα","thistle":"μωβ βιολετί","whitesmoke":"λευκός καπνός","wheat":"σταρένιο","violet":"βιολετί","lightskyblue":"ανοιχτό μπλε το ουρανού","goldenrod":"χρυσοκίτρινο","mediumblue":"μεσαίο μπλε","skyblue":"μπλε του ουρανού","crimson":"βαθύ κόκκινο","darksalmon":"σκούρο σομόν","darkred":"σκούρο κόκκινο","darkslategrey":"σκούρο μεταλλικό γκρι","peru":"περού","lightgrey":"ανοιχτό γκρι","lightgoldenrodyellow":"ανοιχτό χρυσοκίτρινο","blanchedalmond":"ζαχαρί","aliceblue":"σιέλ","bisque":"σκούρο κρεμ","slategray":"μεταλλικό γκρι","palegoldenrod":"αχνό χρυσοκίτρινο","darkorange":"σκούρο πορτοκαλί","aquamarine":"γαλαζοπράσινο","lightgreen":"ανοιχτό πράσινο","burlywood":"καφέ του ξύλου","dodgerblue":"σκούρο ελεκτρίκ","darkgray":"σκούρο γκρι","lightcyan":"ανοιχτό κυανό","powderblue":"αχνό μπλε","blueviolet":"βιολετί","orchid":"ορχιδέα","dimgray":"αχνό γκρι","beige":"μπεζ","fuchsia":"φούξια","lavenderblush":"μωβ λεβάντας","hotpink":"έντονο ροζ","steelblue":"μπλε ατσαλιού","tomato":"κόκκινο της ντομάτας","lightpink":"ανοιχτό ροζ","limegreen":"πράσινο λαχανί","indianred":"ινδικό κόκκινο","papayawhip":"αχνό ροζ","lightslategray":"ανοιχτό μεταλλικό γκρι","gray":"γκρι","mediumorchid":"μεσαία ορχιδέα","cornsilk":"ασημί του καλαμποκιού","black":"μαύρο","seagreen":"πράσινο της θάλασσας","darkslateblue":"σκούρο μεταλλικό μπλε","khaki":"χακί","lightblue":"ανοιχτό μπλε","palegreen":"αχνό πράσινο","azure":"μπλε του ουρανού","peachpuff":"ροδακινί","darkolivegreen":"σκούρο πράσινο λαδί","yellowgreen":"κιτρινοπράσινο"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":",","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 τρις","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 τρισεκατομμύρια","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Περισσότερες επιλογές"} -, -'dijit/nls/common':{"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_en-gb.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_en-gb.js.uncompressed.js deleted file mode 100644 index c8d70f01d..000000000 --- a/lib/dojo/nls/tt-rss-layer_en-gb.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_en-gb',{ -'dijit/form/nls/validate':{"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."} -, -'dijit/nls/loading':{"loadingState":"Loading...","errorState":"Sorry, an error occurred"} -, -'dojo/nls/colors':{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Previous choices","nextMessage":"More choices"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_en-us.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_en-us.js.uncompressed.js deleted file mode 100644 index 9d4bdd264..000000000 --- a/lib/dojo/nls/tt-rss-layer_en-us.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_en-us',{ -'dijit/form/nls/validate':{"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."} -, -'dijit/nls/loading':{"loadingState":"Loading...","errorState":"Sorry, an error occurred"} -, -'dojo/nls/colors':{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Previous choices","nextMessage":"More choices"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_es-es.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_es-es.js.uncompressed.js deleted file mode 100644 index 5a6519fb2..000000000 --- a/lib/dojo/nls/tt-rss-layer_es-es.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_es-es',{ -'dijit/form/nls/validate':{"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."} -, -'dijit/nls/loading':{"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"} -, -'dojo/nls/colors':{"lightsteelblue":"azul acero claro","orangered":"rojo anaranjado","midnightblue":"azul medianoche","cadetblue":"azul cadete","seashell":"blanco marfil","slategrey":"gris pizarra","coral":"coral","darkturquoise":"turquesa oscuro","antiquewhite":"blanco antiguo","mediumspringgreen":"verde primavera medio","transparent":"transparente","salmon":"salmón","darkgrey":"gris oscuro","ivory":"marfil","greenyellow":"amarillo verdoso","mistyrose":"rosa difuminado","lightsalmon":"salmón claro","silver":"plateado","dimgrey":"gris marengo","orange":"naranja","white":"blanco","navajowhite":"blanco navajo","royalblue":"azul real","deeppink":"rosa fuerte","lime":"lima","oldlace":"encaje antiguo","chartreuse":"verde pálido 2","darkcyan":"cian oscuro","yellow":"amarillo","linen":"blanco arena","olive":"verde oliva","gold":"oro","lawngreen":"verde césped","lightyellow":"amarillo claro","tan":"canela","darkviolet":"violeta oscuro","lightslategrey":"gris pizarra claro","grey":"gris","darkkhaki":"caqui oscuro","green":"verde","deepskyblue":"azul cielo fuerte","aqua":"aguamarina","sienna":"siena","mintcream":"crema menta","rosybrown":"marrón rosáceo","mediumslateblue":"azul pizarra medio","magenta":"magenta","lightseagreen":"verde mar claro","cyan":"cian","olivedrab":"verde oliva pardusco","darkgoldenrod":"ocre oscuro","slateblue":"azul pizarra","mediumaquamarine":"aguamarina medio","lavender":"lavanda","mediumseagreen":"verde mar medio","maroon":"granate","darkslategray":"gris pizarra oscuro","mediumturquoise":"turquesa medio","ghostwhite":"blanco ligero","darkblue":"azul oscuro","mediumvioletred":"rojo violáceo medio","brown":"marrón","lightgray":"gris claro","sandybrown":"marrón arcilla","pink":"rosa","firebrick":"teja","indigo":"añil","snow":"nieve","darkorchid":"orquídea oscuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde fuerte","moccasin":"arena","navy":"azul marino","lemonchiffon":"amarillo pastel","teal":"verde azulado","floralwhite":"blanco manteca","cornflowerblue":"azul aciano","paleturquoise":"turquesa pálido","purple":"púrpura","gainsboro":"azul gainsboro","plum":"ciruela","red":"rojo","blue":"azul","forestgreen":"verde pino","darkgreen":"verde oscuro","honeydew":"flor de rocío","darkseagreen":"verde mar oscuro","lightcoral":"coral claro","palevioletred":"rojo violáceo pálido","mediumpurple":"púrpura medio","saddlebrown":"cuero","darkmagenta":"magenta oscuro","thistle":"cardo","whitesmoke":"blanco ahumado","wheat":"trigo","violet":"violeta","lightskyblue":"azul cielo claro","goldenrod":"ocre","mediumblue":"azul medio","skyblue":"azul cielo","crimson":"carmesí","darksalmon":"salmón oscuro","darkred":"rojo oscuro","darkslategrey":"gris pizarra oscuro","peru":"perú","lightgrey":"gris claro","lightgoldenrodyellow":"ocre claro","blanchedalmond":"almendra pálido","aliceblue":"blanco azulado","bisque":"miel","slategray":"gris pizarra","palegoldenrod":"ocre pálido","darkorange":"naranja oscuro","aquamarine":"aguamarina 2","lightgreen":"verde claro","burlywood":"madera","dodgerblue":"azul fuerte","darkgray":"gris oscuro","lightcyan":"cian claro","powderblue":"azul suave","blueviolet":"azul violáceo","orchid":"orquídea","dimgray":"gris marengo","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosácea","hotpink":"rosa oscuro","steelblue":"azul acero","tomato":"tomate","lightpink":"rosa claro","limegreen":"lima limón","indianred":"rojo teja","papayawhip":"papaya claro","lightslategray":"gris pizarra claro","gray":"gris","mediumorchid":"orquídea medio","cornsilk":"crudo","black":"negro","seagreen":"verde mar","darkslateblue":"azul pizarra oscuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"blanco cielo","peachpuff":"melocotón","darkolivegreen":"verde oliva oscuro","yellowgreen":"verde amarillento"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 billones","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"} -, -'dijit/nls/common':{"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_fi-fi.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_fi-fi.js.uncompressed.js deleted file mode 100644 index 9b08afe7c..000000000 --- a/lib/dojo/nls/tt-rss-layer_fi-fi.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_fi-fi',{ -'dijit/form/nls/validate':{"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."} -, -'dijit/nls/loading':{"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."} -, -'dojo/nls/colors':{"lightsteelblue":"vaalea teräksensininen","orangered":"oranssinpunainen","midnightblue":"yönsininen","cadetblue":"meren vihreä","seashell":"simpukankuori","slategrey":"savenharmaa","coral":"koralli","darkturquoise":"tumma turkoosi","antiquewhite":"antiikinvalkoinen","mediumspringgreen":"keskivaalea keväänvihreä","transparent":"läpinäkyvä","salmon":"lohenpunainen","darkgrey":"tummanharmaa","ivory":"norsunluu","greenyellow":"vihreänkeltainen","mistyrose":"utuinen ruusu","lightsalmon":"vaalea lohenpunainen","silver":"hopea","dimgrey":"himmeänharmaa","orange":"oranssi","white":"valkoinen","navajowhite":"navajonvalkoinen","royalblue":"syvänsininen","deeppink":"syvä vaaleanpunainen","lime":"vaaleanvihreä","oldlace":"vanha pitsi","chartreuse":"kellanvihreä","darkcyan":"tumma turkoosi","yellow":"keltainen","linen":"pellavanvaalea","olive":"oliivinvihreä","gold":"kulta","lawngreen":"ruohonvihreä","lightyellow":"vaaleankeltainen","tan":"kellanruskea","darkviolet":"tummanvioletti","lightslategrey":"vaaleanharmaa","grey":"harmaa","darkkhaki":"tumma khaki","green":"vihreä","deepskyblue":"tumma taivaansininen","aqua":"sinivihreä","sienna":"siena","mintcream":"minttukreemi","rosybrown":"punertavanruskea","mediumslateblue":"keskivaalea siniharmaa","magenta":"magenta","lightseagreen":"vaalea merenvihreä","cyan":"syaani","olivedrab":"oliivinruskea","darkgoldenrod":"tumma kultapiisku","slateblue":"savensininen","mediumaquamarine":"keskivaalea vedenvihreä","lavender":"laventeli","mediumseagreen":"keskivaalea merenvihreä","maroon":"kastanjanruskea","darkslategray":"tummanharmaa","mediumturquoise":"keskivaalea turkoosi","ghostwhite":"lakananvalkoinen","darkblue":"tummansininen","mediumvioletred":"keskivaalea lila","brown":"ruskea","lightgray":"vaaleanharmaa","sandybrown":"hiekanruskea","pink":"vaaleanpunainen","firebrick":"poltetun tiilen punainen","indigo":"indigo","snow":"lumivalkoinen","darkorchid":"tumma orkidea","turquoise":"turkoosi","chocolate":"suklaanruskea","springgreen":"keväänvihreä","moccasin":"nahanruskea","navy":"laivastonsininen","lemonchiffon":"sitruunankeltainen","teal":"sinivihreä","floralwhite":"kukanvalkoinen","cornflowerblue":"syvänsininen","paleturquoise":"haalea turkoosi","purple":"violetti","gainsboro":"gainsboro","plum":"luumunpunainen","red":"punainen","blue":"sininen","forestgreen":"metsänvihreä","darkgreen":"tummanvihreä","honeydew":"hunajameloninvihreä","darkseagreen":"tumma merenvihreä","lightcoral":"vaalea koralli","palevioletred":"haalea lila","mediumpurple":"keskivaalea violetti","saddlebrown":"satulanruskea","darkmagenta":"tumma magenta","thistle":"ohdake","whitesmoke":"savunvalkea","wheat":"vehnänkeltainen","violet":"violetti","lightskyblue":"vaalea taivaansininen","goldenrod":"kullanruskea","mediumblue":"keskisininen","skyblue":"taivaansininen","crimson":"karmiininpunainen","darksalmon":"tumma lohenpunainen","darkred":"tummanpunainen","darkslategrey":"tummanharmaa","peru":"peru","lightgrey":"vaaleanharmaa","lightgoldenrodyellow":"vaalea kultapiiskunkeltainen","blanchedalmond":"kuorittu manteli","aliceblue":"vaaleanharmaansininen","bisque":"vaaleanruskea","slategray":"savenharmaa","palegoldenrod":"haalea kultapiisku","darkorange":"tummanoranssi","aquamarine":"vedenvihreä","lightgreen":"vaaleanvihreä","burlywood":"puunruskea","dodgerblue":"Dodger-sininen","darkgray":"tummanharmaa","lightcyan":"vaalea syaani","powderblue":"harmaansininen","blueviolet":"sinivioletti","orchid":"orkidea","dimgray":"himmeänharmaa","beige":"vaaleanruskea","fuchsia":"purppura","lavenderblush":"laventelinpunainen","hotpink":"pinkki","steelblue":"teräksensininen","tomato":"tomaatinpunainen","lightpink":"vaaleanpunainen","limegreen":"limetinvihreä","indianred":"kirkkaanpunainen","papayawhip":"papaijavaahto","lightslategray":"vaaleanharmaa","gray":"harmaa","mediumorchid":"keskivaalea orkidea","cornsilk":"maissinkeltainen","black":"musta","seagreen":"merenvihreä","darkslateblue":"tumma siniharmaa","khaki":"khaki","lightblue":"vaaleansininen","palegreen":"haalea vihreä","azure":"taivaansininen","peachpuff":"persikka","darkolivegreen":"tummanoliivinvihreä","yellowgreen":"kellanvihreä"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bilj'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"epäluku","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoonaa","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_fr-fr.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_fr-fr.js.uncompressed.js deleted file mode 100644 index 95dec9c08..000000000 --- a/lib/dojo/nls/tt-rss-layer_fr-fr.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_fr-fr',{ -'dijit/form/nls/validate':{"rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise."} -, -'dijit/nls/loading':{"loadingState":"Chargement...","errorState":"Une erreur est survenue"} -, -'dojo/nls/colors':{"lightsteelblue":"bleu acier clair","orangered":"rouge orangé","midnightblue":"bleu nuit","cadetblue":"bleu pétrole","seashell":"coquillage","slategrey":"gris ardoise","coral":"corail","darkturquoise":"turquoise foncé","antiquewhite":"blanc antique","mediumspringgreen":"vert printemps moyen","transparent":"transparent","salmon":"saumon","darkgrey":"gris foncé","ivory":"ivoire","greenyellow":"vert-jaune","mistyrose":"rose pâle","lightsalmon":"saumon clair","silver":"argent","dimgrey":"gris soutenu","orange":"orange","white":"blanc","navajowhite":"chair","royalblue":"bleu roi","deeppink":"rose soutenu","lime":"vert citron","oldlace":"blanc cassé","chartreuse":"vert vif","darkcyan":"cyan foncé","yellow":"jaune","linen":"écru","olive":"olive","gold":"or","lawngreen":"vert prairie","lightyellow":"jaune clair","tan":"grège","darkviolet":"violet foncé","lightslategrey":"gris ardoise clair","grey":"gris","darkkhaki":"kaki foncé","green":"vert","deepskyblue":"bleu ciel soutenu","aqua":"bleu-vert","sienna":"terre de sienne","mintcream":"crème de menthe","rosybrown":"vieux rose","mediumslateblue":"bleu ardoise moyen","magenta":"magenta","lightseagreen":"vert d'eau clair","cyan":"cyan","olivedrab":"brun verdâtre","darkgoldenrod":"jaune paille foncé","slateblue":"bleu ardoise","mediumaquamarine":"aigue-marine moyen","lavender":"lavande","mediumseagreen":"vert d'eau moyen","maroon":"marron","darkslategray":"gris ardoise foncé","mediumturquoise":"turquoise moyen","ghostwhite":"blanc laiteux","darkblue":"bleu foncé","mediumvioletred":"rouge violacé moyen","brown":"brun","lightgray":"gris clair","sandybrown":"sable","pink":"rose","firebrick":"rouge brique","indigo":"indigo","snow":"neige","darkorchid":"lilas foncé","turquoise":"turquoise","chocolate":"chocolat","springgreen":"vert printemps","moccasin":"chamois","navy":"bleu marine","lemonchiffon":"mousse de citron","teal":"sarcelle","floralwhite":"lys","cornflowerblue":"bleuet","paleturquoise":"turquoise pâle","purple":"pourpre","gainsboro":"gris souris","plum":"prune","red":"rouge","blue":"bleu","forestgreen":"vert sapin","darkgreen":"vert foncé","honeydew":"opalin","darkseagreen":"vert d'eau foncé","lightcoral":"corail clair","palevioletred":"rouge violacé pâle","mediumpurple":"pourpre moyen","saddlebrown":"brun cuir","darkmagenta":"magenta foncé","thistle":"chardon","whitesmoke":"blanc cendré","wheat":"blé","violet":"violet","lightskyblue":"bleu ciel clair","goldenrod":"jaune paille","mediumblue":"bleu moyen","skyblue":"bleu ciel","crimson":"cramoisi","darksalmon":"saumon foncé","darkred":"rouge foncé","darkslategrey":"gris ardoise foncé","peru":"caramel","lightgrey":"gris clair","lightgoldenrodyellow":"jaune paille clair","blanchedalmond":"coquille d'œuf","aliceblue":"bleu gris","bisque":"beige rosé","slategray":"gris ardoise","palegoldenrod":"jaune paille pâle","darkorange":"orange foncé","aquamarine":"aigue-marine","lightgreen":"vert clair","burlywood":"bois précieux","dodgerblue":"bleu France","darkgray":"gris foncé","lightcyan":"cyan clair","powderblue":"bleu de smalt","blueviolet":"bleu-violet","orchid":"lilas","dimgray":"gris soutenu","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavandin","hotpink":"rose intense","steelblue":"bleu acier","tomato":"tomate","lightpink":"rose clair","limegreen":"citron vert","indianred":"rose indien","papayawhip":"crème de papaye","lightslategray":"gris ardoise clair","gray":"gris","mediumorchid":"lilas moyen","cornsilk":"vanille","black":"noir","seagreen":"vert d'eau","darkslateblue":"bleu ardoise foncé","khaki":"kaki","lightblue":"bleu clair","palegreen":"vert pâle","azure":"bleu azur","peachpuff":"pêche","darkolivegreen":"olive foncé","yellowgreen":"vert jaunâtre"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Choix précédents","nextMessage":"Plus de choix"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Enregistrer","itemClose":"Fermer"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_he-il.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_he-il.js.uncompressed.js deleted file mode 100644 index 8822a9b54..000000000 --- a/lib/dojo/nls/tt-rss-layer_he-il.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_he-il',{ -'dijit/form/nls/validate':{"rangeMessage":"הערך מחוץ לטווח.","invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש."} -, -'dijit/nls/loading':{"loadingState":"טעינה...","errorState":"אירעה שגיאה"} -, -'dojo/nls/colors':{"lightsteelblue":"כחול פלדה בהיר","orangered":"כתום אדום","midnightblue":"כחול כהה","cadetblue":"כחול ים","seashell":"צדף","slategrey":"אפור צפחה","coral":"אלמוג","darkturquoise":"טורקיז כהה","antiquewhite":"לבן עתיק","mediumspringgreen":"ירוק אביב בינוני","transparent":"שקוף","salmon":"סלמון","darkgrey":"אפור כהה","ivory":"שנהב","greenyellow":"ירוק-צהוב","mistyrose":"ורוד מעורפל","lightsalmon":"סלמון בהיר","silver":"כסף","dimgrey":"אפור עמום","orange":"כתום","white":"לבן","navajowhite":"לבן נוואחו","royalblue":"כחול מלכותי","deeppink":"ורוד עמוק","lime":"לימון","oldlace":"תחרה עתיקה","chartreuse":"ירוק-צהוב","darkcyan":"טורקיז כהה","yellow":"צהוב","linen":"פשתן","olive":"זית","gold":"זהב","lawngreen":"ירוק דשא","lightyellow":"צהוב בהיר","tan":"חום אדמדם","darkviolet":"סגול כהה","lightslategrey":"אפור צפחה בהיר","grey":"אפור","darkkhaki":"חאקי כהה","green":"ירוק","deepskyblue":"כחול שמיים עמוק","aqua":"אקווה","sienna":"סיינה","mintcream":"קרם מנטה","rosybrown":"חום ורדרד","mediumslateblue":"כחול צפחה בינוני","magenta":"בורדו","lightseagreen":"ירוק ים בהיר","cyan":"טורקיז","olivedrab":"זית עמום","darkgoldenrod":"זהוב כהה","slateblue":"כחול צפחה","mediumaquamarine":"כחול בינוני","lavender":"לבנדר","mediumseagreen":"ירוק ים בינוני","maroon":"חום אדמדם","darkslategray":"אפור צפחה כהה","mediumturquoise":"טורקיז בינוני","ghostwhite":"לבן רפאים","darkblue":"כחול כהה","mediumvioletred":"סגול-אדום בינוני","brown":"חום","lightgray":"אפור בהיר","sandybrown":"חום חולי","pink":"ורוד","firebrick":"לבנה שרופה","indigo":"אינדיגו","snow":"שלג","darkorchid":"סחלב כהה","turquoise":"טורקיז","chocolate":"שוקולד","springgreen":"ירוק אביב","moccasin":"מוקסין","navy":"כחול כהה","lemonchiffon":"ירוק לימון","teal":"כחול-ירוק כהה","floralwhite":"לבן פרחוני","cornflowerblue":"כחול דרדר","paleturquoise":"טורקיז בהיר","purple":"סגול","gainsboro":"גיינסבורו","plum":"שזיף","red":"אדום","blue":"כחול","forestgreen":"ירוק יער","darkgreen":"ירוק כהה","honeydew":"ירקרק","darkseagreen":"ירוק ים כהה","lightcoral":"אלמוג בהיר","palevioletred":"סגול-אדום בהיר","mediumpurple":"סגול בינוני","saddlebrown":"חום דהוי","darkmagenta":"בורדו כהה","thistle":"דרדר","whitesmoke":"עשן לבן","wheat":"חיוט","violet":"סגול","lightskyblue":"כחול שמיים בהיר","goldenrod":"זהוב","mediumblue":"תכלת בינוני","skyblue":"כחול שמיים","crimson":"ארגמן","darksalmon":"סלמון כהה","darkred":"אדום כהה","darkslategrey":"אפור צפחה כהה","peru":"פרו","lightgrey":"אפור בהיר","lightgoldenrodyellow":"צהוב בהיר","blanchedalmond":"שקד","aliceblue":"כחול פלדה","bisque":"לבן שקד","slategray":"אפור צפחה","palegoldenrod":"זהוב בהיר","darkorange":"כתום כהה","aquamarine":"אקוומארין","lightgreen":"ירוק בהיר","burlywood":"חום דהוי","dodgerblue":"כחול","darkgray":"אפור כהה","lightcyan":"טורקיז בהיר","powderblue":"כחול חיוור","blueviolet":"כחול-סגול","orchid":"סחלב","dimgray":"אפור עמום","beige":"בז'","fuchsia":"ורוד בהיר","lavenderblush":"סומק לבנדר","hotpink":"ורוד לוהט","steelblue":"כחול פלדה","tomato":"עגבניה","lightpink":"ורוד בהיר","limegreen":"ירוק לימוני","indianred":"אדום דהוי","papayawhip":"פפאיה","lightslategray":"אפור צפחה בהיר","gray":"אפור","mediumorchid":"סחלב בינוני","cornsilk":"צהבהב","black":"שחור","seagreen":"ירוק ים","darkslateblue":"כחול צפחה כהה","khaki":"חאקי","lightblue":"תכלת","palegreen":"ירוק בהיר","azure":"תכלת עז","peachpuff":"קציפת אפרסק","darkolivegreen":"ירוק זית כהה","yellowgreen":"ירוק צהוב"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 טריליון","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות"} -, -'dijit/nls/common':{"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_hu.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_hu.js.uncompressed.js deleted file mode 100644 index 1782270f7..000000000 --- a/lib/dojo/nls/tt-rss-layer_hu.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_hu',{ -'dijit/form/nls/validate':{"rangeMessage":"Az érték kívül van a megengedett tartományon.","invalidMessage":"A megadott érték érvénytelen.","missingMessage":"Meg kell adni egy értéket."} -, -'dijit/nls/loading':{"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"} -, -'dojo/nls/colors':{"lightsteelblue":"világos acélkék","orangered":"narancsvörös","midnightblue":"éjkék","cadetblue":"kadétkék","seashell":"kagyló","slategrey":"palaszürke","coral":"korall","darkturquoise":"sötét türkizkék","antiquewhite":"antik fehér","mediumspringgreen":"közepes tavaszzöld","transparent":"átlátszó","salmon":"lazacszín","darkgrey":"sötétszürke","ivory":"elefántcsont","greenyellow":"zöldessárga","mistyrose":"halvány rózsaszín","lightsalmon":"világos lazacszín","silver":"ezüst","dimgrey":"halványszürke","orange":"narancssárga","white":"fehér","navajowhite":"navajo fehér","royalblue":"királykék","deeppink":"sötétrózsaszín","lime":"lime","oldlace":"régi csipke","chartreuse":"chartreuse","darkcyan":"sötét ciánkék","yellow":"sárga","linen":"vászonfehér","olive":"olajzöld","gold":"arany","lawngreen":"fűzöld","lightyellow":"világossárga","tan":"rozsdabarna","darkviolet":"sötét ibolyaszín","lightslategrey":"világos palaszürke","grey":"szürke","darkkhaki":"sötét khakiszín","green":"zöld","deepskyblue":"sötét égszínkék","aqua":"vízszín","sienna":"vörösesbarna","mintcream":"mentaszósz","rosybrown":"barnásrózsaszín","mediumslateblue":"közepes palakék","magenta":"bíbor","lightseagreen":"világos tengerzöld","cyan":"ciánkék","olivedrab":"olajzöld drapp","darkgoldenrod":"sötét aranyvessző","slateblue":"palakék","mediumaquamarine":"közepes akvamarin","lavender":"levendula","mediumseagreen":"közepes tengerzöld","maroon":"gesztenyebarna","darkslategray":"sötét palaszürke","mediumturquoise":"közepes türkizkék","ghostwhite":"szellemfehér","darkblue":"sötétkék","mediumvioletred":"közepes ibolyavörös","brown":"barna","lightgray":"világosszürke","sandybrown":"homokbarna","pink":"rózsaszín","firebrick":"téglavörös","indigo":"indigó","snow":"hó","darkorchid":"sötét orchidea","turquoise":"türkizkék","chocolate":"csokoládé","springgreen":"tavaszzöld","moccasin":"mokkaszín","navy":"tengerészkék","lemonchiffon":"sárga műselyem","teal":"pávakék","floralwhite":"virágfehér","cornflowerblue":"búzavirágkék","paleturquoise":"halvány türkizkék","purple":"lila","gainsboro":"gainsboro","plum":"szilvakék","red":"vörös","blue":"kék","forestgreen":"erdőzöld","darkgreen":"sötétzöld","honeydew":"mézharmat","darkseagreen":"sötét tengerzöld","lightcoral":"világos korall","palevioletred":"halvány ibolyavörös","mediumpurple":"közepes lila","saddlebrown":"nyeregbarna","darkmagenta":"sötétbíbor","thistle":"bogáncs","whitesmoke":"fehér füst","wheat":"búza","violet":"ibolyaszín","lightskyblue":"világos égszínkék","goldenrod":"aranyvessző","mediumblue":"közepes kék","skyblue":"égszínkék","crimson":"karmazsinvörös","darksalmon":"sötét lazacszín","darkred":"sötétvörös","darkslategrey":"sötét palaszürke","peru":"peru","lightgrey":"világosszürke","lightgoldenrodyellow":"világos aranyvessző sárga","blanchedalmond":"hámozott mandula","aliceblue":"Alice kék","bisque":"porcelán","slategray":"palaszürke","palegoldenrod":"halvány aranyvessző","darkorange":"sötét narancssárga","aquamarine":"akvamarin","lightgreen":"világoszöld","burlywood":"nyersfa","dodgerblue":"dodger kék","darkgray":"sötétszürke","lightcyan":"világos ciánkék","powderblue":"púderkék","blueviolet":"ibolyakék","orchid":"orchidea","dimgray":"halványszürke","beige":"bézs","fuchsia":"fukszia","lavenderblush":"pirosas levendula","hotpink":"meleg rózsaszín","steelblue":"acélkék","tomato":"paradicsom","lightpink":"világos rózsaszín","limegreen":"limezöld","indianred":"indiánvörös","papayawhip":"papayahab","lightslategray":"világos palaszürke","gray":"szürke","mediumorchid":"közepes orchidea","cornsilk":"kukoricahaj","black":"fekete","seagreen":"tengerzöld","darkslateblue":"sötét palakék","khaki":"khakiszín","lightblue":"világoskék","palegreen":"halványzöld","azure":"azúrkék","peachpuff":"barackszín","darkolivegreen":"sötét olajzöld","yellowgreen":"sárgászöld"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 billió","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_it-it.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_it-it.js.uncompressed.js deleted file mode 100644 index 24f18c719..000000000 --- a/lib/dojo/nls/tt-rss-layer_it-it.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_it-it',{ -'dijit/form/nls/validate':{"rangeMessage":"Questo valore è fuori dall'intervallo consentito.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."} -, -'dijit/nls/loading':{"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"} -, -'dojo/nls/colors':{"lightsteelblue":"blu acciaio chiaro","orangered":"vermiglio","midnightblue":"blu notte","cadetblue":"verde petrolio","seashell":"sabbia rosa","slategrey":"grigio ardesia","coral":"corallo","darkturquoise":"turchese scuro","antiquewhite":"rosa antico","mediumspringgreen":"verde brillante medio","transparent":"trasparente","salmon":"salmone","darkgrey":"grigio scuro","ivory":"avorio","greenyellow":"verde-giallo","mistyrose":"rosa pallido","lightsalmon":"salmone chiaro","silver":"argento","dimgrey":"grigio tenue","orange":"arancione","white":"bianco","navajowhite":"sabbia","royalblue":"royal blue","deeppink":"ciclamino","lime":"lime","oldlace":"mandorla","chartreuse":"verde brillante","darkcyan":"celeste scuro","yellow":"giallo","linen":"lino","olive":"verde oliva","gold":"oro","lawngreen":"verde brillante chiaro","lightyellow":"giallo chiaro","tan":"tan","darkviolet":"viola scuro","lightslategrey":"grigio ardesia chiaro","grey":"grigio","darkkhaki":"cachi scuro","green":"verde","deepskyblue":"azzurro intenso","aqua":"verde acqua","sienna":"terra di siena","mintcream":"bianco nuvola","rosybrown":"caffè latte","mediumslateblue":"blu ardesia medio","magenta":"magenta","lightseagreen":"verde acqua chiaro","cyan":"ciano","olivedrab":"verde bottiglia","darkgoldenrod":"ocra scuro","slateblue":"blu ardesia","mediumaquamarine":"acquamarina medio","lavender":"lavanda","mediumseagreen":"verde acqua medio","maroon":"Bordeaux","darkslategray":"grigio ardesia scuro","mediumturquoise":"turchese medio","ghostwhite":"bianco gesso","darkblue":"blu scuro","mediumvioletred":"violetto rosso medio","brown":"marrone","lightgray":"grigio chiaro","sandybrown":"argilla","pink":"rosa","firebrick":"mattone","indigo":"indaco","snow":"neve","darkorchid":"orchidea scuro","turquoise":"turchese","chocolate":"cioccolato","springgreen":"verde brillante","moccasin":"mocassino","navy":"blu scuro","lemonchiffon":"lemon chiffon","teal":"verde acqua","floralwhite":"bianco grigio","cornflowerblue":"blu fiordaliso","paleturquoise":"turchese pallido","purple":"viola","gainsboro":"gainsboro","plum":"prugna","red":"rosso","blue":"blu","forestgreen":"verde pino scuro","darkgreen":"verde scuro","honeydew":"miele","darkseagreen":"verde acqua scuro","lightcoral":"corallo chiaro","palevioletred":"violetto rosso pallido","mediumpurple":"viola medio","saddlebrown":"cacao","darkmagenta":"magenta scuro","thistle":"rosa cenere","whitesmoke":"bianco fumo","wheat":"tabacco","violet":"violetto","lightskyblue":"azzurro chiaro","goldenrod":"dorato","mediumblue":"blu medio","skyblue":"azzurro","crimson":"rosso scarlatto","darksalmon":"salmone scuro","darkred":"rosso scuro","darkslategrey":"grigio ardesia scuro","peru":"perù","lightgrey":"grigio chiaro","lightgoldenrodyellow":"giallo dorato chiaro","blanchedalmond":"beige 2","aliceblue":"bianco ghiaccio","bisque":"terracotta","slategray":"grigio ardesia","palegoldenrod":"dorato pallido","darkorange":"arancione scuro","aquamarine":"acquamarina","lightgreen":"verde chiaro","burlywood":"legno massiccio","dodgerblue":"dodger blue","darkgray":"grigio scuro","lightcyan":"ciano chiaro","powderblue":"azzurro polvere","blueviolet":"violetto bluastro","orchid":"orchidea","dimgray":"grigio tenue","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosa","hotpink":"rosa acceso","steelblue":"blu brillante","tomato":"pomodoro","lightpink":"rosa chiaro","limegreen":"verde lime","indianred":"terra indiana","papayawhip":"papaya","lightslategray":"grigio ardesia chiaro","gray":"grigio","mediumorchid":"orchidea medio","cornsilk":"crema","black":"nero","seagreen":"verde acqua","darkslateblue":"blu ardesia scuro","khaki":"cachi","lightblue":"blu chiaro","palegreen":"verde pallido","azure":"azure","peachpuff":"pesche","darkolivegreen":"verde oliva scuro","yellowgreen":"giallo verde"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilioni","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Scelte precedenti","nextMessage":"Scelte successive"} -, -'dijit/nls/common':{"buttonOk":"Ok","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ja-jp.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ja-jp.js.uncompressed.js deleted file mode 100644 index 884d6dda3..000000000 --- a/lib/dojo/nls/tt-rss-layer_ja-jp.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ja-jp',{ -'dijit/form/nls/validate':{"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"} -, -'dijit/nls/loading':{"loadingState":"ロード中...","errorState":"エラーが発生しました。"} -, -'dojo/nls/colors':{"lightsteelblue":"ライトスチールブルー","orangered":"オレンジレッド","midnightblue":"ミッドナイトブルー","cadetblue":"くすんだ青","seashell":"シーシェル","slategrey":"スレートグレイ","coral":"珊瑚","darkturquoise":"ダークターコイズ","antiquewhite":"アンティークホワイト","mediumspringgreen":"ミディアムスプリンググリーン","transparent":"透明","salmon":"サーモン","darkgrey":"ダークグレイ","ivory":"アイボリー","greenyellow":"緑黄色","mistyrose":"ミスティローズ","lightsalmon":"ライトサーモン","silver":"銀","dimgrey":"くすんだグレイ","orange":"オレンジ","white":"白","navajowhite":"ナバホホワイト","royalblue":"藤色","deeppink":"濃いピンク","lime":"ライム","oldlace":"オールドレイス","chartreuse":"淡黄緑","darkcyan":"ダークシアンブルー","yellow":"黄","linen":"亜麻色","olive":"オリーブ","gold":"金","lawngreen":"ローングリーン","lightyellow":"ライトイエロー","tan":"茶褐色","darkviolet":"ダークバイオレット","lightslategrey":"ライトスレートグレイ","grey":"グレイ","darkkhaki":"ダークカーキ","green":"緑","deepskyblue":"濃い空色","aqua":"アクア","sienna":"黄褐色","mintcream":"ミントクリーム","rosybrown":"ロージーブラウン","mediumslateblue":"ミディアムスレートブルー","magenta":"赤紫","lightseagreen":"ライトシーグリーン","cyan":"シアンブルー","olivedrab":"濃黄緑","darkgoldenrod":"ダークゴールデンロッド","slateblue":"スレートブルー","mediumaquamarine":"ミディアムアクアマリーン","lavender":"ラベンダー","mediumseagreen":"ミディアムシーグリーン","maroon":"えび茶","darkslategray":"ダークスレートグレイ","mediumturquoise":"ミディアムターコイズ","ghostwhite":"ゴーストホワイト","darkblue":"ダークブルー","mediumvioletred":"ミディアムバイオレットレッド","brown":"茶","lightgray":"ライトグレイ","sandybrown":"砂褐色","pink":"ピンク","firebrick":"赤煉瓦色","indigo":"藍色","snow":"雪色","darkorchid":"ダークオーキッド","turquoise":"ターコイズ","chocolate":"チョコレート","springgreen":"スプリンググリーン","moccasin":"モカシン","navy":"濃紺","lemonchiffon":"レモンシフォン","teal":"ティール","floralwhite":"フローラルホワイト","cornflowerblue":"コーンフラワーブルー","paleturquoise":"ペイルターコイズ","purple":"紫","gainsboro":"ゲインズボーロ","plum":"深紫","red":"赤","blue":"青","forestgreen":"フォレストグリーン","darkgreen":"ダークグリーン","honeydew":"ハニーデュー","darkseagreen":"ダークシーグリーン","lightcoral":"ライトコーラル","palevioletred":"ペイルバイオレットレッド","mediumpurple":"ミディアムパープル","saddlebrown":"サドルブラウン","darkmagenta":"ダークマジェンタ","thistle":"シスル","whitesmoke":"ホワイトスモーク","wheat":"小麦色","violet":"すみれ色","lightskyblue":"ライトスカイブルー","goldenrod":"ゴールデンロッド","mediumblue":"ミディアムブルー","skyblue":"スカイブルー","crimson":"深紅","darksalmon":"ダークサーモン","darkred":"ダークレッド","darkslategrey":"ダークスレートグレイ","peru":"ペルー","lightgrey":"ライトグレイ","lightgoldenrodyellow":"ライトゴールデンロッドイエロー","blanchedalmond":"皮なしアーモンド","aliceblue":"アリスブルー","bisque":"ビスク","slategray":"スレートグレイ","palegoldenrod":"ペイルゴールデンロッド","darkorange":"ダークオレンジ","aquamarine":"碧緑","lightgreen":"ライトグリーン","burlywood":"バーリーウッド","dodgerblue":"ドッジャーブルー","darkgray":"ダークグレイ","lightcyan":"ライトシアン","powderblue":"淡青","blueviolet":"青紫","orchid":"薄紫","dimgray":"くすんだグレイ","beige":"ベージュ","fuchsia":"紫紅色","lavenderblush":"ラベンダーブラッシ","hotpink":"ホットピンク","steelblue":"鋼色","tomato":"トマト色","lightpink":"ライトピンク","limegreen":"ライムグリーン","indianred":"インディアンレッド","papayawhip":"パパイアホイップ","lightslategray":"ライトスレートグレイ","gray":"グレイ","mediumorchid":"ミディアムオーキッド","cornsilk":"コーンシルク","black":"黒","seagreen":"シーグリーン","darkslateblue":"ダークスレートブルー","khaki":"カーキ","lightblue":"ライトブルー","palegreen":"ペイルグリーン","azure":"薄い空色","peachpuff":"ピーチパフ","darkolivegreen":"ダークオリーブグリーン","yellowgreen":"黄緑"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ko-kr.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ko-kr.js.uncompressed.js deleted file mode 100644 index 0c8b29448..000000000 --- a/lib/dojo/nls/tt-rss-layer_ko-kr.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ko-kr',{ -'dijit/form/nls/validate':{"rangeMessage":"이 값은 범위를 벗어납니다.","invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다."} -, -'dijit/nls/loading':{"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."} -, -'dojo/nls/colors':{"lightsteelblue":"라이트 스틸 블루(light steel blue)","orangered":"오렌지 레드(orange red)","midnightblue":"미드나잇 블루(midnight blue)","cadetblue":"카뎃 블루(cadet blue)","seashell":"씨쉘(seashell)","slategrey":"슬레이트 그레이(slate gray)","coral":"코랄(coral)","darkturquoise":"다크 터콰즈(dark turquoise)","antiquewhite":"앤틱 화이트(antique white)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","transparent":"투명(transparent)","salmon":"샐몬(salmon)","darkgrey":"다크 그레이(dark gray)","ivory":"아이보리(ivory)","greenyellow":"그린 옐로우(green-yellow)","mistyrose":"미스티 로즈(misty rose)","lightsalmon":"라이트 샐몬(light salmon)","silver":"실버(silver)","dimgrey":"딤 그레이(dim gray)","orange":"오렌지(orange)","white":"화이트(white)","navajowhite":"나바호 화이트(navajo white)","royalblue":"로얄 블루(royal blue)","deeppink":"딥 핑크(deep pink)","lime":"라임(lime)","oldlace":"올드 레이스(old lace)","chartreuse":"샤르트뢰즈(chartreuse)","darkcyan":"다크 시안(dark cyan)","yellow":"옐로우(yellow)","linen":"리넨(linen)","olive":"올리브(olive)","gold":"골드(gold)","lawngreen":"론 그린(lawn green)","lightyellow":"라이트 옐로우(light yellow)","tan":"탠(tan)","darkviolet":"다크 바이올렛(dark violet)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","grey":"그레이(gray)","darkkhaki":"다크 카키(dark khaki)","green":"그린(green)","deepskyblue":"딥 스카이 블루(deep sky blue)","aqua":"아쿠아(aqua)","sienna":"시에나(sienna)","mintcream":"민트 크림(mint cream)","rosybrown":"로지 브라운(rosy brown)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","magenta":"마젠타(magenta)","lightseagreen":"라이트 씨 그린(light sea green)","cyan":"시안(cyan)","olivedrab":"올리브 드랩(olive drab)","darkgoldenrod":"다크 골든로드(dark goldenrod)","slateblue":"슬레이트 블루(slate blue)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","lavender":"라벤더(lavender)","mediumseagreen":"미디엄 씨 그린(medium sea green)","maroon":"마룬(maroon)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","ghostwhite":"고스트 화이트(ghost white)","darkblue":"다크 블루(dark blue)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","brown":"브라운(brown)","lightgray":"라이트 그레이(light gray)","sandybrown":"샌디 브라운(sandy brown)","pink":"핑크(pink)","firebrick":"파이어 브릭(fire brick)","indigo":"인디고(indigo)","snow":"스노우(snow)","darkorchid":"다크 오키드(dark orchid)","turquoise":"터콰즈(turquoise)","chocolate":"초콜렛(chocolate)","springgreen":"스프링 그린(spring green)","moccasin":"모카신(moccasin)","navy":"네이비(navy)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","teal":"틸(teal)","floralwhite":"플로랄 화이트(floral white)","cornflowerblue":"콘플라워 블루(cornflower blue)","paleturquoise":"페일 터콰즈(pale turquoise)","purple":"퍼플(purple)","gainsboro":"게인스브로(gainsboro)","plum":"플럼(plum)","red":"레드(red)","blue":"블루(blue)","forestgreen":"포레스트 그린(forest green)","darkgreen":"다크 그린(dark green)","honeydew":"허니듀(honeydew)","darkseagreen":"다크 씨 그린(dark sea green)","lightcoral":"라이트 코랄(light coral)","palevioletred":"페일 바이올렛 레드(pale violet-red)","mediumpurple":"미디엄 퍼플(medium purple)","saddlebrown":"새들 브라운(saddle brown)","darkmagenta":"다크 마젠타(dark magenta)","thistle":"시슬(thistle)","whitesmoke":"화이트 스모크(white smoke)","wheat":"휘트(wheat)","violet":"바이올렛(violet)","lightskyblue":"라이트 스카이 블루(light sky blue)","goldenrod":"골든로드(goldenrod)","mediumblue":"미디엄 블루(medium blue)","skyblue":"스카이 블루(sky blue)","crimson":"크림슨(crimson)","darksalmon":"다크 샐몬(dark salmon)","darkred":"다크 레드(dark red)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","peru":"페루(peru)","lightgrey":"라이트 그레이(light gray)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","blanchedalmond":"블랜치 아몬드(blanched almond)","aliceblue":"앨리스 블루(alice blue)","bisque":"비스크(bisque)","slategray":"슬레이트 그레이(slate gray)","palegoldenrod":"페일 골든로드(pale goldenrod)","darkorange":"다크 오렌지(dark orange)","aquamarine":"아쿠아마린(aquamarine)","lightgreen":"라이트 그린(light green)","burlywood":"벌리우드(burlywood)","dodgerblue":"다저 블루(dodger blue)","darkgray":"다크 그레이(dark gray)","lightcyan":"라이트 시안(light cyan)","powderblue":"파우더 블루(powder blue)","blueviolet":"블루 바이올렛(blue-violet)","orchid":"오키드(orchid)","dimgray":"딤 그레이(dim gray)","beige":"베이지(beige)","fuchsia":"후크샤(fuchsia)","lavenderblush":"라벤더 블러쉬(lavender blush)","hotpink":"핫 핑크(hot pink)","steelblue":"스틸 블루(steel blue)","tomato":"토마토(tomato)","lightpink":"라이트 핑크(light pink)","limegreen":"라임 그린(lime green)","indianred":"인디안 레드(indian red)","papayawhip":"파파야 휩(papaya whip)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","gray":"그레이(gray)","mediumorchid":"미디엄 오키드(medium orchid)","cornsilk":"콘실크(cornsilk)","black":"블랙(black)","seagreen":"씨 그린(sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","khaki":"카키(khaki)","lightblue":"라이트 블루(light blue)","palegreen":"페일 그린(pale green)","azure":"애쥬어(azure)","peachpuff":"피치 퍼프(peach puff)","darkolivegreen":"다크 올리브 그린(dark olive green)","yellowgreen":"옐로우 그린(yellow green)"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000조","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000조","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"} -, -'dijit/nls/common':{"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_nb.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_nb.js.uncompressed.js deleted file mode 100644 index f748bc573..000000000 --- a/lib/dojo/nls/tt-rss-layer_nb.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_nb',{ -'dijit/form/nls/validate':{"rangeMessage":"Denne verdien er utenfor gyldig område.","invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk."} -, -'dijit/nls/loading':{"loadingState":"Laster inn...","errorState":"Det oppsto en feil"} -, -'dojo/nls/colors':{"lightsteelblue":"lys stålblå","orangered":"rødoransje","midnightblue":"midnattsblå","cadetblue":"mørk grønnblå","seashell":"skjellhvit","slategrey":"skifergrå","coral":"korall","darkturquoise":"mørk turkis","antiquewhite":"antikk hvit","mediumspringgreen":"middels vårgrønn","transparent":"gjennomsiktig","salmon":"lakserosa","darkgrey":"mørk grå","ivory":"elfenbenshvit","greenyellow":"gulgrønn","mistyrose":"lys rosenrød","lightsalmon":"lys lakserosa","silver":"sølvfarget","dimgrey":"mørk mørkegrå","orange":"oransje","white":"hvit","navajowhite":"gulbrun","royalblue":"kongeblå","deeppink":"dyp rosa","lime":"lime","oldlace":"kniplingshvit","chartreuse":"løvgrønn","darkcyan":"mørk cyan","yellow":"gul","linen":"lin","olive":"oliven","gold":"gull","lawngreen":"plengrønn","lightyellow":"lys gul","tan":"matt mellombrun","darkviolet":"mørk fiolett","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grønn","deepskyblue":"dyp himmelblå","aqua":"akva","sienna":"nøttebrun","mintcream":"mintkrem","rosybrown":"brunlilla","mediumslateblue":"middels skiferblå","magenta":"magenta","lightseagreen":"lys sjøgrønn","cyan":"cyan","olivedrab":"middels olivengrønn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"middels akvamarin","lavender":"lavendel","mediumseagreen":"middels sjøgrønn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"middels turkis","ghostwhite":"egghvit","darkblue":"mørk blå","mediumvioletred":"middels fiolettrød","brown":"brun","lightgray":"lys grå","sandybrown":"sandbrun","pink":"rosa","firebrick":"mursteinsrød","indigo":"indigo","snow":"snøhvit","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"sjokolade","springgreen":"vårgrønn","moccasin":"lys gulbrun","navy":"marineblå","lemonchiffon":"ferskenfarget","teal":"mørk grønnblå","floralwhite":"blomsterhvit","cornflowerblue":"kornblå","paleturquoise":"svak turkis","purple":"purpur","gainsboro":"lys lys grå","plum":"plommefarget","red":"rød","blue":"blå","forestgreen":"skoggrønn","darkgreen":"mørk grønn","honeydew":"grønnhvit","darkseagreen":"mørk sjøgrønn","lightcoral":"lys korall","palevioletred":"svak fiolettrød","mediumpurple":"middels purpur","saddlebrown":"mørk nøttebrun","darkmagenta":"mørk magenta","thistle":"lys grålilla","whitesmoke":"røykhvit","wheat":"varm sienna","violet":"fiolett","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellomblå","skyblue":"himmelblå","crimson":"karmosinrødt","darksalmon":"mørk lakserosa","darkred":"mørk rød","darkslategrey":"mørk skifergrå","peru":"lys nøttebrun","lightgrey":"lys grå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"lys mandel","aliceblue":"blåhvit","bisque":"gulrosa","slategray":"skifergrå","palegoldenrod":"svak gyldenris","darkorange":"mørk oransje","aquamarine":"akvamarin","lightgreen":"lys grønn","burlywood":"matt mellombrun","dodgerblue":"lys havblå","darkgray":"mørk grå","lightcyan":"lys cyan","powderblue":"lys grønnblå","blueviolet":"blåfiolett","orchid":"orkide","dimgray":"mørk mørkegrå","beige":"beige","fuchsia":"fuksia","lavenderblush":"lillahvit","hotpink":"halvmørk rosa","steelblue":"stålblå","tomato":"tomatrød","lightpink":"lys rosa","limegreen":"limegrønn","indianred":"rustrød","papayawhip":"lys papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"middels orkide","cornsilk":"cornsilk","black":"svart","seagreen":"sjøgrønn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lys blå","palegreen":"svak grønn","azure":"asur","peachpuff":"brunrosa","darkolivegreen":"mørk olivengrønn","yellowgreen":"gulgrønn"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Tidligere valg","nextMessage":"Flere valg"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_nl-nl.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_nl-nl.js.uncompressed.js deleted file mode 100644 index 211988e85..000000000 --- a/lib/dojo/nls/tt-rss-layer_nl-nl.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_nl-nl',{ -'dijit/form/nls/validate':{"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."} -, -'dijit/nls/loading':{"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"} -, -'dojo/nls/colors':{"lightsteelblue":"lichtstaalblauw","orangered":"oranjerood","midnightblue":"nachtblauw","cadetblue":"donkerstaalblauw","seashell":"schelp","slategrey":"leigrijs","coral":"koraalrood","darkturquoise":"donkerturquoise","antiquewhite":"antiekwit","mediumspringgreen":"midlentegroen","transparent":"transparant","salmon":"zalm","darkgrey":"donkergrijs","ivory":"ivoorwit","greenyellow":"groengeel","mistyrose":"matroze","lightsalmon":"lichtzalm","silver":"zilvergrijs","dimgrey":"dofgrijs","orange":"oranje","white":"wit","navajowhite":"navajowit","royalblue":"koningsblauw","deeppink":"donkerroze","lime":"limoen","oldlace":"kant","chartreuse":"groengeel","darkcyan":"donkercyaan","yellow":"geel","linen":"linnen","olive":"olijfgroen","gold":"goud","lawngreen":"grasgroen","lightyellow":"lichtgeel","tan":"geelbruin","darkviolet":"donkerviolet","lightslategrey":"lichtblauwgrijs","grey":"grijs","darkkhaki":"donkerkaki","green":"groen","deepskyblue":"diephemelblauw","aqua":"aqua","sienna":"sienna","mintcream":"mintroomgeel","rosybrown":"roodbruin","mediumslateblue":"midgrijsblauw","magenta":"magenta","lightseagreen":"lichtzeegroen","cyan":"cyaan","olivedrab":"grijsbruin","darkgoldenrod":"donkergoud","slateblue":"leiblauw","mediumaquamarine":"midaquamarijn","lavender":"lavendelblauw","mediumseagreen":"midzeegroen","maroon":"kastanjebruin","darkslategray":"donkerblauwgrijs","mediumturquoise":"midturquoise","ghostwhite":"spierwit","darkblue":"donkerblauw","mediumvioletred":"midvioletrood","brown":"bruin","lightgray":"lichtgrijs","sandybrown":"zandbruin","pink":"roze","firebrick":"vuursteenrood","indigo":"indigo","snow":"sneeuwwit","darkorchid":"donkerorchidee","turquoise":"turquoise","chocolate":"chocoladebruin","springgreen":"lentegroen","moccasin":"moccasin","navy":"marineblauw","lemonchiffon":"citroengeel","teal":"grijsblauw","floralwhite":"rozewit","cornflowerblue":"korenbloemblauw","paleturquoise":"bleekturquoise","purple":"purper","gainsboro":"lichtblauwgrijs","plum":"pruim","red":"rood","blue":"blauw","forestgreen":"bosgroen","darkgreen":"donkergroen","honeydew":"meloen","darkseagreen":"donkerzeegroen","lightcoral":"lichtkoraal","palevioletred":"bleekvioletrood","mediumpurple":"midpurper","saddlebrown":"leerbruin","darkmagenta":"donkermagenta","thistle":"distel","whitesmoke":"rookwit","wheat":"tarwebruin","violet":"violet","lightskyblue":"lichthemelsblauw","goldenrod":"goudbruin","mediumblue":"midblauw","skyblue":"hemelsblauw","crimson":"karmozijnrood","darksalmon":"donkerzalm","darkred":"donkerrood","darkslategrey":"donkerblauwgrijs","peru":"bruin","lightgrey":"lichtgrijs","lightgoldenrodyellow":"lichtgoudgeel","blanchedalmond":"amandel","aliceblue":"lichtblauw","bisque":"oranjegeel","slategray":"leigrijs","palegoldenrod":"bleekgeel","darkorange":"donkeroranje","aquamarine":"aquamarijn","lightgreen":"lichtgroen","burlywood":"lichtbruin","dodgerblue":"helderblauw","darkgray":"donkergrijs","lightcyan":"lichtcyaan","powderblue":"lichtblauw-wit","blueviolet":"violet","orchid":"orchidee","dimgray":"dofgrijs","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelblos","hotpink":"acaciaroze","steelblue":"staalblauw","tomato":"tomaat","lightpink":"lichtroze","limegreen":"limoengroen","indianred":"indisch rood","papayawhip":"papajaroze","lightslategray":"lichtblauwgrijs","gray":"grijs","mediumorchid":"midorchidee","cornsilk":"maïsgeel","black":"zwart","seagreen":"zeegroen","darkslateblue":"donkergrijsblauw","khaki":"kaki","lightblue":"lichtblauw","palegreen":"bleekgroen","azure":"azuur","peachpuff":"perzikroze","darkolivegreen":"donkerolijfgroen","yellowgreen":"geelgroen"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 biljoen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Eerdere opties","nextMessage":"Meer opties"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pl.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_pl.js.uncompressed.js deleted file mode 100644 index 342ff977c..000000000 --- a/lib/dojo/nls/tt-rss-layer_pl.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_pl',{ -'dijit/form/nls/validate':{"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość jest nieprawidłowa.","missingMessage":"Ta wartość jest wymagana."} -, -'dijit/nls/loading':{"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd"} -, -'dojo/nls/colors':{"lightsteelblue":"jasnostalowoniebieski","orangered":"czerwona pomarańcza","midnightblue":"atramentowoniebieski","cadetblue":"szaroniebieski","seashell":"matowoliliowy","slategrey":"mysi","coral":"koralowy","darkturquoise":"ciemnoturkusowy","antiquewhite":"biel antyczna","mediumspringgreen":"średnia wiosenna zieleń","transparent":"przezroczysty","salmon":"łososiowy","darkgrey":"ciemnoszary","ivory":"kość słoniowa","greenyellow":"zielonożółty","mistyrose":"mglistoróżany","lightsalmon":"jasnołososiowy","silver":"srebrny","dimgrey":"przyciemniony szary","orange":"pomarańczowy","white":"biały","navajowhite":"biel Nawaho","royalblue":"królewska purpura","deeppink":"głęboki róż","lime":"limonkowy","oldlace":"ecru","chartreuse":"żółtooliwkowy","darkcyan":"ciemnoniebieskozielony","yellow":"żółty","linen":"lniany","olive":"oliwkowy","gold":"złoty","lawngreen":"trawiasty","lightyellow":"jasnożółty","tan":"śniady","darkviolet":"ciemnofiołkowy","lightslategrey":"jasny mysi","grey":"szary","darkkhaki":"ciemny khaki","green":"zielony","deepskyblue":"intensywny błękit nieba","aqua":"morski","sienna":"sjena","mintcream":"miętowokremowy","rosybrown":"różanobrązowy","mediumslateblue":"średni gołębi","magenta":"amarantowy","lightseagreen":"jasna zieleń morska","cyan":"niebieskozielony","olivedrab":"oliwkowozielony","darkgoldenrod":"ciemne stare złoto","slateblue":"gołębi","mediumaquamarine":"średnia akwamaryna","lavender":"lawendowy","mediumseagreen":"średnia zieleń morska","maroon":"rdzawoczerwony","darkslategray":"ciemny mysi","mediumturquoise":"średni turkusowy","ghostwhite":"sina biel","darkblue":"ciemnoniebieski","mediumvioletred":"średni fiołkowowoczerwony","brown":"brązowy","lightgray":"jasnoszary","sandybrown":"piaskowobrązowy","pink":"różowy","firebrick":"podpalana cegła","indigo":"indygo","snow":"śnieżny","darkorchid":"ciemna orchidea","turquoise":"turkusowy","chocolate":"czekoladowy","springgreen":"wiosenna zieleń","moccasin":"mokasynowy","navy":"granatowy","lemonchiffon":"babka cytrynowa","teal":"zielonomodry","floralwhite":"złamana biel","cornflowerblue":"niebieskochabrowy","paleturquoise":"bladoturkusowy","purple":"fioletowy","gainsboro":"jasnoniebieskawoszary","plum":"śliwkowy","red":"czerwony","blue":"niebieski","forestgreen":"leśna zieleń","darkgreen":"ciemnozielony","honeydew":"miodowy","darkseagreen":"ciemna zieleń morska","lightcoral":"jasnokoralowy","palevioletred":"bladofiołkowoczerwony","mediumpurple":"średni fioletowy","saddlebrown":"brąz skórzany","darkmagenta":"ciemnoamarantowy","thistle":"kwiat ostu","whitesmoke":"siwy","wheat":"pszeniczny","violet":"fiołkowy","lightskyblue":"jasny błękit nieba","goldenrod":"stare złoto","mediumblue":"średni niebieski","skyblue":"błękit nieba","crimson":"karmazynowy","darksalmon":"ciemnołososiowy","darkred":"ciemnoczerwony","darkslategrey":"ciemny mysi","peru":"palona glina","lightgrey":"jasnoszary","lightgoldenrodyellow":"jasne stare złoto","blanchedalmond":"obrany migdał","aliceblue":"bladoniebieski","bisque":"cielistobeżowy","slategray":"mysi","palegoldenrod":"blade stare złoto","darkorange":"ciemnopomarańczowy","aquamarine":"akwamaryna","lightgreen":"jasnozielony","burlywood":"piaskowobeżowy","dodgerblue":"niebieski Dodgersów","darkgray":"ciemnoszary","lightcyan":"jasnoniebieskozielony","powderblue":"jasnobladobłękitny","blueviolet":"błękitnofiołkowy","orchid":"orchidea","dimgray":"przyciemniony szary","beige":"beżowy","fuchsia":"fuksjowy","lavenderblush":"lawendoworóżowy","hotpink":"odblaskoworóżowy","steelblue":"stalowoniebieski","tomato":"pomidorowy","lightpink":"jasnoróżowy","limegreen":"limonkowozielony","indianred":"kasztanowy","papayawhip":"kremowa papaja","lightslategray":"jasny mysi","gray":"szary","mediumorchid":"średnia orchidea","cornsilk":"białożółty","black":"czarny","seagreen":"zieleń morska","darkslateblue":"ciemny gołębi","khaki":"khaki","lightblue":"jasnoniebieski","palegreen":"bladozielony","azure":"lazurowy","peachpuff":"cielisty brzoskwiniowy","darkolivegreen":"ciemnooliwkowozielony","yellowgreen":"żółtozielony"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pt-br.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_pt-br.js.uncompressed.js deleted file mode 100644 index 545db4a9c..000000000 --- a/lib/dojo/nls/tt-rss-layer_pt-br.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_pt-br',{ -'dijit/form/nls/validate':{"rangeMessage":"Este valor está fora do intervalo. ","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."} -, -'dijit/nls/loading':{"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"} -, -'dojo/nls/colors':{"lightsteelblue":"azul aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadet","seashell":"seashell","slategrey":"cinza ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","transparent":"transparente","salmon":"salmão","darkgrey":"cinza escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa enevoado","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinza turvo","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul royal","deeppink":"rosa profundo","lime":"lima","oldlace":"cadarço velho","chartreuse":"chartreuse","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"oliva","gold":"dourado","lawngreen":"verde grama","lightyellow":"amarelo claro","tan":"tan","darkviolet":"violeta escuro","lightslategrey":"cinza ardósia claro","grey":"cinza","darkkhaki":"cáqui escuro","green":"verde","deepskyblue":"azul céu intenso","aqua":"aqua","sienna":"sienna","mintcream":"creme de menta","rosybrown":"marrom rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"verde oliva","darkgoldenrod":"goldenrod escuro","slateblue":"azul ardósia","mediumaquamarine":"água marinha médio","lavender":"lavanda","mediumseagreen":"verde marinho médio","maroon":"castanho","darkslategray":"cinza ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco ghost","darkblue":"azul escuro","mediumvioletred":"vermelho violeta médio","brown":"marrom","lightgray":"cinza claro","sandybrown":"marrom cor de areia","pink":"rosa","firebrick":"firebrick","indigo":"índigo","snow":"branco neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"moccasin","navy":"marinho","lemonchiffon":"limão chiffon","teal":"azul esverdeado","floralwhite":"branco floral","cornflowerblue":"azul centaurea","paleturquoise":"turquesa esbranquiçado","purple":"roxo","gainsboro":"gainsboro","plum":"ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"honeydew","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"vermelho violeta esbranquiçado","mediumpurple":"roxo médio","saddlebrown":"marrom saddle","darkmagenta":"magenta escuro","thistle":"thistle","whitesmoke":"fumaça branca","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"goldenrod","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinza ardósia escuro","peru":"peru","lightgrey":"cinza claro","lightgoldenrodyellow":"amarelo goldenrod claro","blanchedalmond":"amêndoa pelada","aliceblue":"azul alice","bisque":"bisque","slategray":"cinza ardósia","palegoldenrod":"goldenrod esbranquiçado","darkorange":"laranja escuro","aquamarine":"água marinha","lightgreen":"verde claro","burlywood":"burlywood","dodgerblue":"azul dodger","darkgray":"cinza escuro","lightcyan":"ciano claro","powderblue":"azul talco","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinza turvo","beige":"bege","fuchsia":"fúcsia","lavenderblush":"lavanda avermelhada","hotpink":"rosa quente","steelblue":"azul aço","tomato":"tomate","lightpink":"rosa claro","limegreen":"verde lima","indianred":"vermelho indiano","papayawhip":"creme de papaya","lightslategray":"cinza ardósia claro","gray":"cinza","mediumorchid":"orquídea médio","cornsilk":"cornsilk","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"cáqui","lightblue":"azul claro","palegreen":"verde esbranquiçado","azure":"azul celeste","peachpuff":"peach puff","darkolivegreen":"verde oliva escuro","yellowgreen":"verde amarelado"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 tri","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 trilhões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Opções anteriores","nextMessage":"Mais opções"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_pt-pt.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_pt-pt.js.uncompressed.js deleted file mode 100644 index 2bcc1b3f2..000000000 --- a/lib/dojo/nls/tt-rss-layer_pt-pt.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_pt-pt',{ -'dijit/form/nls/validate':{"rangeMessage":"Este valor encontra-se fora do intervalo.","invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido."} -, -'dijit/nls/loading':{"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"} -, -'dojo/nls/colors':{"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadete","seashell":"concha","slategrey":"cinzento ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","transparent":"transparente","salmon":"salmão","darkgrey":"cinzento escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa pálido","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinzento esbatido","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul real","deeppink":"rosa profundo","lime":"lima","oldlace":"renda antiga","chartreuse":"amarelo esverdeado","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"azeitona","gold":"dourado","lawngreen":"verde relva","lightyellow":"amarelo claro","tan":"castanho claro","darkviolet":"violeta escuro","lightslategrey":"cinzento ardósia claro","grey":"cinzento","darkkhaki":"caqui escuro","green":"verde","deepskyblue":"azul céu profundo","aqua":"verde-água","sienna":"castanho-avermelhado","mintcream":"creme de menta","rosybrown":"castanho rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"azeitona claro","darkgoldenrod":"ouro velho escuro","slateblue":"azul ardósia","mediumaquamarine":"verde-azulado médio","lavender":"alfazema","mediumseagreen":"verde marinho médio","maroon":"bordeaux","darkslategray":"cinzento ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco sombreado","darkblue":"azul escuro","mediumvioletred":"violeta avermelhado médio","brown":"castanho","lightgray":"cinzento claro","sandybrown":"castanho areia","pink":"rosa","firebrick":"tijolo fogo","indigo":"índigo","snow":"branco-neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"mocassim","navy":"azul marinho","lemonchiffon":"limão chiffon","teal":"verde-azulado","floralwhite":"branco floral","cornflowerblue":"azul-violáceo","paleturquoise":"turquesa pálido","purple":"roxo","gainsboro":"cinzento azulado claro","plum":"cor-de-ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"mel","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"violeta avermelhado pálido","mediumpurple":"roxo médio","saddlebrown":"castanho sela","darkmagenta":"magenta escuro","thistle":"cardo","whitesmoke":"fumo branco","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"ouro velho","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinzento ardósia escuro","peru":"peru","lightgrey":"cinzento claro","lightgoldenrodyellow":"ouro velho amarelado claro","blanchedalmond":"amêndoa claro","aliceblue":"azul alice","bisque":"rosa-velho","slategray":"cinzento ardósia","palegoldenrod":"ouro velho pálido","darkorange":"laranja escuro","aquamarine":"verde-azulado","lightgreen":"verde claro","burlywood":"castanho pinho","dodgerblue":"azul furtivo","darkgray":"cinzento escuro","lightcyan":"ciano claro","powderblue":"azul de esmalte","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinzento esbatido","beige":"bege","fuchsia":"fúcsia","lavenderblush":"alfazema rosado","hotpink":"rosa forte","steelblue":"azul-aço","tomato":"vermelho tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"almagre","papayawhip":"creme de papaia","lightslategray":"cinzento ardósia claro","gray":"cinzento","mediumorchid":"orquídea médio","cornsilk":"branco seda","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"azul-celeste","peachpuff":"pêssego","darkolivegreen":"verde-azeitona escuro","yellowgreen":"verde amarelado"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bi","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Opções anteriores","nextMessage":"Mais opções"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_ru.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_ru.js.uncompressed.js deleted file mode 100644 index e3fced735..000000000 --- a/lib/dojo/nls/tt-rss-layer_ru.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_ru',{ -'dijit/form/nls/validate':{"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение."} -, -'dijit/nls/loading':{"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"} -, -'dojo/nls/colors':{"lightsteelblue":"светлый стальной","orangered":"оранжево-красный","midnightblue":"полуночно-синий","cadetblue":"серо-синий","seashell":"морская раковина","slategrey":"грифельно-серый","coral":"коралловый","darkturquoise":"темный бирюзовый","antiquewhite":"белый антик","mediumspringgreen":"нейтральный весенне-зеленый","transparent":"прозрачный","salmon":"лососевый","darkgrey":"темно-серый","ivory":"слоновой кости","greenyellow":"зелено-желтый","mistyrose":"блекло-розовый","lightsalmon":"светло-лососевый","silver":"серебристый","dimgrey":"тускло-серый","orange":"оранжевый","white":"белый","navajowhite":"белый навахо","royalblue":"королевский голубой","deeppink":"темно-розовый","lime":"лайм","oldlace":"матово-белый","chartreuse":"желто-салатный","darkcyan":"темный циан","yellow":"желтый","linen":"хлопковый","olive":"оливковый","gold":"золотой","lawngreen":"зеленая лужайка","lightyellow":"светло-желтый","tan":"рыжевато-коричневый","darkviolet":"темно-фиолетовый","lightslategrey":"светлый грифельно-серый","grey":"серый","darkkhaki":"темный хаки","green":"зеленый","deepskyblue":"темный небесно-голубой","aqua":"зеленовато-голубой","sienna":"охра","mintcream":"мятно-кремовый","rosybrown":"розово-коричневый","mediumslateblue":"нейтральный грифельно-синий","magenta":"пурпурный","lightseagreen":"светлый морской волны","cyan":"циан","olivedrab":"желтовато-серый","darkgoldenrod":"темно-золотистый","slateblue":"грифельно-синий","mediumaquamarine":"нейтральный аквамарин","lavender":"бледно-лиловый","mediumseagreen":"нейтральный морской волны","maroon":"темно-бордовый","darkslategray":"темный грифельно-серый","mediumturquoise":"нейтральный бирюзовый","ghostwhite":"призрачно-белый","darkblue":"темно-синий","mediumvioletred":"нейтральный фиолетово-красный","brown":"коричневый","lightgray":"светло-серый","sandybrown":"коричнево-песчаный","pink":"розовый","firebrick":"кирпичный","indigo":"индиго","snow":"белоснежный","darkorchid":"темный орсель","turquoise":"бирюзовый","chocolate":"шоколадный","springgreen":"весенний зеленый","moccasin":"мокасин","navy":"темно-синий","lemonchiffon":"бледно-лимонный","teal":"чирок","floralwhite":"цветочно-белый","cornflowerblue":"фиолетово-синий","paleturquoise":"бледно-бирюзовый","purple":"фиолетовый","gainsboro":"бледно-серый","plum":"сливовый","red":"красный","blue":"синий","forestgreen":"зеленый лесной","darkgreen":"темно-зеленый","honeydew":"медовый","darkseagreen":"темный морской волны","lightcoral":"светло-коралловый","palevioletred":"бледный фиолетово-красный","mediumpurple":"нейтральный фиолетовый","saddlebrown":"кожано-коричневый","darkmagenta":"темно-пурпурный","thistle":"чертополох","whitesmoke":"дымчато-белый","wheat":"пшеница","violet":"фиолетовый","lightskyblue":"светлый небесно-голубой","goldenrod":"золотистый","mediumblue":"нейтральный синий","skyblue":"небесно-голубой","crimson":"малиновый","darksalmon":"темно-лососевый","darkred":"темно-красный","darkslategrey":"темный грифельно-серый","peru":"перу","lightgrey":"светло-серый","lightgoldenrodyellow":"светло-золотистый","blanchedalmond":"светло-миндальный","aliceblue":"серо-голубой","bisque":"бисквитный","slategray":"грифельно-серый","palegoldenrod":"бледно-золотистый","darkorange":"темно-оранжевый","aquamarine":"аквамарин","lightgreen":"светло-зеленый","burlywood":"светло-коричневый","dodgerblue":"бледно-синий","darkgray":"темно-серый","lightcyan":"светлый циан","powderblue":"пороховой","blueviolet":"сине-фиолетовый","orchid":"орсель","dimgray":"тускло-серый","beige":"бежевый","fuchsia":"фуксин","lavenderblush":"розовато-лиловый","hotpink":"красно-розовый","steelblue":"стальной","tomato":"помидор","lightpink":"светло-розовый","limegreen":"зеленый лайм","indianred":"индийский красный","papayawhip":"черенок папайи","lightslategray":"светлый грифельно-серый","gray":"серый","mediumorchid":"нейтральный орсель","cornsilk":"шелковый оттенок","black":"черный","seagreen":"морской волны","darkslateblue":"темный грифельно-синий","khaki":"хаки","lightblue":"светло-синий","palegreen":"бледно-зеленый","azure":"лазурный","peachpuff":"персиковый","darkolivegreen":"темно-оливковый","yellowgreen":"желто-зеленый"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 трлн","currencySpacing-afterCurrency-insertBetween":" ","nan":"не число","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 триллиона","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sk.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_sk.js.uncompressed.js deleted file mode 100644 index 80fb72280..000000000 --- a/lib/dojo/nls/tt-rss-layer_sk.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_sk',{ -'dijit/form/nls/validate':{"rangeMessage":"Táto hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je povinná."} -, -'dijit/nls/loading':{"loadingState":"Zavádza sa...","errorState":"Ľutujeme, ale vyskytla sa chyba"} -, -'dojo/nls/colors':{"lightsteelblue":"svetlá oceľovomodrá","orangered":"oranžovo červená","midnightblue":"polnočná modrá","cadetblue":"červeno modrá","seashell":"lastúrová","slategrey":"bridlicová sivá","coral":"koralová","darkturquoise":"tmavá tyrkysová","antiquewhite":"antická biela","mediumspringgreen":"stredná jarná zelená","transparent":"priesvitná","salmon":"lososová","darkgrey":"tmavosivá","ivory":"slonovina","greenyellow":"zelenožltá","mistyrose":"zahmlená ruža","lightsalmon":"svetlá lososová","silver":"strieborná","dimgrey":"matná sivá","orange":"oranžová","white":"biela","navajowhite":"navajská biela","royalblue":"kráľovská modrá","deeppink":"hlboká ružová","lime":"limetková","oldlace":"stará čipka","chartreuse":"kartúzska","darkcyan":"tmavá zelenomodrá","yellow":"žltá","linen":"ľan","olive":"olivová","gold":"zlatá","lawngreen":"trávová zelená","lightyellow":"svetložltá","tan":"žltohnedá","darkviolet":"tmavofialová","lightslategrey":"svetlá bridlicová sivá","grey":"sivá","darkkhaki":"tmavá žltohnedá","green":"zelená","deepskyblue":"hlboká modrá obloha","aqua":"vodová","sienna":"sienská","mintcream":"mätová krémová","rosybrown":"ružovo hnedá","mediumslateblue":"stredná bridlicová modrá","magenta":"purpurová","lightseagreen":"svetlá morská zelená","cyan":"zelenomodrá","olivedrab":"fádna olivová","darkgoldenrod":"tmavá zlatobyľ","slateblue":"bridlicová modrá","mediumaquamarine":"stredná akvamarínová","lavender":"levanduľa","mediumseagreen":"stredná morská zelená","maroon":"gaštanová hnedá","darkslategray":"tmavá bridlicová sivá","mediumturquoise":"stredná tyrkysová","ghostwhite":"biela (ghost white)","darkblue":"tmavomodrá","mediumvioletred":"stredná fialovočervená","brown":"hnedá","lightgray":"svetlosivá","sandybrown":"piesková hnedá","pink":"ružová","firebrick":"pálená tehla","indigo":"indigo","snow":"snehová","darkorchid":"tmavá orchidea","turquoise":"tyrkysová","chocolate":"čokoládová","springgreen":"jarná zelená","moccasin":"mokasínová","navy":"námornícka","lemonchiffon":"citrónový šifón","teal":"zelenomodrá","floralwhite":"biely kvet","cornflowerblue":"nevädzová modrá","paleturquoise":"bledá tyrkysová","purple":"purpurová","gainsboro":"sivá - gainsboro","plum":"slivková","red":"červená","blue":"modrá","forestgreen":"lesná zelená","darkgreen":"tmavozelená","honeydew":"ambrózia","darkseagreen":"tmavá morská zelená","lightcoral":"svetlá koralová","palevioletred":"bledá fialovo červená","mediumpurple":"stredná purpurová","saddlebrown":"sedlová hnedá","darkmagenta":"tmavá purpurová","thistle":"bodliaková","whitesmoke":"biely dym","wheat":"pšeničná","violet":"fialová","lightskyblue":"svetlá modrá obloha","goldenrod":"zlatobyľ","mediumblue":"stredná modrá","skyblue":"modré nebo","crimson":"karmínová","darksalmon":"tmavá lososová","darkred":"tmavočervená","darkslategrey":"tmavá bridlicová sivá","peru":"peru","lightgrey":"svetlosivá","lightgoldenrodyellow":"svetlá zlatobyľová žltá","blanchedalmond":"bledá mandľová","aliceblue":"modrá (alice)","bisque":"porcelánová","slategray":"bridlicová sivá","palegoldenrod":"bledá zlatobyľová","darkorange":"tmavá oranžová","aquamarine":"akvamarínová","lightgreen":"svetlozelená","burlywood":"drevená hnedá","dodgerblue":"modrá (dodger)","darkgray":"tmavosivá","lightcyan":"svetlá zelenomodrá","powderblue":"prášková modrá","blueviolet":"modro-fialová","orchid":"orchideová","dimgray":"matná sivá","beige":"béžová","fuchsia":"fuchsia","lavenderblush":"rumencová levanduľa","hotpink":"horúca ružová","steelblue":"oceľovomodrá","tomato":"paradajková","lightpink":"svetloružová","limegreen":"limetková zelená","indianred":"indiánska červená","papayawhip":"papájový krém","lightslategray":"svetlá bridlicová sivá","gray":"sivá","mediumorchid":"stredná orchideová","cornsilk":"ôstie kukurice","black":"čierna","seagreen":"morská zelená","darkslateblue":"tmavá bridlicová modrá","khaki":"kaki","lightblue":"svetlomodrá","palegreen":"bledá zelená","azure":"azúrová","peachpuff":"broskyňový nádych","darkolivegreen":"tmavá olivovo zelená","yellowgreen":"žltozelená"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biliónov","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Predchádzajúce možnosti","nextMessage":"Viac možností"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Zrušiť","buttonSave":"Uložiť","itemClose":"Zatvoriť"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sl.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_sl.js.uncompressed.js deleted file mode 100644 index ca60fddfb..000000000 --- a/lib/dojo/nls/tt-rss-layer_sl.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_sl',{ -'dijit/form/nls/validate':{"rangeMessage":"Ta vrednost je izven območja.","invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana."} -, -'dijit/nls/loading':{"loadingState":"Nalaganje ...","errorState":"Oprostite, prišlo je do napake."} -, -'dojo/nls/colors':{"lightsteelblue":"svetlo kovinsko modra","orangered":"oranžno-rdeča","midnightblue":"polnočno modra","cadetblue":"kadetsko modra","seashell":"morska lupina","slategrey":"skrilasto siva","coral":"koralna","darkturquoise":"temno turkizna","antiquewhite":"antično bela","mediumspringgreen":"srednje pomladno zelena","transparent":"prosojno","salmon":"lososova","darkgrey":"temno siva","ivory":"slonokoščena","greenyellow":"zeleno-rumena","mistyrose":"megleno rožnata","lightsalmon":"svetlo lososova","silver":"srebrna","dimgrey":"pepelnato siva","orange":"oranžna","white":"bela","navajowhite":"navajo bela","royalblue":"kraljevsko modra","deeppink":"temno rožnata","lime":"svetlo zelena","oldlace":"stara čipka","chartreuse":"chartreuse","darkcyan":"temno cijan","yellow":"rumena","linen":"lanena","olive":"olivno zelena","gold":"zlata","lawngreen":"travniško zelena","lightyellow":"svetlo rumena","tan":"rumeno-rjava","darkviolet":"temno vijolična","lightslategrey":"svetlo skrilasto siva","grey":"siva","darkkhaki":"temno kaki","green":"zelena","deepskyblue":"temno nebeško modra","aqua":"svetlo modra","sienna":"sienna","mintcream":"metina krema","rosybrown":"rožnato rjava","mediumslateblue":"srednje skrilasto modra","magenta":"magenta","lightseagreen":"svetlo morsko zelena","cyan":"cijan","olivedrab":"umazano olivna","darkgoldenrod":"temna zlata rozga","slateblue":"skrilasto modra","mediumaquamarine":"srednji akvamarin","lavender":"sivka","mediumseagreen":"srednje morsko zelena","maroon":"kostanjeva","darkslategray":"temno skrilasto siva","mediumturquoise":"srednje turkizna","ghostwhite":"senčnato bela","darkblue":"temno modra","mediumvioletred":"srednje vijolično rdeča","brown":"rjava","lightgray":"svetlo siva","sandybrown":"peščeno rjava","pink":"rožnata","firebrick":"opečnata","indigo":"indigo","snow":"snežena","darkorchid":"temno orhidejasta","turquoise":"turkizna","chocolate":"čokoladna","springgreen":"pomladno zelena","moccasin":"mokasinasta","navy":"mornarsko modra","lemonchiffon":"limonast šifon","teal":"modrozelena","floralwhite":"cvetno bela","cornflowerblue":"plavičasto modra","paleturquoise":"bledo turkizna","purple":"škrlatna","gainsboro":"gainsboro","plum":"slivova","red":"rdeča","blue":"modra","forestgreen":"gozdno zelena","darkgreen":"temno zelena","honeydew":"medena rosa","darkseagreen":"temno morsko zelena","lightcoral":"svetlo koralna","palevioletred":"bledo vijolično-rdeča","mediumpurple":"srednje škrlatna","saddlebrown":"sedlasto rjava","darkmagenta":"temna magenta","thistle":"osatna","whitesmoke":"megleno bela","wheat":"pšenična","violet":"vijolična","lightskyblue":"svetlo nebeško modra","goldenrod":"zlata rozga","mediumblue":"srednje modra","skyblue":"nebeško modra","crimson":"karminasta","darksalmon":"temno lososova","darkred":"temno rdeča","darkslategrey":"temno skrilasto siva","peru":"perujska","lightgrey":"svetlo siva","lightgoldenrodyellow":"svetlo rumena zlata rozga","blanchedalmond":"obledelo mandljeva","aliceblue":"alice blue modra","bisque":"porcelanasta","slategray":"skrilasto siva","palegoldenrod":"bleda zlata rozga","darkorange":"temno oranžna","aquamarine":"akvamarin","lightgreen":"svetlo zelena","burlywood":"peščeno sivo-rjava","dodgerblue":"dodgersko modra","darkgray":"temno siva","lightcyan":"svetlo cijan","powderblue":"kobaltovo modra","blueviolet":"modro vijolična","orchid":"orhidejasta","dimgray":"pepelnato siva","beige":"bež","fuchsia":"roza","lavenderblush":"rožnato sivka","hotpink":"kričeče rožnata","steelblue":"kovinsko modra","tomato":"paradižnikova","lightpink":"svetlo rožnata","limegreen":"apneno zelena","indianred":"indijansko rdeča","papayawhip":"papaja","lightslategray":"svetlo skrilasto siva","gray":"siva","mediumorchid":"srednje orhidejasta","cornsilk":"koruzna","black":"črna","seagreen":"morsko zelena","darkslateblue":"temno skrilasto modra","khaki":"kaki","lightblue":"svetlo modra","palegreen":"bledo zelena","azure":"azurno modra","peachpuff":"breskova","darkolivegreen":"temna olivno zelena","yellowgreen":"rumeno-zelena"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilijona","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Prejšnje izbire","nextMessage":"Dodatne izbire"} -, -'dijit/nls/common':{"buttonOk":"V redu","buttonCancel":"Prekliči","buttonSave":"Shrani","itemClose":"Zapri"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_sv.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_sv.js.uncompressed.js deleted file mode 100644 index 29854621d..000000000 --- a/lib/dojo/nls/tt-rss-layer_sv.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_sv',{ -'dijit/form/nls/validate':{"rangeMessage":"Värdet ligger utanför intervallet.","invalidMessage":"Angivet värde är inte giltigt.","missingMessage":"Värdet krävs."} -, -'dijit/nls/loading':{"loadingState":"Läser in...","errorState":"Det har inträffat ett fel."} -, -'dojo/nls/colors':{"lightsteelblue":"ljust stålblått","orangered":"orangerött","midnightblue":"midnattsblått","cadetblue":"kadettblått","seashell":"snäckskal","slategrey":"skiffergrått","coral":"korall","darkturquoise":"mörkturkost","antiquewhite":"antikvitt","mediumspringgreen":"mellanvårgrönt","transparent":"transparent","salmon":"laxfärgat","darkgrey":"mörkgrått","ivory":"elfenbensvitt","greenyellow":"gröngult","mistyrose":"dunkelrosa","lightsalmon":"ljust laxfärgat","silver":"silver","dimgrey":"smutsgrått","orange":"orange","white":"vitt","navajowhite":"navajovitt","royalblue":"kungligt blått","deeppink":"djuprosa","lime":"lime","oldlace":"spetsvitt","chartreuse":"chartreuse","darkcyan":"mörkt cyan","yellow":"gult","linen":"linne","olive":"olivfärgat","gold":"guld","lawngreen":"gräsmattegrönt","lightyellow":"ljusgult","tan":"mellanbrunt","darkviolet":"mörkviolett","lightslategrey":"ljust skiffergrått","grey":"grått","darkkhaki":"mörkt kaki","green":"grönt","deepskyblue":"mörkt himmelsblått","aqua":"akvamarin","sienna":"sienna","mintcream":"mintgrädde","rosybrown":"rosenbrunt","mediumslateblue":"mellanskifferblått","magenta":"magenta","lightseagreen":"ljust havsgrönt","cyan":"cyan","olivedrab":"olivsmutsgult","darkgoldenrod":"mörkt gullris","slateblue":"skifferblått","mediumaquamarine":"mellanakvamarin","lavender":"lavendel","mediumseagreen":"mellanhavsgrönt","maroon":"rödbrunt","darkslategray":"mörkt skiffergrått","mediumturquoise":"mellanturkost","ghostwhite":"spökvitt","darkblue":"mörkblått","mediumvioletred":"mellanviolettrött","brown":"brunt","lightgray":"ljusgrått","sandybrown":"sandbrunt","pink":"rosa","firebrick":"tegelstensrött","indigo":"indigo","snow":"snö","darkorchid":"mörkt orkidé","turquoise":"turkost","chocolate":"choklad","springgreen":"vårgrönt","moccasin":"mockasin","navy":"marinblått","lemonchiffon":"citronchiffong","teal":"blågrönt","floralwhite":"blomvitt","cornflowerblue":"kornblått","paleturquoise":"blekturkost","purple":"lila","gainsboro":"gainsboro","plum":"plommon","red":"rött","blue":"blått","forestgreen":"skogsgrönt","darkgreen":"mörkgrönt","honeydew":"honungsdagg","darkseagreen":"mörkt havsgrönt","lightcoral":"ljuskorall","palevioletred":"blekviolettrött","mediumpurple":"mellanlila","saddlebrown":"sadelbrunt","darkmagenta":"mörk magenta","thistle":"tistel","whitesmoke":"vit rök","wheat":"vete","violet":"violett","lightskyblue":"ljust himmelsblått","goldenrod":"gullris","mediumblue":"mellanblått","skyblue":"himmelsblått","crimson":"karmosinrött","darksalmon":"mörkt laxfärgat","darkred":"mörkrött","darkslategrey":"mörkt skiffergrått","peru":"peru","lightgrey":"ljusgrått","lightgoldenrodyellow":"ljust gullrisgult","blanchedalmond":"skållad mandel","aliceblue":"aliceblå","bisque":"biskvi","slategray":"skiffergrått","palegoldenrod":"blekt gullris","darkorange":"mörkorange","aquamarine":"akvamarin","lightgreen":"ljusgrönt","burlywood":"träfärgat","dodgerblue":"dodgerblått","darkgray":"mörkgrått","lightcyan":"ljust cyan","powderblue":"pulverblått","blueviolet":"blåviolett","orchid":"orkidé","dimgray":"smutsgrått","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelskimrande","hotpink":"varmrosa","steelblue":"stålblått","tomato":"tomatrött","lightpink":"ljusrosa","limegreen":"limegrönt","indianred":"indianrött","papayawhip":"papayaröra","lightslategray":"ljust skiffergrått","gray":"grått","mediumorchid":"mellanorkidé","cornsilk":"gulvitt","black":"svart","seagreen":"havsgrönt","darkslateblue":"mörkt skifferblått","khaki":"kaki","lightblue":"ljusblått","palegreen":"blekgrönt","azure":"azurblått","peachpuff":"persika","darkolivegreen":"mörkt olivgrönt","yellowgreen":"gulgrönt"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","currencyDecimal":":","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"¤¤¤","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","currencyGroup":".","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"×10^"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Tidigare val","nextMessage":"Fler val"} -, -'dijit/nls/common':{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_th.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_th.js.uncompressed.js deleted file mode 100644 index a1d116dd2..000000000 --- a/lib/dojo/nls/tt-rss-layer_th.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_th',{ -'dijit/form/nls/validate':{"rangeMessage":"ค่านี้เกินช่วง","invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","missingMessage":"จำเป็นต้องมีค่านี้"} -, -'dijit/nls/loading':{"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด"} -, -'dojo/nls/colors':{"lightsteelblue":"น้ำเงินนวลอ่อน","orangered":"ส้มแกมแดง","midnightblue":"น้ำเงินทึบ","cadetblue":"เขียวน้ำเงินหม่น","seashell":"สีขาวหอยทะเล","slategrey":"เทาอมน้ำเงินนวล","coral":"แสดเข้มนวล","darkturquoise":"ฟ้าขี้นกการเวกเข้ม","antiquewhite":"สีเนื้อ","mediumspringgreen":"สีเขียวนวลกลางๆ","transparent":"สีใส","salmon":"ส้มอ่อน","darkgrey":"เทาเข้ม","ivory":"งาช้าง","greenyellow":"เขียวแกมเหลือง","mistyrose":"ชมพูหม่น","lightsalmon":"ส้มจาง","silver":"เงิน","dimgrey":"เทาทึม","orange":"ส้ม","white":"ขาว","navajowhite":"ส้มหนังกลับ","royalblue":"น้ำเงินเข้ม","deeppink":"ชมพูเข้ม","lime":"เหลืองมะนาว","oldlace":"ขาวนวล","chartreuse":"เขียวสะท้อนแสง","darkcyan":"เขียวแกมน้ำเงินเข้ม","yellow":"เหลือง","linen":"ลินนิน","olive":"โอลีฟ","gold":"ทอง","lawngreen":"เขียวหญ้าอ่อน","lightyellow":"เหลืองอ่อน","tan":"แทน","darkviolet":"ม่วงเข้ม","lightslategrey":"เทานวลอ่อน","grey":"เทา","darkkhaki":"กากีเข้ม","green":"เขียว","deepskyblue":"ฟ้าสด","aqua":"ฟ้าน้ำทะเล","sienna":"น้ำตาลอมแดง","mintcream":"ขาวกะทิ","rosybrown":"กะปิ","mediumslateblue":"น้ำเงินนวลกลางๆ","magenta":"แดงแกมม่วง","lightseagreen":"เขียวทะเลอ่อน","cyan":"เขียวแกมน้ำเงิน","olivedrab":"เขียวมะกอกแก่","darkgoldenrod":"ทองเหลืองเข้ม","slateblue":"น้ำเงินนวล","mediumaquamarine":"อะความารีนกลางๆ","lavender":"ม่วงลาเวนเดอร์","mediumseagreen":" เขียวทะเลกลางๆ","maroon":"น้ำตาลแดง","darkslategray":"เทานวลเข้ม","mediumturquoise":"ฟ้าขี้นกการเวกกลางๆ","ghostwhite":"น้ำข้าว","darkblue":"น้ำเงินเข้ม","mediumvioletred":"แดงอมม่วงกลางๆ","brown":"น้ำตาล","lightgray":"เทาอ่อน","sandybrown":"น้ำตาลลูกรัง","pink":"ชมพู","firebrick":"สีอิฐ","indigo":"คราม","snow":"ขาวหิมะ","darkorchid":"สีม่วงกล้วยไม้เข้ม","turquoise":"ฟ้าขี้นกการเวก","chocolate":"ช็อกโกแลต","springgreen":"เขียว","moccasin":"ม็อคค่า","navy":"น้ำเงินเข้ม","lemonchiffon":"lemon chiffon","teal":"เขียวหัวเป็ด","floralwhite":"ขาวแกมชมพู","cornflowerblue":"สีคอร์นฟลาวเวอร์บลู","paleturquoise":"ฟ้าขี้นกการเวกจาง","purple":"ม่วง","gainsboro":"เทานวล","plum":"ม่วงอ่อน","red":"แดง","blue":"น้ำเงิน","forestgreen":"หยก","darkgreen":"เขียวเข้ม","honeydew":"ขาวแกมเขียว","darkseagreen":"เขียวทะเลเข้ม","lightcoral":"ชมพูอมแดง","palevioletred":"แดงอมม่วงจาง","mediumpurple":"ม่วงอัญชัญ","saddlebrown":"น้ำตาล","darkmagenta":"แดงแกมม่วงเข้ม","thistle":"ม่วงจาง","whitesmoke":"ขาวควัน","wheat":"เหลืองรำข้าว","violet":"ม่วง","lightskyblue":"ฟ้าอ่อน","goldenrod":"ทองเหลือง","mediumblue":"น้ำเงินกลางๆ","skyblue":"ฟ้า","crimson":"แดงเลือดหมู","darksalmon":"ส้มเข้ม","darkred":"แดงเข้ม","darkslategrey":"เทานวลเข้ม","peru":"ส้มดินเผา","lightgrey":"เทาอ่อน","lightgoldenrodyellow":"ทองเหลืองอ่อน","blanchedalmond":"เนื้ออ่อน","aliceblue":"ฟ้าจาง","bisque":"ขาวข้าวสาร","slategray":"เทาอมน้ำเงินนวล","palegoldenrod":"ทองเหลืองจาง","darkorange":"ส้มเข้ม","aquamarine":"อะความารีน","lightgreen":"เขียวอ่อน","burlywood":"น้ำตาลอ่อน","dodgerblue":"ฟ้าสะท้อนแสง","darkgray":"เทาเข้ม","lightcyan":"เขียวแกมน้ำเงินอ่อน","powderblue":"ฟ้าหม่น","blueviolet":"น้ำเงินม่วง","orchid":"สีกล้วยไม้","dimgray":"เทาทึม","beige":"น้ำตาลเบจ","fuchsia":"บานเย็น","lavenderblush":"นมเย็น","hotpink":"ชมพูจัด","steelblue":"น้ำเงินด้าน","tomato":"แสด","lightpink":"ชมพูอ่อน","limegreen":"เขียวมะนาว","indianred":"แดงอมเหลือง","papayawhip":"ชมพูจาง","lightslategray":"เทานวลอ่อน","gray":"เทา","mediumorchid":"ม่วงกล้วยไม้กลางๆ","cornsilk":"cornsilk","black":"ดำ","seagreen":"เขียวทะเล","darkslateblue":"น้ำเงินนวลเข้ม","khaki":"กากี","lightblue":"น้ำเงินอ่อน","palegreen":"เขียวจาง","azure":"น้ำเงินฟ้า","peachpuff":" สีพีช","darkolivegreen":"เขียวโอลีฟเข้ม","yellowgreen":"เหลืองแกมเขียว"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 ล'.'ล'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ล้านล้าน","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"การเลือกก่อนหน้า","nextMessage":"การเลือกเพิ่มเติม"} -, -'dijit/nls/common':{"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","buttonSave":"บันทึก","itemClose":"ปิด"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_tr.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_tr.js.uncompressed.js deleted file mode 100644 index ae9b63bef..000000000 --- a/lib/dojo/nls/tt-rss-layer_tr.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_tr',{ -'dijit/form/nls/validate':{"rangeMessage":"Bu değer aralık dışında.","invalidMessage":"Girilen değer geçersiz.","missingMessage":"Bu değer gerekli."} -, -'dijit/nls/loading':{"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu"} -, -'dojo/nls/colors':{"lightsteelblue":"açık metalik mavi","orangered":"turuncu kırmızı","midnightblue":"gece mavisi","cadetblue":"denizci mavisi","seashell":"deniz kabuğu","slategrey":"arduvaz grisi","coral":"mercan","darkturquoise":"koyu turkuaz","antiquewhite":"antik beyaz","mediumspringgreen":"orta bahar yeşili","transparent":"saydam","salmon":"somon","darkgrey":"koyu gri","ivory":"fildişi","greenyellow":"yeşil-sarı","mistyrose":"gülkurusu","lightsalmon":"açık somon","silver":"gümüş","dimgrey":"soluk gri","orange":"turuncu","white":"beyaz","navajowhite":"navajo beyazı","royalblue":"parlak koyu mavi","deeppink":"koyu pembe","lime":"limon yeşili","oldlace":"eski dantel","chartreuse":"chartreuse","darkcyan":"koyu camgöbeği","yellow":"sarı","linen":"keten","olive":"zeytin","gold":"altın","lawngreen":"çimen yeşili","lightyellow":"açık sarı","tan":"güneş yanığı","darkviolet":"koyu eflatun","lightslategrey":"açık arduvaz grisi","grey":"gri","darkkhaki":"koyu haki","green":"yeşil","deepskyblue":"koyu gök mavisi","aqua":"deniz mavisi","sienna":"koyu kahve","mintcream":"naneli krem","rosybrown":"pembemsi kahverengi","mediumslateblue":"orta arduvaz mavisi","magenta":"macenta","lightseagreen":"açık deniz yeşili","cyan":"camgöbeği","olivedrab":"asker yeşili","darkgoldenrod":"koyu sarı","slateblue":"arduvaz mavisi","mediumaquamarine":"orta akuamarin","lavender":"lavanta","mediumseagreen":"orta deniz yeşili","maroon":"kestane","darkslategray":"koyu arduvaz grisi","mediumturquoise":"orta turkuaz","ghostwhite":"silik beyaz","darkblue":"koyu mavi","mediumvioletred":"orta menekşe kırmızısı","brown":"kahverengi","lightgray":"açık gri","sandybrown":"kum rengi","pink":"pembe","firebrick":"canlı kiremit","indigo":"çivit mavisi","snow":"kar","darkorchid":"koyu orkide","turquoise":"turkuaz","chocolate":"çikolata","springgreen":"bahar yeşili","moccasin":"mokosen","navy":"lacivert","lemonchiffon":"limoni","teal":"Teal mavi","floralwhite":"çiçek beyazı","cornflowerblue":"peygamber çiçeği mavisi","paleturquoise":"soluk turkuaz","purple":"mor","gainsboro":"gainsboro","plum":"erik","red":"kırmızı","blue":"mavi","forestgreen":"koyu deniz yeşili","darkgreen":"koyu yeşil","honeydew":"çam sakızı","darkseagreen":"koyu deniz yeşili","lightcoral":"açık mercan","palevioletred":"soluk menekşe kırmızısı","mediumpurple":"orta mor","saddlebrown":"açık kahve","darkmagenta":"koyu mor","thistle":"devedikeni","whitesmoke":"beyaz duman","wheat":"buğday","violet":"eflatun","lightskyblue":"açık gök mavisi","goldenrod":"sarısabır","mediumblue":"orta mavi","skyblue":"gök mavisi","crimson":"crimson","darksalmon":"koyu somon","darkred":"koyu kırmızı","darkslategrey":"koyu arduvaz grisi","peru":"peru","lightgrey":"açık gri","lightgoldenrodyellow":"açık sarısabır","blanchedalmond":"soluk badem","aliceblue":"alice mavisi","bisque":"bisküvi","slategray":"arduvaz grisi","palegoldenrod":"soluk sarısabır","darkorange":"koyu turuncu","aquamarine":"akuamarin","lightgreen":"açık yeşil","burlywood":"sarımsı kahverengi","dodgerblue":"toz mavisi","darkgray":"koyu gri","lightcyan":"açık camgöbeği","powderblue":"pudra mavisi","blueviolet":"mavi-mor","orchid":"orkide","dimgray":"soluk gri","beige":"bej","fuchsia":"fuşya","lavenderblush":"lavanta pembesi","hotpink":"sıcak pembe","steelblue":"metalik mavi","tomato":"domates","lightpink":"açık pembe","limegreen":"küf yeşili","indianred":"kızılderili kırmızısı","papayawhip":"papaya sapı","lightslategray":"açık arduvaz grisi","gray":"gri","mediumorchid":"orta orkide","cornsilk":"mısır rengi","black":"siyah","seagreen":"deniz yeşili","darkslateblue":"koyu arduvaz mavisi","khaki":"haki","lightblue":"açık mavi","palegreen":"soluk yeşil","azure":"azur mavisi","peachpuff":"açık şeftali","darkolivegreen":"koyu zeytin yeşili","yellowgreen":"sarı yeşil"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":".","percentFormat":"%#,##0","decimalFormat-long":"000 trilyon","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"Önceki seçenekler","nextMessage":"Diğer seçenekler"} -, -'dijit/nls/common':{"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_zh-cn.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_zh-cn.js.uncompressed.js deleted file mode 100644 index abc77b154..000000000 --- a/lib/dojo/nls/tt-rss-layer_zh-cn.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_zh-cn',{ -'dijit/form/nls/validate':{"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"该值是必需的。"} -, -'dijit/nls/loading':{"loadingState":"正在加载...","errorState":"对不起,发生了错误"} -, -'dojo/nls/colors':{"lightsteelblue":"浅钢蓝色","orangered":"橙红色","midnightblue":"深蓝色","cadetblue":"灰蓝色","seashell":"海贝色","slategrey":"灰石色","coral":"珊瑚色","darkturquoise":"深粉蓝","antiquewhite":"古董白","mediumspringgreen":"间春绿色","transparent":"透明的","salmon":"橙红","darkgrey":"深灰色","ivory":"象牙色","greenyellow":"绿黄色","mistyrose":"浅玫瑰色","lightsalmon":"淡橙色","silver":"银白色","dimgrey":"暗灰色","orange":"橙色","white":"白色","navajowhite":"纳瓦白","royalblue":"品蓝","deeppink":"深粉红色","lime":"淡黄绿色","oldlace":"老白色","chartreuse":"黄绿色","darkcyan":"深青绿","yellow":"黄色","linen":"亚麻色","olive":"橄榄绿","gold":"金黄色","lawngreen":"草绿色","lightyellow":"浅黄色","tan":"棕褐色","darkviolet":"深紫色","lightslategrey":"浅青灰","grey":"灰色","darkkhaki":"深卡其色","green":"绿色","deepskyblue":"深天蓝色","aqua":"浅绿色","sienna":"赭色","mintcream":"薄荷色","rosybrown":"褐玫瑰红","mediumslateblue":"间暗蓝色","magenta":"洋红色","lightseagreen":"浅海藻绿","cyan":"青蓝色","olivedrab":"草绿色","darkgoldenrod":"深金黄","slateblue":"石蓝色","mediumaquamarine":"间绿色","lavender":"淡紫色","mediumseagreen":"间海蓝色","maroon":"栗色","darkslategray":"深青灰","mediumturquoise":"间绿宝石色","ghostwhite":"苍白","darkblue":"深蓝","mediumvioletred":"间紫罗兰色","brown":"棕色","lightgray":"浅灰色","sandybrown":"沙褐色","pink":"粉红色","firebrick":"砖红","indigo":"靛青","snow":"雪白色","darkorchid":"深紫色","turquoise":"绿宝石色","chocolate":"巧克力色","springgreen":"春绿色","moccasin":"鹿皮色","navy":"藏青色","lemonchiffon":"柠檬绸色","teal":"水鸭色","floralwhite":"花白色","cornflowerblue":"浅蓝色","paleturquoise":"苍绿色","purple":"紫色","gainsboro":"淡灰色","plum":"杨李色","red":"红色","blue":"蓝色","forestgreen":"森林绿","darkgreen":"深绿色","honeydew":"蜜汁色","darkseagreen":"深海藻绿","lightcoral":"浅珊瑚色","palevioletred":"苍紫罗兰色","mediumpurple":"间紫色","saddlebrown":"重褐色","darkmagenta":"深洋红色","thistle":"蓟色","whitesmoke":"烟白色","wheat":"浅黄色","violet":"紫色","lightskyblue":"浅天蓝色","goldenrod":"金麒麟色","mediumblue":"间蓝色","skyblue":"天蓝色","crimson":"绯红色","darksalmon":"深橙红","darkred":"深红色","darkslategrey":"深青灰","peru":"秘鲁色","lightgrey":"浅灰色","lightgoldenrodyellow":"浅金黄色","blanchedalmond":"白杏色","aliceblue":"爱丽丝蓝","bisque":"桔黄色","slategray":"灰石色","palegoldenrod":"淡金黄色","darkorange":"深橙色","aquamarine":"碧绿色","lightgreen":"浅绿色","burlywood":"实木色","dodgerblue":"闪蓝色","darkgray":"深灰色","lightcyan":"浅青色","powderblue":"铁蓝","blueviolet":"蓝紫色","orchid":"紫色","dimgray":"暗灰色","beige":"米色","fuchsia":"紫红色","lavenderblush":"淡紫红","hotpink":"深粉红","steelblue":"钢蓝色","tomato":"西红柿色","lightpink":"浅粉红色","limegreen":"橙绿色","indianred":"印度红","papayawhip":"木瓜色","lightslategray":"浅青灰","gray":"灰色","mediumorchid":"间紫色","cornsilk":"米绸色","black":"黑色","seagreen":"海绿色","darkslateblue":"深青蓝","khaki":"卡其色","lightblue":"淡蓝色","palegreen":"淡绿色","azure":"天蓝色","peachpuff":"桃色","darkolivegreen":"深橄榄绿","yellowgreen":"黄绿色"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"先前选项","nextMessage":"更多选项"} -, -'dijit/nls/common':{"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/tt-rss-layer_zh-tw.js.uncompressed.js b/lib/dojo/nls/tt-rss-layer_zh-tw.js.uncompressed.js deleted file mode 100644 index 6c99033db..000000000 --- a/lib/dojo/nls/tt-rss-layer_zh-tw.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define('dojo/nls/tt-rss-layer_zh-tw',{ -'dijit/form/nls/validate':{"rangeMessage":"此值超出範圍。","invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。"} -, -'dijit/nls/loading':{"loadingState":"載入中...","errorState":"抱歉,發生錯誤"} -, -'dojo/nls/colors':{"lightsteelblue":"淡鐵藍色","orangered":"橙紅色","midnightblue":"午夜藍","cadetblue":"軍服藍","seashell":"海貝色","slategrey":"岩灰色","coral":"珊瑚紅","darkturquoise":"暗松石綠","antiquewhite":"米白色","mediumspringgreen":"中春綠色","transparent":"透明","salmon":"鮭紅色","darkgrey":"暗灰色","ivory":"象牙色","greenyellow":"綠黃色","mistyrose":"霧玫瑰色","lightsalmon":"淡鮭紅","silver":"銀色","dimgrey":"昏灰色","orange":"橙色","white":"白色","navajowhite":"印地安黃色","royalblue":"品藍色","deeppink":"深粉紅色","lime":"檸檬色","oldlace":"舊蕾絲色","chartreuse":"淡黃綠色","darkcyan":"暗青色","yellow":"黃色","linen":"亞麻色","olive":"橄欖色","gold":"金色","lawngreen":"草綠色","lightyellow":"淡黃色","tan":"皮革色","darkviolet":"暗紫羅蘭色","lightslategrey":"淡岩灰色","grey":"灰色","darkkhaki":"暗卡其色","green":"綠色","deepskyblue":"深天藍色","aqua":"水色","sienna":"黃土赭色","mintcream":"薄荷乳白色","rosybrown":"玫瑰褐","mediumslateblue":"中岩藍色","magenta":"紫紅色","lightseagreen":"淡海綠色","cyan":"青色","olivedrab":"橄欖綠","darkgoldenrod":"暗金菊色","slateblue":"岩藍色","mediumaquamarine":"中碧綠色","lavender":"薰衣草紫","mediumseagreen":"中海綠色","maroon":"栗色","darkslategray":"暗岩灰色","mediumturquoise":"中松石綠","ghostwhite":"幽靈色","darkblue":"暗藍色","mediumvioletred":"中紫羅蘭紅","brown":"褐色","lightgray":"淡灰色","sandybrown":"沙褐色","pink":"粉紅色","firebrick":"紅磚色","indigo":"靛藍色","snow":"雪白色","darkorchid":"暗蘭花色","turquoise":"松石綠","chocolate":"巧克力色","springgreen":"春綠色","moccasin":"鹿皮黃色","navy":"海軍藍","lemonchiffon":"奶油黃","teal":"深藍綠色","floralwhite":"花卉白","cornflowerblue":"矢車菊藍","paleturquoise":"灰松石綠","purple":"紫色","gainsboro":"石板灰","plum":"李紫色","red":"紅色","blue":"藍色","forestgreen":"森綠色","darkgreen":"暗綠色","honeydew":"密瓜色","darkseagreen":"暗海綠色","lightcoral":"淡珊瑚紅","palevioletred":"灰紫羅蘭紅","mediumpurple":"中紫色","saddlebrown":"鞍褐色","darkmagenta":"暗紫紅色","thistle":"薊色","whitesmoke":"白煙色","wheat":"小麥色","violet":"紫羅蘭色","lightskyblue":"淡天藍色","goldenrod":"金菊色","mediumblue":"中藍色","skyblue":"天藍色","crimson":"暗深紅色","darksalmon":"暗鮭紅","darkred":"暗紅色","darkslategrey":"暗岩灰色","peru":"祕魯色","lightgrey":"淡灰色","lightgoldenrodyellow":"淡金菊黃","blanchedalmond":"杏仁白","aliceblue":"愛麗絲藍","bisque":"橘黃色","slategray":"岩灰色","palegoldenrod":"灰金菊色","darkorange":"暗橙色","aquamarine":"碧綠色","lightgreen":"淡綠色","burlywood":"實木色","dodgerblue":"道奇藍","darkgray":"暗灰色","lightcyan":"淡青色","powderblue":"粉藍色","blueviolet":"藍紫色","orchid":"蘭花色","dimgray":"昏灰色","beige":"灰棕色","fuchsia":"海棠紅","lavenderblush":"薰衣草紫紅","hotpink":"暖粉紅色","steelblue":"鐵藍色","tomato":"蕃茄紅","lightpink":"淡粉紅色","limegreen":"檸檬綠","indianred":"印度紅","papayawhip":"番木瓜色","lightslategray":"淡岩灰色","gray":"灰色","mediumorchid":"中蘭紫色","cornsilk":"玉米黃","black":"黑色","seagreen":"海綠色","darkslateblue":"暗岩藍色","khaki":"卡其色","lightblue":"淡藍色","palegreen":"灰綠色","azure":"天藍色","peachpuff":"粉撲桃色","darkolivegreen":"暗橄欖綠","yellowgreen":"黃綠色"} -, -'dojo/cldr/nls/number':{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"非數值","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"} -, -'dijit/form/nls/ComboBox':{"previousMessage":"前一個選擇項","nextMessage":"其他選擇項"} -, -'dijit/nls/common':{"buttonOk":"確定","buttonCancel":"取消","buttonSave":"儲存","itemClose":"關閉"} -}); \ No newline at end of file diff --git a/lib/dojo/nls/zh-tw/colors.js.uncompressed.js b/lib/dojo/nls/zh-tw/colors.js.uncompressed.js deleted file mode 100644 index 5d8ce27b2..000000000 --- a/lib/dojo/nls/zh-tw/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/zh-tw/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "愛麗絲藍", - antiquewhite: "米白色", - aqua: "水色", - aquamarine: "碧綠色", - azure: "天藍色", - beige: "灰棕色", - bisque: "橘黃色", - black: "黑色", - blanchedalmond: "杏仁白", - blue: "藍色", - blueviolet: "藍紫色", - brown: "褐色", - burlywood: "實木色", - cadetblue: "軍服藍", - chartreuse: "淡黃綠色", - chocolate: "巧克力色", - coral: "珊瑚紅", - cornflowerblue: "矢車菊藍", - cornsilk: "玉米黃", - crimson: "暗深紅色", - cyan: "青色", - darkblue: "暗藍色", - darkcyan: "暗青色", - darkgoldenrod: "暗金菊色", - darkgray: "暗灰色", - darkgreen: "暗綠色", - darkgrey: "暗灰色", // same as darkgray - darkkhaki: "暗卡其色", - darkmagenta: "暗紫紅色", - darkolivegreen: "暗橄欖綠", - darkorange: "暗橙色", - darkorchid: "暗蘭花色", - darkred: "暗紅色", - darksalmon: "暗鮭紅", - darkseagreen: "暗海綠色", - darkslateblue: "暗岩藍色", - darkslategray: "暗岩灰色", - darkslategrey: "暗岩灰色", // same as darkslategray - darkturquoise: "暗松石綠", - darkviolet: "暗紫羅蘭色", - deeppink: "深粉紅色", - deepskyblue: "深天藍色", - dimgray: "昏灰色", - dimgrey: "昏灰色", // same as dimgray - dodgerblue: "道奇藍", - firebrick: "紅磚色", - floralwhite: "花卉白", - forestgreen: "森綠色", - fuchsia: "海棠紅", - gainsboro: "石板灰", - ghostwhite: "幽靈色", - gold: "金色", - goldenrod: "金菊色", - gray: "灰色", - green: "綠色", - greenyellow: "綠黃色", - grey: "灰色", // same as gray - honeydew: "密瓜色", - hotpink: "暖粉紅色", - indianred: "印度紅", - indigo: "靛藍色", - ivory: "象牙色", - khaki: "卡其色", - lavender: "薰衣草紫", - lavenderblush: "薰衣草紫紅", - lawngreen: "草綠色", - lemonchiffon: "奶油黃", - lightblue: "淡藍色", - lightcoral: "淡珊瑚紅", - lightcyan: "淡青色", - lightgoldenrodyellow: "淡金菊黃", - lightgray: "淡灰色", - lightgreen: "淡綠色", - lightgrey: "淡灰色", // same as lightgray - lightpink: "淡粉紅色", - lightsalmon: "淡鮭紅", - lightseagreen: "淡海綠色", - lightskyblue: "淡天藍色", - lightslategray: "淡岩灰色", - lightslategrey: "淡岩灰色", // same as lightslategray - lightsteelblue: "淡鐵藍色", - lightyellow: "淡黃色", - lime: "檸檬色", - limegreen: "檸檬綠", - linen: "亞麻色", - magenta: "紫紅色", - maroon: "栗色", - mediumaquamarine: "中碧綠色", - mediumblue: "中藍色", - mediumorchid: "中蘭紫色", - mediumpurple: "中紫色", - mediumseagreen: "中海綠色", - mediumslateblue: "中岩藍色", - mediumspringgreen: "中春綠色", - mediumturquoise: "中松石綠", - mediumvioletred: "中紫羅蘭紅", - midnightblue: "午夜藍", - mintcream: "薄荷乳白色", - mistyrose: "霧玫瑰色", - moccasin: "鹿皮黃色", - navajowhite: "印地安黃色", - navy: "海軍藍", - oldlace: "舊蕾絲色", - olive: "橄欖色", - olivedrab: "橄欖綠", - orange: "橙色", - orangered: "橙紅色", - orchid: "蘭花色", - palegoldenrod: "灰金菊色", - palegreen: "灰綠色", - paleturquoise: "灰松石綠", - palevioletred: "灰紫羅蘭紅", - papayawhip: "番木瓜色", - peachpuff: "粉撲桃色", - peru: "祕魯色", - pink: "粉紅色", - plum: "李紫色", - powderblue: "粉藍色", - purple: "紫色", - red: "紅色", - rosybrown: "玫瑰褐", - royalblue: "品藍色", - saddlebrown: "鞍褐色", - salmon: "鮭紅色", - sandybrown: "沙褐色", - seagreen: "海綠色", - seashell: "海貝色", - sienna: "黃土赭色", - silver: "銀色", - skyblue: "天藍色", - slateblue: "岩藍色", - slategray: "岩灰色", - slategrey: "岩灰色", // same as slategray - snow: "雪白色", - springgreen: "春綠色", - steelblue: "鐵藍色", - tan: "皮革色", - teal: "深藍綠色", - thistle: "薊色", - tomato: "蕃茄紅", - transparent: "透明", - turquoise: "松石綠", - violet: "紫羅蘭色", - wheat: "小麥色", - white: "白色", - whitesmoke: "白煙色", - yellow: "黃色", - yellowgreen: "黃綠色" -}) -); diff --git a/lib/dojo/nls/zh/colors.js.uncompressed.js b/lib/dojo/nls/zh/colors.js.uncompressed.js deleted file mode 100644 index 4449d4134..000000000 --- a/lib/dojo/nls/zh/colors.js.uncompressed.js +++ /dev/null @@ -1,156 +0,0 @@ -define( -"dojo/nls/zh/colors", ({ -// local representation of all CSS3 named colors, companion to dojo.colors. To be used where descriptive information -// is required for each color, such as a palette widget, and not for specifying color programatically. - //Note: due to the SVG 1.0 spec additions, some of these are alternate spellings for the same color (e.g. gray / grey). - //TODO: should we be using unique rgb values as keys instead and avoid these duplicates, or rely on the caller to do the reverse mapping? - aliceblue: "爱丽丝蓝", - antiquewhite: "古董白", - aqua: "浅绿色", - aquamarine: "碧绿色", - azure: "天蓝色", - beige: "米色", - bisque: "桔黄色", - black: "黑色", - blanchedalmond: "白杏色", - blue: "蓝色", - blueviolet: "蓝紫色", - brown: "棕色", - burlywood: "实木色", - cadetblue: "灰蓝色", - chartreuse: "黄绿色", - chocolate: "巧克力色", - coral: "珊瑚色", - cornflowerblue: "浅蓝色", - cornsilk: "米绸色", - crimson: "绯红色", - cyan: "青蓝色", - darkblue: "深蓝", - darkcyan: "深青绿", - darkgoldenrod: "深金黄", - darkgray: "深灰色", - darkgreen: "深绿色", - darkgrey: "深灰色", // same as darkgray - darkkhaki: "深卡其色", - darkmagenta: "深洋红色", - darkolivegreen: "深橄榄绿", - darkorange: "深橙色", - darkorchid: "深紫色", - darkred: "深红色", - darksalmon: "深橙红", - darkseagreen: "深海藻绿", - darkslateblue: "深青蓝", - darkslategray: "深青灰", - darkslategrey: "深青灰", // same as darkslategray - darkturquoise: "深粉蓝", - darkviolet: "深紫色", - deeppink: "深粉红色", - deepskyblue: "深天蓝色", - dimgray: "暗灰色", - dimgrey: "暗灰色", // same as dimgray - dodgerblue: "闪蓝色", - firebrick: "砖红", - floralwhite: "花白色", - forestgreen: "森林绿", - fuchsia: "紫红色", - gainsboro: "淡灰色", - ghostwhite: "苍白", - gold: "金黄色", - goldenrod: "金麒麟色", - gray: "灰色", - green: "绿色", - greenyellow: "绿黄色", - grey: "灰色", // same as gray - honeydew: "蜜汁色", - hotpink: "深粉红", - indianred: "印度红", - indigo: "靛青", - ivory: "象牙色", - khaki: "卡其色", - lavender: "淡紫色", - lavenderblush: "淡紫红", - lawngreen: "草绿色", - lemonchiffon: "柠檬绸色", - lightblue: "淡蓝色", - lightcoral: "浅珊瑚色", - lightcyan: "浅青色", - lightgoldenrodyellow: "浅金黄色", - lightgray: "浅灰色", - lightgreen: "浅绿色", - lightgrey: "浅灰色", // same as lightgray - lightpink: "浅粉红色", - lightsalmon: "淡橙色", - lightseagreen: "浅海藻绿", - lightskyblue: "浅天蓝色", - lightslategray: "浅青灰", - lightslategrey: "浅青灰", // same as lightslategray - lightsteelblue: "浅钢蓝色", - lightyellow: "浅黄色", - lime: "淡黄绿色", - limegreen: "橙绿色", - linen: "亚麻色", - magenta: "洋红色", - maroon: "栗色", - mediumaquamarine: "间绿色", - mediumblue: "间蓝色", - mediumorchid: "间紫色", - mediumpurple: "间紫色", - mediumseagreen: "间海蓝色", - mediumslateblue: "间暗蓝色", - mediumspringgreen: "间春绿色", - mediumturquoise: "间绿宝石色", - mediumvioletred: "间紫罗兰色", - midnightblue: "深蓝色", - mintcream: "薄荷色", - mistyrose: "浅玫瑰色", - moccasin: "鹿皮色", - navajowhite: "纳瓦白", - navy: "藏青色", - oldlace: "老白色", - olive: "橄榄绿", - olivedrab: "草绿色", - orange: "橙色", - orangered: "橙红色", - orchid: "紫色", - palegoldenrod: "淡金黄色", - palegreen: "淡绿色", - paleturquoise: "苍绿色", - palevioletred: "苍紫罗兰色", - papayawhip: "木瓜色", - peachpuff: "桃色", - peru: "秘鲁色", - pink: "粉红色", - plum: "杨李色", - powderblue: "铁蓝", - purple: "紫色", - red: "红色", - rosybrown: "褐玫瑰红", - royalblue: "品蓝", - saddlebrown: "重褐色", - salmon: "橙红", - sandybrown: "沙褐色", - seagreen: "海绿色", - seashell: "海贝色", - sienna: "赭色", - silver: "银白色", - skyblue: "天蓝色", - slateblue: "石蓝色", - slategray: "灰石色", - slategrey: "灰石色", // same as slategray - snow: "雪白色", - springgreen: "春绿色", - steelblue: "钢蓝色", - tan: "棕褐色", - teal: "水鸭色", - thistle: "蓟色", - tomato: "西红柿色", - transparent: "透明的", - turquoise: "绿宝石色", - violet: "紫色", - wheat: "浅黄色", - white: "白色", - whitesmoke: "烟白色", - yellow: "黄色", - yellowgreen: "黄绿色" -}) -); diff --git a/lib/dojo/node.js.uncompressed.js b/lib/dojo/node.js.uncompressed.js deleted file mode 100644 index e7706668b..000000000 --- a/lib/dojo/node.js.uncompressed.js +++ /dev/null @@ -1,27 +0,0 @@ -define("dojo/node", ["dojo/has"], function(has){ - if(! 0 ){ - throw new Error("node plugin failed to load because environment is not Node.js"); - } - - return { - // summary: - // This AMD plugin module allows native Node.js modules to be loaded by AMD modules using the Dojo - // loader. Note that this plugin will not work with AMD loaders other than the Dojo loader. - // example: - // | require(["dojo/node!fs"], function(fs){ - // | var fileData = fs.readFileSync("foo.txt", "utf-8"); - // | }); - - load: function(/*string*/ id, /*Function*/ require, /*Function*/ load){ - // summary: - // Standard AMD plugin interface. See https://github.com/amdjs/amdjs-api/wiki/Loader-Plugins - // for information. - - if(!require.nodeRequire){ - throw new Error("Cannot find native require function"); - } - - load(require.nodeRequire(id)); - } - }; -}); \ No newline at end of file diff --git a/lib/dojo/number.js.uncompressed.js b/lib/dojo/number.js.uncompressed.js deleted file mode 100644 index 0f52cc1e6..000000000 --- a/lib/dojo/number.js.uncompressed.js +++ /dev/null @@ -1,553 +0,0 @@ -define("dojo/number", [/*===== "./_base/declare", =====*/ "./_base/lang", "./i18n", "./i18n!./cldr/nls/number", "./string", "./regexp"], - function(/*===== declare, =====*/ lang, i18n, nlsNumber, dstring, dregexp){ - -// module: -// dojo/number - -var number = { - // summary: - // localized formatting and parsing routines for Number -}; -lang.setObject("dojo.number", number); - -/*===== -number.__FormatOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. Literal characters in patterns are not supported. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // places: Number? - // fixed number of decimal places to show. This overrides any - // information in the provided pattern. - // round: Number? - // 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1 - // means do not round. - // locale: String? - // override the locale used to determine formatting rules - // fractional: Boolean? - // If false, show no decimal places, overriding places and pattern settings. -}); -=====*/ - -number.format = function(/*Number*/ value, /*number.__FormatOptions?*/ options){ - // summary: - // Format a Number as a String, using locale-specific settings - // description: - // Create a string from a Number using a known localized pattern. - // Formatting patterns appropriate to the locale are chosen from the - // [Common Locale Data Repository](http://unicode.org/cldr) as well as the appropriate symbols and - // delimiters. - // If value is Infinity, -Infinity, or is not a valid JavaScript number, return null. - // value: - // the number to be formatted - - options = lang.mixin({}, options || {}); - var locale = i18n.normalizeLocale(options.locale), - bundle = i18n.getLocalization("dojo.cldr", "number", locale); - options.customs = bundle; - var pattern = options.pattern || bundle[(options.type || "decimal") + "Format"]; - if(isNaN(value) || Math.abs(value) == Infinity){ return null; } // null - return number._applyPattern(value, pattern, options); // String -}; - -//number._numberPatternRE = /(?:[#0]*,?)*[#0](?:\.0*#*)?/; // not precise, but good enough -number._numberPatternRE = /[#0,]*[#0](?:\.0*#*)?/; // not precise, but good enough - -number._applyPattern = function(/*Number*/ value, /*String*/ pattern, /*number.__FormatOptions?*/ options){ - // summary: - // Apply pattern to format value as a string using options. Gives no - // consideration to local customs. - // value: - // the number to be formatted. - // pattern: - // a pattern string as described by - // [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // options: number.__FormatOptions? - // _applyPattern is usually called via `dojo/number.format()` which - // populates an extra property in the options parameter, "customs". - // The customs object specifies group and decimal parameters if set. - - //TODO: support escapes - options = options || {}; - var group = options.customs.group, - decimal = options.customs.decimal, - patternList = pattern.split(';'), - positivePattern = patternList[0]; - pattern = patternList[(value < 0) ? 1 : 0] || ("-" + positivePattern); - - //TODO: only test against unescaped - if(pattern.indexOf('%') != -1){ - value *= 100; - }else if(pattern.indexOf('\u2030') != -1){ - value *= 1000; // per mille - }else if(pattern.indexOf('\u00a4') != -1){ - group = options.customs.currencyGroup || group;//mixins instead? - decimal = options.customs.currencyDecimal || decimal;// Should these be mixins instead? - pattern = pattern.replace(/\u00a4{1,3}/, function(match){ - var prop = ["symbol", "currency", "displayName"][match.length-1]; - return options[prop] || options.currency || ""; - }); - }else if(pattern.indexOf('E') != -1){ - throw new Error("exponential notation not supported"); - } - - //TODO: support @ sig figs? - var numberPatternRE = number._numberPatternRE; - var numberPattern = positivePattern.match(numberPatternRE); - if(!numberPattern){ - throw new Error("unable to find a number expression in pattern: "+pattern); - } - if(options.fractional === false){ options.places = 0; } - return pattern.replace(numberPatternRE, - number._formatAbsolute(value, numberPattern[0], {decimal: decimal, group: group, places: options.places, round: options.round})); -}; - -number.round = function(/*Number*/ value, /*Number?*/ places, /*Number?*/ increment){ - // summary: - // Rounds to the nearest value with the given number of decimal places, away from zero - // description: - // Rounds to the nearest value with the given number of decimal places, away from zero if equal. - // Similar to Number.toFixed(), but compensates for browser quirks. Rounding can be done by - // fractional increments also, such as the nearest quarter. - // NOTE: Subject to floating point errors. See dojox/math/round for experimental workaround. - // value: - // The number to round - // places: - // The number of decimal places where rounding takes place. Defaults to 0 for whole rounding. - // Must be non-negative. - // increment: - // Rounds next place to nearest value of increment/10. 10 by default. - // example: - // | >>> number.round(-0.5) - // | -1 - // | >>> number.round(162.295, 2) - // | 162.29 // note floating point error. Should be 162.3 - // | >>> number.round(10.71, 0, 2.5) - // | 10.75 - var factor = 10 / (increment || 10); - return (factor * +value).toFixed(places) / factor; // Number -}; - -if((0.9).toFixed() == 0){ - // (isIE) toFixed() bug workaround: Rounding fails on IE when most significant digit - // is just after the rounding place and is >=5 - var round = number.round; - number.round = function(v, p, m){ - var d = Math.pow(10, -p || 0), a = Math.abs(v); - if(!v || a >= d){ - d = 0; - }else{ - a /= d; - if(a < 0.5 || a >= 0.95){ - d = 0; - } - } - return round(v, p, m) + (v > 0 ? d : -d); - }; - - // Use "doc hint" so the doc parser ignores this new definition of round(), and uses the one above. - /*===== number.round = round; =====*/ -} - -/*===== -number.__FormatAbsoluteOptions = declare(null, { - // decimal: String? - // the decimal separator - // group: String? - // the group separator - // places: Number|String? - // number of decimal places. the range "n,m" will format to m places. - // round: Number? - // 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1 - // means don't round. -}); -=====*/ - -number._formatAbsolute = function(/*Number*/ value, /*String*/ pattern, /*number.__FormatAbsoluteOptions?*/ options){ - // summary: - // Apply numeric pattern to absolute value using options. Gives no - // consideration to local customs. - // value: - // the number to be formatted, ignores sign - // pattern: - // the number portion of a pattern (e.g. `#,##0.00`) - options = options || {}; - if(options.places === true){options.places=0;} - if(options.places === Infinity){options.places=6;} // avoid a loop; pick a limit - - var patternParts = pattern.split("."), - comma = typeof options.places == "string" && options.places.indexOf(","), - maxPlaces = options.places; - if(comma){ - maxPlaces = options.places.substring(comma + 1); - }else if(!(maxPlaces >= 0)){ - maxPlaces = (patternParts[1] || []).length; - } - if(!(options.round < 0)){ - value = number.round(value, maxPlaces, options.round); - } - - var valueParts = String(Math.abs(value)).split("."), - fractional = valueParts[1] || ""; - if(patternParts[1] || options.places){ - if(comma){ - options.places = options.places.substring(0, comma); - } - // Pad fractional with trailing zeros - var pad = options.places !== undefined ? options.places : (patternParts[1] && patternParts[1].lastIndexOf("0") + 1); - if(pad > fractional.length){ - valueParts[1] = dstring.pad(fractional, pad, '0', true); - } - - // Truncate fractional - if(maxPlaces < fractional.length){ - valueParts[1] = fractional.substr(0, maxPlaces); - } - }else{ - if(valueParts[1]){ valueParts.pop(); } - } - - // Pad whole with leading zeros - var patternDigits = patternParts[0].replace(',', ''); - pad = patternDigits.indexOf("0"); - if(pad != -1){ - pad = patternDigits.length - pad; - if(pad > valueParts[0].length){ - valueParts[0] = dstring.pad(valueParts[0], pad); - } - - // Truncate whole - if(patternDigits.indexOf("#") == -1){ - valueParts[0] = valueParts[0].substr(valueParts[0].length - pad); - } - } - - // Add group separators - var index = patternParts[0].lastIndexOf(','), - groupSize, groupSize2; - if(index != -1){ - groupSize = patternParts[0].length - index - 1; - var remainder = patternParts[0].substr(0, index); - index = remainder.lastIndexOf(','); - if(index != -1){ - groupSize2 = remainder.length - index - 1; - } - } - var pieces = []; - for(var whole = valueParts[0]; whole;){ - var off = whole.length - groupSize; - pieces.push((off > 0) ? whole.substr(off) : whole); - whole = (off > 0) ? whole.slice(0, off) : ""; - if(groupSize2){ - groupSize = groupSize2; - delete groupSize2; - } - } - valueParts[0] = pieces.reverse().join(options.group || ","); - - return valueParts.join(options.decimal || "."); -}; - -/*===== -number.__RegexpOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // locale: String? - // override the locale used to determine formatting rules - // strict: Boolean? - // strict parsing, false by default. Strict parsing requires input as produced by the format() method. - // Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators - // places: Number|String? - // number of decimal places to accept: Infinity, a positive number, or - // a range "n,m". Defined by pattern or Infinity if pattern not provided. -}); -=====*/ -number.regexp = function(/*number.__RegexpOptions?*/ options){ - // summary: - // Builds the regular needed to parse a number - // description: - // Returns regular expression with positive and negative match, group - // and decimal separators - return number._parseInfo(options).regexp; // String -}; - -number._parseInfo = function(/*Object?*/ options){ - options = options || {}; - var locale = i18n.normalizeLocale(options.locale), - bundle = i18n.getLocalization("dojo.cldr", "number", locale), - pattern = options.pattern || bundle[(options.type || "decimal") + "Format"], -//TODO: memoize? - group = bundle.group, - decimal = bundle.decimal, - factor = 1; - - if(pattern.indexOf('%') != -1){ - factor /= 100; - }else if(pattern.indexOf('\u2030') != -1){ - factor /= 1000; // per mille - }else{ - var isCurrency = pattern.indexOf('\u00a4') != -1; - if(isCurrency){ - group = bundle.currencyGroup || group; - decimal = bundle.currencyDecimal || decimal; - } - } - - //TODO: handle quoted escapes - var patternList = pattern.split(';'); - if(patternList.length == 1){ - patternList.push("-" + patternList[0]); - } - - var re = dregexp.buildGroupRE(patternList, function(pattern){ - pattern = "(?:"+dregexp.escapeString(pattern, '.')+")"; - return pattern.replace(number._numberPatternRE, function(format){ - var flags = { - signed: false, - separator: options.strict ? group : [group,""], - fractional: options.fractional, - decimal: decimal, - exponent: false - }, - - parts = format.split('.'), - places = options.places; - - // special condition for percent (factor != 1) - // allow decimal places even if not specified in pattern - if(parts.length == 1 && factor != 1){ - parts[1] = "###"; - } - if(parts.length == 1 || places === 0){ - flags.fractional = false; - }else{ - if(places === undefined){ places = options.pattern ? parts[1].lastIndexOf('0') + 1 : Infinity; } - if(places && options.fractional == undefined){flags.fractional = true;} // required fractional, unless otherwise specified - if(!options.places && (places < parts[1].length)){ places += "," + parts[1].length; } - flags.places = places; - } - var groups = parts[0].split(','); - if(groups.length > 1){ - flags.groupSize = groups.pop().length; - if(groups.length > 1){ - flags.groupSize2 = groups.pop().length; - } - } - return "("+number._realNumberRegexp(flags)+")"; - }); - }, true); - - if(isCurrency){ - // substitute the currency symbol for the placeholder in the pattern - re = re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g, function(match, before, target, after){ - var prop = ["symbol", "currency", "displayName"][target.length-1], - symbol = dregexp.escapeString(options[prop] || options.currency || ""); - before = before ? "[\\s\\xa0]" : ""; - after = after ? "[\\s\\xa0]" : ""; - if(!options.strict){ - if(before){before += "*";} - if(after){after += "*";} - return "(?:"+before+symbol+after+")?"; - } - return before+symbol+after; - }); - } - -//TODO: substitute localized sign/percent/permille/etc.? - - // normalize whitespace and return - return {regexp: re.replace(/[\xa0 ]/g, "[\\s\\xa0]"), group: group, decimal: decimal, factor: factor}; // Object -}; - -/*===== -number.__ParseOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. Literal characters in patterns are not supported. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // locale: String? - // override the locale used to determine formatting rules - // strict: Boolean? - // strict parsing, false by default. Strict parsing requires input as produced by the format() method. - // Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators - // fractional: Boolean|Array? - // Whether to include the fractional portion, where the number of decimal places are implied by pattern - // or explicit 'places' parameter. The value [true,false] makes the fractional portion optional. -}); -=====*/ -number.parse = function(/*String*/ expression, /*number.__ParseOptions?*/ options){ - // summary: - // Convert a properly formatted string to a primitive Number, using - // locale-specific settings. - // description: - // Create a Number from a string using a known localized pattern. - // Formatting patterns are chosen appropriate to the locale - // and follow the syntax described by - // [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // Note that literal characters in patterns are not supported. - // expression: - // A string representation of a Number - var info = number._parseInfo(options), - results = (new RegExp("^"+info.regexp+"$")).exec(expression); - if(!results){ - return NaN; //NaN - } - var absoluteMatch = results[1]; // match for the positive expression - if(!results[1]){ - if(!results[2]){ - return NaN; //NaN - } - // matched the negative pattern - absoluteMatch =results[2]; - info.factor *= -1; - } - - // Transform it to something Javascript can parse as a number. Normalize - // decimal point and strip out group separators or alternate forms of whitespace - absoluteMatch = absoluteMatch. - replace(new RegExp("["+info.group + "\\s\\xa0"+"]", "g"), ""). - replace(info.decimal, "."); - // Adjust for negative sign, percent, etc. as necessary - return absoluteMatch * info.factor; //Number -}; - -/*===== -number.__RealNumberRegexpFlags = declare(null, { - // places: Number? - // The integer number of decimal places or a range given as "n,m". If - // not given, the decimal part is optional and the number of places is - // unlimited. - // decimal: String? - // A string for the character used as the decimal point. Default - // is ".". - // fractional: Boolean|Array? - // Whether decimal places are used. Can be true, false, or [true, - // false]. Default is [true, false] which means optional. - // exponent: Boolean|Array? - // Express in exponential notation. Can be true, false, or [true, - // false]. Default is [true, false], (i.e. will match if the - // exponential part is present are not). - // eSigned: Boolean|Array? - // The leading plus-or-minus sign on the exponent. Can be true, - // false, or [true, false]. Default is [true, false], (i.e. will - // match if it is signed or unsigned). flags in regexp.integer can be - // applied. -}); -=====*/ - -number._realNumberRegexp = function(/*__RealNumberRegexpFlags?*/ flags){ - // summary: - // Builds a regular expression to match a real number in exponential - // notation - - // assign default values to missing parameters - flags = flags || {}; - //TODO: use mixin instead? - if(!("places" in flags)){ flags.places = Infinity; } - if(typeof flags.decimal != "string"){ flags.decimal = "."; } - if(!("fractional" in flags) || /^0/.test(flags.places)){ flags.fractional = [true, false]; } - if(!("exponent" in flags)){ flags.exponent = [true, false]; } - if(!("eSigned" in flags)){ flags.eSigned = [true, false]; } - - var integerRE = number._integerRegexp(flags), - decimalRE = dregexp.buildGroupRE(flags.fractional, - function(q){ - var re = ""; - if(q && (flags.places!==0)){ - re = "\\" + flags.decimal; - if(flags.places == Infinity){ - re = "(?:" + re + "\\d+)?"; - }else{ - re += "\\d{" + flags.places + "}"; - } - } - return re; - }, - true - ); - - var exponentRE = dregexp.buildGroupRE(flags.exponent, - function(q){ - if(q){ return "([eE]" + number._integerRegexp({ signed: flags.eSigned}) + ")"; } - return ""; - } - ); - - var realRE = integerRE + decimalRE; - // allow for decimals without integers, e.g. .25 - if(decimalRE){realRE = "(?:(?:"+ realRE + ")|(?:" + decimalRE + "))";} - return realRE + exponentRE; // String -}; - -/*===== -number.__IntegerRegexpFlags = declare(null, { - // signed: Boolean? - // The leading plus-or-minus sign. Can be true, false, or `[true,false]`. - // Default is `[true, false]`, (i.e. will match if it is signed - // or unsigned). - // separator: String? - // The character used as the thousands separator. Default is no - // separator. For more than one symbol use an array, e.g. `[",", ""]`, - // makes ',' optional. - // groupSize: Number? - // group size between separators - // groupSize2: Number? - // second grouping, where separators 2..n have a different interval than the first separator (for India) -}); -=====*/ - -number._integerRegexp = function(/*number.__IntegerRegexpFlags?*/ flags){ - // summary: - // Builds a regular expression that matches an integer - - // assign default values to missing parameters - flags = flags || {}; - if(!("signed" in flags)){ flags.signed = [true, false]; } - if(!("separator" in flags)){ - flags.separator = ""; - }else if(!("groupSize" in flags)){ - flags.groupSize = 3; - } - - var signRE = dregexp.buildGroupRE(flags.signed, - function(q){ return q ? "[-+]" : ""; }, - true - ); - - var numberRE = dregexp.buildGroupRE(flags.separator, - function(sep){ - if(!sep){ - return "(?:\\d+)"; - } - - sep = dregexp.escapeString(sep); - if(sep == " "){ sep = "\\s"; } - else if(sep == "\xa0"){ sep = "\\s\\xa0"; } - - var grp = flags.groupSize, grp2 = flags.groupSize2; - //TODO: should we continue to enforce that numbers with separators begin with 1-9? See #6933 - if(grp2){ - var grp2RE = "(?:0|[1-9]\\d{0," + (grp2-1) + "}(?:[" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})"; - return ((grp-grp2) > 0) ? "(?:" + grp2RE + "|(?:0|[1-9]\\d{0," + (grp-1) + "}))" : grp2RE; - } - return "(?:0|[1-9]\\d{0," + (grp-1) + "}(?:[" + sep + "]\\d{" + grp + "})*)"; - }, - true - ); - - return signRE + numberRE; // String -}; - -return number; -}); diff --git a/lib/dojo/on.js.uncompressed.js b/lib/dojo/on.js.uncompressed.js deleted file mode 100644 index cea30aca6..000000000 --- a/lib/dojo/on.js.uncompressed.js +++ /dev/null @@ -1,514 +0,0 @@ -define("dojo/on", ["./has!dom-addeventlistener?:./aspect", "./_base/kernel", "./has"], function(aspect, dojo, has){ - - "use strict"; - if( 1 ){ // check to make sure we are in a browser, this module should work anywhere - var major = window.ScriptEngineMajorVersion; - has.add("jscript", major && (major() + ScriptEngineMinorVersion() / 10)); - has.add("event-orientationchange", has("touch") && !has("android")); // TODO: how do we detect this? - has.add("event-stopimmediatepropagation", window.Event && !!window.Event.prototype && !!window.Event.prototype.stopImmediatePropagation); - } - var on = function(target, type, listener, dontFix){ - // summary: - // A function that provides core event listening functionality. With this function - // you can provide a target, event type, and listener to be notified of - // future matching events that are fired. - // target: Element|Object - // This is the target object or DOM element that to receive events from - // type: String|Function - // This is the name of the event to listen for or an extension event type. - // listener: Function - // This is the function that should be called when the event fires. - // returns: Object - // An object with a remove() method that can be used to stop listening for this - // event. - // description: - // To listen for "click" events on a button node, we can do: - // | define(["dojo/on"], function(listen){ - // | on(button, "click", clickHandler); - // | ... - // Evented JavaScript objects can also have their own events. - // | var obj = new Evented; - // | on(obj, "foo", fooHandler); - // And then we could publish a "foo" event: - // | on.emit(obj, "foo", {key: "value"}); - // We can use extension events as well. For example, you could listen for a tap gesture: - // | define(["dojo/on", "dojo/gesture/tap", function(listen, tap){ - // | on(button, tap, tapHandler); - // | ... - // which would trigger fooHandler. Note that for a simple object this is equivalent to calling: - // | obj.onfoo({key:"value"}); - // If you use on.emit on a DOM node, it will use native event dispatching when possible. - - if(typeof target.on == "function" && typeof type != "function"){ - // delegate to the target's on() method, so it can handle it's own listening if it wants - return target.on(type, listener); - } - // delegate to main listener code - return on.parse(target, type, listener, addListener, dontFix, this); - }; - on.pausable = function(target, type, listener, dontFix){ - // summary: - // This function acts the same as on(), but with pausable functionality. The - // returned signal object has pause() and resume() functions. Calling the - // pause() method will cause the listener to not be called for future events. Calling the - // resume() method will cause the listener to again be called for future events. - var paused; - var signal = on(target, type, function(){ - if(!paused){ - return listener.apply(this, arguments); - } - }, dontFix); - signal.pause = function(){ - paused = true; - }; - signal.resume = function(){ - paused = false; - }; - return signal; - }; - on.once = function(target, type, listener, dontFix){ - // summary: - // This function acts the same as on(), but will only call the listener once. The - // listener will be called for the first - // event that takes place and then listener will automatically be removed. - var signal = on(target, type, function(){ - // remove this listener - signal.remove(); - // proceed to call the listener - return listener.apply(this, arguments); - }); - return signal; - }; - on.parse = function(target, type, listener, addListener, dontFix, matchesTarget){ - if(type.call){ - // event handler function - // on(node, touch.press, touchListener); - return type.call(matchesTarget, target, listener); - } - - if(type.indexOf(",") > -1){ - // we allow comma delimited event names, so you can register for multiple events at once - var events = type.split(/\s*,\s*/); - var handles = []; - var i = 0; - var eventName; - while(eventName = events[i++]){ - handles.push(addListener(target, eventName, listener, dontFix, matchesTarget)); - } - handles.remove = function(){ - for(var i = 0; i < handles.length; i++){ - handles[i].remove(); - } - }; - return handles; - } - return addListener(target, type, listener, dontFix, matchesTarget); - }; - var touchEvents = /^touch/; - function addListener(target, type, listener, dontFix, matchesTarget){ - // event delegation: - var selector = type.match(/(.*):(.*)/); - // if we have a selector:event, the last one is interpreted as an event, and we use event delegation - if(selector){ - type = selector[2]; - selector = selector[1]; - // create the extension event for selectors and directly call it - return on.selector(selector, type).call(matchesTarget, target, listener); - } - // test to see if it a touch event right now, so we don't have to do it every time it fires - if(has("touch")){ - if(touchEvents.test(type)){ - // touch event, fix it - listener = fixTouchListener(listener); - } - if(!has("event-orientationchange") && (type == "orientationchange")){ - //"orientationchange" not supported <= Android 2.1, - //but works through "resize" on window - type = "resize"; - target = window; - listener = fixTouchListener(listener); - } - } - if(addStopImmediate){ - // add stopImmediatePropagation if it doesn't exist - listener = addStopImmediate(listener); - } - // normal path, the target is |this| - if(target.addEventListener){ - // the target has addEventListener, which should be used if available (might or might not be a node, non-nodes can implement this method as well) - // check for capture conversions - var capture = type in captures, - adjustedType = capture ? captures[type] : type; - target.addEventListener(adjustedType, listener, capture); - // create and return the signal - return { - remove: function(){ - target.removeEventListener(adjustedType, listener, capture); - } - }; - } - type = "on" + type; - if(fixAttach && target.attachEvent){ - return fixAttach(target, type, listener); - } - throw new Error("Target must be an event emitter"); - } - - on.selector = function(selector, eventType, children){ - // summary: - // Creates a new extension event with event delegation. This is based on - // the provided event type (can be extension event) that - // only calls the listener when the CSS selector matches the target of the event. - // - // The application must require() an appropriate level of dojo/query to handle the selector. - // selector: - // The CSS selector to use for filter events and determine the |this| of the event listener. - // eventType: - // The event to listen for - // children: - // Indicates if children elements of the selector should be allowed. This defaults to - // true - // example: - // | require(["dojo/on", "dojo/mouse", "dojo/query!css2"], function(listen, mouse){ - // | on(node, on.selector(".my-class", mouse.enter), handlerForMyHover); - return function(target, listener){ - // if the selector is function, use it to select the node, otherwise use the matches method - var matchesTarget = typeof selector == "function" ? {matches: selector} : this, - bubble = eventType.bubble; - function select(eventTarget){ - // see if we have a valid matchesTarget or default to dojo.query - matchesTarget = matchesTarget && matchesTarget.matches ? matchesTarget : dojo.query; - // there is a selector, so make sure it matches - while(!matchesTarget.matches(eventTarget, selector, target)){ - if(eventTarget == target || children === false || !(eventTarget = eventTarget.parentNode) || eventTarget.nodeType != 1){ // intentional assignment - return; - } - } - return eventTarget; - } - if(bubble){ - // the event type doesn't naturally bubble, but has a bubbling form, use that, and give it the selector so it can perform the select itself - return on(target, bubble(select), listener); - } - // standard event delegation - return on(target, eventType, function(event){ - // call select to see if we match - var eventTarget = select(event.target); - // if it matches we call the listener - return eventTarget && listener.call(eventTarget, event); - }); - }; - }; - - function syntheticPreventDefault(){ - this.cancelable = false; - } - function syntheticStopPropagation(){ - this.bubbles = false; - } - var slice = [].slice, - syntheticDispatch = on.emit = function(target, type, event){ - // summary: - // Fires an event on the target object. - // target: - // The target object to fire the event on. This can be a DOM element or a plain - // JS object. If the target is a DOM element, native event emiting mechanisms - // are used when possible. - // type: - // The event type name. You can emulate standard native events like "click" and - // "mouseover" or create custom events like "open" or "finish". - // event: - // An object that provides the properties for the event. See https://developer.mozilla.org/en/DOM/event.initEvent - // for some of the properties. These properties are copied to the event object. - // Of particular importance are the cancelable and bubbles properties. The - // cancelable property indicates whether or not the event has a default action - // that can be cancelled. The event is cancelled by calling preventDefault() on - // the event object. The bubbles property indicates whether or not the - // event will bubble up the DOM tree. If bubbles is true, the event will be called - // on the target and then each parent successively until the top of the tree - // is reached or stopPropagation() is called. Both bubbles and cancelable - // default to false. - // returns: - // If the event is cancelable and the event is not cancelled, - // emit will return true. If the event is cancelable and the event is cancelled, - // emit will return false. - // details: - // Note that this is designed to emit events for listeners registered through - // dojo/on. It should actually work with any event listener except those - // added through IE's attachEvent (IE8 and below's non-W3C event emiting - // doesn't support custom event types). It should work with all events registered - // through dojo/on. Also note that the emit method does do any default - // action, it only returns a value to indicate if the default action should take - // place. For example, emiting a keypress event would not cause a character - // to appear in a textbox. - // example: - // To fire our own click event - // | on.emit(dojo.byId("button"), "click", { - // | cancelable: true, - // | bubbles: true, - // | screenX: 33, - // | screenY: 44 - // | }); - // We can also fire our own custom events: - // | on.emit(dojo.byId("slider"), "slide", { - // | cancelable: true, - // | bubbles: true, - // | direction: "left-to-right" - // | }); - var args = slice.call(arguments, 2); - var method = "on" + type; - if("parentNode" in target){ - // node (or node-like), create event controller methods - var newEvent = args[0] = {}; - for(var i in event){ - newEvent[i] = event[i]; - } - newEvent.preventDefault = syntheticPreventDefault; - newEvent.stopPropagation = syntheticStopPropagation; - newEvent.target = target; - newEvent.type = type; - event = newEvent; - } - do{ - // call any node which has a handler (note that ideally we would try/catch to simulate normal event propagation but that causes too much pain for debugging) - target[method] && target[method].apply(target, args); - // and then continue up the parent node chain if it is still bubbling (if started as bubbles and stopPropagation hasn't been called) - }while(event && event.bubbles && (target = target.parentNode)); - return event && event.cancelable && event; // if it is still true (was cancelable and was cancelled), return the event to indicate default action should happen - }; - var captures = {}; - if(!has("event-stopimmediatepropagation")){ - var stopImmediatePropagation =function(){ - this.immediatelyStopped = true; - this.modified = true; // mark it as modified so the event will be cached in IE - }; - var addStopImmediate = function(listener){ - return function(event){ - if(!event.immediatelyStopped){// check to make sure it hasn't been stopped immediately - event.stopImmediatePropagation = stopImmediatePropagation; - return listener.apply(this, arguments); - } - }; - } - } - if(has("dom-addeventlistener")){ - // normalize focusin and focusout - captures = { - focusin: "focus", - focusout: "blur" - }; - - // emiter that works with native event handling - on.emit = function(target, type, event){ - if(target.dispatchEvent && document.createEvent){ - // use the native event emiting mechanism if it is available on the target object - // create a generic event - // we could create branch into the different types of event constructors, but - // that would be a lot of extra code, with little benefit that I can see, seems - // best to use the generic constructor and copy properties over, making it - // easy to have events look like the ones created with specific initializers - var nativeEvent = target.ownerDocument.createEvent("HTMLEvents"); - nativeEvent.initEvent(type, !!event.bubbles, !!event.cancelable); - // and copy all our properties over - for(var i in event){ - var value = event[i]; - if(!(i in nativeEvent)){ - nativeEvent[i] = event[i]; - } - } - return target.dispatchEvent(nativeEvent) && nativeEvent; - } - return syntheticDispatch.apply(on, arguments); // emit for a non-node - }; - }else{ - // no addEventListener, basically old IE event normalization - on._fixEvent = function(evt, sender){ - // summary: - // normalizes properties on the event object including event - // bubbling methods, keystroke normalization, and x/y positions - // evt: - // native event object - // sender: - // node to treat as "currentTarget" - if(!evt){ - var w = sender && (sender.ownerDocument || sender.document || sender).parentWindow || window; - evt = w.event; - } - if(!evt){return evt;} - if(lastEvent && evt.type == lastEvent.type){ - // should be same event, reuse event object (so it can be augmented) - evt = lastEvent; - } - if(!evt.target){ // check to see if it has been fixed yet - evt.target = evt.srcElement; - evt.currentTarget = (sender || evt.srcElement); - if(evt.type == "mouseover"){ - evt.relatedTarget = evt.fromElement; - } - if(evt.type == "mouseout"){ - evt.relatedTarget = evt.toElement; - } - if(!evt.stopPropagation){ - evt.stopPropagation = stopPropagation; - evt.preventDefault = preventDefault; - } - switch(evt.type){ - case "keypress": - var c = ("charCode" in evt ? evt.charCode : evt.keyCode); - if (c==10){ - // CTRL-ENTER is CTRL-ASCII(10) on IE, but CTRL-ENTER on Mozilla - c=0; - evt.keyCode = 13; - }else if(c==13||c==27){ - c=0; // Mozilla considers ENTER and ESC non-printable - }else if(c==3){ - c=99; // Mozilla maps CTRL-BREAK to CTRL-c - } - // Mozilla sets keyCode to 0 when there is a charCode - // but that stops the event on IE. - evt.charCode = c; - _setKeyChar(evt); - break; - } - } - return evt; - }; - var lastEvent, IESignal = function(handle){ - this.handle = handle; - }; - IESignal.prototype.remove = function(){ - delete _dojoIEListeners_[this.handle]; - }; - var fixListener = function(listener){ - // this is a minimal function for closing on the previous listener with as few as variables as possible - return function(evt){ - evt = on._fixEvent(evt, this); - var result = listener.call(this, evt); - if(evt.modified){ - // cache the last event and reuse it if we can - if(!lastEvent){ - setTimeout(function(){ - lastEvent = null; - }); - } - lastEvent = evt; - } - return result; - }; - }; - var fixAttach = function(target, type, listener){ - listener = fixListener(listener); - if(((target.ownerDocument ? target.ownerDocument.parentWindow : target.parentWindow || target.window || window) != top || - has("jscript") < 5.8) && - !has("config-_allow_leaks")){ - // IE will leak memory on certain handlers in frames (IE8 and earlier) and in unattached DOM nodes for JScript 5.7 and below. - // Here we use global redirection to solve the memory leaks - if(typeof _dojoIEListeners_ == "undefined"){ - _dojoIEListeners_ = []; - } - var emiter = target[type]; - if(!emiter || !emiter.listeners){ - var oldListener = emiter; - emiter = Function('event', 'var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}'); - emiter.listeners = []; - target[type] = emiter; - emiter.global = this; - if(oldListener){ - emiter.listeners.push(_dojoIEListeners_.push(oldListener) - 1); - } - } - var handle; - emiter.listeners.push(handle = (emiter.global._dojoIEListeners_.push(listener) - 1)); - return new IESignal(handle); - } - return aspect.after(target, type, listener, true); - }; - - var _setKeyChar = function(evt){ - evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : ''; - evt.charOrCode = evt.keyChar || evt.keyCode; - }; - // Called in Event scope - var stopPropagation = function(){ - this.cancelBubble = true; - }; - var preventDefault = on._preventDefault = function(){ - // Setting keyCode to 0 is the only way to prevent certain keypresses (namely - // ctrl-combinations that correspond to menu accelerator keys). - // Otoh, it prevents upstream listeners from getting this information - // Try to split the difference here by clobbering keyCode only for ctrl - // combinations. If you still need to access the key upstream, bubbledKeyCode is - // provided as a workaround. - this.bubbledKeyCode = this.keyCode; - if(this.ctrlKey){ - try{ - // squelch errors when keyCode is read-only - // (e.g. if keyCode is ctrl or shift) - this.keyCode = 0; - }catch(e){ - } - } - this.defaultPrevented = true; - this.returnValue = false; - }; - } - if(has("touch")){ - var Event = function(){}; - var windowOrientation = window.orientation; - var fixTouchListener = function(listener){ - return function(originalEvent){ - //Event normalization(for ontouchxxx and resize): - //1.incorrect e.pageX|pageY in iOS - //2.there are no "e.rotation", "e.scale" and "onorientationchange" in Andriod - //3.More TBD e.g. force | screenX | screenX | clientX | clientY | radiusX | radiusY - - // see if it has already been corrected - var event = originalEvent.corrected; - if(!event){ - var type = originalEvent.type; - try{ - delete originalEvent.type; // on some JS engines (android), deleting properties make them mutable - }catch(e){} - if(originalEvent.type){ - // deleting properties doesn't work (older iOS), have to use delegation - Event.prototype = originalEvent; - var event = new Event; - // have to delegate methods to make them work - event.preventDefault = function(){ - originalEvent.preventDefault(); - }; - event.stopPropagation = function(){ - originalEvent.stopPropagation(); - }; - }else{ - // deletion worked, use property as is - event = originalEvent; - event.type = type; - } - originalEvent.corrected = event; - if(type == 'resize'){ - if(windowOrientation == window.orientation){ - return null;//double tap causes an unexpected 'resize' in Andriod - } - windowOrientation = window.orientation; - event.type = "orientationchange"; - return listener.call(this, event); - } - // We use the original event and augment, rather than doing an expensive mixin operation - if(!("rotation" in event)){ // test to see if it has rotation - event.rotation = 0; - event.scale = 1; - } - //use event.changedTouches[0].pageX|pageY|screenX|screenY|clientX|clientY|target - var firstChangeTouch = event.changedTouches[0]; - for(var i in firstChangeTouch){ // use for-in, we don't need to have dependency on dojo/_base/lang here - delete event[i]; // delete it first to make it mutable - event[i] = firstChangeTouch[i]; - } - } - return listener.call(this, event); - }; - }; - } - return on; -}); diff --git a/lib/dojo/parser.js.uncompressed.js b/lib/dojo/parser.js.uncompressed.js deleted file mode 100644 index 7ce8c2eb2..000000000 --- a/lib/dojo/parser.js.uncompressed.js +++ /dev/null @@ -1,865 +0,0 @@ -define( - "dojo/parser", ["require", "./_base/kernel", "./_base/lang", "./_base/array", "./_base/config", "./_base/html", "./_base/window", - "./_base/url", "./_base/json", "./aspect", "./date/stamp", "./Deferred", "./has", "./query", "./on", "./ready"], - function(require, dojo, dlang, darray, config, dhtml, dwindow, _Url, djson, aspect, dates, Deferred, has, query, don, ready){ - - // module: - // dojo/parser - - new Date("X"); // workaround for #11279, new Date("") == NaN - - - // Widgets like BorderContainer add properties to _Widget via dojo.extend(). - // If BorderContainer is loaded after _Widget's parameter list has been cached, - // we need to refresh that parameter list (for _Widget and all widgets that extend _Widget). - var extendCnt = 0; - aspect.after(dlang, "extend", function(){ - extendCnt++; - }, true); - - function getNameMap(ctor){ - // summary: - // Returns map from lowercase name to attribute name in class, ex: {onclick: "onClick"} - var map = ctor._nameCaseMap, proto = ctor.prototype; - - // Create the map if it's undefined. - // Refresh the map if a superclass was possibly extended with new methods since the map was created. - if(!map || map._extendCnt < extendCnt){ - map = ctor._nameCaseMap = {}; - for(var name in proto){ - if(name.charAt(0) === "_"){ continue; } // skip internal properties - map[name.toLowerCase()] = name; - } - map._extendCnt = extendCnt; - } - return map; - } - - // Map from widget name or list of widget names(ex: "dijit/form/Button,acme/MyMixin") to a constructor. - var _ctorMap = {}; - - function getCtor(/*String[]*/ types){ - // summary: - // Retrieves a constructor. If the types array contains more than one class/MID then the - // subsequent classes will be mixed into the first class and a unique constructor will be - // returned for that array. - - var ts = types.join(); - if(!_ctorMap[ts]){ - var mixins = []; - for(var i = 0, l = types.length; i < l; i++){ - var t = types[i]; - // TODO: Consider swapping getObject and require in the future - mixins[mixins.length] = (_ctorMap[t] = _ctorMap[t] || (dlang.getObject(t) || (~t.indexOf('/') && require(t)))); - } - var ctor = mixins.shift(); - _ctorMap[ts] = mixins.length ? (ctor.createSubclass ? ctor.createSubclass(mixins) : ctor.extend.apply(ctor, mixins)) : ctor; - } - - return _ctorMap[ts]; - } - - var parser = { - // summary: - // The Dom/Widget parsing package - - _clearCache: function(){ - // summary: - // Clear cached data. Used mainly for benchmarking. - extendCnt++; - _ctorMap = {}; - }, - - _functionFromScript: function(script, attrData){ - // summary: - // Convert a `<script type="dojo/method" args="a, b, c"> ... </script>` - // into a function - // script: DOMNode - // The `<script>` DOMNode - // attrData: String - // For HTML5 compliance, searches for attrData + "args" (typically - // "data-dojo-args") instead of "args" - var preamble = "", - suffix = "", - argsStr = (script.getAttribute(attrData + "args") || script.getAttribute("args")), - withStr = script.getAttribute("with"); - - // Convert any arguments supplied in script tag into an array to be passed to the - var fnArgs = (argsStr || "").split(/\s*,\s*/); - - if(withStr && withStr.length){ - darray.forEach(withStr.split(/\s*,\s*/), function(part){ - preamble += "with("+part+"){"; - suffix += "}"; - }); - } - - return new Function(fnArgs, preamble + script.innerHTML + suffix); - }, - - instantiate: function(nodes, mixin, options){ - // summary: - // Takes array of nodes, and turns them into class instances and - // potentially calls a startup method to allow them to connect with - // any children. - // nodes: Array - // Array of DOM nodes - // mixin: Object? - // An object that will be mixed in with each node in the array. - // Values in the mixin will override values in the node, if they - // exist. - // options: Object? - // An object used to hold kwArgs for instantiation. - // See parse.options argument for details. - - mixin = mixin || {}; - options = options || {}; - - var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" - attrData = "data-" + (options.scope || dojo._scopeName) + "-",// typically "data-dojo-" - dataDojoType = attrData + "type", // typically "data-dojo-type" - dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" - - var list = []; - darray.forEach(nodes, function(node){ - var type = dojoType in mixin ? mixin[dojoType] : node.getAttribute(dataDojoType) || node.getAttribute(dojoType); - if(type){ - var mixinsValue = node.getAttribute(dataDojoMixins), - types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; - - list.push({ - node: node, - types: types - }); - } - }); - - // Instantiate the nodes and return the objects - return this._instantiate(list, mixin, options); - }, - - _instantiate: function(nodes, mixin, options){ - // summary: - // Takes array of objects representing nodes, and turns them into class instances and - // potentially calls a startup method to allow them to connect with - // any children. - // nodes: Array - // Array of objects like - // | { - // | ctor: Function (may be null) - // | types: ["dijit/form/Button", "acme/MyMixin"] (used if ctor not specified) - // | node: DOMNode, - // | scripts: [ ... ], // array of <script type="dojo/..."> children of node - // | inherited: { ... } // settings inherited from ancestors like dir, theme, etc. - // | } - // mixin: Object - // An object that will be mixed in with each node in the array. - // Values in the mixin will override values in the node, if they - // exist. - // options: Object - // An options object used to hold kwArgs for instantiation. - // See parse.options argument for details. - - // Call widget constructors - var thelist = darray.map(nodes, function(obj){ - var ctor = obj.ctor || getCtor(obj.types); - // If we still haven't resolved a ctor, it is fatal now - if(!ctor){ - throw new Error("Unable to resolve constructor for: '" + obj.types.join() + "'"); - } - return this.construct(ctor, obj.node, mixin, options, obj.scripts, obj.inherited); - }, this); - - // Call startup on each top level instance if it makes sense (as for - // widgets). Parent widgets will recursively call startup on their - // (non-top level) children - if(!mixin._started && !options.noStart){ - darray.forEach(thelist, function(instance){ - if(typeof instance.startup === "function" && !instance._started){ - instance.startup(); - } - }); - } - - return thelist; - }, - - construct: function(ctor, node, mixin, options, scripts, inherited){ - // summary: - // Calls new ctor(params, node), where params is the hash of parameters specified on the node, - // excluding data-dojo-type and data-dojo-mixins. Does not call startup(). Returns the widget. - // ctor: Function - // Widget constructor. - // node: DOMNode - // This node will be replaced/attached to by the widget. It also specifies the arguments to pass to ctor. - // mixin: Object? - // Attributes in this object will be passed as parameters to ctor, - // overriding attributes specified on the node. - // options: Object? - // An options object used to hold kwArgs for instantiation. See parse.options argument for details. - // scripts: DomNode[]? - // Array of `<script type="dojo/*">` DOMNodes. If not specified, will search for `<script>` tags inside node. - // inherited: Object? - // Settings from dir=rtl or lang=... on a node above this node. Overrides options.inherited. - - var proto = ctor && ctor.prototype; - options = options || {}; - - // Setup hash to hold parameter settings for this widget. Start with the parameter - // settings inherited from ancestors ("dir" and "lang"). - // Inherited setting may later be overridden by explicit settings on node itself. - var params = {}; - - if(options.defaults){ - // settings for the document itself (or whatever subtree is being parsed) - dlang.mixin(params, options.defaults); - } - if(inherited){ - // settings from dir=rtl or lang=... on a node above this node - dlang.mixin(params, inherited); - } - - // Get list of attributes explicitly listed in the markup - var attributes; - if(has("dom-attributes-explicit")){ - // Standard path to get list of user specified attributes - attributes = node.attributes; - }else if(has("dom-attributes-specified-flag")){ - // Special processing needed for IE8, to skip a few faux values in attributes[] - attributes = darray.filter(node.attributes, function(a){ return a.specified;}); - }else{ - // Special path for IE6-7, avoid (sometimes >100) bogus entries in node.attributes - var clone = /^input$|^img$/i.test(node.nodeName) ? node : node.cloneNode(false), - attrs = clone.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g, "").replace(/^\s*<[a-zA-Z0-9]*\s*/, "").replace(/\s*>.*$/, ""); - - attributes = darray.map(attrs.split(/\s+/), function(name){ - var lcName = name.toLowerCase(); - return { - name: name, - // getAttribute() doesn't work for button.value, returns innerHTML of button. - // but getAttributeNode().value doesn't work for the form.encType or li.value - value: (node.nodeName == "LI" && name == "value") || lcName == "enctype" ? - node.getAttribute(lcName) : node.getAttributeNode(lcName).value - }; - }); - } - - // Hash to convert scoped attribute name (ex: data-dojo17-params) to something friendly (ex: data-dojo-params) - // TODO: remove scope for 2.0 - var scope = options.scope || dojo._scopeName, - attrData = "data-" + scope + "-", // typically "data-dojo-" - hash = {}; - if(scope !== "dojo"){ - hash[attrData + "props"] = "data-dojo-props"; - hash[attrData + "type"] = "data-dojo-type"; - hash[attrData + "mixins"] = "data-dojo-mixins"; - hash[scope + "type"] = "dojoType"; - hash[attrData + "id"] = "data-dojo-id"; - } - - // Read in attributes and process them, including data-dojo-props, data-dojo-type, - // dojoAttachPoint, etc., as well as normal foo=bar attributes. - var i=0, item, funcAttrs=[], jsname, extra; - while(item = attributes[i++]){ - var name = item.name, - lcName = name.toLowerCase(), - value = item.value; - - switch(hash[lcName] || lcName){ - // Already processed, just ignore - case "data-dojo-type": - case "dojotype": - case "data-dojo-mixins": - break; - - // Data-dojo-props. Save for later to make sure it overrides direct foo=bar settings - case "data-dojo-props": - extra = value; - break; - - // data-dojo-id or jsId. TODO: drop jsId in 2.0 - case "data-dojo-id": - case "jsid": - jsname = value; - break; - - // For the benefit of _Templated - case "data-dojo-attach-point": - case "dojoattachpoint": - params.dojoAttachPoint = value; - break; - case "data-dojo-attach-event": - case "dojoattachevent": - params.dojoAttachEvent = value; - break; - - // Special parameter handling needed for IE - case "class": - params["class"] = node.className; - break; - case "style": - params["style"] = node.style && node.style.cssText; - break; - default: - // Normal attribute, ex: value="123" - - // Find attribute in widget corresponding to specified name. - // May involve case conversion, ex: onclick --> onClick - if(!(name in proto)){ - var map = getNameMap(ctor); - name = map[lcName] || name; - } - - // Set params[name] to value, doing type conversion - if(name in proto){ - switch(typeof proto[name]){ - case "string": - params[name] = value; - break; - case "number": - params[name] = value.length ? Number(value) : NaN; - break; - case "boolean": - // for checked/disabled value might be "" or "checked". interpret as true. - params[name] = value.toLowerCase() != "false"; - break; - case "function": - if(value === "" || value.search(/[^\w\.]+/i) != -1){ - // The user has specified some text for a function like "return x+5" - params[name] = new Function(value); - }else{ - // The user has specified the name of a global function like "myOnClick" - // or a single word function "return" - params[name] = dlang.getObject(value, false) || new Function(value); - } - funcAttrs.push(name); // prevent "double connect", see #15026 - break; - default: - var pVal = proto[name]; - params[name] = - (pVal && "length" in pVal) ? (value ? value.split(/\s*,\s*/) : []) : // array - (pVal instanceof Date) ? - (value == "" ? new Date("") : // the NaN of dates - value == "now" ? new Date() : // current date - dates.fromISOString(value)) : - (pVal instanceof _Url) ? (dojo.baseUrl + value) : - djson.fromJson(value); - } - }else{ - params[name] = value; - } - } - } - - // Remove function attributes from DOMNode to prevent "double connect" problem, see #15026. - // Do this as a separate loop since attributes[] is often a live collection (depends on the browser though). - for(var j=0; j<funcAttrs.length; j++){ - var lcfname = funcAttrs[j].toLowerCase(); - node.removeAttribute(lcfname); - node[lcfname] = null; - } - - // Mix things found in data-dojo-props into the params, overriding any direct settings - if(extra){ - try{ - extra = djson.fromJson.call(options.propsThis, "{" + extra + "}"); - dlang.mixin(params, extra); - }catch(e){ - // give the user a pointer to their invalid parameters. FIXME: can we kill this in production? - throw new Error(e.toString() + " in data-dojo-props='" + extra + "'"); - } - } - - // Any parameters specified in "mixin" override everything else. - dlang.mixin(params, mixin); - - // Get <script> nodes associated with this widget, if they weren't specified explicitly - if(!scripts){ - scripts = (ctor && (ctor._noScript || proto._noScript) ? [] : query("> script[type^='dojo/']", node)); - } - - // Process <script type="dojo/*"> script tags - // <script type="dojo/method" event="foo"> tags are added to params, and passed to - // the widget on instantiation. - // <script type="dojo/method"> tags (with no event) are executed after instantiation - // <script type="dojo/connect" data-dojo-event="foo"> tags are dojo.connected after instantiation - // <script type="dojo/watch" data-dojo-prop="foo"> tags are dojo.watch after instantiation - // <script type="dojo/on" data-dojo-event="foo"> tags are dojo.on after instantiation - // note: dojo/* script tags cannot exist in self closing widgets, like <input /> - var aspects = [], // aspects to connect after instantiation - calls = [], // functions to call after instantiation - watches = [], // functions to watch after instantiation - ons = []; // functions to on after instantiation - - if(scripts){ - for(i=0; i<scripts.length; i++){ - var script = scripts[i]; - node.removeChild(script); - // FIXME: drop event="" support in 2.0. use data-dojo-event="" instead - var event = (script.getAttribute(attrData + "event") || script.getAttribute("event")), - prop = script.getAttribute(attrData + "prop"), - method = script.getAttribute(attrData + "method"), - advice = script.getAttribute(attrData + "advice"), - scriptType = script.getAttribute("type"), - nf = this._functionFromScript(script, attrData); - if(event){ - if(scriptType == "dojo/connect"){ - aspects.push({ method: event, func: nf }); - }else if(scriptType == "dojo/on"){ - ons.push({ event: event, func: nf }); - }else{ - params[event] = nf; - } - }else if(scriptType == "dojo/aspect"){ - aspects.push({ method: method, advice: advice, func: nf }); - }else if(scriptType == "dojo/watch"){ - watches.push({ prop: prop, func: nf }); - }else{ - calls.push(nf); - } - } - } - - // create the instance - var markupFactory = ctor.markupFactory || proto.markupFactory; - var instance = markupFactory ? markupFactory(params, node, ctor) : new ctor(params, node); - - // map it to the JS namespace if that makes sense - if(jsname){ - dlang.setObject(jsname, instance); - } - - // process connections and startup functions - for(i=0; i<aspects.length; i++){ - aspect[aspects[i].advice || "after"](instance, aspects[i].method, dlang.hitch(instance, aspects[i].func), true); - } - for(i=0; i<calls.length; i++){ - calls[i].call(instance); - } - for(i=0; i<watches.length; i++){ - instance.watch(watches[i].prop, watches[i].func); - } - for(i=0; i<ons.length; i++){ - don(instance, ons[i].event, ons[i].func); - } - - return instance; - }, - - scan: function(root, options){ - // summary: - // Scan a DOM tree and return an array of objects representing the DOMNodes - // that need to be turned into widgets. - // description: - // Search specified node (or document root node) recursively for class instances - // and return an array of objects that represent potential widgets to be - // instantiated. Searches for either data-dojo-type="MID" or dojoType="MID" where - // "MID" is a module ID like "dijit/form/Button" or a fully qualified Class name - // like "dijit/form/Button". If the MID is not currently available, scan will - // attempt to require() in the module. - // - // See parser.parse() for details of markup. - // root: DomNode? - // A default starting root node from which to start the parsing. Can be - // omitted, defaulting to the entire document. If omitted, the `options` - // object can be passed in this place. If the `options` object has a - // `rootNode` member, that is used. - // options: Object - // a kwArgs options object, see parse() for details - // - // returns: Promise - // A promise that is resolved with the nodes that have been parsed. - - var list = [], // Output List - mids = [], // An array of modules that are not yet loaded - midsHash = {}; // Used to keep the mids array unique - - var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" - attrData = "data-" + (options.scope || dojo._scopeName) + "-", // typically "data-dojo-" - dataDojoType = attrData + "type", // typically "data-dojo-type" - dataDojoTextDir = attrData + "textdir", // typically "data-dojo-textdir" - dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" - - // Info on DOMNode currently being processed - var node = root.firstChild; - - // Info on parent of DOMNode currently being processed - // - inherited: dir, lang, and textDir setting of parent, or inherited by parent - // - parent: pointer to identical structure for my parent (or null if no parent) - // - scripts: if specified, collects <script type="dojo/..."> type nodes from children - var inherited = options.inherited; - if(!inherited){ - function findAncestorAttr(node, attr){ - return (node.getAttribute && node.getAttribute(attr)) || - (node.parentNode && findAncestorAttr(node.parentNode, attr)); - } - inherited = { - dir: findAncestorAttr(root, "dir"), - lang: findAncestorAttr(root, "lang"), - textDir: findAncestorAttr(root, dataDojoTextDir) - }; - for(var key in inherited){ - if(!inherited[key]){ delete inherited[key]; } - } - } - - // Metadata about parent node - var parent = { - inherited: inherited - }; - - // For collecting <script type="dojo/..."> type nodes (when null, we don't need to collect) - var scripts; - - // when true, only look for <script type="dojo/..."> tags, and don't recurse to children - var scriptsOnly; - - function getEffective(parent){ - // summary: - // Get effective dir, lang, textDir settings for specified obj - // (matching "parent" object structure above), and do caching. - // Take care not to return null entries. - if(!parent.inherited){ - parent.inherited = {}; - var node = parent.node, - grandparent = getEffective(parent.parent); - var inherited = { - dir: node.getAttribute("dir") || grandparent.dir, - lang: node.getAttribute("lang") || grandparent.lang, - textDir: node.getAttribute(dataDojoTextDir) || grandparent.textDir - }; - for(var key in inherited){ - if(inherited[key]){ - parent.inherited[key] = inherited[key]; - } - } - } - return parent.inherited; - } - - // DFS on DOM tree, collecting nodes with data-dojo-type specified. - while(true){ - if(!node){ - // Finished this level, continue to parent's next sibling - if(!parent || !parent.node){ - break; - } - node = parent.node.nextSibling; - scriptsOnly = false; - parent = parent.parent; - scripts = parent.scripts; - continue; - } - - if(node.nodeType != 1){ - // Text or comment node, skip to next sibling - node = node.nextSibling; - continue; - } - - if(scripts && node.nodeName.toLowerCase() == "script"){ - // Save <script type="dojo/..."> for parent, then continue to next sibling - type = node.getAttribute("type"); - if(type && /^dojo\/\w/i.test(type)){ - scripts.push(node); - } - node = node.nextSibling; - continue; - } - if(scriptsOnly){ - // scriptsOnly flag is set, we have already collected scripts if the parent wants them, so now we shouldn't - // continue further analysis of the node and will continue to the next sibling - node = node.nextSibling; - continue; - } - - // Check for data-dojo-type attribute, fallback to backward compatible dojoType - // TODO: Remove dojoType in 2.0 - var type = node.getAttribute(dataDojoType) || node.getAttribute(dojoType); - - // Short circuit for leaf nodes containing nothing [but text] - var firstChild = node.firstChild; - if(!type && (!firstChild || (firstChild.nodeType == 3 && !firstChild.nextSibling))){ - node = node.nextSibling; - continue; - } - - // Meta data about current node - var current; - - var ctor = null; - if(type){ - // If dojoType/data-dojo-type specified, add to output array of nodes to instantiate. - var mixinsValue = node.getAttribute(dataDojoMixins), - types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; - - // Note: won't find classes declared via dojo/Declaration or any modules that haven't been - // loaded yet so use try/catch to avoid throw from require() - try{ - ctor = getCtor(types); - }catch(e){} - - // If the constructor was not found, check to see if it has modules that can be loaded - if(!ctor){ - darray.forEach(types, function(t){ - if(~t.indexOf('/') && !midsHash[t]){ - // If the type looks like a MID and it currently isn't in the array of MIDs to load, add it. - midsHash[t] = true; - mids[mids.length] = t; - } - }); - } - - var childScripts = ctor && !ctor.prototype._noScript ? [] : null; // <script> nodes that are parent's children - - // Setup meta data about this widget node, and save it to list of nodes to instantiate - current = { - types: types, - ctor: ctor, - parent: parent, - node: node, - scripts: childScripts - }; - current.inherited = getEffective(current); // dir & lang settings for current node, explicit or inherited - list.push(current); - }else{ - // Meta data about this non-widget node - current = { - node: node, - scripts: scripts, - parent: parent - }; - } - - // Recurse, collecting <script type="dojo/..."> children, and also looking for - // descendant nodes with dojoType specified (unless the widget has the stopParser flag). - // When finished with children, go to my next sibling. - node = firstChild; - scripts = childScripts; - scriptsOnly = ctor && ctor.prototype.stopParser && !(options.template); - parent = current; - } - - var d = new Deferred(); - - // If there are modules to load then require them in - if(mids.length){ - // Warn that there are modules being auto-required - if(has("dojo-debug-messages")){ - console.warn("WARNING: Modules being Auto-Required: " + mids.join(", ")); - } - require(mids, function(){ - // Go through list of widget nodes, filling in missing constructors, and filtering out nodes that shouldn't - // be instantiated due to a stopParser flag on an ancestor that we belatedly learned about due to - // auto-require of a module like ContentPane. Assumes list is in DFS order. - d.resolve(darray.filter(list, function(widget){ - if(!widget.ctor){ - // Attempt to find the constructor again. Still won't find classes defined via - // dijit/Declaration so need to try/catch. - try{ - widget.ctor = getCtor(widget.types); - }catch(e){} - } - - // Get the parent widget - var parent = widget.parent; - while(parent && !parent.types){ - parent = parent.parent; - } - - // Return false if this node should be skipped due to stopParser on an ancestor. - // Since list[] is in DFS order, this loop will always set parent.instantiateChildren before - // trying to compute widget.instantiate. - var proto = widget.ctor && widget.ctor.prototype; - widget.instantiateChildren = !(proto && proto.stopParser && !(options.template)); - widget.instantiate = !parent || (parent.instantiate && parent.instantiateChildren); - return widget.instantiate; - })); - }); - }else{ - // There were no modules to load, so just resolve with the parsed nodes. This separate code path is for - // efficiency, to avoid running the require() and the callback code above. - d.resolve(list); - } - - // Return the promise - return d.promise; - }, - - _require: function(/*DOMNode*/ script){ - // summary: - // Helper for _scanAMD(). Takes a `<script type=dojo/require>bar: "acme/bar", ...</script>` node, - // calls require() to load the specified modules and (asynchronously) assign them to the specified global - // variables, and returns a Promise for when that operation completes. - // - // In the example above, it is effectively doing a require(["acme/bar", ...], function(a){ bar = a; }). - - var hash = djson.fromJson("{" + script.innerHTML + "}"), - vars = [], - mids = [], - d = new Deferred(); - - for(var name in hash){ - vars.push(name); - mids.push(hash[name]); - } - - require(mids, function(){ - for(var i=0; i<vars.length; i++){ - dlang.setObject(vars[i], arguments[i]); - } - d.resolve(arguments); - }); - - return d.promise; - }, - - _scanAmd: function(root){ - // summary: - // Scans the DOM for any declarative requires and returns their values. - // description: - // Looks for `<script type=dojo/require>bar: "acme/bar", ...</script>` node, calls require() to load the - // specified modules and (asynchronously) assign them to the specified global variables, - // and returns a Promise for when those operations complete. - // root: DomNode - // The node to base the scan from. - - // Promise that resolves when all the <script type=dojo/require> nodes have finished loading. - var deferred = new Deferred(), - promise = deferred.promise; - deferred.resolve(true); - - var self = this; - query("script[type='dojo/require']", root).forEach(function(node){ - // Fire off require() call for specified modules. Chain this require to fire after - // any previous requires complete, so that layers can be loaded before individual module require()'s fire. - promise = promise.then(function(){ return self._require(node); }); - - // Remove from DOM so it isn't seen again - node.parentNode.removeChild(node); - }); - - return promise; - }, - - parse: function(rootNode, options){ - // summary: - // Scan the DOM for class instances, and instantiate them. - // description: - // Search specified node (or root node) recursively for class instances, - // and instantiate them. Searches for either data-dojo-type="Class" or - // dojoType="Class" where "Class" is a a fully qualified class name, - // like `dijit/form/Button` - // - // Using `data-dojo-type`: - // Attributes using can be mixed into the parameters used to instantiate the - // Class by using a `data-dojo-props` attribute on the node being converted. - // `data-dojo-props` should be a string attribute to be converted from JSON. - // - // Using `dojoType`: - // Attributes are read from the original domNode and converted to appropriate - // types by looking up the Class prototype values. This is the default behavior - // from Dojo 1.0 to Dojo 1.5. `dojoType` support is deprecated, and will - // go away in Dojo 2.0. - // rootNode: DomNode? - // A default starting root node from which to start the parsing. Can be - // omitted, defaulting to the entire document. If omitted, the `options` - // object can be passed in this place. If the `options` object has a - // `rootNode` member, that is used. - // options: Object? - // A hash of options. - // - // - noStart: Boolean?: - // when set will prevent the parser from calling .startup() - // when locating the nodes. - // - rootNode: DomNode?: - // identical to the function's `rootNode` argument, though - // allowed to be passed in via this `options object. - // - template: Boolean: - // If true, ignores ContentPane's stopParser flag and parses contents inside of - // a ContentPane inside of a template. This allows dojoAttachPoint on widgets/nodes - // nested inside the ContentPane to work. - // - inherited: Object: - // Hash possibly containing dir and lang settings to be applied to - // parsed widgets, unless there's another setting on a sub-node that overrides - // - scope: String: - // Root for attribute names to search for. If scopeName is dojo, - // will search for data-dojo-type (or dojoType). For backwards compatibility - // reasons defaults to dojo._scopeName (which is "dojo" except when - // multi-version support is used, when it will be something like dojo16, dojo20, etc.) - // - propsThis: Object: - // If specified, "this" referenced from data-dojo-props will refer to propsThis. - // Intended for use from the widgets-in-template feature of `dijit._WidgetsInTemplateMixin` - // returns: Mixed - // Returns a blended object that is an array of the instantiated objects, but also can include - // a promise that is resolved with the instantiated objects. This is done for backwards - // compatibility. If the parser auto-requires modules, it will always behave in a promise - // fashion and `parser.parse().then(function(instances){...})` should be used. - // example: - // Parse all widgets on a page: - // | parser.parse(); - // example: - // Parse all classes within the node with id="foo" - // | parser.parse(dojo.byId('foo')); - // example: - // Parse all classes in a page, but do not call .startup() on any - // child - // | parser.parse({ noStart: true }) - // example: - // Parse all classes in a node, but do not call .startup() - // | parser.parse(someNode, { noStart:true }); - // | // or - // | parser.parse({ noStart:true, rootNode: someNode }); - - // determine the root node and options based on the passed arguments. - var root; - if(!options && rootNode && rootNode.rootNode){ - options = rootNode; - root = options.rootNode; - }else if(rootNode && dlang.isObject(rootNode) && !("nodeType" in rootNode)){ - options = rootNode; - }else{ - root = rootNode; - } - root = root ? dhtml.byId(root) : dwindow.body(); - - options = options || {}; - - var mixin = options.template ? { template: true } : {}, - instances = [], - self = this; - - // First scan for any <script type=dojo/require> nodes, and execute. - // Then scan for all nodes with data-dojo-type, and load any unloaded modules. - // Then build the object instances. Add instances to already existing (but empty) instances[] array, - // which may already have been returned to caller. Also, use otherwise to collect and throw any errors - // that occur during the parse(). - var p = - this._scanAmd(root, options).then(function(){ - return self.scan(root, options); - }).then(function(parsedNodes){ - return instances = instances.concat(self._instantiate(parsedNodes, mixin, options)); - }).otherwise(function(e){ - // TODO Modify to follow better pattern for promise error managment when available - console.error("dojo/parser::parse() error", e); - throw e; - }); - - // Blend the array with the promise - dlang.mixin(instances, p); - return instances; - } - }; - - if( 1 ){ - dojo.parser = parser; - } - - // Register the parser callback. It should be the first callback - // after the a11y test. - if(config.parseOnLoad){ - ready(100, parser, "parse"); - } - - return parser; -}); diff --git a/lib/dojo/promise/Promise.js.uncompressed.js b/lib/dojo/promise/Promise.js.uncompressed.js deleted file mode 100644 index eba0080fd..000000000 --- a/lib/dojo/promise/Promise.js.uncompressed.js +++ /dev/null @@ -1,133 +0,0 @@ -define("dojo/promise/Promise", [ - "../_base/lang" -], function(lang){ - "use strict"; - - // module: - // dojo/promise/Promise - - function throwAbstract(){ - throw new TypeError("abstract"); - } - - return lang.extend(function Promise(){ - // summary: - // The public interface to a deferred. - // description: - // The public interface to a deferred. All promises in Dojo are - // instances of this class. - }, { - then: function(callback, errback, progback){ - // summary: - // Add new callbacks to the promise. - // description: - // Add new callbacks to the deferred. Callbacks can be added - // before or after the deferred is fulfilled. - // callback: Function? - // Callback to be invoked when the promise is resolved. - // Receives the resolution value. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // Receives the rejection error. - // progback: Function? - // Callback to be invoked when the promise emits a progress - // update. Receives the progress update. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback(s). - // This can be used for chaining many asynchronous operations. - - throwAbstract(); - }, - - cancel: function(reason, strict){ - // summary: - // Inform the deferred it may cancel its asynchronous operation. - // description: - // Inform the deferred it may cancel its asynchronous operation. - // The deferred's (optional) canceler is invoked and the - // deferred will be left in a rejected state. Can affect other - // promises that originate with the same deferred. - // reason: any - // A message that may be sent to the deferred's canceler, - // explaining why it's being canceled. - // strict: Boolean? - // If strict, will throw an error if the deferred has already - // been fulfilled and consequently cannot be canceled. - // returns: any - // Returns the rejection reason if the deferred was canceled - // normally. - - throwAbstract(); - }, - - isResolved: function(){ - // summary: - // Checks whether the promise has been resolved. - // returns: Boolean - - throwAbstract(); - }, - - isRejected: function(){ - // summary: - // Checks whether the promise has been rejected. - // returns: Boolean - - throwAbstract(); - }, - - isFulfilled: function(){ - // summary: - // Checks whether the promise has been resolved or rejected. - // returns: Boolean - - throwAbstract(); - }, - - isCanceled: function(){ - // summary: - // Checks whether the promise has been canceled. - // returns: Boolean - - throwAbstract(); - }, - - always: function(callbackOrErrback){ - // summary: - // Add a callback to be invoked when the promise is resolved - // or rejected. - // callbackOrErrback: Function? - // A function that is used both as a callback and errback. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the callback/errback. - - return this.then(callbackOrErrback, callbackOrErrback); - }, - - otherwise: function(errback){ - // summary: - // Add new errbacks to the promise. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // returns: dojo/promise/Promise - // Returns a new promise for the result of the errback. - - return this.then(null, errback); - }, - - trace: function(){ - return this; - }, - - traceRejected: function(){ - return this; - }, - - toString: function(){ - // returns: string - // Returns `[object Promise]`. - - return "[object Promise]"; - } - }); -}); diff --git a/lib/dojo/promise/all.js.uncompressed.js b/lib/dojo/promise/all.js.uncompressed.js deleted file mode 100644 index 278f604a6..000000000 --- a/lib/dojo/promise/all.js.uncompressed.js +++ /dev/null @@ -1,76 +0,0 @@ -define("dojo/promise/all", [ - "../_base/array", - "../Deferred", - "../when" -], function(array, Deferred, when){ - "use strict"; - - // module: - // dojo/promise/all - - var some = array.some; - - return function all(objectOrArray){ - // summary: - // Takes multiple promises and returns a new promise that is fulfilled - // when all promises have been fulfilled. - // description: - // Takes multiple promises and returns a new promise that is fulfilled - // when all promises have been fulfilled. If one of the promises is rejected, - // the returned promise is also rejected. Canceling the returned promise will - // *not* cancel any passed promises. - // objectOrArray: Object|Array? - // The promise will be fulfilled with a list of results if invoked with an - // array, or an object of results when passed an object (using the same - // keys). If passed neither an object or array it is resolved with an - // undefined value. - // returns: dojo/promise/Promise - - var object, array; - if(objectOrArray instanceof Array){ - array = objectOrArray; - }else if(objectOrArray && typeof objectOrArray === "object"){ - object = objectOrArray; - } - - var results; - var keyLookup = []; - if(object){ - array = []; - for(var key in object){ - if(Object.hasOwnProperty.call(object, key)){ - keyLookup.push(key); - array.push(object[key]); - } - } - results = {}; - }else if(array){ - results = []; - } - - if(!array || !array.length){ - return new Deferred().resolve(results); - } - - var deferred = new Deferred(); - deferred.promise.always(function(){ - results = keyLookup = null; - }); - var waiting = array.length; - some(array, function(valueOrPromise, index){ - if(!object){ - keyLookup.push(index); - } - when(valueOrPromise, function(value){ - if(!deferred.isFulfilled()){ - results[keyLookup[index]] = value; - if(--waiting === 0){ - deferred.resolve(results); - } - } - }, deferred.reject); - return deferred.isFulfilled(); - }); - return deferred.promise; // dojo/promise/Promise - }; -}); diff --git a/lib/dojo/promise/first.js.uncompressed.js b/lib/dojo/promise/first.js.uncompressed.js deleted file mode 100644 index 863573fa1..000000000 --- a/lib/dojo/promise/first.js.uncompressed.js +++ /dev/null @@ -1,49 +0,0 @@ -define("dojo/promise/first", [ - "../_base/array", - "../Deferred", - "../when" -], function(array, Deferred, when){ - "use strict"; - - // module: - // dojo/promise/first - - var forEach = array.forEach; - - return function first(objectOrArray){ - // summary: - // Takes multiple promises and returns a new promise that is fulfilled - // when the first of these promises is fulfilled. - // description: - // Takes multiple promises and returns a new promise that is fulfilled - // when the first of these promises is fulfilled. Canceling the returned - // promise will *not* cancel any passed promises. The promise will be - // fulfilled with the value of the first fulfilled promise. - // objectOrArray: Object|Array? - // The promises are taken from the array or object values. If no value - // is passed, the returned promise is resolved with an undefined value. - // returns: dojo/promise/Promise - - var array; - if(objectOrArray instanceof Array){ - array = objectOrArray; - }else if(objectOrArray && typeof objectOrArray === "object"){ - array = []; - for(var key in objectOrArray){ - if(Object.hasOwnProperty.call(objectOrArray, key)){ - array.push(objectOrArray[key]); - } - } - } - - if(!array || !array.length){ - return new Deferred().resolve(); - } - - var deferred = new Deferred(); - forEach(array, function(valueOrPromise){ - when(valueOrPromise, deferred.resolve, deferred.reject); - }); - return deferred.promise; // dojo/promise/Promise - }; -}); diff --git a/lib/dojo/promise/instrumentation.js.uncompressed.js b/lib/dojo/promise/instrumentation.js.uncompressed.js deleted file mode 100644 index b32bb9841..000000000 --- a/lib/dojo/promise/instrumentation.js.uncompressed.js +++ /dev/null @@ -1,105 +0,0 @@ -define("dojo/promise/instrumentation", [ - "./tracer", - "../has", - "../_base/lang", - "../_base/array" -], function(tracer, has, lang, arrayUtil){ - function logError(error, rejection, deferred){ - var stack = ""; - if(error && error.stack){ - stack += error.stack; - } - if(rejection && rejection.stack){ - stack += "\n ----------------------------------------\n rejected" + rejection.stack.split("\n").slice(1).join("\n").replace(/^\s+/, " "); - } - if(deferred && deferred.stack){ - stack += "\n ----------------------------------------\n" + deferred.stack; - } - console.error(error, stack); - } - - function reportRejections(error, handled, rejection, deferred){ - if(!handled){ - logError(error, rejection, deferred); - } - } - - var errors = []; - var activeTimeout = false; - var unhandledWait = 1000; - function trackUnhandledRejections(error, handled, rejection, deferred){ - if(handled){ - arrayUtil.some(errors, function(obj, ix){ - if(obj.error === error){ - errors.splice(ix, 1); - return true; - } - }); - }else if(!arrayUtil.some(errors, function(obj){ return obj.error === error; })){ - errors.push({ - error: error, - rejection: rejection, - deferred: deferred, - timestamp: new Date().getTime() - }); - } - - if(!activeTimeout){ - activeTimeout = setTimeout(logRejected, unhandledWait); - } - } - - function logRejected(){ - var now = new Date().getTime(); - var reportBefore = now - unhandledWait; - errors = arrayUtil.filter(errors, function(obj){ - if(obj.timestamp < reportBefore){ - logError(obj.error, obj.rejection, obj.deferred); - return false; - } - return true; - }); - - if(errors.length){ - activeTimeout = setTimeout(logRejected, errors[0].timestamp + unhandledWait - now); - }else{ - activeTimeout = false; - } - } - - return function(Deferred){ - // summary: - // Initialize instrumentation for the Deferred class. - // description: - // Initialize instrumentation for the Deferred class. - // Done automatically by `dojo/Deferred` if the - // `deferredInstrumentation` and `useDeferredInstrumentation` - // config options are set. - // - // Sets up `dojo/promise/tracer` to log to the console. - // - // Sets up instrumentation of rejected deferreds so unhandled - // errors are logged to the console. - - var usage = has("config-useDeferredInstrumentation"); - if(usage){ - tracer.on("resolved", lang.hitch(console, "log", "resolved")); - tracer.on("rejected", lang.hitch(console, "log", "rejected")); - tracer.on("progress", lang.hitch(console, "log", "progress")); - - var args = []; - if(typeof usage === "string"){ - args = usage.split(","); - usage = args.shift(); - } - if(usage === "report-rejections"){ - Deferred.instrumentRejected = reportRejections; - }else if(usage === "report-unhandled-rejections" || usage === true || usage === 1){ - Deferred.instrumentRejected = trackUnhandledRejections; - unhandledWait = parseInt(args[0], 10) || unhandledWait; - }else{ - throw new Error("Unsupported instrumentation usage <" + usage + ">"); - } - } - }; -}); diff --git a/lib/dojo/promise/tracer.js.uncompressed.js b/lib/dojo/promise/tracer.js.uncompressed.js deleted file mode 100644 index b5380cc32..000000000 --- a/lib/dojo/promise/tracer.js.uncompressed.js +++ /dev/null @@ -1,85 +0,0 @@ -define("dojo/promise/tracer", [ - "../_base/lang", - "./Promise", - "../Evented" -], function(lang, Promise, Evented){ - "use strict"; - - // module: - // dojo/promise/tracer - - /*===== - return { - // summary: - // Trace promise fulfillment. - // description: - // Trace promise fulfillment. Calling `.trace()` or `.traceError()` on a - // promise enables tracing. Will emit `resolved`, `rejected` or `progress` - // events. - - on: function(type, listener){ - // summary: - // Subscribe to traces. - // description: - // See `dojo/Evented#on()`. - // type: String - // `resolved`, `rejected`, or `progress` - // listener: Function - // The listener is passed the traced value and any arguments - // that were used with the `.trace()` call. - } - }; - =====*/ - - var evented = new Evented; - var emit = evented.emit; - evented.emit = null; - // Emit events asynchronously since they should not change the promise state. - function emitAsync(args){ - setTimeout(function(){ - emit.apply(evented, args); - }, 0); - } - - Promise.prototype.trace = function(){ - // summary: - // Trace the promise. - // description: - // Tracing allows you to transparently log progress, - // resolution and rejection of promises, without affecting the - // promise itself. Any arguments passed to `trace()` are - // emitted in trace events. See `dojo/promise/tracer` on how - // to handle traces. - // returns: dojo/promise/Promise - // The promise instance `trace()` is called on. - - var args = lang._toArray(arguments); - this.then( - function(value){ emitAsync(["resolved", value].concat(args)); }, - function(error){ emitAsync(["rejected", error].concat(args)); }, - function(update){ emitAsync(["progress", update].concat(args)); } - ); - return this; - }; - - Promise.prototype.traceRejected = function(){ - // summary: - // Trace rejection of the promise. - // description: - // Tracing allows you to transparently log progress, - // resolution and rejection of promises, without affecting the - // promise itself. Any arguments passed to `trace()` are - // emitted in trace events. See `dojo/promise/tracer` on how - // to handle traces. - // returns: dojo/promise/Promise - // The promise instance `traceRejected()` is called on. - - var args = lang._toArray(arguments); - this.otherwise(function(error){ - emitAsync(["rejected", error].concat(args)); - }); - return this; - }; - - return evented; -}); diff --git a/lib/dojo/query.js.uncompressed.js b/lib/dojo/query.js.uncompressed.js deleted file mode 100644 index bcd5d2456..000000000 --- a/lib/dojo/query.js.uncompressed.js +++ /dev/null @@ -1,705 +0,0 @@ -define("dojo/query", ["./_base/kernel", "./has", "./dom", "./on", "./_base/array", "./_base/lang", "./selector/_loader", "./selector/_loader!default"], - function(dojo, has, dom, on, array, lang, loader, defaultEngine){ - - "use strict"; - - has.add("array-extensible", function(){ - // test to see if we can extend an array (not supported in old IE) - return lang.delegate([], {length: 1}).length == 1 && !has("bug-for-in-skips-shadowed"); - }); - - var ap = Array.prototype, aps = ap.slice, apc = ap.concat, forEach = array.forEach; - - var tnl = function(/*Array*/ a, /*dojo/NodeList?*/ parent, /*Function?*/ NodeListCtor){ - // summary: - // decorate an array to make it look like a `dojo/NodeList`. - // a: - // Array of nodes to decorate. - // parent: - // An optional parent NodeList that generated the current - // list of nodes. Used to call _stash() so the parent NodeList - // can be accessed via end() later. - // NodeListCtor: - // An optional constructor function to use for any - // new NodeList calls. This allows a certain chain of - // NodeList calls to use a different object than dojo/NodeList. - var nodeList = new (NodeListCtor || this._NodeListCtor || nl)(a); - return parent ? nodeList._stash(parent) : nodeList; - }; - - var loopBody = function(f, a, o){ - a = [0].concat(aps.call(a, 0)); - o = o || dojo.global; - return function(node){ - a[0] = node; - return f.apply(o, a); - }; - }; - - // adapters - - var adaptAsForEach = function(f, o){ - // summary: - // adapts a single node function to be used in the forEach-type - // actions. The initial object is returned from the specialized - // function. - // f: Function - // a function to adapt - // o: Object? - // an optional context for f - return function(){ - this.forEach(loopBody(f, arguments, o)); - return this; // Object - }; - }; - - var adaptAsMap = function(f, o){ - // summary: - // adapts a single node function to be used in the map-type - // actions. The return is a new array of values, as via `dojo.map` - // f: Function - // a function to adapt - // o: Object? - // an optional context for f - return function(){ - return this.map(loopBody(f, arguments, o)); - }; - }; - - var adaptAsFilter = function(f, o){ - // summary: - // adapts a single node function to be used in the filter-type actions - // f: Function - // a function to adapt - // o: Object? - // an optional context for f - return function(){ - return this.filter(loopBody(f, arguments, o)); - }; - }; - - var adaptWithCondition = function(f, g, o){ - // summary: - // adapts a single node function to be used in the map-type - // actions, behaves like forEach() or map() depending on arguments - // f: Function - // a function to adapt - // g: Function - // a condition function, if true runs as map(), otherwise runs as forEach() - // o: Object? - // an optional context for f and g - return function(){ - var a = arguments, body = loopBody(f, a, o); - if(g.call(o || dojo.global, a)){ - return this.map(body); // self - } - this.forEach(body); - return this; // self - }; - }; - - var NodeList = function(array){ - // summary: - // Array-like object which adds syntactic - // sugar for chaining, common iteration operations, animation, and - // node manipulation. NodeLists are most often returned as the - // result of dojo.query() calls. - // description: - // NodeList instances provide many utilities that reflect - // core Dojo APIs for Array iteration and manipulation, DOM - // manipulation, and event handling. Instead of needing to dig up - // functions in the dojo.* namespace, NodeLists generally make the - // full power of Dojo available for DOM manipulation tasks in a - // simple, chainable way. - // example: - // create a node list from a node - // | new query.NodeList(dojo.byId("foo")); - // example: - // get a NodeList from a CSS query and iterate on it - // | var l = dojo.query(".thinger"); - // | l.forEach(function(node, index, nodeList){ - // | console.log(index, node.innerHTML); - // | }); - // example: - // use native and Dojo-provided array methods to manipulate a - // NodeList without needing to use dojo.* functions explicitly: - // | var l = dojo.query(".thinger"); - // | // since NodeLists are real arrays, they have a length - // | // property that is both readable and writable and - // | // push/pop/shift/unshift methods - // | console.log(l.length); - // | l.push(dojo.create("span")); - // | - // | // dojo's normalized array methods work too: - // | console.log( l.indexOf(dojo.byId("foo")) ); - // | // ...including the special "function as string" shorthand - // | console.log( l.every("item.nodeType == 1") ); - // | - // | // NodeLists can be [..] indexed, or you can use the at() - // | // function to get specific items wrapped in a new NodeList: - // | var node = l[3]; // the 4th element - // | var newList = l.at(1, 3); // the 2nd and 4th elements - // example: - // the style functions you expect are all there too: - // | // style() as a getter... - // | var borders = dojo.query(".thinger").style("border"); - // | // ...and as a setter: - // | dojo.query(".thinger").style("border", "1px solid black"); - // | // class manipulation - // | dojo.query("li:nth-child(even)").addClass("even"); - // | // even getting the coordinates of all the items - // | var coords = dojo.query(".thinger").coords(); - // example: - // DOM manipulation functions from the dojo.* namespace area also available: - // | // remove all of the elements in the list from their - // | // parents (akin to "deleting" them from the document) - // | dojo.query(".thinger").orphan(); - // | // place all elements in the list at the front of #foo - // | dojo.query(".thinger").place("foo", "first"); - // example: - // Event handling couldn't be easier. `dojo.connect` is mapped in, - // and shortcut handlers are provided for most DOM events: - // | // like dojo.connect(), but with implicit scope - // | dojo.query("li").connect("onclick", console, "log"); - // | - // | // many common event handlers are already available directly: - // | dojo.query("li").onclick(console, "log"); - // | var toggleHovered = dojo.hitch(dojo, "toggleClass", "hovered"); - // | dojo.query("p") - // | .onmouseenter(toggleHovered) - // | .onmouseleave(toggleHovered); - // example: - // chainability is a key advantage of NodeLists: - // | dojo.query(".thinger") - // | .onclick(function(e){ /* ... */ }) - // | .at(1, 3, 8) // get a subset - // | .style("padding", "5px") - // | .forEach(console.log); - var isNew = this instanceof nl && has("array-extensible"); - if(typeof array == "number"){ - array = Array(array); - } - var nodeArray = (array && "length" in array) ? array : arguments; - if(isNew || !nodeArray.sort){ - // make sure it's a real array before we pass it on to be wrapped - var target = isNew ? this : [], - l = target.length = nodeArray.length; - for(var i = 0; i < l; i++){ - target[i] = nodeArray[i]; - } - if(isNew){ - // called with new operator, this means we are going to use this instance and push - // the nodes on to it. This is usually much faster since the NodeList properties - // don't need to be copied (unless the list of nodes is extremely large). - return target; - } - nodeArray = target; - } - // called without new operator, use a real array and copy prototype properties, - // this is slower and exists for back-compat. Should be removed in 2.0. - lang._mixin(nodeArray, nlp); - nodeArray._NodeListCtor = function(array){ - // call without new operator to preserve back-compat behavior - return nl(array); - }; - return nodeArray; - }; - - var nl = NodeList, nlp = nl.prototype = - has("array-extensible") ? [] : {};// extend an array if it is extensible - - // expose adapters and the wrapper as private functions - - nl._wrap = nlp._wrap = tnl; - nl._adaptAsMap = adaptAsMap; - nl._adaptAsForEach = adaptAsForEach; - nl._adaptAsFilter = adaptAsFilter; - nl._adaptWithCondition = adaptWithCondition; - - // mass assignment - - // add array redirectors - forEach(["slice", "splice"], function(name){ - var f = ap[name]; - //Use a copy of the this array via this.slice() to allow .end() to work right in the splice case. - // CANNOT apply ._stash()/end() to splice since it currently modifies - // the existing this array -- it would break backward compatibility if we copy the array before - // the splice so that we can use .end(). So only doing the stash option to this._wrap for slice. - nlp[name] = function(){ return this._wrap(f.apply(this, arguments), name == "slice" ? this : null); }; - }); - // concat should be here but some browsers with native NodeList have problems with it - - // add array.js redirectors - forEach(["indexOf", "lastIndexOf", "every", "some"], function(name){ - var f = array[name]; - nlp[name] = function(){ return f.apply(dojo, [this].concat(aps.call(arguments, 0))); }; - }); - - lang.extend(NodeList, { - // copy the constructors - constructor: nl, - _NodeListCtor: nl, - toString: function(){ - // Array.prototype.toString can't be applied to objects, so we use join - return this.join(","); - }, - _stash: function(parent){ - // summary: - // private function to hold to a parent NodeList. end() to return the parent NodeList. - // - // example: - // How to make a `dojo/NodeList` method that only returns the third node in - // the dojo/NodeList but allows access to the original NodeList by using this._stash: - // | dojo.extend(NodeList, { - // | third: function(){ - // | var newNodeList = NodeList(this[2]); - // | return newNodeList._stash(this); - // | } - // | }); - // | // then see how _stash applies a sub-list, to be .end()'ed out of - // | dojo.query(".foo") - // | .third() - // | .addClass("thirdFoo") - // | .end() - // | // access to the orig .foo list - // | .removeClass("foo") - // | - // - this._parent = parent; - return this; // dojo/NodeList - }, - - on: function(eventName, listener){ - // summary: - // Listen for events on the nodes in the NodeList. Basic usage is: - // | query(".my-class").on("click", listener); - // This supports event delegation by using selectors as the first argument with the event names as - // pseudo selectors. For example: - // | dojo.query("#my-list").on("li:click", listener); - // This will listen for click events within `<li>` elements that are inside the `#my-list` element. - // Because on supports CSS selector syntax, we can use comma-delimited events as well: - // | dojo.query("#my-list").on("li button:mouseover, li:click", listener); - var handles = this.map(function(node){ - return on(node, eventName, listener); // TODO: apply to the NodeList so the same selector engine is used for matches - }); - handles.remove = function(){ - for(var i = 0; i < handles.length; i++){ - handles[i].remove(); - } - }; - return handles; - }, - - end: function(){ - // summary: - // Ends use of the current `NodeList` by returning the previous NodeList - // that generated the current NodeList. - // description: - // Returns the `NodeList` that generated the current `NodeList`. If there - // is no parent NodeList, an empty NodeList is returned. - // example: - // | dojo.query("a") - // | .filter(".disabled") - // | // operate on the anchors that only have a disabled class - // | .style("color", "grey") - // | .end() - // | // jump back to the list of anchors - // | .style(...) - // - if(this._parent){ - return this._parent; - }else{ - //Just return empty list. - return new this._NodeListCtor(0); - } - }, - - // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array#Methods - - // FIXME: handle return values for #3244 - // http://trac.dojotoolkit.org/ticket/3244 - - // FIXME: - // need to wrap or implement: - // join (perhaps w/ innerHTML/outerHTML overload for toString() of items?) - // reduce - // reduceRight - - /*===== - slice: function(begin, end){ - // summary: - // Returns a new NodeList, maintaining this one in place - // description: - // This method behaves exactly like the Array.slice method - // with the caveat that it returns a dojo/NodeList and not a - // raw Array. For more details, see Mozilla's [slice - // documentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice) - // begin: Integer - // Can be a positive or negative integer, with positive - // integers noting the offset to begin at, and negative - // integers denoting an offset from the end (i.e., to the left - // of the end) - // end: Integer? - // Optional parameter to describe what position relative to - // the NodeList's zero index to end the slice at. Like begin, - // can be positive or negative. - return this._wrap(a.slice.apply(this, arguments)); - }, - - splice: function(index, howmany, item){ - // summary: - // Returns a new NodeList, manipulating this NodeList based on - // the arguments passed, potentially splicing in new elements - // at an offset, optionally deleting elements - // description: - // This method behaves exactly like the Array.splice method - // with the caveat that it returns a dojo/NodeList and not a - // raw Array. For more details, see Mozilla's [splice - // documentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) - // For backwards compatibility, calling .end() on the spliced NodeList - // does not return the original NodeList -- splice alters the NodeList in place. - // index: Integer - // begin can be a positive or negative integer, with positive - // integers noting the offset to begin at, and negative - // integers denoting an offset from the end (i.e., to the left - // of the end) - // howmany: Integer? - // Optional parameter to describe what position relative to - // the NodeList's zero index to end the slice at. Like begin, - // can be positive or negative. - // item: Object...? - // Any number of optional parameters may be passed in to be - // spliced into the NodeList - return this._wrap(a.splice.apply(this, arguments)); // dojo/NodeList - }, - - indexOf: function(value, fromIndex){ - // summary: - // see dojo.indexOf(). The primary difference is that the acted-on - // array is implicitly this NodeList - // value: Object - // The value to search for. - // fromIndex: Integer? - // The location to start searching from. Optional. Defaults to 0. - // description: - // For more details on the behavior of indexOf, see Mozilla's - // [indexOf - // docs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) - // returns: - // Positive Integer or 0 for a match, -1 of not found. - return d.indexOf(this, value, fromIndex); // Integer - }, - - lastIndexOf: function(value, fromIndex){ - // summary: - // see dojo.lastIndexOf(). The primary difference is that the - // acted-on array is implicitly this NodeList - // description: - // For more details on the behavior of lastIndexOf, see - // Mozilla's [lastIndexOf - // docs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) - // value: Object - // The value to search for. - // fromIndex: Integer? - // The location to start searching from. Optional. Defaults to 0. - // returns: - // Positive Integer or 0 for a match, -1 of not found. - return d.lastIndexOf(this, value, fromIndex); // Integer - }, - - every: function(callback, thisObject){ - // summary: - // see `dojo.every()` and the [Array.every - // docs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every). - // Takes the same structure of arguments and returns as - // dojo.every() with the caveat that the passed array is - // implicitly this NodeList - // callback: Function - // the callback - // thisObject: Object? - // the context - return d.every(this, callback, thisObject); // Boolean - }, - - some: function(callback, thisObject){ - // summary: - // Takes the same structure of arguments and returns as - // `dojo.some()` with the caveat that the passed array is - // implicitly this NodeList. See `dojo.some()` and Mozilla's - // [Array.some - // documentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some). - // callback: Function - // the callback - // thisObject: Object? - // the context - return d.some(this, callback, thisObject); // Boolean - }, - =====*/ - - concat: function(item){ - // summary: - // Returns a new NodeList comprised of items in this NodeList - // as well as items passed in as parameters - // description: - // This method behaves exactly like the Array.concat method - // with the caveat that it returns a `NodeList` and not a - // raw Array. For more details, see the [Array.concat - // docs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat) - // item: Object? - // Any number of optional parameters may be passed in to be - // spliced into the NodeList - - //return this._wrap(apc.apply(this, arguments)); - // the line above won't work for the native NodeList, or for Dojo NodeLists either :-( - - // implementation notes: - // Array.concat() doesn't recognize native NodeLists or Dojo NodeLists - // as arrays, and so does not inline them into a unioned array, but - // appends them as single entities. Both the original NodeList and the - // items passed in as parameters must be converted to raw Arrays - // and then the concatenation result may be re-_wrap()ed as a Dojo NodeList. - - var t = aps.call(this, 0), - m = array.map(arguments, function(a){ - return aps.call(a, 0); - }); - return this._wrap(apc.apply(t, m), this); // dojo/NodeList - }, - - map: function(/*Function*/ func, /*Function?*/ obj){ - // summary: - // see dojo.map(). The primary difference is that the acted-on - // array is implicitly this NodeList and the return is a - // NodeList (a subclass of Array) - return this._wrap(array.map(this, func, obj), this); // dojo/NodeList - }, - - forEach: function(callback, thisObj){ - // summary: - // see `dojo.forEach()`. The primary difference is that the acted-on - // array is implicitly this NodeList. If you want the option to break out - // of the forEach loop, use every() or some() instead. - forEach(this, callback, thisObj); - // non-standard return to allow easier chaining - return this; // dojo/NodeList - }, - filter: function(/*String|Function*/ filter){ - // summary: - // "masks" the built-in javascript filter() method (supported - // in Dojo via `dojo.filter`) to support passing a simple - // string filter in addition to supporting filtering function - // objects. - // filter: - // If a string, a CSS rule like ".thinger" or "div > span". - // example: - // "regular" JS filter syntax as exposed in dojo.filter: - // | dojo.query("*").filter(function(item){ - // | // highlight every paragraph - // | return (item.nodeName == "p"); - // | }).style("backgroundColor", "yellow"); - // example: - // the same filtering using a CSS selector - // | dojo.query("*").filter("p").styles("backgroundColor", "yellow"); - - var a = arguments, items = this, start = 0; - if(typeof filter == "string"){ // inline'd type check - items = query._filterResult(this, a[0]); - if(a.length == 1){ - // if we only got a string query, pass back the filtered results - return items._stash(this); // dojo/NodeList - } - // if we got a callback, run it over the filtered items - start = 1; - } - return this._wrap(array.filter(items, a[start], a[start + 1]), this); // dojo/NodeList - }, - instantiate: function(/*String|Object*/ declaredClass, /*Object?*/ properties){ - // summary: - // Create a new instance of a specified class, using the - // specified properties and each node in the NodeList as a - // srcNodeRef. - // example: - // Grabs all buttons in the page and converts them to dijit/form/Button's. - // | var buttons = query("button").instantiate(Button, {showLabel: true}); - var c = lang.isFunction(declaredClass) ? declaredClass : lang.getObject(declaredClass); - properties = properties || {}; - return this.forEach(function(node){ - new c(properties, node); - }); // dojo/NodeList - }, - at: function(/*===== index =====*/){ - // summary: - // Returns a new NodeList comprised of items in this NodeList - // at the given index or indices. - // - // index: Integer... - // One or more 0-based indices of items in the current - // NodeList. A negative index will start at the end of the - // list and go backwards. - // - // example: - // Shorten the list to the first, second, and third elements - // | query("a").at(0, 1, 2).forEach(fn); - // - // example: - // Retrieve the first and last elements of a unordered list: - // | query("ul > li").at(0, -1).forEach(cb); - // - // example: - // Do something for the first element only, but end() out back to - // the original list and continue chaining: - // | query("a").at(0).onclick(fn).end().forEach(function(n){ - // | console.log(n); // all anchors on the page. - // | }) - - var t = new this._NodeListCtor(0); - forEach(arguments, function(i){ - if(i < 0){ i = this.length + i; } - if(this[i]){ t.push(this[i]); } - }, this); - return t._stash(this); // dojo/NodeList - } - }); - - function queryForEngine(engine, NodeList){ - var query = function(/*String*/ query, /*String|DOMNode?*/ root){ - // summary: - // Returns nodes which match the given CSS selector, searching the - // entire document by default but optionally taking a node to scope - // the search by. Returns an instance of NodeList. - if(typeof root == "string"){ - root = dom.byId(root); - if(!root){ - return new NodeList([]); - } - } - var results = typeof query == "string" ? engine(query, root) : query ? query.orphan ? query : [query] : []; - if(results.orphan){ - // already wrapped - return results; - } - return new NodeList(results); - }; - query.matches = engine.match || function(node, selector, root){ - // summary: - // Test to see if a node matches a selector - return query.filter([node], selector, root).length > 0; - }; - // the engine provides a filtering function, use it to for matching - query.filter = engine.filter || function(nodes, selector, root){ - // summary: - // Filters an array of nodes. Note that this does not guarantee to return a NodeList, just an array. - return query(selector, root).filter(function(node){ - return array.indexOf(nodes, node) > -1; - }); - }; - if(typeof engine != "function"){ - var search = engine.search; - engine = function(selector, root){ - // Slick does it backwards (or everyone else does it backwards, probably the latter) - return search(root || document, selector); - }; - } - return query; - } - var query = queryForEngine(defaultEngine, NodeList); - /*===== - query = function(selector, context){ - // summary: - // This modules provides DOM querying functionality. The module export is a function - // that can be used to query for DOM nodes by CSS selector and returns a NodeList - // representing the matching nodes. - // selector: String - // A CSS selector to search for. - // context: String|DomNode? - // An optional context to limit the searching scope. Only nodes under `context` will be - // scanned. - // example: - // add an onclick handler to every submit button in the document - // which causes the form to be sent via Ajax instead: - // | require(["dojo/query"], function(query){ - // | query("input[type='submit']").on("click", function(e){ - // | dojo.stopEvent(e); // prevent sending the form - // | var btn = e.target; - // | dojo.xhrPost({ - // | form: btn.form, - // | load: function(data){ - // | // replace the form with the response - // | var div = dojo.doc.createElement("div"); - // | dojo.place(div, btn.form, "after"); - // | div.innerHTML = data; - // | dojo.style(btn.form, "display", "none"); - // | } - // | }); - // | }); - // | }); - // - // description: - // dojo/query is responsible for loading the appropriate query engine and wrapping - // its results with a `NodeList`. You can use dojo/query with a specific selector engine - // by using it as a plugin. For example, if you installed the sizzle package, you could - // use it as the selector engine with: - // | require(["dojo/query!sizzle"], function(query){ - // | query("div")... - // - // The id after the ! can be a module id of the selector engine or one of the following values: - // - // - acme: This is the default engine used by Dojo base, and will ensure that the full - // Acme engine is always loaded. - // - // - css2: If the browser has a native selector engine, this will be used, otherwise a - // very minimal lightweight selector engine will be loaded that can do simple CSS2 selectors - // (by #id, .class, tag, and [name=value] attributes, with standard child or descendant (>) - // operators) and nothing more. - // - // - css2.1: If the browser has a native selector engine, this will be used, otherwise the - // full Acme engine will be loaded. - // - // - css3: If the browser has a native selector engine with support for CSS3 pseudo - // selectors (most modern browsers except IE8), this will be used, otherwise the - // full Acme engine will be loaded. - // - // - Or the module id of a selector engine can be used to explicitly choose the selector engine - // - // For example, if you are using CSS3 pseudo selectors in module, you can specify that - // you will need support them with: - // | require(["dojo/query!css3"], function(query){ - // | query('#t > h3:nth-child(odd)')... - // - // You can also choose the selector engine/load configuration by setting the query-selector: - // For example: - // | <script data-dojo-config="query-selector:'css3'" src="dojo.js"></script> - // - return new NodeList(); // dojo/NodeList - }; - =====*/ - - // the query that is returned from this module is slightly different than dojo.query, - // because dojo.query has to maintain backwards compatibility with returning a - // true array which has performance problems. The query returned from the module - // does not use true arrays, but rather inherits from Array, making it much faster to - // instantiate. - dojo.query = queryForEngine(defaultEngine, function(array){ - // call it without the new operator to invoke the back-compat behavior that returns a true array - return NodeList(array); // dojo/NodeList - }); - - query.load = function(id, parentRequire, loaded){ - // summary: - // can be used as AMD plugin to conditionally load new query engine - // example: - // | require(["dojo/query!custom"], function(qsa){ - // | // loaded selector/custom.js as engine - // | qsa("#foobar").forEach(...); - // | }); - loader.load(id, parentRequire, function(engine){ - loaded(queryForEngine(engine, NodeList)); - }); - }; - - dojo._filterQueryResult = query._filterResult = function(nodes, selector, root){ - return new NodeList(query.filter(nodes, selector, root)); - }; - dojo.NodeList = query.NodeList = NodeList; - return query; -}); diff --git a/lib/dojo/ready.js.uncompressed.js b/lib/dojo/ready.js.uncompressed.js deleted file mode 100644 index 454a24a9f..000000000 --- a/lib/dojo/ready.js.uncompressed.js +++ /dev/null @@ -1,136 +0,0 @@ -define("dojo/ready", ["./_base/kernel", "./has", "require", "./domReady", "./_base/lang"], function(dojo, has, require, domReady, lang){ - // module: - // dojo/ready - // note: - // This module should be unnecessary in dojo 2.0 - - var - // truthy if DOMContentLoaded or better (e.g., window.onload fired) has been achieved - isDomReady = 0, - - // a function to call to cause onLoad to be called when all requested modules have been loaded - requestCompleteSignal, - - // The queue of functions waiting to execute as soon as dojo.ready conditions satisfied - loadQ = [], - - // prevent recursion in onLoad - onLoadRecursiveGuard = 0, - - handleDomReady = function(){ - isDomReady = 1; - dojo._postLoad = dojo.config.afterOnLoad = true; - if(loadQ.length){ - requestCompleteSignal(onLoad); - } - }, - - // run the next function queued with dojo.ready - onLoad = function(){ - if(isDomReady && !onLoadRecursiveGuard && loadQ.length){ - //guard against recursions into this function - onLoadRecursiveGuard = 1; - var f = loadQ.shift(); - try{ - f(); - } - // FIXME: signal the error via require.on - finally{ - onLoadRecursiveGuard = 0; - } - onLoadRecursiveGuard = 0; - if(loadQ.length){ - requestCompleteSignal(onLoad); - } - } - }; - - require.on("idle", onLoad); - requestCompleteSignal = function(){ - if(require.idle()){ - onLoad(); - } // else do nothing, onLoad will be called with the next idle signal - }; - - var ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback){ - // summary: - // Add a function to execute on DOM content loaded and all requested modules have arrived and been evaluated. - // In most cases, the `domReady` plug-in should suffice and this method should not be needed. - // priority: Integer? - // The order in which to exec this callback relative to other callbacks, defaults to 1000 - // context: Object?|Function - // The context in which to run execute callback, or a callback if not using context - // callback: Function? - // The function to execute. - // - // example: - // Simple DOM and Modules ready syntax - // | require(["dojo/ready"], function(ready){ - // | ready(function(){ alert("Dom ready!"); }); - // | }); - // - // example: - // Using a priority - // | require(["dojo/ready"], function(ready){ - // | ready(2, function(){ alert("low priority ready!"); }) - // | }); - // - // example: - // Using context - // | require(["dojo/ready"], function(ready){ - // | ready(foo, function(){ - // | // in here, this == foo - // | }); - // | }); - // - // example: - // Using dojo/hitch style args: - // | require(["dojo/ready"], function(ready){ - // | var foo = { dojoReady: function(){ console.warn(this, "dojo dom and modules ready."); } }; - // | ready(foo, "dojoReady"); - // | }); - - var hitchArgs = lang._toArray(arguments); - if(typeof priority != "number"){ - callback = context; - context = priority; - priority = 1000; - }else{ - hitchArgs.shift(); - } - callback = callback ? - lang.hitch.apply(dojo, hitchArgs) : - function(){ - context(); - }; - callback.priority = priority; - for(var i = 0; i < loadQ.length && priority >= loadQ[i].priority; i++){} - loadQ.splice(i, 0, callback); - requestCompleteSignal(); - }; - - 1 || has.add("dojo-config-addOnLoad", 1); - if( 1 ){ - var dca = dojo.config.addOnLoad; - if(dca){ - ready[(lang.isArray(dca) ? "apply" : "call")](dojo, dca); - } - } - - if( 1 && dojo.config.parseOnLoad && !dojo.isAsync){ - ready(99, function(){ - if(!dojo.parser){ - dojo.deprecated("Add explicit require(['dojo/parser']);", "", "2.0"); - require(["dojo/parser"]); - } - }); - } - - if( 1 ){ - domReady(handleDomReady); - }else{ - handleDomReady(); - } - - return ready; -}); diff --git a/lib/dojo/regexp.js.uncompressed.js b/lib/dojo/regexp.js.uncompressed.js deleted file mode 100644 index 031d218cb..000000000 --- a/lib/dojo/regexp.js.uncompressed.js +++ /dev/null @@ -1,70 +0,0 @@ -define("dojo/regexp", ["./_base/kernel", "./_base/lang"], function(dojo, lang){ - -// module: -// dojo/regexp - -var regexp = { - // summary: - // Regular expressions and Builder resources -}; -lang.setObject("dojo.regexp", regexp); - -regexp.escapeString = function(/*String*/str, /*String?*/except){ - // summary: - // Adds escape sequences for special characters in regular expressions - // except: - // a String with special characters to be left unescaped - - return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function(ch){ - if(except && except.indexOf(ch) != -1){ - return ch; - } - return "\\" + ch; - }); // String -}; - -regexp.buildGroupRE = function(/*Object|Array*/arr, /*Function*/re, /*Boolean?*/nonCapture){ - // summary: - // Builds a regular expression that groups subexpressions - // description: - // A utility function used by some of the RE generators. The - // subexpressions are constructed by the function, re, in the second - // parameter. re builds one subexpression for each elem in the array - // a, in the first parameter. Returns a string for a regular - // expression that groups all the subexpressions. - // arr: - // A single value or an array of values. - // re: - // A function. Takes one parameter and converts it to a regular - // expression. - // nonCapture: - // If true, uses non-capturing match, otherwise matches are retained - // by regular expression. Defaults to false - - // case 1: a is a single value. - if(!(arr instanceof Array)){ - return re(arr); // String - } - - // case 2: a is an array - var b = []; - for(var i = 0; i < arr.length; i++){ - // convert each elem to a RE - b.push(re(arr[i])); - } - - // join the REs as alternatives in a RE group. - return regexp.group(b.join("|"), nonCapture); // String -}; - -regexp.group = function(/*String*/expression, /*Boolean?*/nonCapture){ - // summary: - // adds group match to expression - // nonCapture: - // If true, uses non-capturing match, otherwise matches are retained - // by regular expression. - return "(" + (nonCapture ? "?:":"") + expression + ")"; // String -}; - -return regexp; -}); diff --git a/lib/dojo/request.js.uncompressed.js b/lib/dojo/request.js.uncompressed.js deleted file mode 100644 index 75e42bd6c..000000000 --- a/lib/dojo/request.js.uncompressed.js +++ /dev/null @@ -1,81 +0,0 @@ -define("dojo/request", [ - './request/default!'/*=====, - './_base/declare', - './promise/Promise' =====*/ -], function(request/*=====, declare, Promise =====*/){ - /*===== - request = function(url, options){ - // summary: - // Send a request using the default transport for the current platform. - // url: String - // The URL to request. - // options: dojo/request.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - request.__Promise = declare(Promise, { - // response: dojo/promise/Promise - // A promise resolving to an object representing - // the response from the server. - }); - request.__BaseOptions = declare(null, { - // query: String|Object? - // Query parameters to append to the URL. - // data: String|Object? - // Data to transfer. This is ignored for GET and DELETE - // requests. - // preventCache: Boolean? - // Whether to append a cache-busting parameter to the URL. - // timeout: Integer? - // Milliseconds to wait for the response. If this time - // passes, the then the promise is rejected. - // handleAs: String? - // How to handle the response from the server. Default is - // 'text'. Other values are 'json', 'javascript', and 'xml'. - }); - request.__MethodOptions = declare(null, { - // method: String? - // The HTTP method to use to make the request. Must be - // uppercase. - }); - request.__Options = declare([request.__BaseOptions, request.__MethodOptions]); - - request.get = function(url, options){ - // summary: - // Send an HTTP GET request using the default transport for the current platform. - // url: String - // URL to request - // options: dojo/request.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - request.post = function(url, options){ - // summary: - // Send an HTTP POST request using the default transport for the current platform. - // url: String - // URL to request - // options: dojo/request.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - request.put = function(url, options){ - // summary: - // Send an HTTP POST request using the default transport for the current platform. - // url: String - // URL to request - // options: dojo/request.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - request.del = function(url, options){ - // summary: - // Send an HTTP DELETE request using the default transport for the current platform. - // url: String - // URL to request - // options: dojo/request.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - return request; -}); diff --git a/lib/dojo/request/default.js.uncompressed.js b/lib/dojo/request/default.js.uncompressed.js deleted file mode 100644 index 0b4ec22c2..000000000 --- a/lib/dojo/request/default.js.uncompressed.js +++ /dev/null @@ -1,32 +0,0 @@ -define("dojo/request/default", [ - 'exports', - 'require', - '../has' -], function(exports, require, has){ - var defId = has('config-requestProvider'), - platformId; - - if( 1 ){ - platformId = './xhr'; - }else if( 0 ){ - platformId = './node'; - /* TODO: - }else if( 0 ){ - platformId = './rhino'; - */ - } - - if(!defId){ - defId = platformId; - } - - exports.getPlatformDefaultId = function(){ - return platformId; - }; - - exports.load = function(id, parentRequire, loaded, config){ - require([id == 'platform' ? platformId : defId], function(provider){ - loaded(provider); - }); - }; -}); diff --git a/lib/dojo/request/handlers.js.uncompressed.js b/lib/dojo/request/handlers.js.uncompressed.js deleted file mode 100644 index 7c0ed8302..000000000 --- a/lib/dojo/request/handlers.js.uncompressed.js +++ /dev/null @@ -1,62 +0,0 @@ -define("dojo/request/handlers", [ - '../json', - '../_base/kernel', - '../_base/array', - '../has' -], function(JSON, kernel, array, has){ - has.add('activex', typeof ActiveXObject !== 'undefined'); - - var handleXML; - if(has('activex')){ - // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx - var dp = [ - 'Msxml2.DOMDocument.6.0', - 'Msxml2.DOMDocument.4.0', - 'MSXML2.DOMDocument.3.0', - 'MSXML.DOMDocument' // 2.0 - ]; - - handleXML = function(response){ - var result = response.data; - - if(!result || !result.documentElement){ - var text = response.text; - array.some(dp, function(p){ - try{ - var dom = new ActiveXObject(p); - dom.async = false; - dom.loadXML(text); - result = dom; - }catch(e){ return false; } - return true; - }); - } - - return result; - }; - } - - var handlers = { - 'javascript': function(response){ - return kernel.eval(response.text || ''); - }, - 'json': function(response){ - return JSON.parse(response.text || null); - }, - 'xml': handleXML - }; - - function handle(response){ - var handler = handlers[response.options.handleAs]; - - response.data = handler ? handler(response) : (response.data || response.text); - - return response; - } - - handle.register = function(name, handler){ - handlers[name] = handler; - }; - - return handle; -}); diff --git a/lib/dojo/request/iframe.js.uncompressed.js b/lib/dojo/request/iframe.js.uncompressed.js deleted file mode 100644 index aee6b0c4d..000000000 --- a/lib/dojo/request/iframe.js.uncompressed.js +++ /dev/null @@ -1,430 +0,0 @@ -define("dojo/request/iframe", [ - 'module', - 'require', - './watch', - './util', - './handlers', - '../_base/lang', - '../io-query', - '../query', - '../has', - '../dom', - '../dom-construct', - '../_base/window'/*=====, - '../request', - '../_base/declare' =====*/ -], function(module, require, watch, util, handlers, lang, ioQuery, query, has, dom, domConstruct, win/*=====, request, declare =====*/){ - var mid = module.id.replace(/[\/\.\-]/g, '_'), - onload = mid + '_onload'; - - if(!win.global[onload]){ - win.global[onload] = function(){ - var dfd = iframe._currentDfd; - if(!dfd){ - iframe._fireNextRequest(); - return; - } - - var response = dfd.response, - options = response.options, - formNode = dom.byId(options.form) || dfd._tmpForm; - - if(formNode){ - // remove all the hidden content inputs - var toClean = dfd._contentToClean; - for(var i=0; i<toClean.length; i++){ - var key = toClean[i]; - //Need to cycle over all nodes since we may have added - //an array value which means that more than one node could - //have the same .name value. - for(var j=0; j<formNode.childNodes.length; j++){ - var childNode = formNode.childNodes[j]; - if(childNode.name === key){ - domConstruct.destroy(childNode); - break; - } - } - } - - // restore original action + target - dfd._originalAction && formNode.setAttribute('action', dfd._originalAction); - if(dfd._originalMethod){ - formNode.setAttribute('method', dfd._originalMethod); - formNode.method = dfd._originalMethod; - } - if(dfd._originalTarget){ - formNode.setAttribute('target', dfd._originalTarget); - formNode.target = dfd._originalTarget; - } - } - - if(dfd._tmpForm){ - domConstruct.destroy(dfd._tmpForm); - delete dfd._tmpForm; - } - - dfd._finished = true; - }; - } - - function create(name, onloadstr, uri){ - if(win.global[name]){ - return win.global[name]; - } - - if(win.global.frames[name]){ - return win.global.frames[name]; - } - - if(!uri){ - if(has('config-useXDomain') && !has('config-dojoBlankHtmlUrl')){ - console.warn('dojo/request/iframe: When using cross-domain Dojo builds,' + - ' please save dojo/resources/blank.html to your domain and set dojoConfig.dojoBlankHtmlUrl' + - ' to the path on your domain to blank.html'); - } - uri = (has('config-dojoBlankHtmlUrl')||require.toUrl('dojo/resources/blank.html')); - } - - var frame = domConstruct.place( - '<iframe id="'+name+'" name="'+name+'" src="'+uri+'" onload="'+onloadstr+ - '" style="position: absolute; left: 1px; top: 1px; height: 1px; width: 1px; visibility: hidden">', - win.body()); - - win.global[name] = frame; - - return frame; - } - - function setSrc(_iframe, src, replace){ - var frame = win.global.frames[_iframe.name]; - - if(frame.contentWindow){ - // We have an iframe node instead of the window - frame = frame.contentWindow; - } - - try{ - if(!replace){ - frame.location = src; - }else{ - frame.location.replace(src); - } - }catch(e){ - console.log('dojo/request/iframe.setSrc: ', e); - } - } - - function doc(iframeNode){ - if(iframeNode.contentDocument){ - return iframeNode.contentDocument; - } - var name = iframeNode.name; - if(name){ - var iframes = win.doc.getElementsByTagName('iframe'); - if(iframeNode.document && iframes[name].contentWindow && iframes[name].contentWindow.document){ - return iframes[name].contentWindow.document; - }else if(win.doc.frames[name] && win.doc.frames[name].document){ - return win.doc.frames[name].document; - } - } - return null; - } - - function createForm(){ - return domConstruct.create('form', { - name: mid + '_form', - style: { - position: 'absolute', - top: '-1000px', - left: '-1000px' - } - }, win.body()); - } - - function fireNextRequest(){ - // summary: - // Internal method used to fire the next request in the queue. - var dfd; - try{ - if(iframe._currentDfd || !iframe._dfdQueue.length){ - return; - } - do{ - dfd = iframe._currentDfd = iframe._dfdQueue.shift(); - }while(dfd && (dfd.canceled || (dfd.isCanceled && dfd.isCanceled())) && iframe._dfdQueue.length); - - if(!dfd || dfd.canceled || (dfd.isCanceled && dfd.isCanceled())){ - iframe._currentDfd = null; - return; - } - - var response = dfd.response, - options = response.options, - c2c = dfd._contentToClean = [], - formNode = dom.byId(options.form), - notify = util.notify, - data = options.data || null, - queryStr; - - if(!dfd._legacy && options.method === 'POST' && !formNode){ - formNode = dfd._tmpForm = createForm(); - }else if(options.method === 'GET' && formNode && response.url.indexOf('?') > -1){ - queryStr = response.url.slice(response.url.indexOf('?') + 1); - data = lang.mixin(ioQuery.queryToObject(queryStr), data); - } - - if(formNode){ - if(!dfd._legacy){ - var parentNode = formNode; - do{ - parentNode = parentNode.parentNode; - }while(parentNode !== win.doc.documentElement); - - // Append the form node or some browsers won't work - if(!parentNode){ - formNode.style.position = 'absolute'; - formNode.style.left = '-1000px'; - formNode.style.top = '-1000px'; - win.body().appendChild(formNode); - } - - if(!formNode.name){ - formNode.name = mid + '_form'; - } - } - - // if we have things in data, we need to add them to the form - // before submission - if(data){ - var createInput = function(name, value){ - domConstruct.create('input', { - type: 'hidden', - name: name, - value: value - }, formNode); - c2c.push(name); - }; - for(var x in data){ - var val = data[x]; - if(lang.isArray(val) && val.length > 1){ - for(var i=0; i<val.length; i++){ - createInput(x, val[i]); - } - }else{ - if(!formNode[x]){ - createInput(x, val); - }else{ - formNode[x].value = val; - } - } - } - } - - //IE requires going through getAttributeNode instead of just getAttribute in some form cases, - //so use it for all. See #2844 - var actionNode = formNode.getAttributeNode('action'), - methodNode = formNode.getAttributeNode('method'), - targetNode = formNode.getAttributeNode('target'); - - if(response.url){ - dfd._originalAction = actionNode ? actionNode.value : null; - if(actionNode){ - actionNode.value = response.url; - }else{ - formNode.setAttribute('action', response.url); - } - } - - if(!dfd._legacy){ - dfd._originalMethod = methodNode ? methodNode.value : null; - if(methodNode){ - methodNode.value = options.method; - }else{ - formNode.setAttribute('method', options.method); - } - }else{ - if(!methodNode || !methodNode.value){ - if(mthdNode){ - mthdNode.value = options.method; - }else{ - fn.setAttribute("method", options.method); - } - } - } - - dfd._originalTarget = targetNode ? targetNode.value : null; - if(targetNode){ - targetNode.value = iframe._iframeName; - }else{ - formNode.setAttribute('target', iframe._iframeName); - } - formNode.target = iframe._iframeName; - - notify && notify.emit('send', response, dfd.promise.cancel); - iframe._notifyStart(response); - formNode.submit(); - }else{ - // otherwise we post a GET string by changing URL location for the - // iframe - - var extra = ''; - if(response.options.data){ - extra = response.options.data; - if(typeof extra !== 'string'){ - extra = ioQuery.objectToQuery(extra); - } - } - var tmpUrl = response.url + (response.url.indexOf('?') > -1 ? '&' : '?') + extra; - notify && notify.emit('send', response, dfd.promise.cancel); - iframe._notifyStart(response); - iframe.setSrc(iframe._frame, tmpUrl, true); - } - }catch(e){ - dfd.reject(e); - } - } - - // dojo/request/watch handlers - function isValid(response){ - return !this.isFulfilled(); - } - function isReady(response){ - return !!this._finished; - } - function handleResponse(response, error){ - if(!error){ - try{ - var options = response.options, - doc = iframe.doc(iframe._frame), - handleAs = options.handleAs; - - if(handleAs !== 'html'){ - if(handleAs === 'xml'){ - // IE6-8 have to parse the XML manually. See http://bugs.dojotoolkit.org/ticket/6334 - if(doc.documentElement.tagName.toLowerCase() === 'html'){ - query('a', doc.documentElement).orphan(); - var xmlText = doc.documentElement.innerText; - xmlText = xmlText.replace(/>\s+</g, '><'); - response.text = lang.trim(xmlText); - }else{ - response.data = doc; - } - }else{ - // 'json' and 'javascript' and 'text' - response.text = doc.getElementsByTagName('textarea')[0].value; // text - } - handlers(response); - }else{ - response.data = doc; - } - }catch(e){ - error = e; - } - } - - if(error){ - this.reject(error); - }else if(this._finished){ - this.resolve(response); - }else{ - this.reject(new Error('Invalid dojo/request/iframe request state')); - } - } - function last(response){ - this._callNext(); - } - - var defaultOptions = { - method: 'POST' - }; - function iframe(url, options, returnDeferred){ - var response = util.parseArgs(url, util.deepCreate(defaultOptions, options), true); - url = response.url; - options = response.options; - - if(options.method !== 'GET' && options.method !== 'POST'){ - throw new Error(options.method + ' not supported by dojo/request/iframe'); - } - - if(!iframe._frame){ - iframe._frame = iframe.create(iframe._iframeName, onload + '();'); - } - - var dfd = util.deferred(response, null, isValid, isReady, handleResponse, last); - dfd._callNext = function(){ - if(!this._calledNext){ - this._calledNext = true; - iframe._currentDfd = null; - iframe._fireNextRequest(); - } - }; - dfd._legacy = returnDeferred; - - iframe._dfdQueue.push(dfd); - iframe._fireNextRequest(); - - watch(dfd); - - return returnDeferred ? dfd : dfd.promise; - } - - /*===== - iframe = function(url, options){ - // summary: - // Sends a request using an iframe element with the given URL and options. - // url: String - // URL to request - // options: dojo/request/iframe.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - iframe.__BaseOptions = declare(request.__BaseOptions, { - // form: DOMNode? - // A form node to use to submit data to the server. - // data: String|Object? - // Data to transfer. When making a GET request, this will - // be converted to key=value parameters and appended to the - // URL. - }); - iframe.__MethodOptions = declare(null, { - // method: String? - // The HTTP method to use to make the request. Must be - // uppercase. Only `"GET"` and `"POST"` are accepted. - // Default is `"POST"`. - }); - iframe.__Options = declare([iframe.__BaseOptions, iframe.__MethodOptions]); - - iframe.get = function(url, options){ - // summary: - // Send an HTTP GET request using an iframe element with the given URL and options. - // url: String - // URL to request - // options: dojo/request/iframe.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - iframe.post = function(url, options){ - // summary: - // Send an HTTP POST request using an iframe element with the given URL and options. - // url: String - // URL to request - // options: dojo/request/iframe.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - iframe.create = create; - iframe.doc = doc; - iframe.setSrc = setSrc; - - // TODO: Make these truly private in 2.0 - iframe._iframeName = mid + '_IoIframe'; - iframe._notifyStart = function(){}; - iframe._dfdQueue = []; - iframe._currentDfd = null; - iframe._fireNextRequest = fireNextRequest; - - util.addCommonMethods(iframe, ['GET', 'POST']); - - return iframe; -}); diff --git a/lib/dojo/request/node.js.uncompressed.js b/lib/dojo/request/node.js.uncompressed.js deleted file mode 100644 index 8c44b1988..000000000 --- a/lib/dojo/request/node.js.uncompressed.js +++ /dev/null @@ -1,191 +0,0 @@ -define("dojo/request/node", [ - 'require', - './util', - './handlers', - '../errors/RequestTimeoutError', - '../node!http', - '../node!https', - '../node!url', - '../node!stream'/*=====, - '../request', - '../_base/declare' =====*/ -], function(require, util, handlers, RequestTimeoutError, http, https, URL, stream/*=====, request, declare =====*/){ - var Stream = stream.Stream, - undefined; - - var defaultOptions = { - method: 'GET', - query: null, - data: undefined, - headers: {} - }; - function node(url, options){ - var response = util.parseArgs(url, util.deepCreate(defaultOptions, options), options && options.data instanceof Stream); - url = response.url; - options = response.options; - - var def = util.deferred( - response, - function(dfd, response){ - response.clientRequest.abort(); - } - ); - - url = URL.parse(url); - - var reqOptions = response.requestOptions = { - hostname: url.hostname, - port: url.port, - socketPath: options.socketPath, - method: options.method, - headers: options.headers, - agent: options.agent, - pfx: options.pfx, - key: options.key, - passphrase: options.passphrase, - cert: options.cert, - ca: options.ca, - ciphers: options.ciphers, - rejectUnauthorized: options.rejectUnauthorized === false ? false : true - }; - if(url.path){ - reqOptions.path = url.path; - } - if(options.user || options.password){ - reqOptions.auth = (options.user||'') + ':' + (options.password||''); - } - var req = response.clientRequest = (url.protocol === 'https:' ? https : http).request(reqOptions); - - if(options.socketOptions){ - if('timeout' in options.socketOptions){ - req.setTimeout(options.socketOptions.timeout); - } - if('noDelay' in options.socketOptions){ - req.setNoDelay(options.socketOptions.noDelay); - } - if('keepAlive' in options.socketOptions){ - var initialDelay = options.socketOptions.keepAlive; - req.setKeepAlive(initialDelay >= 0, initialDelay || 0); - } - } - - req.on('socket', function(){ - response.hasSocket = true; - def.progress(response); - }); - - req.on('response', function(clientResponse){ - response.clientResponse = clientResponse; - response.status = clientResponse.statusCode; - response.getHeader = function(headerName){ - return clientResponse.headers[headerName.toLowerCase()] || null; - }; - - var body = []; - clientResponse.on('data', function(chunk){ - body.push(chunk); - - // TODO: progress updates via the deferred - }); - clientResponse.on('end', function(){ - if(timeout){ - clearTimeout(timeout); - } - response.text = body.join(''); - handlers(response); - def.resolve(response); - }); - }); - - req.on('error', def.reject); - - if(options.data){ - if(typeof options.data === "string"){ - req.end(options.data); - }else{ - options.data.pipe(req); - } - }else{ - req.end(); - } - - if(options.timeout){ - var timeout = setTimeout(function(){ - def.cancel(new RequestTimeoutError(response)); - }, options.timeout); - } - - return def.promise; - } - - /*===== - node = function(url, options){ - // summary: - // Sends a request using the included http or https interface from node.js - // with the given URL and options. - // url: String - // URL to request - // options: dojo/request/node.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - node.__BaseOptions = declare(request.__BaseOptions, { - // data: String|Object|Stream? - // Data to transfer. This is ignored for GET and DELETE - // requests. - // headers: Object? - // Headers to use for the request. - // user: String? - // Username to use during the request. - // password: String? - // Password to use during the request. - }); - node.__MethodOptions = declare(null, { - // method: String? - // The HTTP method to use to make the request. Must be - // uppercase. Default is `"GET"`. - }); - node.__Options = declare([node.__BaseOptions, node.__MethodOptions]); - - node.get = function(url, options){ - // summary: - // Send an HTTP GET request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/node.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - node.post = function(url, options){ - // summary: - // Send an HTTP POST request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/node.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - node.put = function(url, options){ - // summary: - // Send an HTTP PUT request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/node.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - node.del = function(url, options){ - // summary: - // Send an HTTP DELETE request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/node.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - - util.addCommonMethods(node); - - return node; -}); diff --git a/lib/dojo/request/notify.js.uncompressed.js b/lib/dojo/request/notify.js.uncompressed.js deleted file mode 100644 index 2b8a2b68b..000000000 --- a/lib/dojo/request/notify.js.uncompressed.js +++ /dev/null @@ -1,74 +0,0 @@ -define("dojo/request/notify", ['../Evented', '../_base/lang', './util'], function(Evented, lang, util){ - // module: - // dojo/request/notify - // summary: - // Global notification API for dojo/request. Notifications will - // only be emitted if this module is required. - // - // | require('dojo/request', 'dojo/request/notify', - // | function(request, notify){ - // | notify('load', function(response){ - // | if(response.url === 'someUrl.html'){ - // | console.log('Loaded!'); - // | } - // | }); - // | request.get('someUrl.html'); - // | } - // | ); - - var pubCount = 0, - slice = [].slice; - - var hub = lang.mixin(new Evented, { - onsend: function(data){ - if(!pubCount){ - this.emit('start'); - } - pubCount++; - }, - _onload: function(data){ - this.emit('done', data); - }, - _onerror: function(data){ - this.emit('done', data); - }, - _ondone: function(data){ - if(--pubCount <= 0){ - pubCount = 0; - this.emit('stop'); - } - }, - emit: function(type, event){ - var result = Evented.prototype.emit.apply(this, arguments); - - // After all event handlers have run, run _on* handler - if(this['_on' + type]){ - this['_on' + type].apply(this, slice.call(arguments, 1)); - } - return result; - } - }); - - function notify(type, listener){ - // summary: - // Register a listener to be notified when an event - // in dojo/request happens. - // type: String? - // The event to listen for. Events emitted: "start", "send", - // "load", "error", "done", "stop". - // listener: Function? - // A callback to be run when an event happens. - // returns: - // A signal object that can be used to cancel the listener. - // If remove() is called on this signal object, it will - // stop the listener from being executed. - return hub.on(type, listener); - } - notify.emit = function(type, event, cancel){ - return hub.emit(type, event, cancel); - }; - - // Attach notify to dojo/request/util to avoid - // try{ require('./notify'); }catch(e){} - return util.notify = notify; -}); diff --git a/lib/dojo/request/registry.js.uncompressed.js b/lib/dojo/request/registry.js.uncompressed.js deleted file mode 100644 index b5d28f3e7..000000000 --- a/lib/dojo/request/registry.js.uncompressed.js +++ /dev/null @@ -1,85 +0,0 @@ -define("dojo/request/registry", [ - 'require', - '../_base/array', - './default!platform', - './util' -], function(require, array, fallbackProvider, util){ - var providers = []; - - function request(url, options){ - var matchers = providers.slice(0), - i = 0, - matcher; - - while(matcher=matchers[i++]){ - if(matcher(url, options)){ - return matcher.request.call(null, url, options); - } - } - - return fallbackProvider.apply(null, arguments); - } - - function createMatcher(match, provider){ - var matcher; - - if(provider){ - if(match.test){ - // RegExp - matcher = function(url){ - return match.test(url); - }; - }else if(match.apply && match.call){ - matcher = function(){ - return match.apply(null, arguments); - }; - }else{ - matcher = function(url){ - return url === match; - }; - } - - matcher.request = provider; - }else{ - // If only one argument was passed, assume it is a provider function - // to apply unconditionally to all URLs - matcher = function(){ - return true; - }; - - matcher.request = match; - } - - return matcher; - } - - request.register = function(url, provider, first){ - var matcher = createMatcher(url, provider); - providers[(first ? 'unshift' : 'push')](matcher); - - return { - remove: function(){ - var idx; - if(~(idx = array.indexOf(providers, matcher))){ - providers.splice(idx, 1); - } - } - }; - }; - - request.load = function(id, parentRequire, loaded, config){ - if(id){ - // if there's an id, load and set the fallback provider - require([id], function(fallback){ - fallbackProvider = fallback; - loaded(request); - }); - }else{ - loaded(request); - } - }; - - util.addCommonMethods(request); - - return request; -}); diff --git a/lib/dojo/request/script.js.uncompressed.js b/lib/dojo/request/script.js.uncompressed.js deleted file mode 100644 index fcce1bd4b..000000000 --- a/lib/dojo/request/script.js.uncompressed.js +++ /dev/null @@ -1,218 +0,0 @@ -define("dojo/request/script", [ - 'module', - './watch', - './util', - '../_base/array', - '../_base/lang', - '../on', - '../dom', - '../dom-construct', - '../has', - '../_base/window'/*=====, - '../request', - '../_base/declare' =====*/ -], function(module, watch, util, array, lang, on, dom, domConstruct, has, win/*=====, request, declare =====*/){ - has.add('script-readystatechange', function(global, document){ - var script = document.createElement('script'); - return typeof script['onreadystatechange'] !== 'undefined' && - (typeof global['opera'] === 'undefined' || global['opera'].toString() !== '[object Opera]'); - }); - - var mid = module.id.replace(/[\/\.\-]/g, '_'), - counter = 0, - loadEvent = has('script-readystatechange') ? 'readystatechange' : 'load', - readyRegExp = /complete|loaded/, - callbacks = this[mid + '_callbacks'] = {}, - deadScripts = []; - - function attach(id, url, frameDoc){ - var doc = (frameDoc || win.doc), - element = doc.createElement('script'); - - element.type = 'text/javascript'; - element.src = url; - element.id = id; - element.async = true; - element.charset = 'utf-8'; - - return doc.getElementsByTagName('head')[0].appendChild(element); - } - - function remove(id, frameDoc, cleanup){ - domConstruct.destroy(dom.byId(id, frameDoc)); - - if(callbacks[id]){ - if(cleanup){ - // set callback to a function that deletes itself so requests that - // are in-flight don't error out when returning and also - // clean up after themselves - callbacks[id] = function(){ - delete callbacks[id]; - }; - }else{ - delete callbacks[id]; - } - } - } - - function _addDeadScript(dfd){ - // Be sure to check ioArgs because it can dynamically change in the dojox/io plugins. - // See http://bugs.dojotoolkit.org/ticket/15890. - var options = dfd.response.options, - frameDoc = options.ioArgs ? options.ioArgs.frameDoc : options.frameDoc; - - deadScripts.push({ id: dfd.id, frameDoc: frameDoc }); - - if(options.ioArgs){ - options.ioArgs.frameDoc = null; - } - options.frameDoc = null; - } - - function canceler(dfd, response){ - if(dfd.canDelete){ - //For timeouts and cancels, remove the script element immediately to - //avoid a response from it coming back later and causing trouble. - script._remove(dfd.id, response.options.frameDoc, true); - } - } - function isValid(response){ - //Do script cleanup here. We wait for one inflight pass - //to make sure we don't get any weird things by trying to remove a script - //tag that is part of the call chain (IE 6 has been known to - //crash in that case). - if(deadScripts && deadScripts.length){ - array.forEach(deadScripts, function(_script){ - script._remove(_script.id, _script.frameDoc); - _script.frameDoc = null; - }); - deadScripts = []; - } - - return response.options.jsonp ? !response.data : true; - } - function isReadyScript(response){ - return !!this.scriptLoaded; - } - function isReadyCheckString(response){ - var checkString = response.options.checkString; - - return checkString && eval('typeof(' + checkString + ') !== "undefined"'); - } - function handleResponse(response, error){ - if(this.canDelete){ - _addDeadScript(this); - } - if(error){ - this.reject(error); - }else{ - this.resolve(response); - } - } - - function script(url, options, returnDeferred){ - var response = util.parseArgs(url, util.deepCopy({}, options)); - url = response.url; - options = response.options; - - var dfd = util.deferred( - response, - canceler, - isValid, - options.jsonp ? null : (options.checkString ? isReadyCheckString : isReadyScript), - handleResponse - ); - - lang.mixin(dfd, { - id: mid + (counter++), - canDelete: false - }); - - if(options.jsonp){ - var queryParameter = new RegExp('[?&]' + options.jsonp + '='); - if(!queryParameter.test(url)){ - url += queryParameter + - (options.frameDoc ? 'parent.' : '') + - mid + '_callbacks.' + dfd.id; - } - - dfd.canDelete = true; - callbacks[dfd.id] = function(json){ - response.data = json; - dfd.handleResponse(response); - }; - } - - if(util.notify){ - util.notify.emit('send', response, dfd.promise.cancel); - } - - if(!options.canAttach || options.canAttach(dfd)){ - var node = script._attach(dfd.id, url, options.frameDoc); - - if(!options.jsonp && !options.checkString){ - var handle = on(node, loadEvent, function(evt){ - if(evt.type === 'load' || readyRegExp.test(node.readyState)){ - handle.remove(); - dfd.scriptLoaded = evt; - } - }); - } - } - - watch(dfd); - - return returnDeferred ? dfd : dfd.promise; - } - script.get = script; - /*===== - script = function(url, options){ - // summary: - // Sends a request using a script element with the given URL and options. - // url: String - // URL to request - // options: dojo/request/script.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - script.__BaseOptions = declare(request.__BaseOptions, { - // jsonp: String? - // The URL parameter name that indicates the JSONP callback string. - // For instance, when using Yahoo JSONP calls it is normally, - // jsonp: "callback". For AOL JSONP calls it is normally - // jsonp: "c". - // checkString: String? - // A string of JavaScript that when evaluated like so: - // "typeof(" + checkString + ") != 'undefined'" - // being true means that the script fetched has been loaded. - // Do not use this if doing a JSONP type of call (use `jsonp` instead). - // frameDoc: Document? - // The Document object of a child iframe. If this is passed in, the script - // will be attached to that document. This can be helpful in some comet long-polling - // scenarios with Firefox and Opera. - }); - script.__MethodOptions = declare(null, { - // method: String? - // This option is ignored. All requests using this transport are - // GET requests. - }); - script.__Options = declare([script.__BaseOptions, script.__MethodOptions]); - - script.get = function(url, options){ - // summary: - // Send an HTTP GET request using a script element with the given URL and options. - // url: String - // URL to request - // options: dojo/request/script.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - - // TODO: Remove in 2.0 - script._attach = attach; - script._remove = remove; - script._callbacksProperty = mid + '_callbacks'; - - return script; -}); diff --git a/lib/dojo/request/util.js.uncompressed.js b/lib/dojo/request/util.js.uncompressed.js deleted file mode 100644 index 988eb6746..000000000 --- a/lib/dojo/request/util.js.uncompressed.js +++ /dev/null @@ -1,145 +0,0 @@ -define("dojo/request/util", [ - 'exports', - '../errors/RequestError', - '../errors/CancelError', - '../Deferred', - '../io-query', - '../_base/array', - '../_base/lang' -], function(exports, RequestError, CancelError, Deferred, ioQuery, array, lang){ - exports.deepCopy = function deepCopy(target, source){ - for(var name in source){ - var tval = target[name], - sval = source[name]; - if(tval !== sval){ - if(tval && typeof tval === 'object' && sval && typeof sval === 'object'){ - exports.deepCopy(tval, sval); - }else{ - target[name] = sval; - } - } - } - return target; - }; - - exports.deepCreate = function deepCreate(source, properties){ - properties = properties || {}; - var target = lang.delegate(source), - name, value; - - for(name in source){ - value = source[name]; - - if(value && typeof value === 'object'){ - target[name] = exports.deepCreate(value, properties[name]); - } - } - return exports.deepCopy(target, properties); - }; - - var freeze = Object.freeze || function(obj){ return obj; }; - function okHandler(response){ - return freeze(response); - } - - exports.deferred = function deferred(response, cancel, isValid, isReady, handleResponse, last){ - var def = new Deferred(function(reason){ - cancel && cancel(def, response); - - if(!reason || !(reason instanceof RequestError) && !(reason instanceof CancelError)){ - return new CancelError('Request canceled', response); - } - return reason; - }); - - def.response = response; - def.isValid = isValid; - def.isReady = isReady; - def.handleResponse = handleResponse; - - function errHandler(error){ - error.response = response; - throw error; - } - var responsePromise = def.then(okHandler).otherwise(errHandler); - - if(exports.notify){ - responsePromise.then( - lang.hitch(exports.notify, 'emit', 'load'), - lang.hitch(exports.notify, 'emit', 'error') - ); - } - - var dataPromise = responsePromise.then(function(response){ - return response.data || response.text; - }); - - var promise = freeze(lang.delegate(dataPromise, { - response: responsePromise - })); - - - if(last){ - def.then(function(response){ - last.call(def, response); - }, function(error){ - last.call(def, response, error); - }); - } - - def.promise = promise; - def.then = promise.then; - - return def; - }; - - exports.addCommonMethods = function addCommonMethods(provider, methods){ - array.forEach(methods||['GET', 'POST', 'PUT', 'DELETE'], function(method){ - provider[(method === 'DELETE' ? 'DEL' : method).toLowerCase()] = function(url, options){ - options = lang.delegate(options||{}); - options.method = method; - return provider(url, options); - }; - }); - }; - - exports.parseArgs = function parseArgs(url, options, skipData){ - var data = options.data, - query = options.query; - - if(data && !skipData){ - if(typeof data === 'object'){ - options.data = ioQuery.objectToQuery(data); - } - } - - if(query){ - if(typeof query === 'object'){ - query = ioQuery.objectToQuery(query); - } - if(options.preventCache){ - query += (query ? '&' : '') + 'request.preventCache=' + (+(new Date)); - } - }else if(options.preventCache){ - query = 'request.preventCache=' + (+(new Date)); - } - - if(url && query){ - url += (~url.indexOf('?') ? '&' : '?') + query; - } - - return { - url: url, - options: options, - getHeader: function(headerName){ return null; } - }; - }; - - exports.checkStatus = function(stat){ - stat = stat || 0; - return (stat >= 200 && stat < 300) || // allow any 2XX response code - stat === 304 || // or, get it out of the cache - stat === 1223 || // or, Internet Explorer mangled the status code - !stat; // or, we're Titanium/browser chrome/chrome extension requesting a local file - }; -}); diff --git a/lib/dojo/request/watch.js.uncompressed.js b/lib/dojo/request/watch.js.uncompressed.js deleted file mode 100644 index 2b7722816..000000000 --- a/lib/dojo/request/watch.js.uncompressed.js +++ /dev/null @@ -1,109 +0,0 @@ -define("dojo/request/watch", [ - './util', - '../errors/RequestTimeoutError', - '../errors/CancelError', - '../_base/array', - '../_base/window', - '../has!host-browser?dom-addeventlistener?:../on:' -], function(util, RequestTimeoutError, CancelError, array, win, on){ - // avoid setting a timer per request. It degrades performance on IE - // something fierece if we don't use unified loops. - var _inFlightIntvl = null, - _inFlight = []; - - function watchInFlight(){ - // summary: - // internal method that checks each inflight XMLHttpRequest to see - // if it has completed or if the timeout situation applies. - - var now = +(new Date); - - // we need manual loop because we often modify _inFlight (and therefore 'i') while iterating - for(var i = 0, dfd; i < _inFlight.length && (dfd = _inFlight[i]); i++){ - var response = dfd.response, - options = response.options; - if((dfd.isCanceled && dfd.isCanceled()) || (dfd.isValid && !dfd.isValid(response))){ - _inFlight.splice(i--, 1); - watch._onAction && watch._onAction(); - }else if(dfd.isReady && dfd.isReady(response)){ - _inFlight.splice(i--, 1); - dfd.handleResponse(response); - watch._onAction && watch._onAction(); - }else if(dfd.startTime){ - // did we timeout? - if(dfd.startTime + (options.timeout || 0) < now){ - _inFlight.splice(i--, 1); - // Cancel the request so the io module can do appropriate cleanup. - dfd.cancel(new RequestTimeoutError('Timeout exceeded', response)); - watch._onAction && watch._onAction(); - } - } - } - - watch._onInFlight && watch._onInFlight(dfd); - - if(!_inFlight.length){ - clearInterval(_inFlightIntvl); - _inFlightIntvl = null; - } - } - - function watch(dfd){ - // summary: - // Watches the io request represented by dfd to see if it completes. - // dfd: Deferred - // The Deferred object to watch. - // response: Object - // The object used as the value of the request promise. - // validCheck: Function - // Function used to check if the IO request is still valid. Gets the dfd - // object as its only argument. - // ioCheck: Function - // Function used to check if basic IO call worked. Gets the dfd - // object as its only argument. - // resHandle: Function - // Function used to process response. Gets the dfd - // object as its only argument. - if(dfd.response.options.timeout){ - dfd.startTime = +(new Date); - } - - if(dfd.isFulfilled()){ - // bail out if the deferred is already fulfilled - return; - } - - _inFlight.push(dfd); - if(!_inFlightIntvl){ - _inFlightIntvl = setInterval(watchInFlight, 50); - } - - // handle sync requests separately from async: - // http://bugs.dojotoolkit.org/ticket/8467 - if(dfd.response.options.sync){ - watchInFlight(); - } - } - - watch.cancelAll = function cancelAll(){ - // summary: - // Cancels all pending IO requests, regardless of IO type - try{ - array.forEach(_inFlight, function(dfd){ - try{ - dfd.cancel(new CancelError('All requests canceled.')); - }catch(e){} - }); - }catch(e){} - }; - - if(win && on && win.doc.attachEvent){ - // Automatically call cancel all io calls on unload in IE - // http://bugs.dojotoolkit.org/ticket/2357 - on(win.global, 'unload', function(){ - watch.cancelAll(); - }); - } - - return watch; -}); diff --git a/lib/dojo/request/xhr.js.uncompressed.js b/lib/dojo/request/xhr.js.uncompressed.js deleted file mode 100644 index 620fac3b1..000000000 --- a/lib/dojo/request/xhr.js.uncompressed.js +++ /dev/null @@ -1,316 +0,0 @@ -define("dojo/request/xhr", [ - '../errors/RequestError', - './watch', - './handlers', - './util', - '../has'/*=====, - '../request', - '../_base/declare' =====*/ -], function(RequestError, watch, handlers, util, has/*=====, request, declare =====*/){ - has.add('native-xhr', function(){ - // if true, the environment has a native XHR implementation - return typeof XMLHttpRequest !== 'undefined'; - }); - has.add('dojo-force-activex-xhr', function(){ - return has('activex') && !document.addEventListener && window.location.protocol === 'file:'; - }); - - has.add('native-xhr2', function(){ - if(!has('native-xhr')){ return; } - var x = new XMLHttpRequest(); - return typeof x['addEventListener'] !== 'undefined' && - (typeof opera === 'undefined' || typeof x['upload'] !== 'undefined'); - }); - - has.add('native-formdata', function(){ - // if true, the environment has a native FormData implementation - return typeof FormData === 'function'; - }); - - function handleResponse(response, error){ - var _xhr = response.xhr; - response.status = response.xhr.status; - response.text = _xhr.responseText; - - if(response.options.handleAs === 'xml'){ - response.data = _xhr.responseXML; - } - - if(!error){ - try{ - handlers(response); - }catch(e){ - error = e; - } - } - - if(error){ - this.reject(error); - }else if(util.checkStatus(_xhr.status)){ - this.resolve(response); - }else{ - error = new RequestError('Unable to load ' + response.url + ' status: ' + _xhr.status, response); - - this.reject(error); - } - } - - var isValid, isReady, addListeners, cancel; - if(has('native-xhr2')){ - // Any platform with XHR2 will only use the watch mechanism for timeout. - - isValid = function(response){ - // summary: - // Check to see if the request should be taken out of the watch queue - return !this.isFulfilled(); - }; - cancel = function(dfd, response){ - // summary: - // Canceler for deferred - response.xhr.abort(); - }; - addListeners = function(_xhr, dfd, response){ - // summary: - // Adds event listeners to the XMLHttpRequest object - function onLoad(evt){ - dfd.handleResponse(response); - } - function onError(evt){ - var _xhr = evt.target; - var error = new RequestError('Unable to load ' + response.url + ' status: ' + _xhr.status, response); - dfd.handleResponse(response, error); - } - - function onProgress(evt){ - if(evt.lengthComputable){ - response.loaded = evt.loaded; - response.total = evt.total; - dfd.progress(response); - } - } - - _xhr.addEventListener('load', onLoad, false); - _xhr.addEventListener('error', onError, false); - _xhr.addEventListener('progress', onProgress, false); - - return function(){ - _xhr.removeEventListener('load', onLoad, false); - _xhr.removeEventListener('error', onError, false); - _xhr.removeEventListener('progress', onProgress, false); - }; - }; - }else{ - isValid = function(response){ - return response.xhr.readyState; //boolean - }; - isReady = function(response){ - return 4 === response.xhr.readyState; //boolean - }; - cancel = function(dfd, response){ - // summary: - // canceller function for util.deferred call. - var xhr = response.xhr; - var _at = typeof xhr.abort; - if(_at === 'function' || _at === 'object' || _at === 'unknown'){ - xhr.abort(); - } - }; - } - - var undefined, - defaultOptions = { - data: null, - query: null, - sync: false, - method: 'GET', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }; - function xhr(url, options, returnDeferred){ - var response = util.parseArgs( - url, - util.deepCreate(defaultOptions, options), - has('native-formdata') && options && options.data && options.data instanceof FormData - ); - url = response.url; - options = response.options; - - var remover, - last = function(){ - remover && remover(); - }; - - //Make the Deferred object for this xhr request. - var dfd = util.deferred( - response, - cancel, - isValid, - isReady, - handleResponse, - last - ); - var _xhr = response.xhr = xhr._create(); - - if(!_xhr){ - // If XHR factory somehow returns nothings, - // cancel the deferred. - dfd.cancel(new RequestError('XHR was not created')); - return returnDeferred ? dfd : dfd.promise; - } - - response.getHeader = function(headerName){ - return this.xhr.getResponseHeader(headerName); - }; - - if(addListeners){ - remover = addListeners(_xhr, dfd, response); - } - - var data = options.data, - async = !options.sync, - method = options.method; - - try{ - // IE6 won't let you call apply() on the native function. - _xhr.open(method, url, async, options.user || undefined, options.password || undefined); - - if(options.withCredentials){ - _xhr.withCredentials = options.withCredentials; - } - - var headers = options.headers, - contentType; - if(headers){ - for(var hdr in headers){ - if(hdr.toLowerCase() === 'content-type'){ - contentType = headers[hdr]; - }else if(headers[hdr]){ - //Only add header if it has a value. This allows for instance, skipping - //insertion of X-Requested-With by specifying empty value. - _xhr.setRequestHeader(hdr, headers[hdr]); - } - } - } - - if(contentType && contentType !== false){ - _xhr.setRequestHeader('Content-Type', contentType); - } - if(!headers || !('X-Requested-With' in headers)){ - _xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - } - - if(util.notify){ - util.notify.emit('send', response, dfd.promise.cancel); - } - _xhr.send(data); - }catch(e){ - dfd.reject(e); - } - - watch(dfd); - _xhr = null; - - return returnDeferred ? dfd : dfd.promise; - } - - /*===== - xhr = function(url, options){ - // summary: - // Sends a request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__Options? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.__BaseOptions = declare(request.__BaseOptions, { - // sync: Boolean? - // Whether to make a synchronous request or not. Default - // is `false` (asynchronous). - // data: String|Object|FormData? - // Data to transfer. This is ignored for GET and DELETE - // requests. - // headers: Object? - // Headers to use for the request. - // user: String? - // Username to use during the request. - // password: String? - // Password to use during the request. - // withCredentials: Boolean? - // For cross-site requests, whether to send credentials - // or not. - }); - xhr.__MethodOptions = declare(null, { - // method: String? - // The HTTP method to use to make the request. Must be - // uppercase. Default is `"GET"`. - }); - xhr.__Options = declare([xhr.__BaseOptions, xhr.__MethodOptions]); - - xhr.get = function(url, options){ - // summary: - // Send an HTTP GET request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.post = function(url, options){ - // summary: - // Send an HTTP POST request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.put = function(url, options){ - // summary: - // Send an HTTP PUT request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - xhr.del = function(url, options){ - // summary: - // Send an HTTP DELETE request using XMLHttpRequest with the given URL and options. - // url: String - // URL to request - // options: dojo/request/xhr.__BaseOptions? - // Options for the request. - // returns: dojo/request.__Promise - }; - =====*/ - xhr._create = function(){ - // summary: - // does the work of portably generating a new XMLHTTPRequest object. - throw new Error('XMLHTTP not available'); - }; - if(has('native-xhr') && !has('dojo-force-activex-xhr')){ - xhr._create = function(){ - return new XMLHttpRequest(); - }; - }else if(has('activex')){ - try{ - new ActiveXObject('Msxml2.XMLHTTP'); - xhr._create = function(){ - return new ActiveXObject('Msxml2.XMLHTTP'); - }; - }catch(e){ - try{ - new ActiveXObject('Microsoft.XMLHTTP'); - xhr._create = function(){ - return new ActiveXObject('Microsoft.XMLHTTP'); - }; - }catch(e){} - } - } - - util.addCommonMethods(xhr); - - return xhr; -}); diff --git a/lib/dojo/require.js.uncompressed.js b/lib/dojo/require.js.uncompressed.js deleted file mode 100644 index e3d12dde4..000000000 --- a/lib/dojo/require.js.uncompressed.js +++ /dev/null @@ -1,7 +0,0 @@ -define("dojo/require", ["./_base/loader"], function(loader){ - return { - dynamic:0, - normalize:function(id){return id;}, - load:loader.require - }; -}); diff --git a/lib/dojo/router.js.uncompressed.js b/lib/dojo/router.js.uncompressed.js deleted file mode 100644 index 5003963a5..000000000 --- a/lib/dojo/router.js.uncompressed.js +++ /dev/null @@ -1,28 +0,0 @@ -define("dojo/router", [ - "./router/RouterBase" -], function(RouterBase){ - - // module: - // dojo/router - -/*===== -return { - // summary: - // A singleton-style instance of dojo/router/RouterBase. See that - // module for specifics. - // example: - // | router.register("/widgets/:id", function(evt){ - // | // If "/widgets/3" was matched, - // | // evt.params.id === "3" - // | xhr.get({ - // | url: "/some/path/" + evt.params.id, - // | load: function(data){ - // | // ... - // | } - // | }); - // | }); -}; -=====*/ - - return new RouterBase({}); -}); diff --git a/lib/dojo/router/RouterBase.js.uncompressed.js b/lib/dojo/router/RouterBase.js.uncompressed.js deleted file mode 100644 index 821d74499..000000000 --- a/lib/dojo/router/RouterBase.js.uncompressed.js +++ /dev/null @@ -1,350 +0,0 @@ -define("dojo/router/RouterBase", [ - "dojo/_base/declare", - "dojo/hash", - "dojo/topic" -], function(declare, hash, topic){ - - // module: - // dojo/router/RouterBase - - // Creating a basic trim to avoid needing the full dojo/string module - // similarly to dojo/_base/lang's trim - var trim; - if(String.prototype.trim){ - trim = function(str){ return str.trim(); }; - }else{ - trim = function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }; - } - - // Firing of routes on the route object is always the same, - // no clean way to expose this on the prototype since it's for the - // internal router objects. - function fireRoute(params, currentPath, newPath){ - var queue, isStopped, isPrevented, eventObj, i, l; - - queue = this.callbackQueue; - isStopped = false; - isPrevented = false; - eventObj = { - stopImmediatePropagation: function(){ isStopped = true; }, - preventDefault: function(){ isPrevented = true; }, - oldPath: currentPath, - newPath: newPath, - params: params - }; - - for(i=0, l=queue.length; i<l; ++i){ - if(!isStopped){ - queue[i](eventObj); - } - } - - return !isPrevented; - } - - // Our actual class-like object - var RouterBase = declare(null, { - // summary: - // A module that allows one to easily map hash-based structures into - // callbacks. The router module is a singleton, offering one central - // point for all registrations of this type. - // example: - // | var router = new RouterBase({}); - // | router.register("/widgets/:id", function(evt){ - // | // If "/widgets/3" was matched, - // | // evt.params.id === "3" - // | xhr.get({ - // | url: "/some/path/" + evt.params.id, - // | load: function(data){ - // | // ... - // | } - // | }); - // | }); - - _routes: null, - _routeIndex: null, - _started: false, - _currentPath: "", - - idMatch: /:(\w[\w\d]*)/g, - idReplacement: "([^\\/]+)", - globMatch: /\*(\w[\w\d]*)/, - globReplacement: "(.+)", - - constructor: function(kwArgs){ - // A couple of safety initializations - this._routes = []; - this._routeIndex = {}; - - // Simple constructor-style "Decorate myself all over" for now - for(var i in kwArgs){ - if(kwArgs.hasOwnProperty(i)){ - this[i] = kwArgs[i]; - } - } - }, - - register: function(/*String|RegExp*/ route, /*Function*/ callback){ - // summary: - // Registers a route to a handling callback - // description: - // Given either a string or a regular expression, the router - // will monitor the page's hash and respond to changes that - // match the string or regex as provided. - // - // When provided a regex for the route: - // - // - Matching is performed, and the resulting capture groups - // are passed through to the callback as an array. - // - // When provided a string for the route: - // - // - The string is parsed as a URL-like structure, like - // "/foo/bar" - // - If any portions of that URL are prefixed with a colon - // (:), they will be parsed out and provided to the callback - // as properties of an object. - // - If the last piece of the URL-like structure is prefixed - // with a star (*) instead of a colon, it will be replaced in - // the resulting regex with a greedy (.+) match and - // anything remaining on the hash will be provided as a - // property on the object passed into the callback. Think of - // it like a basic means of globbing the end of a route. - // example: - // | router.register("/foo/:bar/*baz", function(object){ - // | // If the hash was "/foo/abc/def/ghi", - // | // object.bar === "abc" - // | // object.baz === "def/ghi" - // | }); - // returns: Object - // A plain JavaScript object to be used as a handle for - // either removing this specific callback's registration, as - // well as to add new callbacks with the same route initially - // used. - // route: String|RegExp - // A string or regular expression which will be used when - // monitoring hash changes. - // callback: Function - // When the hash matches a pattern as described in the route, - // this callback will be executed. It will receive an event - // object that will have several properties: - // - // - params: Either an array or object of properties pulled - // from the new hash - // - oldPath: The hash in its state before the change - // - newPath: The new hash being shifted to - // - preventDefault: A method that will stop hash changes - // from being actually applied to the active hash. This only - // works if the hash change was initiated using `router.go`, - // as changes initiated more directly to the location.hash - // property will already be in place - // - stopImmediatePropagation: When called, will stop any - // further bound callbacks on this particular route from - // being executed. If two distinct routes are bound that are - // different, but both happen to match the current hash in - // some way, this will *not* keep other routes from receiving - // notice of the change. - - return this._registerRoute(route, callback); - }, - - registerBefore: function(/*String|RegExp*/ route, /*Function*/ callback){ - // summary: - // Registers a route to a handling callback, except before - // any previously registered callbacks - // description: - // Much like the `register` method, `registerBefore` allows - // us to register route callbacks to happen before any - // previously registered callbacks. See the documentation for - // `register` for more details and examples. - - return this._registerRoute(route, callback, true); - }, - - go: function(path, replace){ - // summary: - // A simple pass-through to make changing the hash easy, - // without having to require dojo/hash directly. It also - // synchronously fires off any routes that match. - // example: - // | router.go("/foo/bar"); - - var applyChange; - - path = trim(path); - applyChange = this._handlePathChange(path); - - if(applyChange){ - hash(path, replace); - } - - return applyChange; - }, - - startup: function(){ - // summary: - // This method must be called to activate the router. Until - // startup is called, no hash changes will trigger route - // callbacks. - - if(this._started){ return; } - - var self = this; - - this._started = true; - this._handlePathChange(hash()); - topic.subscribe("/dojo/hashchange", function(){ - // No need to load all of lang for just this - self._handlePathChange.apply(self, arguments); - }); - }, - - _handlePathChange: function(newPath){ - var i, j, li, lj, routeObj, result, - allowChange, parameterNames, params, - routes = this._routes, - currentPath = this._currentPath; - - if(!this._started || newPath === currentPath){ return allowChange; } - - allowChange = true; - - for(i=0, li=routes.length; i<li; ++i){ - routeObj = routes[i]; - result = routeObj.route.exec(newPath); - - if(result){ - if(routeObj.parameterNames){ - parameterNames = routeObj.parameterNames; - params = {}; - - for(j=0, lj=parameterNames.length; j<lj; ++j){ - params[parameterNames[j]] = result[j+1]; - } - }else{ - params = result.slice(1); - } - allowChange = routeObj.fire(params, currentPath, newPath); - } - } - - if(allowChange){ - this._currentPath = newPath; - } - - return allowChange; - }, - - _convertRouteToRegExp: function(route){ - // Sub in based on IDs and globs - route = route.replace(this.idMatch, this.idReplacement); - route = route.replace(this.globMatch, this.globReplacement); - // Make sure it's an exact match - route = "^" + route + "$"; - - return new RegExp(route); - }, - - _getParameterNames: function(route){ - var idMatch = this.idMatch, - globMatch = this.globMatch, - parameterNames = [], match; - - idMatch.lastIndex = 0; - - while((match = idMatch.exec(route)) !== null){ - parameterNames.push(match[1]); - } - if((match = globMatch.exec(route)) !== null){ - parameterNames.push(match[1]); - } - - return parameterNames.length > 0 ? parameterNames : null; - }, - - _indexRoutes: function(){ - var i, l, route, routeIndex, routes = this._routes; - - // Start a new route index - routeIndex = this._routeIndex = {}; - - // Set it up again - for(i=0, l=routes.length; i<l; ++i){ - route = routes[i]; - routeIndex[route.route] = i; - } - }, - - _registerRoute: function(/*String|RegExp*/route, /*Function*/callback, /*Boolean?*/isBefore){ - var index, exists, routeObj, callbackQueue, removed, - self = this, routes = this._routes, - routeIndex = this._routeIndex; - - // Try to fetch the route if it already exists. - // This works thanks to stringifying of regex - index = this._routeIndex[route]; - exists = typeof index !== "undefined"; - if(exists){ - routeObj = routes[index]; - } - - // If we didn't get one, make a default start point - if(!routeObj){ - routeObj = { - route: route, - callbackQueue: [], - fire: fireRoute - }; - } - - callbackQueue = routeObj.callbackQueue; - - if(typeof route == "string"){ - routeObj.parameterNames = this._getParameterNames(route); - routeObj.route = this._convertRouteToRegExp(route); - } - - if(isBefore){ - callbackQueue.unshift(callback); - }else{ - callbackQueue.push(callback); - } - - if(!exists){ - index = routes.length; - routeIndex[route] = index; - routes.push(routeObj); - } - - // Useful in a moment to keep from re-removing routes - removed = false; - - return { // Object - remove: function(){ - var i, l; - - if(removed){ return; } - - for(i=0, l=callbackQueue.length; i<l; ++i){ - if(callbackQueue[i] === callback){ - callbackQueue.splice(i, 1); - } - } - - - if(callbackQueue.length === 0){ - routes.splice(index, 1); - self._indexRoutes(); - } - - removed = true; - }, - register: function(callback, isBefore){ - return self.register(route, callback, isBefore); - } - }; - } - }); - - return RouterBase; -}); diff --git a/lib/dojo/rpc/JsonService.js.uncompressed.js b/lib/dojo/rpc/JsonService.js.uncompressed.js deleted file mode 100644 index 07c16d545..000000000 --- a/lib/dojo/rpc/JsonService.js.uncompressed.js +++ /dev/null @@ -1,87 +0,0 @@ -define("dojo/rpc/JsonService", [ - "../_base/declare", "../_base/Deferred", "../_base/json", "../_base/lang", "../_base/xhr", - "./RpcService" -], function(declare, Deferred, json, lang, xhr, RpcService){ - - // module: - // dojo/rpc/JsonService - - return declare("dojo.rpc.JsonService", RpcService, { - // summary: - // TODOC - - bustCache: false, - contentType: "application/json-rpc", - lastSubmissionId: 0, - - callRemote: function(method, params){ - // summary: - // call an arbitrary remote method without requiring it to be - // predefined with SMD - // method: string - // the name of the remote method you want to call. - // params: array - // array of parameters to pass to method - - var deferred = new Deferred(); - this.bind(method, params, deferred); - return deferred; - }, - - bind: function(method, parameters, deferredRequestHandler, url){ - // summary: - // JSON-RPC bind method. Takes remote method, parameters, - // deferred, and a url, calls createRequest to make a JSON-RPC - // envelope and passes that off with bind. - // method: string - // The name of the method we are calling - // parameters: array - // The parameters we are passing off to the method - // deferredRequestHandler: deferred - // The Deferred object for this particular request - - var def = xhr.post({ - url: url||this.serviceUrl, - postData: this.createRequest(method, parameters), - contentType: this.contentType, - timeout: this.timeout, - handleAs: "json-comment-optional" - }); - def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler)); - }, - - createRequest: function(method, params){ - // summary: - // create a JSON-RPC envelope for the request - // method: string - // The name of the method we are creating the request for - // params: array - // The array of parameters for this request - - var req = { "params": params, "method": method, "id": ++this.lastSubmissionId }; - return json.toJson(req); - }, - - parseResults: function(/*anything*/obj){ - // summary: - // parse the result envelope and pass the results back to - // the callback function - // obj: Object - // Object containing envelope of data we receive from the server - - if(lang.isObject(obj)){ - if("result" in obj){ - return obj.result; - } - if("Result" in obj){ - return obj.Result; - } - if("ResultSet" in obj){ - return obj.ResultSet; - } - } - return obj; - } - }); - -}); diff --git a/lib/dojo/rpc/JsonpService.js.uncompressed.js b/lib/dojo/rpc/JsonpService.js.uncompressed.js deleted file mode 100644 index 673a68c37..000000000 --- a/lib/dojo/rpc/JsonpService.js.uncompressed.js +++ /dev/null @@ -1,66 +0,0 @@ -define("dojo/rpc/JsonpService", [ - "../_base/array", "../_base/declare", "../_base/lang", "./RpcService", "../io/script"], - function(array, declare, lang, RpcService, script){ - -// module: -// dojo/rpc/JsonpService - -return declare("dojo.rpc.JsonpService", RpcService, { - // summary: - // Generic JSONP service. Minimally extends RpcService to allow - // easy definition of nearly any JSONP style service. Example - // SMD files exist in dojox.data - - constructor: function(args, requiredArgs){ - if(this.required){ - if(requiredArgs){ - lang.mixin(this.required, requiredArgs); - } - - array.forEach(this.required, function(req){ - if(req=="" || req==undefined){ - throw new Error("Required Service Argument not found: "+req); - } - }); - } - }, - - strictArgChecks: false, - - bind: function(method, parameters, deferredRequestHandler, url){ - // summary: - // JSONP bind method. Takes remote method, parameters, - // deferred, and a url, calls createRequest to make a JSON-RPC - // envelope and passes that off with bind. - // method: string - // The name of the method we are calling - // parameters: array - // The parameters we are passing off to the method - // deferredRequestHandler: deferred - // The Deferred object for this particular request - - var def = script.get({ - url: url||this.serviceUrl, - callbackParamName: this.callbackParamName||"callback", - content: this.createRequest(parameters), - timeout: this.timeout, - handleAs: "json", - preventCache: true - }); - def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler)); - }, - - createRequest: function(parameters){ - // summary: - // create a JSONP req - // params: array - // The array of parameters for this request; - - var params = (lang.isArrayLike(parameters) && parameters.length==1) ? - parameters[0] : {}; - lang.mixin(params,this.required); - return params; - } -}); - -}); diff --git a/lib/dojo/rpc/RpcService.js.uncompressed.js b/lib/dojo/rpc/RpcService.js.uncompressed.js deleted file mode 100644 index 96469af5f..000000000 --- a/lib/dojo/rpc/RpcService.js.uncompressed.js +++ /dev/null @@ -1,178 +0,0 @@ -define("dojo/rpc/RpcService", [ - "../_base/array", "../_base/declare", "../_base/Deferred", "../_base/kernel","../_base/lang", - "../_base/url", "../_base/xhr" -], function(array, declare, Deferred, kernel, lang, _Url, xhr){ - -// module: -// dojo/rpc/RpcService - -return declare("dojo.rpc.RpcService", null, { - // summary: - // TODOC - - constructor: function(args){ - // summary: - // Take a string as a url to retrieve an smd or an object that is an smd or partial smd to use - // as a definition for the service - // - // args: object - // Takes a number of properties as kwArgs for defining the service. It also - // accepts a string. When passed a string, it is treated as a url from - // which it should synchronously retrieve an smd file. Otherwise it is a kwArgs - // object. It accepts serviceUrl, to manually define a url for the rpc service - // allowing the rpc system to be used without an smd definition. strictArgChecks - // forces the system to verify that the # of arguments provided in a call - // matches those defined in the smd. smdString allows a developer to pass - // a jsonString directly, which will be converted into an object or alternatively - // smdObject is accepts an smdObject directly. - // - if(args){ - //if the arg is a string, we assume it is a url to retrieve an smd definition from - if( (lang.isString(args)) || (args instanceof _Url)){ - if (args instanceof _Url){ - var url = args + ""; - }else{ - url = args; - } - var def = xhr.get({ - url: url, - handleAs: "json-comment-optional", - sync: true - }); - - def.addCallback(this, "processSmd"); - def.addErrback(function(){ - throw new Error("Unable to load SMD from " + args); - }); - - }else if(args.smdStr){ - this.processSmd(kernel.eval("("+args.smdStr+")")); - }else{ - // otherwise we assume it's an arguments object with the following - // (optional) properties: - // - serviceUrl - // - strictArgChecks - // - smdStr - // - smdObj - - if(args.serviceUrl){ - this.serviceUrl = args.serviceUrl; - } - - this.timeout = args.timeout || 3000; - - if("strictArgChecks" in args){ - this.strictArgChecks = args.strictArgChecks; - } - - this.processSmd(args); - } - } - }, - - strictArgChecks: true, - serviceUrl: "", - - parseResults: function(obj){ - // summary: - // parse the results coming back from an rpc request. this - // base implementation, just returns the full object - // subclasses should parse and only return the actual results - // obj: Object - // Object that is the return results from an rpc request - return obj; - }, - - errorCallback: function(/* dojo/_base/Deferred */ deferredRequestHandler){ - // summary: - // create callback that calls the Deferred errback method - // deferredRequestHandler: Deferred - // The deferred object handling a request. - return function(data){ - deferredRequestHandler.errback(data.message); - }; - }, - - resultCallback: function(/* dojo/_base/Deferred */ deferredRequestHandler){ - // summary: - // create callback that calls the Deferred's callback method - // deferredRequestHandler: Deferred - // The deferred object handling a request. - - return lang.hitch(this, - function(obj){ - if(obj.error!=null){ - var err; - if(typeof obj.error == 'object'){ - err = new Error(obj.error.message); - err.code = obj.error.code; - err.error = obj.error.error; - }else{ - err = new Error(obj.error); - } - err.id = obj.id; - err.errorObject = obj; - deferredRequestHandler.errback(err); - }else{ - deferredRequestHandler.callback(this.parseResults(obj)); - } - } - ); - }, - - generateMethod: function(/*string*/ method, /*array*/ parameters, /*string*/ url){ - // summary: - // generate the local bind methods for the remote object - // method: string - // The name of the method we are generating - // parameters: array - // the array of parameters for this call. - // url: string - // the service url for this call - - return lang.hitch(this, function(){ - var deferredRequestHandler = new Deferred(); - - // if params weren't specified, then we can assume it's varargs - if( (this.strictArgChecks) && - (parameters != null) && - (arguments.length != parameters.length) - ){ - // put error stuff here, no enough params - throw new Error("Invalid number of parameters for remote method."); - }else{ - this.bind(method, lang._toArray(arguments), deferredRequestHandler, url); - } - - return deferredRequestHandler; - }); - }, - - processSmd: function(object){ - // summary: - // callback method for receipt of a smd object. Parse the smd - // and generate functions based on the description - // object: - // smd object defining this service. - - if(object.methods){ - array.forEach(object.methods, function(m){ - if(m && m.name){ - this[m.name] = this.generateMethod( m.name, - m.parameters, - m.url||m.serviceUrl||m.serviceURL); - if(!lang.isFunction(this[m.name])){ - throw new Error("RpcService: Failed to create" + m.name + "()"); - /*console.log("RpcService: Failed to create", m.name, "()");*/ - } - } - }, this); - } - - this.serviceUrl = object.serviceUrl||object.serviceURL; - this.required = object.required; - this.smd = object; - } -}); - -}); diff --git a/lib/dojo/selector/_loader.js.uncompressed.js b/lib/dojo/selector/_loader.js.uncompressed.js deleted file mode 100644 index 8c165c386..000000000 --- a/lib/dojo/selector/_loader.js.uncompressed.js +++ /dev/null @@ -1,47 +0,0 @@ -define("dojo/selector/_loader", ["../has", "require"], - function(has, require){ - -"use strict"; -var testDiv = document.createElement("div"); -has.add("dom-qsa2.1", !!testDiv.querySelectorAll); -has.add("dom-qsa3", function(){ - // test to see if we have a reasonable native selector engine available - try{ - testDiv.innerHTML = "<p class='TEST'></p>"; // test kind of from sizzle - // Safari can't handle uppercase or unicode characters when - // in quirks mode, IE8 can't handle pseudos like :empty - return testDiv.querySelectorAll(".TEST:empty").length == 1; - }catch(e){} - }); -var fullEngine; -var acme = "./acme", lite = "./lite"; -return { - // summary: - // This module handles loading the appropriate selector engine for the given browser - - load: function(id, parentRequire, loaded, config){ - var req = require; - // here we implement the default logic for choosing a selector engine - id = id == "default" ? has("config-selectorEngine") || "css3" : id; - id = id == "css2" || id == "lite" ? lite : - id == "css2.1" ? has("dom-qsa2.1") ? lite : acme : - id == "css3" ? has("dom-qsa3") ? lite : acme : - id == "acme" ? acme : (req = parentRequire) && id; - if(id.charAt(id.length-1) == '?'){ - id = id.substring(0,id.length - 1); - var optionalLoad = true; - } - // the query engine is optional, only load it if a native one is not available or existing one has not been loaded - if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){ - return loaded(fullEngine); - } - // load the referenced selector engine - req([id], function(engine){ - if(id != "./lite"){ - fullEngine = engine; - } - loaded(engine); - }); - } -}; -}); diff --git a/lib/dojo/selector/acme.js.uncompressed.js b/lib/dojo/selector/acme.js.uncompressed.js deleted file mode 100644 index 6adebb0e5..000000000 --- a/lib/dojo/selector/acme.js.uncompressed.js +++ /dev/null @@ -1,1493 +0,0 @@ -define("dojo/selector/acme", [ - "../dom", "../sniff", "../_base/array", "../_base/lang", "../_base/window" -], function(dom, has, array, lang, win){ - - // module: - // dojo/selector/acme - -/* - acme architectural overview: - - acme is a relatively full-featured CSS3 query library. It is - designed to take any valid CSS3 selector and return the nodes matching - the selector. To do this quickly, it processes queries in several - steps, applying caching where profitable. - - The steps (roughly in reverse order of the way they appear in the code): - 1.) check to see if we already have a "query dispatcher" - - if so, use that with the given parameterization. Skip to step 4. - 2.) attempt to determine which branch to dispatch the query to: - - JS (optimized DOM iteration) - - native (FF3.1+, Safari 3.1+, IE 8+) - 3.) tokenize and convert to executable "query dispatcher" - - this is where the lion's share of the complexity in the - system lies. In the DOM version, the query dispatcher is - assembled as a chain of "yes/no" test functions pertaining to - a section of a simple query statement (".blah:nth-child(odd)" - but not "div div", which is 2 simple statements). Individual - statement dispatchers are cached (to prevent re-definition) - as are entire dispatch chains (to make re-execution of the - same query fast) - 4.) the resulting query dispatcher is called in the passed scope - (by default the top-level document) - - for DOM queries, this results in a recursive, top-down - evaluation of nodes based on each simple query section - - for native implementations, this may mean working around spec - bugs. So be it. - 5.) matched nodes are pruned to ensure they are unique (if necessary) -*/ - - - //////////////////////////////////////////////////////////////////////// - // Toolkit aliases - //////////////////////////////////////////////////////////////////////// - - // if you are extracting acme for use in your own system, you will - // need to provide these methods and properties. No other porting should be - // necessary, save for configuring the system to use a class other than - // dojo/NodeList as the return instance instantiator - var trim = lang.trim; - var each = array.forEach; - - var getDoc = function(){ return win.doc; }; - // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo - var cssCaseBug = (getDoc().compatMode) == "BackCompat"; - - //////////////////////////////////////////////////////////////////////// - // Global utilities - //////////////////////////////////////////////////////////////////////// - - - var specials = ">~+"; - - // global thunk to determine whether we should treat the current query as - // case sensitive or not. This switch is flipped by the query evaluator - // based on the document passed as the context to search. - var caseSensitive = false; - - // how high? - var yesman = function(){ return true; }; - - //////////////////////////////////////////////////////////////////////// - // Tokenizer - //////////////////////////////////////////////////////////////////////// - - var getQueryParts = function(query){ - // summary: - // state machine for query tokenization - // description: - // instead of using a brittle and slow regex-based CSS parser, - // acme implements an AST-style query representation. This - // representation is only generated once per query. For example, - // the same query run multiple times or under different root nodes - // does not re-parse the selector expression but instead uses the - // cached data structure. The state machine implemented here - // terminates on the last " " (space) character and returns an - // ordered array of query component structures (or "parts"). Each - // part represents an operator or a simple CSS filtering - // expression. The structure for parts is documented in the code - // below. - - - // NOTE: - // this code is designed to run fast and compress well. Sacrifices - // to readability and maintainability have been made. Your best - // bet when hacking the tokenizer is to put The Donnas on *really* - // loud (may we recommend their "Spend The Night" release?) and - // just assume you're gonna make mistakes. Keep the unit tests - // open and run them frequently. Knowing is half the battle ;-) - if(specials.indexOf(query.slice(-1)) >= 0){ - // if we end with a ">", "+", or "~", that means we're implicitly - // searching all children, so make it explicit - query += " * "; - }else{ - // if you have not provided a terminator, one will be provided for - // you... - query += " "; - } - - var ts = function(/*Integer*/ s, /*Integer*/ e){ - // trim and slice. - - // take an index to start a string slice from and an end position - // and return a trimmed copy of that sub-string - return trim(query.slice(s, e)); - }; - - // the overall data graph of the full query, as represented by queryPart objects - var queryParts = []; - - - // state keeping vars - var inBrackets = -1, inParens = -1, inMatchFor = -1, - inPseudo = -1, inClass = -1, inId = -1, inTag = -1, currentQuoteChar, - lc = "", cc = "", pStart; - - // iteration vars - var x = 0, // index in the query - ql = query.length, - currentPart = null, // data structure representing the entire clause - _cp = null; // the current pseudo or attr matcher - - // several temporary variables are assigned to this structure during a - // potential sub-expression match: - // attr: - // a string representing the current full attribute match in a - // bracket expression - // type: - // if there's an operator in a bracket expression, this is - // used to keep track of it - // value: - // the internals of parenthetical expression for a pseudo. for - // :nth-child(2n+1), value might be "2n+1" - - var endTag = function(){ - // called when the tokenizer hits the end of a particular tag name. - // Re-sets state variables for tag matching and sets up the matcher - // to handle the next type of token (tag or operator). - if(inTag >= 0){ - var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase(); - currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv; - inTag = -1; - } - }; - - var endId = function(){ - // called when the tokenizer might be at the end of an ID portion of a match - if(inId >= 0){ - currentPart.id = ts(inId, x).replace(/\\/g, ""); - inId = -1; - } - }; - - var endClass = function(){ - // called when the tokenizer might be at the end of a class name - // match. CSS allows for multiple classes, so we augment the - // current item with another class in its list - if(inClass >= 0){ - currentPart.classes.push(ts(inClass + 1, x).replace(/\\/g, "")); - inClass = -1; - } - }; - - var endAll = function(){ - // at the end of a simple fragment, so wall off the matches - endId(); - endTag(); - endClass(); - }; - - var endPart = function(){ - endAll(); - if(inPseudo >= 0){ - currentPart.pseudos.push({ name: ts(inPseudo + 1, x) }); - } - // hint to the selector engine to tell it whether or not it - // needs to do any iteration. Many simple selectors don't, and - // we can avoid significant construction-time work by advising - // the system to skip them - currentPart.loops = ( - currentPart.pseudos.length || - currentPart.attrs.length || - currentPart.classes.length ); - - currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string - - - // otag/tag are hints to suggest to the system whether or not - // it's an operator or a tag. We save a copy of otag since the - // tag name is cast to upper-case in regular HTML matches. The - // system has a global switch to figure out if the current - // expression needs to be case sensitive or not and it will use - // otag or tag accordingly - currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*"); - - if(currentPart.tag){ - // if we're in a case-insensitive HTML doc, we likely want - // the toUpperCase when matching on element.tagName. If we - // do it here, we can skip the string op per node - // comparison - currentPart.tag = currentPart.tag.toUpperCase(); - } - - // add the part to the list - if(queryParts.length && (queryParts[queryParts.length-1].oper)){ - // operators are always infix, so we remove them from the - // list and attach them to the next match. The evaluator is - // responsible for sorting out how to handle them. - currentPart.infixOper = queryParts.pop(); - currentPart.query = currentPart.infixOper.query + " " + currentPart.query; - /* - console.debug( "swapping out the infix", - currentPart.infixOper, - "and attaching it to", - currentPart); - */ - } - queryParts.push(currentPart); - - currentPart = null; - }; - - // iterate over the query, character by character, building up a - // list of query part objects - for(; lc=cc, cc=query.charAt(x), x < ql; x++){ - // cc: the current character in the match - // lc: the last character (if any) - - // someone is trying to escape something, so don't try to match any - // fragments. We assume we're inside a literal. - if(lc == "\\"){ continue; } - if(!currentPart){ // a part was just ended or none has yet been created - // NOTE: I hate all this alloc, but it's shorter than writing tons of if's - pStart = x; - // rules describe full CSS sub-expressions, like: - // #someId - // .className:first-child - // but not: - // thinger > div.howdy[type=thinger] - // the indidual components of the previous query would be - // split into 3 parts that would be represented a structure like: - // [ - // { - // query: "thinger", - // tag: "thinger", - // }, - // { - // query: "div.howdy[type=thinger]", - // classes: ["howdy"], - // infixOper: { - // query: ">", - // oper: ">", - // } - // }, - // ] - currentPart = { - query: null, // the full text of the part's rule - pseudos: [], // CSS supports multiple pseud-class matches in a single rule - attrs: [], // CSS supports multi-attribute match, so we need an array - classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy - tag: null, // only one tag... - oper: null, // ...or operator per component. Note that these wind up being exclusive. - id: null, // the id component of a rule - getTag: function(){ - return caseSensitive ? this.otag : this.tag; - } - }; - - // if we don't have a part, we assume we're going to start at - // the beginning of a match, which should be a tag name. This - // might fault a little later on, but we detect that and this - // iteration will still be fine. - inTag = x; - } - - // Skip processing all quoted characters. - // If we are inside quoted text then currentQuoteChar stores the character that began the quote, - // thus that character that will end it. - if(currentQuoteChar){ - if(cc == currentQuoteChar){ - currentQuoteChar = null; - } - continue; - }else if (cc == "'" || cc == '"'){ - currentQuoteChar = cc; - continue; - } - - if(inBrackets >= 0){ - // look for a the close first - if(cc == "]"){ // if we're in a [...] clause and we end, do assignment - if(!_cp.attr){ - // no attribute match was previously begun, so we - // assume this is an attribute existence match in the - // form of [someAttributeName] - _cp.attr = ts(inBrackets+1, x); - }else{ - // we had an attribute already, so we know that we're - // matching some sort of value, as in [attrName=howdy] - _cp.matchFor = ts((inMatchFor||inBrackets+1), x); - } - var cmf = _cp.matchFor; - if(cmf){ - // try to strip quotes from the matchFor value. We want - // [attrName=howdy] to match the same - // as [attrName = 'howdy' ] - if( (cmf.charAt(0) == '"') || (cmf.charAt(0) == "'") ){ - _cp.matchFor = cmf.slice(1, -1); - } - } - // remove backslash escapes from an attribute match, since DOM - // querying will get attribute values without backslashes - if(_cp.matchFor){ - _cp.matchFor = _cp.matchFor.replace(/\\/g, ""); - } - - // end the attribute by adding it to the list of attributes. - currentPart.attrs.push(_cp); - _cp = null; // necessary? - inBrackets = inMatchFor = -1; - }else if(cc == "="){ - // if the last char was an operator prefix, make sure we - // record it along with the "=" operator. - var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : ""; - _cp.type = addToCc+cc; - _cp.attr = ts(inBrackets+1, x-addToCc.length); - inMatchFor = x+1; - } - // now look for other clause parts - }else if(inParens >= 0){ - // if we're in a parenthetical expression, we need to figure - // out if it's attached to a pseudo-selector rule like - // :nth-child(1) - if(cc == ")"){ - if(inPseudo >= 0){ - _cp.value = ts(inParens+1, x); - } - inPseudo = inParens = -1; - } - }else if(cc == "#"){ - // start of an ID match - endAll(); - inId = x+1; - }else if(cc == "."){ - // start of a class match - endAll(); - inClass = x; - }else if(cc == ":"){ - // start of a pseudo-selector match - endAll(); - inPseudo = x; - }else if(cc == "["){ - // start of an attribute match. - endAll(); - inBrackets = x; - // provide a new structure for the attribute match to fill-in - _cp = { - /*===== - attr: null, type: null, matchFor: null - =====*/ - }; - }else if(cc == "("){ - // we really only care if we've entered a parenthetical - // expression if we're already inside a pseudo-selector match - if(inPseudo >= 0){ - // provide a new structure for the pseudo match to fill-in - _cp = { - name: ts(inPseudo+1, x), - value: null - }; - currentPart.pseudos.push(_cp); - } - inParens = x; - }else if( - (cc == " ") && - // if it's a space char and the last char is too, consume the - // current one without doing more work - (lc != cc) - ){ - endPart(); - } - } - return queryParts; - }; - - - //////////////////////////////////////////////////////////////////////// - // DOM query infrastructure - //////////////////////////////////////////////////////////////////////// - - var agree = function(first, second){ - // the basic building block of the yes/no chaining system. agree(f1, - // f2) generates a new function which returns the boolean results of - // both of the passed functions to a single logical-anded result. If - // either are not passed, the other is used exclusively. - if(!first){ return second; } - if(!second){ return first; } - - return function(){ - return first.apply(window, arguments) && second.apply(window, arguments); - }; - }; - - var getArr = function(i, arr){ - // helps us avoid array alloc when we don't need it - var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ? - if(i){ r.push(i); } - return r; - }; - - var _isElement = function(n){ return (1 == n.nodeType); }; - - // FIXME: need to coalesce _getAttr with defaultGetter - var blank = ""; - var _getAttr = function(elem, attr){ - if(!elem){ return blank; } - if(attr == "class"){ - return elem.className || blank; - } - if(attr == "for"){ - return elem.htmlFor || blank; - } - if(attr == "style"){ - return elem.style.cssText || blank; - } - return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank; - }; - - var attrs = { - "*=": function(attr, value){ - return function(elem){ - // E[foo*="bar"] - // an E element whose "foo" attribute value contains - // the substring "bar" - return (_getAttr(elem, attr).indexOf(value)>=0); - }; - }, - "^=": function(attr, value){ - // E[foo^="bar"] - // an E element whose "foo" attribute value begins exactly - // with the string "bar" - return function(elem){ - return (_getAttr(elem, attr).indexOf(value)==0); - }; - }, - "$=": function(attr, value){ - // E[foo$="bar"] - // an E element whose "foo" attribute value ends exactly - // with the string "bar" - return function(elem){ - var ea = " "+_getAttr(elem, attr); - var lastIndex = ea.lastIndexOf(value); - return lastIndex > -1 && (lastIndex==(ea.length-value.length)); - }; - }, - "~=": function(attr, value){ - // E[foo~="bar"] - // an E element whose "foo" attribute value is a list of - // space-separated values, one of which is exactly equal - // to "bar" - - // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]"; - var tval = " "+value+" "; - return function(elem){ - var ea = " "+_getAttr(elem, attr)+" "; - return (ea.indexOf(tval)>=0); - }; - }, - "|=": function(attr, value){ - // E[hreflang|="en"] - // an E element whose "hreflang" attribute has a - // hyphen-separated list of values beginning (from the - // left) with "en" - var valueDash = value+"-"; - return function(elem){ - var ea = _getAttr(elem, attr); - return ( - (ea == value) || - (ea.indexOf(valueDash)==0) - ); - }; - }, - "=": function(attr, value){ - return function(elem){ - return (_getAttr(elem, attr) == value); - }; - } - }; - - // avoid testing for node type if we can. Defining this in the negative - // here to avoid negation in the fast path. - var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined"); - var _ns = !_noNES ? "nextElementSibling" : "nextSibling"; - var _ps = !_noNES ? "previousElementSibling" : "previousSibling"; - var _simpleNodeTest = (_noNES ? _isElement : yesman); - - var _lookLeft = function(node){ - // look left - while(node = node[_ps]){ - if(_simpleNodeTest(node)){ return false; } - } - return true; - }; - - var _lookRight = function(node){ - // look right - while(node = node[_ns]){ - if(_simpleNodeTest(node)){ return false; } - } - return true; - }; - - var getNodeIndex = function(node){ - var root = node.parentNode; - root = root.nodeType != 7 ? root : root.nextSibling; // PROCESSING_INSTRUCTION_NODE - var i = 0, - tret = root.children || root.childNodes, - ci = (node["_i"]||node.getAttribute("_i")||-1), - cl = (root["_l"]|| (typeof root.getAttribute !== "undefined" ? root.getAttribute("_l") : -1)); - - if(!tret){ return -1; } - var l = tret.length; - - // we calculate the parent length as a cheap way to invalidate the - // cache. It's not 100% accurate, but it's much more honest than what - // other libraries do - if( cl == l && ci >= 0 && cl >= 0 ){ - // if it's legit, tag and release - return ci; - } - - // else re-key things - if(has("ie") && typeof root.setAttribute !== "undefined"){ - root.setAttribute("_l", l); - }else{ - root["_l"] = l; - } - ci = -1; - for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){ - if(_simpleNodeTest(te)){ - if(has("ie")){ - te.setAttribute("_i", ++i); - }else{ - te["_i"] = ++i; - } - if(node === te){ - // NOTE: - // shortcutting the return at this step in indexing works - // very well for benchmarking but we avoid it here since - // it leads to potential O(n^2) behavior in sequential - // getNodexIndex operations on a previously un-indexed - // parent. We may revisit this at a later time, but for - // now we just want to get the right answer more often - // than not. - ci = i; - } - } - } - return ci; - }; - - var isEven = function(elem){ - return !((getNodeIndex(elem)) % 2); - }; - - var isOdd = function(elem){ - return ((getNodeIndex(elem)) % 2); - }; - - var pseudos = { - "checked": function(name, condition){ - return function(elem){ - return !!("checked" in elem ? elem.checked : elem.selected); - }; - }, - "disabled": function(name, condition){ - return function(elem){ - return elem.disabled; - }; - }, - "enabled": function(name, condition){ - return function(elem){ - return !elem.disabled; - }; - }, - "first-child": function(){ return _lookLeft; }, - "last-child": function(){ return _lookRight; }, - "only-child": function(name, condition){ - return function(node){ - return _lookLeft(node) && _lookRight(node); - }; - }, - "empty": function(name, condition){ - return function(elem){ - // DomQuery and jQuery get this wrong, oddly enough. - // The CSS 3 selectors spec is pretty explicit about it, too. - var cn = elem.childNodes; - var cnl = elem.childNodes.length; - // if(!cnl){ return true; } - for(var x=cnl-1; x >= 0; x--){ - var nt = cn[x].nodeType; - if((nt === 1)||(nt == 3)){ return false; } - } - return true; - }; - }, - "contains": function(name, condition){ - var cz = condition.charAt(0); - if( cz == '"' || cz == "'" ){ //remove quote - condition = condition.slice(1, -1); - } - return function(elem){ - return (elem.innerHTML.indexOf(condition) >= 0); - }; - }, - "not": function(name, condition){ - var p = getQueryParts(condition)[0]; - var ignores = { el: 1 }; - if(p.tag != "*"){ - ignores.tag = 1; - } - if(!p.classes.length){ - ignores.classes = 1; - } - var ntf = getSimpleFilterFunc(p, ignores); - return function(elem){ - return (!ntf(elem)); - }; - }, - "nth-child": function(name, condition){ - var pi = parseInt; - // avoid re-defining function objects if we can - if(condition == "odd"){ - return isOdd; - }else if(condition == "even"){ - return isEven; - } - // FIXME: can we shorten this? - if(condition.indexOf("n") != -1){ - var tparts = condition.split("n", 2); - var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1; - var idx = tparts[1] ? pi(tparts[1]) : 0; - var lb = 0, ub = -1; - if(pred > 0){ - if(idx < 0){ - idx = (idx % pred) && (pred + (idx % pred)); - }else if(idx>0){ - if(idx >= pred){ - lb = idx - idx % pred; - } - idx = idx % pred; - } - }else if(pred<0){ - pred *= -1; - // idx has to be greater than 0 when pred is negative; - // shall we throw an error here? - if(idx > 0){ - ub = idx; - idx = idx % pred; - } - } - if(pred > 0){ - return function(elem){ - var i = getNodeIndex(elem); - return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx); - }; - }else{ - condition = idx; - } - } - var ncount = pi(condition); - return function(elem){ - return (getNodeIndex(elem) == ncount); - }; - } - }; - - var defaultGetter = (has("ie") < 9 || has("ie") == 9 && has("quirks")) ? function(cond){ - var clc = cond.toLowerCase(); - if(clc == "class"){ cond = "className"; } - return function(elem){ - return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]); - }; - } : function(cond){ - return function(elem){ - return (elem && elem.getAttribute && elem.hasAttribute(cond)); - }; - }; - - var getSimpleFilterFunc = function(query, ignores){ - // generates a node tester function based on the passed query part. The - // query part is one of the structures generated by the query parser - // when it creates the query AST. The "ignores" object specifies which - // (if any) tests to skip, allowing the system to avoid duplicating - // work where it may have already been taken into account by other - // factors such as how the nodes to test were fetched in the first - // place - if(!query){ return yesman; } - ignores = ignores||{}; - - var ff = null; - - if(!("el" in ignores)){ - ff = agree(ff, _isElement); - } - - if(!("tag" in ignores)){ - if(query.tag != "*"){ - ff = agree(ff, function(elem){ - return (elem && ((caseSensitive ? elem.tagName : elem.tagName.toUpperCase()) == query.getTag())); - }); - } - } - - if(!("classes" in ignores)){ - each(query.classes, function(cname, idx, arr){ - // get the class name - /* - var isWildcard = cname.charAt(cname.length-1) == "*"; - if(isWildcard){ - cname = cname.substr(0, cname.length-1); - } - // I dislike the regex thing, even if memoized in a cache, but it's VERY short - var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)"); - */ - var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)"); - ff = agree(ff, function(elem){ - return re.test(elem.className); - }); - ff.count = idx; - }); - } - - if(!("pseudos" in ignores)){ - each(query.pseudos, function(pseudo){ - var pn = pseudo.name; - if(pseudos[pn]){ - ff = agree(ff, pseudos[pn](pn, pseudo.value)); - } - }); - } - - if(!("attrs" in ignores)){ - each(query.attrs, function(attr){ - var matcher; - var a = attr.attr; - // type, attr, matchFor - if(attr.type && attrs[attr.type]){ - matcher = attrs[attr.type](a, attr.matchFor); - }else if(a.length){ - matcher = defaultGetter(a); - } - if(matcher){ - ff = agree(ff, matcher); - } - }); - } - - if(!("id" in ignores)){ - if(query.id){ - ff = agree(ff, function(elem){ - return (!!elem && (elem.id == query.id)); - }); - } - } - - if(!ff){ - if(!("default" in ignores)){ - ff = yesman; - } - } - return ff; - }; - - var _nextSibling = function(filterFunc){ - return function(node, ret, bag){ - while(node = node[_ns]){ - if(_noNES && (!_isElement(node))){ continue; } - if( - (!bag || _isUnique(node, bag)) && - filterFunc(node) - ){ - ret.push(node); - } - break; - } - return ret; - }; - }; - - var _nextSiblings = function(filterFunc){ - return function(root, ret, bag){ - var te = root[_ns]; - while(te){ - if(_simpleNodeTest(te)){ - if(bag && !_isUnique(te, bag)){ - break; - } - if(filterFunc(te)){ - ret.push(te); - } - } - te = te[_ns]; - } - return ret; - }; - }; - - // get an array of child *elements*, skipping text and comment nodes - var _childElements = function(filterFunc){ - filterFunc = filterFunc||yesman; - return function(root, ret, bag){ - // get an array of child elements, skipping text and comment nodes - var te, x = 0, tret = root.children || root.childNodes; - while(te = tret[x++]){ - if( - _simpleNodeTest(te) && - (!bag || _isUnique(te, bag)) && - (filterFunc(te, x)) - ){ - ret.push(te); - } - } - return ret; - }; - }; - - // test to see if node is below root - var _isDescendant = function(node, root){ - var pn = node.parentNode; - while(pn){ - if(pn == root){ - break; - } - pn = pn.parentNode; - } - return !!pn; - }; - - var _getElementsFuncCache = {}; - - var getElementsFunc = function(query){ - var retFunc = _getElementsFuncCache[query.query]; - // if we've got a cached dispatcher, just use that - if(retFunc){ return retFunc; } - // else, generate a new on - - // NOTE: - // this function returns a function that searches for nodes and - // filters them. The search may be specialized by infix operators - // (">", "~", or "+") else it will default to searching all - // descendants (the " " selector). Once a group of children is - // found, a test function is applied to weed out the ones we - // don't want. Many common cases can be fast-pathed. We spend a - // lot of cycles to create a dispatcher that doesn't do more work - // than necessary at any point since, unlike this function, the - // dispatchers will be called every time. The logic of generating - // efficient dispatchers looks like this in pseudo code: - // - // # if it's a purely descendant query (no ">", "+", or "~" modifiers) - // if infixOperator == " ": - // if only(id): - // return def(root): - // return d.byId(id, root); - // - // elif id: - // return def(root): - // return filter(d.byId(id, root)); - // - // elif cssClass && getElementsByClassName: - // return def(root): - // return filter(root.getElementsByClassName(cssClass)); - // - // elif only(tag): - // return def(root): - // return root.getElementsByTagName(tagName); - // - // else: - // # search by tag name, then filter - // return def(root): - // return filter(root.getElementsByTagName(tagName||"*")); - // - // elif infixOperator == ">": - // # search direct children - // return def(root): - // return filter(root.children); - // - // elif infixOperator == "+": - // # search next sibling - // return def(root): - // return filter(root.nextElementSibling); - // - // elif infixOperator == "~": - // # search rightward siblings - // return def(root): - // return filter(nextSiblings(root)); - - var io = query.infixOper; - var oper = (io ? io.oper : ""); - // the default filter func which tests for all conditions in the query - // part. This is potentially inefficient, so some optimized paths may - // re-define it to test fewer things. - var filterFunc = getSimpleFilterFunc(query, { el: 1 }); - var qt = query.tag; - var wildcardTag = ("*" == qt); - var ecs = getDoc()["getElementsByClassName"]; - - if(!oper){ - // if there's no infix operator, then it's a descendant query. ID - // and "elements by class name" variants can be accelerated so we - // call them out explicitly: - if(query.id){ - // testing shows that the overhead of yesman() is acceptable - // and can save us some bytes vs. re-defining the function - // everywhere. - filterFunc = (!query.loops && wildcardTag) ? - yesman : - getSimpleFilterFunc(query, { el: 1, id: 1 }); - - retFunc = function(root, arr){ - var te = dom.byId(query.id, (root.ownerDocument||root)); - if(!te || !filterFunc(te)){ return; } - if(9 == root.nodeType){ // if root's a doc, we just return directly - return getArr(te, arr); - }else{ // otherwise check ancestry - if(_isDescendant(te, root)){ - return getArr(te, arr); - } - } - }; - }else if( - ecs && - // isAlien check. Workaround for Prototype.js being totally evil/dumb. - /\{\s*\[native code\]\s*\}/.test(String(ecs)) && - query.classes.length && - !cssCaseBug - ){ - // it's a class-based query and we've got a fast way to run it. - - // ignore class and ID filters since we will have handled both - filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 }); - var classesString = query.classes.join(" "); - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - var tret = root.getElementsByClassName(classesString); - while((te = tret[x++])){ - if(filterFunc(te, root) && _isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - - }else if(!wildcardTag && !query.loops){ - // it's tag only. Fast-path it. - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - var tag = query.getTag(), - tret = tag ? root.getElementsByTagName(tag) : []; - while((te = tret[x++])){ - if(_isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - }else{ - // the common case: - // a descendant selector without a fast path. By now it's got - // to have a tag selector, even if it's just "*" so we query - // by that and filter - filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 }); - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - // we use getTag() to avoid case sensitivity issues - var tag = query.getTag(), - tret = tag ? root.getElementsByTagName(tag) : []; - while((te = tret[x++])){ - if(filterFunc(te, root) && _isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - } - }else{ - // the query is scoped in some way. Instead of querying by tag we - // use some other collection to find candidate nodes - var skipFilters = { el: 1 }; - if(wildcardTag){ - skipFilters.tag = 1; - } - filterFunc = getSimpleFilterFunc(query, skipFilters); - if("+" == oper){ - retFunc = _nextSibling(filterFunc); - }else if("~" == oper){ - retFunc = _nextSiblings(filterFunc); - }else if(">" == oper){ - retFunc = _childElements(filterFunc); - } - } - // cache it and return - return _getElementsFuncCache[query.query] = retFunc; - }; - - var filterDown = function(root, queryParts){ - // NOTE: - // this is the guts of the DOM query system. It takes a list of - // parsed query parts and a root and finds children which match - // the selector represented by the parts - var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret; - - for(var i = 0; i < qpl; i++){ - ret = []; - qp = queryParts[i]; - x = candidates.length - 1; - if(x > 0){ - // if we have more than one root at this level, provide a new - // hash to use for checking group membership but tell the - // system not to post-filter us since we will already have been - // guaranteed to be unique - bag = {}; - ret.nozip = true; - } - var gef = getElementsFunc(qp); - for(var j = 0; (te = candidates[j]); j++){ - // for every root, get the elements that match the descendant - // selector, adding them to the "ret" array and filtering them - // via membership in this level's bag. If there are more query - // parts, then this level's return will be used as the next - // level's candidates - gef(te, ret, bag); - } - if(!ret.length){ break; } - candidates = ret; - } - return ret; - }; - - //////////////////////////////////////////////////////////////////////// - // the query runner - //////////////////////////////////////////////////////////////////////// - - // these are the primary caches for full-query results. The query - // dispatcher functions are generated then stored here for hash lookup in - // the future - var _queryFuncCacheDOM = {}, - _queryFuncCacheQSA = {}; - - // this is the second level of splitting, from full-length queries (e.g., - // "div.foo .bar") into simple query expressions (e.g., ["div.foo", - // ".bar"]) - var getStepQueryFunc = function(query){ - var qparts = getQueryParts(trim(query)); - - // if it's trivial, avoid iteration and zipping costs - if(qparts.length == 1){ - // we optimize this case here to prevent dispatch further down the - // chain, potentially slowing things down. We could more elegantly - // handle this in filterDown(), but it's slower for simple things - // that need to be fast (e.g., "#someId"). - var tef = getElementsFunc(qparts[0]); - return function(root){ - var r = tef(root, []); - if(r){ r.nozip = true; } - return r; - }; - } - - // otherwise, break it up and return a runner that iterates over the parts recursively - return function(root){ - return filterDown(root, qparts); - }; - }; - - // NOTES: - // * we can't trust QSA for anything but document-rooted queries, so - // caching is split into DOM query evaluators and QSA query evaluators - // * caching query results is dirty and leak-prone (or, at a minimum, - // prone to unbounded growth). Other toolkits may go this route, but - // they totally destroy their own ability to manage their memory - // footprint. If we implement it, it should only ever be with a fixed - // total element reference # limit and an LRU-style algorithm since JS - // has no weakref support. Caching compiled query evaluators is also - // potentially problematic, but even on large documents the size of the - // query evaluators is often < 100 function objects per evaluator (and - // LRU can be applied if it's ever shown to be an issue). - // * since IE's QSA support is currently only for HTML documents and even - // then only in IE 8's "standards mode", we have to detect our dispatch - // route at query time and keep 2 separate caches. Ugg. - - // we need to determine if we think we can run a given query via - // querySelectorAll or if we'll need to fall back on DOM queries to get - // there. We need a lot of information about the environment and the query - // to make the determination (e.g. does it support QSA, does the query in - // question work in the native QSA impl, etc.). - - // IE QSA queries may incorrectly include comment nodes, so we throw the - // zipping function into "remove" comments mode instead of the normal "skip - // it" which every other QSA-clued browser enjoys - var noZip = has("ie") ? "commentStrip" : "nozip"; - - var qsa = "querySelectorAll"; - var qsaAvail = !!getDoc()[qsa]; - - //Don't bother with n+3 type of matches, IE complains if we modify those. - var infixSpaceRe = /\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g; - var infixSpaceFunc = function(match, pre, ch, post){ - return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match; - }; - - //Don't apply the infixSpaceRe to attribute value selectors - var attRe = /([^[]*)([^\]]*])?/g; - var attFunc = function(match, nonAtt, att){ - return nonAtt.replace(infixSpaceRe, infixSpaceFunc) + (att||""); - }; - var getQueryFunc = function(query, forceDOM){ - //Normalize query. The CSS3 selectors spec allows for omitting spaces around - //infix operators, >, ~ and + - //Do the work here since detection for spaces is used as a simple "not use QSA" - //test below. - query = query.replace(attRe, attFunc); - - if(qsaAvail){ - // if we've got a cached variant and we think we can do it, run it! - var qsaCached = _queryFuncCacheQSA[query]; - if(qsaCached && !forceDOM){ return qsaCached; } - } - - // else if we've got a DOM cached variant, assume that we already know - // all we need to and use it - var domCached = _queryFuncCacheDOM[query]; - if(domCached){ return domCached; } - - // TODO: - // today we're caching DOM and QSA branches separately so we - // recalc useQSA every time. If we had a way to tag root+query - // efficiently, we'd be in good shape to do a global cache. - - var qcz = query.charAt(0); - var nospace = (-1 == query.indexOf(" ")); - - // byId searches are wicked fast compared to QSA, even when filtering - // is required - if( (query.indexOf("#") >= 0) && (nospace) ){ - forceDOM = true; - } - - var useQSA = ( - qsaAvail && (!forceDOM) && - // as per CSS 3, we can't currently start w/ combinator: - // http://www.w3.org/TR/css3-selectors/#w3cselgrammar - (specials.indexOf(qcz) == -1) && - // IE's QSA impl sucks on pseudos - (!has("ie") || (query.indexOf(":") == -1)) && - - (!(cssCaseBug && (query.indexOf(".") >= 0))) && - - // FIXME: - // need to tighten up browser rules on ":contains" and "|=" to - // figure out which aren't good - // Latest webkit (around 531.21.8) does not seem to do well with :checked on option - // elements, even though according to spec, selected options should - // match :checked. So go nonQSA for it: - // http://bugs.dojotoolkit.org/ticket/5179 - (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) && - (query.indexOf("|=") == -1) // some browsers don't grok it - ); - - // TODO: - // if we've got a descendant query (e.g., "> .thinger" instead of - // just ".thinger") in a QSA-able doc, but are passed a child as a - // root, it should be possible to give the item a synthetic ID and - // trivially rewrite the query to the form "#synid > .thinger" to - // use the QSA branch - - - if(useQSA){ - var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ? - (query + " *") : query; - return _queryFuncCacheQSA[query] = function(root){ - try{ - // the QSA system contains an egregious spec bug which - // limits us, effectively, to only running QSA queries over - // entire documents. See: - // http://ejohn.org/blog/thoughts-on-queryselectorall/ - // despite this, we can also handle QSA runs on simple - // selectors, but we don't want detection to be expensive - // so we're just checking for the presence of a space char - // right now. Not elegant, but it's cheaper than running - // the query parser when we might not need to - if(!((9 == root.nodeType) || nospace)){ throw ""; } - var r = root[qsa](tq); - // skip expensive duplication checks and just wrap in a NodeList - r[noZip] = true; - return r; - }catch(e){ - // else run the DOM branch on this query, ensuring that we - // default that way in the future - return getQueryFunc(query, true)(root); - } - }; - }else{ - // DOM branch - var parts = query.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g); - return _queryFuncCacheDOM[query] = ((parts.length < 2) ? - // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher - getStepQueryFunc(query) : - // if it *is* a complex query, break it up into its - // constituent parts and return a dispatcher that will - // merge the parts when run - function(root){ - var pindex = 0, // avoid array alloc for every invocation - ret = [], - tp; - while((tp = parts[pindex++])){ - ret = ret.concat(getStepQueryFunc(tp)(root)); - } - return ret; - } - ); - } - }; - - var _zipIdx = 0; - - // NOTE: - // this function is Moo inspired, but our own impl to deal correctly - // with XML in IE - var _nodeUID = has("ie") ? function(node){ - if(caseSensitive){ - // XML docs don't have uniqueID on their nodes - return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx); - - }else{ - return node.uniqueID; - } - } : - function(node){ - return (node._uid || (node._uid = ++_zipIdx)); - }; - - // determine if a node in is unique in a "bag". In this case we don't want - // to flatten a list of unique items, but rather just tell if the item in - // question is already in the bag. Normally we'd just use hash lookup to do - // this for us but IE's DOM is busted so we can't really count on that. On - // the upside, it gives us a built in unique ID function. - var _isUnique = function(node, bag){ - if(!bag){ return 1; } - var id = _nodeUID(node); - if(!bag[id]){ return bag[id] = 1; } - return 0; - }; - - // attempt to efficiently determine if an item in a list is a dupe, - // returning a list of "uniques", hopefully in document order - var _zipIdxName = "_zipIdx"; - var _zip = function(arr){ - if(arr && arr.nozip){ - return arr; - } - var ret = []; - if(!arr || !arr.length){ return ret; } - if(arr[0]){ - ret.push(arr[0]); - } - if(arr.length < 2){ return ret; } - - _zipIdx++; - - // we have to fork here for IE and XML docs because we can't set - // expandos on their nodes (apparently). *sigh* - var x, te; - if(has("ie") && caseSensitive){ - var szidx = _zipIdx+""; - arr[0].setAttribute(_zipIdxName, szidx); - for(x = 1; te = arr[x]; x++){ - if(arr[x].getAttribute(_zipIdxName) != szidx){ - ret.push(te); - } - te.setAttribute(_zipIdxName, szidx); - } - }else if(has("ie") && arr.commentStrip){ - try{ - for(x = 1; te = arr[x]; x++){ - if(_isElement(te)){ - ret.push(te); - } - } - }catch(e){ /* squelch */ } - }else{ - if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; } - for(x = 1; te = arr[x]; x++){ - if(arr[x][_zipIdxName] != _zipIdx){ - ret.push(te); - } - te[_zipIdxName] = _zipIdx; - } - } - return ret; - }; - - // the main executor - var query = function(/*String*/ query, /*String|DOMNode?*/ root){ - // summary: - // Returns nodes which match the given CSS3 selector, searching the - // entire document by default but optionally taking a node to scope - // the search by. Returns an array. - // description: - // dojo.query() is the swiss army knife of DOM node manipulation in - // Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's - // "$" function, dojo.query provides robust, high-performance - // CSS-based node selector support with the option of scoping searches - // to a particular sub-tree of a document. - // - // Supported Selectors: - // -------------------- - // - // acme supports a rich set of CSS3 selectors, including: - // - // - class selectors (e.g., `.foo`) - // - node type selectors like `span` - // - ` ` descendant selectors - // - `>` child element selectors - // - `#foo` style ID selectors - // - `*` universal selector - // - `~`, the preceded-by sibling selector - // - `+`, the immediately preceded-by sibling selector - // - attribute queries: - // - `[foo]` attribute presence selector - // - `[foo='bar']` attribute value exact match - // - `[foo~='bar']` attribute value list item match - // - `[foo^='bar']` attribute start match - // - `[foo$='bar']` attribute end match - // - `[foo*='bar']` attribute substring match - // - `:first-child`, `:last-child`, and `:only-child` positional selectors - // - `:empty` content emtpy selector - // - `:checked` pseudo selector - // - `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations - // - `:nth-child(even)`, `:nth-child(odd)` positional selectors - // - `:not(...)` negation pseudo selectors - // - // Any legal combination of these selectors will work with - // `dojo.query()`, including compound selectors ("," delimited). - // Very complex and useful searches can be constructed with this - // palette of selectors and when combined with functions for - // manipulation presented by dojo/NodeList, many types of DOM - // manipulation operations become very straightforward. - // - // Unsupported Selectors: - // ---------------------- - // - // While dojo.query handles many CSS3 selectors, some fall outside of - // what's reasonable for a programmatic node querying engine to - // handle. Currently unsupported selectors include: - // - // - namespace-differentiated selectors of any form - // - all `::` pseduo-element selectors - // - certain pseudo-selectors which don't get a lot of day-to-day use: - // - `:root`, `:lang()`, `:target`, `:focus` - // - all visual and state selectors: - // - `:root`, `:active`, `:hover`, `:visited`, `:link`, - // `:enabled`, `:disabled` - // - `:*-of-type` pseudo selectors - // - // dojo.query and XML Documents: - // ----------------------------- - // - // `dojo.query` (as of dojo 1.2) supports searching XML documents - // in a case-sensitive manner. If an HTML document is served with - // a doctype that forces case-sensitivity (e.g., XHTML 1.1 - // Strict), dojo.query() will detect this and "do the right - // thing". Case sensitivity is dependent upon the document being - // searched and not the query used. It is therefore possible to - // use case-sensitive queries on strict sub-documents (iframes, - // etc.) or XML documents while still assuming case-insensitivity - // for a host/root document. - // - // Non-selector Queries: - // --------------------- - // - // If something other than a String is passed for the query, - // `dojo.query` will return a new `dojo/NodeList` instance - // constructed from that parameter alone and all further - // processing will stop. This means that if you have a reference - // to a node or NodeList, you can quickly construct a new NodeList - // from the original by calling `dojo.query(node)` or - // `dojo.query(list)`. - // - // query: - // The CSS3 expression to match against. For details on the syntax of - // CSS3 selectors, see <http://www.w3.org/TR/css3-selectors/#selectors> - // root: - // A DOMNode (or node id) to scope the search from. Optional. - // returns: Array - // example: - // search the entire document for elements with the class "foo": - // | dojo.query(".foo"); - // these elements will match: - // | <span class="foo"></span> - // | <span class="foo bar"></span> - // | <p class="thud foo"></p> - // example: - // search the entire document for elements with the classes "foo" *and* "bar": - // | dojo.query(".foo.bar"); - // these elements will match: - // | <span class="foo bar"></span> - // while these will not: - // | <span class="foo"></span> - // | <p class="thud foo"></p> - // example: - // find `<span>` elements which are descendants of paragraphs and - // which have a "highlighted" class: - // | dojo.query("p span.highlighted"); - // the innermost span in this fragment matches: - // | <p class="foo"> - // | <span>... - // | <span class="highlighted foo bar">...</span> - // | </span> - // | </p> - // example: - // set an "odd" class on all odd table rows inside of the table - // `#tabular_data`, using the `>` (direct child) selector to avoid - // affecting any nested tables: - // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd"); - // example: - // remove all elements with the class "error" from the document - // and store them in a list: - // | var errors = dojo.query(".error").orphan(); - // example: - // add an onclick handler to every submit button in the document - // which causes the form to be sent via Ajax instead: - // | dojo.query("input[type='submit']").onclick(function(e){ - // | dojo.stopEvent(e); // prevent sending the form - // | var btn = e.target; - // | dojo.xhrPost({ - // | form: btn.form, - // | load: function(data){ - // | // replace the form with the response - // | var div = dojo.doc.createElement("div"); - // | dojo.place(div, btn.form, "after"); - // | div.innerHTML = data; - // | dojo.style(btn.form, "display", "none"); - // | } - // | }); - // | }); - - root = root || getDoc(); - - // throw the big case sensitivity switch - var od = root.ownerDocument || root; // root is either Document or a node inside the document - caseSensitive = (od.createElement("div").tagName === "div"); - - // NOTE: - // adding "true" as the 2nd argument to getQueryFunc is useful for - // testing the DOM branch without worrying about the - // behavior/performance of the QSA branch. - var r = getQueryFunc(query)(root); - - // FIXME: - // need to investigate this branch WRT #8074 and #8075 - if(r && r.nozip){ - return r; - } - return _zip(r); // dojo/NodeList - }; - query.filter = function(/*Node[]*/ nodeList, /*String*/ filter, /*String|DOMNode?*/ root){ - // summary: - // function for filtering a NodeList based on a selector, optimized for simple selectors - var tmpNodeList = [], - parts = getQueryParts(filter), - filterFunc = - (parts.length == 1 && !/[^\w#\.]/.test(filter)) ? - getSimpleFilterFunc(parts[0]) : - function(node){ - return array.indexOf(query(filter, dom.byId(root)), node) != -1; - }; - for(var x = 0, te; te = nodeList[x]; x++){ - if(filterFunc(te)){ tmpNodeList.push(te); } - } - return tmpNodeList; - }; - return query; -}); diff --git a/lib/dojo/selector/lite.js.uncompressed.js b/lib/dojo/selector/lite.js.uncompressed.js deleted file mode 100644 index a9ef3848d..000000000 --- a/lib/dojo/selector/lite.js.uncompressed.js +++ /dev/null @@ -1,283 +0,0 @@ -define("dojo/selector/lite", ["../has", "../_base/kernel"], function(has, dojo){ -"use strict"; - -var testDiv = document.createElement("div"); -var matchesSelector = testDiv.matchesSelector || testDiv.webkitMatchesSelector || testDiv.mozMatchesSelector || testDiv.msMatchesSelector || testDiv.oMatchesSelector; // IE9, WebKit, Firefox have this, but not Opera yet -var querySelectorAll = testDiv.querySelectorAll; -var unionSplit = /([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g; -has.add("dom-matches-selector", !!matchesSelector); -has.add("dom-qsa", !!querySelectorAll); - -// this is a simple query engine. It has handles basic selectors, and for simple -// common selectors is extremely fast -var liteEngine = function(selector, root){ - // summary: - // A small lightweight query selector engine that implements CSS2.1 selectors - // minus pseudo-classes and the sibling combinator, plus CSS3 attribute selectors - - if(combine && selector.indexOf(',') > -1){ - return combine(selector, root); - } - // use the root's ownerDocument if provided, otherwise try to use dojo.doc. Note - // that we don't use dojo/_base/window's doc to reduce dependencies, and - // fallback to plain document if dojo.doc hasn't been defined (by dojo/_base/window). - // presumably we will have a better way to do this in 2.0 - var doc = root ? root.ownerDocument || root : dojo.doc || document, - match = (querySelectorAll ? - /^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/ : // this one only matches on simple queries where we can beat qSA with specific methods - /^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/) // this one matches parts of the query that we can use to speed up manual filtering - .exec(selector); - root = root || doc; - if(match){ - // fast path regardless of whether or not querySelectorAll exists - if(match[2]){ - // an #id - // use dojo.byId if available as it fixes the id retrieval in IE, note that we can't use the dojo namespace in 2.0, but if there is a conditional module use, we will use that - var found = dojo.byId ? dojo.byId(match[2]) : doc.getElementById(match[2]); - if(!found || (match[1] && match[1] != found.tagName.toLowerCase())){ - // if there is a tag qualifer and it doesn't match, no matches - return []; - } - if(root != doc){ - // there is a root element, make sure we are a child of it - var parent = found; - while(parent != root){ - parent = parent.parentNode; - if(!parent){ - return []; - } - } - } - return match[3] ? - liteEngine(match[3], found) - : [found]; - } - if(match[3] && root.getElementsByClassName){ - // a .class - return root.getElementsByClassName(match[4]); - } - var found; - if(match[5]){ - // a tag - found = root.getElementsByTagName(match[5]); - if(match[4] || match[6]){ - selector = (match[4] || "") + match[6]; - }else{ - // that was the entirety of the query, return results - return found; - } - } - } - if(querySelectorAll){ - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if (root.nodeType === 1 && root.nodeName.toLowerCase() !== "object"){ - return useRoot(root, selector, root.querySelectorAll); - }else{ - // we can use the native qSA - return root.querySelectorAll(selector); - } - }else if(!found){ - // search all children and then filter - found = root.getElementsByTagName("*"); - } - // now we filter the nodes that were found using the matchesSelector - var results = []; - for(var i = 0, l = found.length; i < l; i++){ - var node = found[i]; - if(node.nodeType == 1 && jsMatchesSelector(node, selector, root)){ - // keep the nodes that match the selector - results.push(node); - } - } - return results; -}; -var useRoot = function(context, query, method){ - // this function creates a temporary id so we can do rooted qSA queries, this is taken from sizzle - var oldContext = context, - old = context.getAttribute("id"), - nid = old || "__dojo__", - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test(query); - - if(relativeHierarchySelector && !hasParent){ - return []; - } - if(!old){ - context.setAttribute("id", nid); - }else{ - nid = nid.replace(/'/g, "\\$&"); - } - if(relativeHierarchySelector && hasParent){ - context = context.parentNode; - } - var selectors = query.match(unionSplit); - for(var i = 0; i < selectors.length; i++){ - selectors[i] = "[id='" + nid + "'] " + selectors[i]; - } - query = selectors.join(","); - - try{ - return method.call(context, query); - }finally{ - if(!old){ - oldContext.removeAttribute("id"); - } - } -}; - -if(!has("dom-matches-selector")){ - var jsMatchesSelector = (function(){ - // a JS implementation of CSS selector matching, first we start with the various handlers - var caseFix = testDiv.tagName == "div" ? "toLowerCase" : "toUpperCase"; - var selectorTypes = { - "": function(tagName){ - tagName = tagName[caseFix](); - return function(node){ - return node.tagName == tagName; - }; - }, - ".": function(className){ - var classNameSpaced = ' ' + className + ' '; - return function(node){ - return node.className.indexOf(className) > -1 && (' ' + node.className + ' ').indexOf(classNameSpaced) > -1; - }; - }, - "#": function(id){ - return function(node){ - return node.id == id; - }; - } - }; - var attrComparators = { - "^=": function(attrValue, value){ - return attrValue.indexOf(value) == 0; - }, - "*=": function(attrValue, value){ - return attrValue.indexOf(value) > -1; - }, - "$=": function(attrValue, value){ - return attrValue.substring(attrValue.length - value.length, attrValue.length) == value; - }, - "~=": function(attrValue, value){ - return (' ' + attrValue + ' ').indexOf(' ' + value + ' ') > -1; - }, - "|=": function(attrValue, value){ - return (attrValue + '-').indexOf(value + '-') == 0; - }, - "=": function(attrValue, value){ - return attrValue == value; - }, - "": function(attrValue, value){ - return true; - } - }; - function attr(name, value, type){ - var firstChar = value.charAt(0); - if(firstChar == '"' || firstChar == "'"){ - // it is quoted, remove the quotes - value = value.slice(1, -1); - } - value = value.replace(/\\/g,''); - var comparator = attrComparators[type || ""]; - return function(node){ - var attrValue = node.getAttribute(name); - return attrValue && comparator(attrValue, value); - }; - } - function ancestor(matcher){ - return function(node, root){ - while((node = node.parentNode) != root){ - if(matcher(node, root)){ - return true; - } - } - }; - } - function parent(matcher){ - return function(node, root){ - node = node.parentNode; - return matcher ? - node != root && matcher(node, root) - : node == root; - }; - } - var cache = {}; - function and(matcher, next){ - return matcher ? - function(node, root){ - return next(node) && matcher(node, root); - } - : next; - } - return function(node, selector, root){ - // this returns true or false based on if the node matches the selector (optionally within the given root) - var matcher = cache[selector]; // check to see if we have created a matcher function for the given selector - if(!matcher){ - // create a matcher function for the given selector - // parse the selectors - if(selector.replace(/(?:\s*([> ])\s*)|(#|\.)?((?:\\.|[\w-])+)|\[\s*([\w-]+)\s*(.?=)?\s*("(?:\\.|[^"])+"|'(?:\\.|[^'])+'|(?:\\.|[^\]])*)\s*\]/g, function(t, combinator, type, value, attrName, attrType, attrValue){ - if(value){ - matcher = and(matcher, selectorTypes[type || ""](value.replace(/\\/g, ''))); - } - else if(combinator){ - matcher = (combinator == " " ? ancestor : parent)(matcher); - } - else if(attrName){ - matcher = and(matcher, attr(attrName, attrValue, attrType)); - } - return ""; - })){ - throw new Error("Syntax error in query"); - } - if(!matcher){ - return true; - } - cache[selector] = matcher; - } - // now run the matcher function on the node - return matcher(node, root); - }; - })(); -} -if(!has("dom-qsa")){ - var combine = function(selector, root){ - // combined queries - var selectors = selector.match(unionSplit); - var indexed = []; - // add all results and keep unique ones, this only runs in IE, so we take advantage - // of known IE features, particularly sourceIndex which is unique and allows us to - // order the results - for(var i = 0; i < selectors.length; i++){ - selector = new String(selectors[i].replace(/\s*$/,'')); - selector.indexOf = escape; // keep it from recursively entering combine - var results = liteEngine(selector, root); - for(var j = 0, l = results.length; j < l; j++){ - var node = results[j]; - indexed[node.sourceIndex] = node; - } - } - // now convert from a sparse array to a dense array - var totalResults = []; - for(i in indexed){ - totalResults.push(indexed[i]); - } - return totalResults; - }; -} - -liteEngine.match = matchesSelector ? function(node, selector, root){ - if(root && root.nodeType != 9){ - // doesn't support three args, use rooted id trick - return useRoot(root, selector, function(query){ - return matchesSelector.call(node, query); - }); - } - // we have a native matchesSelector, use that - return matchesSelector.call(node, selector); -} : jsMatchesSelector; // otherwise use the JS matches impl - -return liteEngine; -}); diff --git a/lib/dojo/sniff.js.uncompressed.js b/lib/dojo/sniff.js.uncompressed.js deleted file mode 100644 index 4d52a43f3..000000000 --- a/lib/dojo/sniff.js.uncompressed.js +++ /dev/null @@ -1,70 +0,0 @@ -define("dojo/sniff", ["./has"], function(has){ - // module: - // dojo/sniff - - /*===== - return function(){ - // summary: - // This module sets has() flags based on the current browser. - // It returns the has() function. - }; - =====*/ - - if( 1 ){ - var n = navigator, - dua = n.userAgent, - dav = n.appVersion, - tv = parseFloat(dav); - - has.add("air", dua.indexOf("AdobeAIR") >= 0), - has.add("khtml", dav.indexOf("Konqueror") >= 0 ? tv : undefined); - has.add("webkit", parseFloat(dua.split("WebKit/")[1]) || undefined); - has.add("chrome", parseFloat(dua.split("Chrome/")[1]) || undefined); - has.add("safari", dav.indexOf("Safari")>=0 && !has("chrome") ? parseFloat(dav.split("Version/")[1]) : undefined); - has.add("mac", dav.indexOf("Macintosh") >= 0); - has.add("quirks", document.compatMode == "BackCompat"); - has.add("ios", /iPhone|iPod|iPad/.test(dua)); - has.add("android", parseFloat(dua.split("Android ")[1]) || undefined); - - if(!has("webkit")){ - // Opera - if(dua.indexOf("Opera") >= 0){ - // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/ - // 9.8 has both styles; <9.8, 9.9 only old style - has.add("opera", tv >= 9.8 ? parseFloat(dua.split("Version/")[1]) || tv : tv); - } - - // Mozilla and firefox - if(dua.indexOf("Gecko") >= 0 && !has("khtml") && !has("webkit")){ - has.add("mozilla", tv); - } - if(has("mozilla")){ - //We really need to get away from this. Consider a sane isGecko approach for the future. - has.add("ff", parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined); - } - - // IE - if(document.all && !has("opera")){ - var isIE = parseFloat(dav.split("MSIE ")[1]) || undefined; - - //In cases where the page has an HTTP header or META tag with - //X-UA-Compatible, then it is in emulation mode. - //Make sure isIE reflects the desired version. - //document.documentMode of 5 means quirks mode. - //Only switch the value if documentMode's major version - //is different from isIE's major version. - var mode = document.documentMode; - if(mode && mode != 5 && Math.floor(isIE) != mode){ - isIE = mode; - } - - has.add("ie", isIE); - } - - // Wii - has.add("wii", typeof opera != "undefined" && opera.wiiremote); - } - } - - return has; -}); diff --git a/lib/dojo/store/Cache.js.uncompressed.js b/lib/dojo/store/Cache.js.uncompressed.js deleted file mode 100644 index fd94521b5..000000000 --- a/lib/dojo/store/Cache.js.uncompressed.js +++ /dev/null @@ -1,146 +0,0 @@ -define("dojo/store/Cache", ["../_base/lang","../_base/Deferred" /*=====, "../_base/declare", "./api/Store" =====*/], -function(lang, Deferred /*=====, declare, Store =====*/){ - -// module: -// dojo/store/Cache - -var Cache = function(masterStore, cachingStore, options){ - options = options || {}; - return lang.delegate(masterStore, { - query: function(query, directives){ - var results = masterStore.query(query, directives); - results.forEach(function(object){ - if(!options.isLoaded || options.isLoaded(object)){ - cachingStore.put(object); - } - }); - return results; - }, - // look for a queryEngine in either store - queryEngine: masterStore.queryEngine || cachingStore.queryEngine, - get: function(id, directives){ - return Deferred.when(cachingStore.get(id), function(result){ - return result || Deferred.when(masterStore.get(id, directives), function(result){ - if(result){ - cachingStore.put(result, {id: id}); - } - return result; - }); - }); - }, - add: function(object, directives){ - return Deferred.when(masterStore.add(object, directives), function(result){ - // now put result in cache - cachingStore.add(typeof result == "object" ? result : object, directives); - return result; // the result from the add should be dictated by the masterStore and be unaffected by the cachingStore - }); - }, - put: function(object, directives){ - // first remove from the cache, so it is empty until we get a response from the master store - cachingStore.remove((directives && directives.id) || this.getIdentity(object)); - return Deferred.when(masterStore.put(object, directives), function(result){ - // now put result in cache - cachingStore.put(typeof result == "object" ? result : object, directives); - return result; // the result from the put should be dictated by the masterStore and be unaffected by the cachingStore - }); - }, - remove: function(id, directives){ - return Deferred.when(masterStore.remove(id, directives), function(result){ - return cachingStore.remove(id, directives); - }); - }, - evict: function(id){ - return cachingStore.remove(id); - } - }); -}; -lang.setObject("dojo.store.Cache", Cache); - -/*===== -var __CacheArgs = { - // summary: - // These are additional options for how caching is handled. - // isLoaded: Function? - // This is a function that will be called for each item in a query response to determine - // if it is cacheable. If isLoaded returns true, the item will be cached, otherwise it - // will not be cached. If isLoaded is not provided, all items will be cached. -}; - -Cache = declare(Store, { - // summary: - // The Cache store wrapper takes a master store and a caching store, - // caches data from the master into the caching store for faster - // lookup. Normally one would use a memory store for the caching - // store and a server store like JsonRest for the master store. - // example: - // | var master = new Memory(data); - // | var cacher = new Memory(); - // | var store = new Cache(master, cacher); - // - constructor: function(masterStore, cachingStore, options){ - // masterStore: - // This is the authoritative store, all uncached requests or non-safe requests will - // be made against this store. - // cachingStore: - // This is the caching store that will be used to store responses for quick access. - // Typically this should be a local store. - // options: __CacheArgs? - // These are additional options for how caching is handled. - }, - query: function(query, directives){ - // summary: - // Query the underlying master store and cache any results. - // query: Object|String - // The object or string containing query information. Dependent on the query engine used. - // directives: dojo/store/api/Store.QueryOptions? - // An optional keyword arguments object with additional parameters describing the query. - // returns: dojo/store/api/Store.QueryResults - // A QueryResults object that can be used to iterate over. - }, - get: function(id, directives){ - // summary: - // Get the object with the specific id. - // id: Number - // The identifier for the object in question. - // directives: Object? - // Any additional parameters needed to describe how the get should be performed. - // returns: dojo/store/api/Store.QueryResults - // A QueryResults object. - }, - add: function(object, directives){ - // summary: - // Add the given object to the store. - // object: Object - // The object to add to the store. - // directives: dojo/store/api/Store.AddOptions? - // Any additional parameters needed to describe how the add should be performed. - // returns: Number - // The new id for the object. - }, - put: function(object, directives){ - // summary: - // Put the object into the store (similar to an HTTP PUT). - // object: Object - // The object to put to the store. - // directives: dojo/store/api/Store.PutDirectives? - // Any additional parameters needed to describe how the put should be performed. - // returns: Number - // The new id for the object. - }, - remove: function(id){ - // summary: - // Remove the object with the specific id. - // id: Number - // The identifier for the object in question. - }, - evict: function(id){ - // summary: - // Remove the object with the given id from the underlying caching store. - // id: Number - // The identifier for the object in question. - } -}); -=====*/ - -return Cache; -}); diff --git a/lib/dojo/store/DataStore.js.uncompressed.js b/lib/dojo/store/DataStore.js.uncompressed.js deleted file mode 100644 index 47a1fb9d8..000000000 --- a/lib/dojo/store/DataStore.js.uncompressed.js +++ /dev/null @@ -1,202 +0,0 @@ -define("dojo/store/DataStore", [ - "../_base/lang", "../_base/declare", "../_base/Deferred", "../_base/array", - "./util/QueryResults", "./util/SimpleQueryEngine" /*=====, "./api/Store" =====*/ -], function(lang, declare, Deferred, array, QueryResults, SimpleQueryEngine /*=====, Store =====*/){ - -// module: -// dojo/store/DataStore - - -// No base class, but for purposes of documentation, the base class is dojo/store/api/Store -var base = null; -/*===== base = Store; =====*/ - -return declare("dojo.store.DataStore", base, { - // summary: - // This is an adapter for using Dojo Data stores with an object store consumer. - // You can provide a Dojo data store and use this adapter to interact with it through - // the Dojo object store API - - target: "", - constructor: function(options){ - // options: Object? - // This provides any configuration information that will be mixed into the store, - // including a reference to the Dojo data store under the property "store". - lang.mixin(this, options); - if(!"idProperty" in options){ - var idAttribute; - try{ - idAttribute = this.store.getIdentityAttributes(); - }catch(e){ - // some store are not requiring an item instance to give us the ID attributes - // but some other do and throw errors in that case. - } - // if no idAttribute we have implicit id - this.idProperty = (!idAttribute || !idAttributes[0]) || this.idProperty; - } - var features = this.store.getFeatures(); - // check the feature set and null out any methods that shouldn't be available - if(!features["dojo.data.api.Read"]){ - this.get = null; - } - if(!features["dojo.data.api.Identity"]){ - this.getIdentity = null; - } - if(!features["dojo.data.api.Write"]){ - this.put = this.add = null; - } - }, - // idProperty: String - // The object property to use to store the identity of the store items. - idProperty: "id", - // store: - // The object store to convert to a data store - store: null, - // queryEngine: Function - // Defines the query engine to use for querying the data store - queryEngine: SimpleQueryEngine, - - _objectConverter: function(callback){ - var store = this.store; - var idProperty = this.idProperty; - function convert(item){ - var object = {}; - var attributes = store.getAttributes(item); - for(var i = 0; i < attributes.length; i++){ - var attribute = attributes[i]; - var values = store.getValues(item, attribute); - if(values.length > 1){ - for(var j = 0; j < values.length; j++){ - var value = values[j]; - if(typeof value == 'object' && store.isItem(value)){ - values[j] = convert(value); - } - } - value = values; - }else{ - var value = store.getValue(item, attribute); - if(typeof value == 'object' && store.isItem(value)){ - value = convert(value); - } - } - object[attributes[i]] = value; - } - if(!(idProperty in object) && store.getIdentity){ - object[idProperty] = store.getIdentity(item); - } - return object; - } - return function(item){ - return callback(convert(item)); - }; - }, - get: function(id, options){ - // summary: - // Retrieves an object by it's identity. This will trigger a fetchItemByIdentity - // id: Object? - // The identity to use to lookup the object - var returnedObject, returnedError; - var deferred = new Deferred(); - this.store.fetchItemByIdentity({ - identity: id, - onItem: this._objectConverter(function(object){ - deferred.resolve(returnedObject = object); - }), - onError: function(error){ - deferred.reject(returnedError = error); - } - }); - if(returnedObject){ - // if it was returned synchronously - return returnedObject; - } - if(returnedError){ - throw returnedError; - } - return deferred.promise; - }, - put: function(object, options){ - // summary: - // Stores an object by its identity. - // object: Object - // The object to store. - // options: Object? - // Additional metadata for storing the data. Includes a reference to an id - // that the object may be stored with (i.e. { id: "foo" }). - var id = options && typeof options.id != "undefined" || this.getIdentity(object); - var store = this.store; - var idProperty = this.idProperty; - if(typeof id == "undefined"){ - store.newItem(object); - store.save(); - }else{ - store.fetchItemByIdentity({ - identity: id, - onItem: function(item){ - if(item){ - for(var i in object){ - if(i != idProperty && // don't copy id properties since they are immutable and should be omitted for implicit ids - store.getValue(item, i) != object[i]){ - store.setValue(item, i, object[i]); - } - } - }else{ - store.newItem(object); - } - store.save(); - } - }); - } - }, - remove: function(id){ - // summary: - // Deletes an object by its identity. - // id: Object - // The identity to use to delete the object - var store = this.store; - this.store.fetchItemByIdentity({ - identity: id, - onItem: function(item){ - store.deleteItem(item); - store.save(); - } - }); - }, - query: function(query, options){ - // summary: - // Queries the store for objects. - // query: Object - // The query to use for retrieving objects from the store - // options: Object? - // Optional options object as used by the underlying dojo.data Store. - // returns: dojo/store/api/Store.QueryResults - // A query results object that can be used to iterate over results. - var fetchHandle; - var deferred = new Deferred(function(){ fetchHandle.abort && fetchHandle.abort(); }); - deferred.total = new Deferred(); - var converter = this._objectConverter(function(object){return object;}); - fetchHandle = this.store.fetch(lang.mixin({ - query: query, - onBegin: function(count){ - deferred.total.resolve(count); - }, - onComplete: function(results){ - deferred.resolve(array.map(results, converter)); - }, - onError: function(error){ - deferred.reject(error); - } - }, options)); - return QueryResults(deferred); - }, - getIdentity: function(object){ - // summary: - // Fetch the identity for the given object. - // object: Object - // The data object to get the identity from. - // returns: Number - // The id of the given object. - return object[this.idProperty]; - } -}); -}); diff --git a/lib/dojo/store/JsonRest.js.uncompressed.js b/lib/dojo/store/JsonRest.js.uncompressed.js deleted file mode 100644 index 6bef67a03..000000000 --- a/lib/dojo/store/JsonRest.js.uncompressed.js +++ /dev/null @@ -1,189 +0,0 @@ -define("dojo/store/JsonRest", ["../_base/xhr", "../_base/lang", "../json", "../_base/declare", "./util/QueryResults" /*=====, "./api/Store" =====*/ -], function(xhr, lang, JSON, declare, QueryResults /*=====, Store =====*/){ - -// No base class, but for purposes of documentation, the base class is dojo/store/api/Store -var base = null; -/*===== base = Store; =====*/ - -/*===== -var __HeaderOptions = { - // headers: Object? - // Additional headers to send along with the request. - }, - __PutDirectives = declare(Store.PutDirectives, __HeaderOptions), - __QueryOptions = declare(Store.QueryOptions, __HeaderOptions); -=====*/ - -return declare("dojo.store.JsonRest", base, { - // summary: - // This is a basic store for RESTful communicating with a server through JSON - // formatted data. It implements dojo/store/api/Store. - - constructor: function(options){ - // summary: - // This is a basic store for RESTful communicating with a server through JSON - // formatted data. - // options: dojo/store/JsonRest - // This provides any configuration information that will be mixed into the store - this.headers = {}; - declare.safeMixin(this, options); - }, - - // headers: Object - // Additional headers to pass in all requests to the server. These can be overridden - // by passing additional headers to calls to the store. - headers: {}, - - // target: String - // The target base URL to use for all requests to the server. This string will be - // prepended to the id to generate the URL (relative or absolute) for requests - // sent to the server - target: "", - - // idProperty: String - // Indicates the property to use as the identity property. The values of this - // property should be unique. - idProperty: "id", - - // sortParam: String - // The query parameter to used for holding sort information. If this is omitted, than - // the sort information is included in a functional query token to avoid colliding - // with the set of name/value pairs. - - get: function(id, options){ - // summary: - // Retrieves an object by its identity. This will trigger a GET request to the server using - // the url `this.target + id`. - // id: Number - // The identity to use to lookup the object - // options: Object? - // HTTP headers. For consistency with other methods, if a `headers` key exists on this object, it will be - // used to provide HTTP headers instead. - // returns: Object - // The object in the store that matches the given id. - options = options || {}; - var headers = lang.mixin({ Accept: this.accepts }, this.headers, options.headers || options); - return xhr("GET", { - url: this.target + id, - handleAs: "json", - headers: headers - }); - }, - - // accepts: String - // Defines the Accept header to use on HTTP requests - accepts: "application/javascript, application/json", - - getIdentity: function(object){ - // summary: - // Returns an object's identity - // object: Object - // The object to get the identity from - // returns: Number - return object[this.idProperty]; - }, - - put: function(object, options){ - // summary: - // Stores an object. This will trigger a PUT request to the server - // if the object has an id, otherwise it will trigger a POST request. - // object: Object - // The object to store. - // options: __PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - // returns: dojo/_base/Deferred - options = options || {}; - var id = ("id" in options) ? options.id : this.getIdentity(object); - var hasId = typeof id != "undefined"; - return xhr(hasId && !options.incremental ? "PUT" : "POST", { - url: hasId ? this.target + id : this.target, - postData: JSON.stringify(object), - handleAs: "json", - headers: lang.mixin({ - "Content-Type": "application/json", - Accept: this.accepts, - "If-Match": options.overwrite === true ? "*" : null, - "If-None-Match": options.overwrite === false ? "*" : null - }, this.headers, options.headers) - }); - }, - - add: function(object, options){ - // summary: - // Adds an object. This will trigger a PUT request to the server - // if the object has an id, otherwise it will trigger a POST request. - // object: Object - // The object to store. - // options: __PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - options = options || {}; - options.overwrite = false; - return this.put(object, options); - }, - - remove: function(id, options){ - // summary: - // Deletes an object by its identity. This will trigger a DELETE request to the server. - // id: Number - // The identity to use to delete the object - // options: __HeaderOptions? - // HTTP headers. - options = options || {}; - return xhr("DELETE", { - url: this.target + id, - headers: lang.mixin({}, this.headers, options.headers) - }); - }, - - query: function(query, options){ - // summary: - // Queries the store for objects. This will trigger a GET request to the server, with the - // query added as a query string. - // query: Object - // The query to use for retrieving objects from the store. - // options: __QueryOptions? - // The optional arguments to apply to the resultset. - // returns: dojo/store/api/Store.QueryResults - // The results of the query, extended with iterative methods. - options = options || {}; - - var headers = lang.mixin({ Accept: this.accepts }, this.headers, options.headers); - - if(options.start >= 0 || options.count >= 0){ - headers.Range = headers["X-Range"] //set X-Range for Opera since it blocks "Range" header - = "items=" + (options.start || '0') + '-' + - (("count" in options && options.count != Infinity) ? - (options.count + (options.start || 0) - 1) : ''); - } - var hasQuestionMark = this.target.indexOf("?") > -1; - if(query && typeof query == "object"){ - query = xhr.objectToQuery(query); - query = query ? (hasQuestionMark ? "&" : "?") + query: ""; - } - if(options && options.sort){ - var sortParam = this.sortParam; - query += (query || hasQuestionMark ? "&" : "?") + (sortParam ? sortParam + '=' : "sort("); - for(var i = 0; i<options.sort.length; i++){ - var sort = options.sort[i]; - query += (i > 0 ? "," : "") + (sort.descending ? '-' : '+') + encodeURIComponent(sort.attribute); - } - if(!sortParam){ - query += ")"; - } - } - var results = xhr("GET", { - url: this.target + (query || ""), - handleAs: "json", - headers: headers - }); - results.total = results.then(function(){ - var range = results.ioArgs.xhr.getResponseHeader("Content-Range"); - return range && (range = range.match(/\/(.*)/)) && +range[1]; - }); - return QueryResults(results); - } -}); - -}); \ No newline at end of file diff --git a/lib/dojo/store/Memory.js.uncompressed.js b/lib/dojo/store/Memory.js.uncompressed.js deleted file mode 100644 index 5aeae33c7..000000000 --- a/lib/dojo/store/Memory.js.uncompressed.js +++ /dev/null @@ -1,164 +0,0 @@ -define("dojo/store/Memory", ["../_base/declare", "./util/QueryResults", "./util/SimpleQueryEngine" /*=====, "./api/Store" =====*/], -function(declare, QueryResults, SimpleQueryEngine /*=====, Store =====*/){ - -// module: -// dojo/store/Memory - -// No base class, but for purposes of documentation, the base class is dojo/store/api/Store -var base = null; -/*===== base = Store; =====*/ - -return declare("dojo.store.Memory", base, { - // summary: - // This is a basic in-memory object store. It implements dojo/store/api/Store. - constructor: function(options){ - // summary: - // Creates a memory object store. - // options: dojo/store/Memory - // This provides any configuration information that will be mixed into the store. - // This should generally include the data property to provide the starting set of data. - for(var i in options){ - this[i] = options[i]; - } - this.setData(this.data || []); - }, - // data: Array - // The array of all the objects in the memory store - data:null, - - // idProperty: String - // Indicates the property to use as the identity property. The values of this - // property should be unique. - idProperty: "id", - - // index: Object - // An index of data indices into the data array by id - index:null, - - // queryEngine: Function - // Defines the query engine to use for querying the data store - queryEngine: SimpleQueryEngine, - get: function(id){ - // summary: - // Retrieves an object by its identity - // id: Number - // The identity to use to lookup the object - // returns: Object - // The object in the store that matches the given id. - return this.data[this.index[id]]; - }, - getIdentity: function(object){ - // summary: - // Returns an object's identity - // object: Object - // The object to get the identity from - // returns: Number - return object[this.idProperty]; - }, - put: function(object, options){ - // summary: - // Stores an object - // object: Object - // The object to store. - // options: dojo/store/api/Store.PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - // returns: Number - var data = this.data, - index = this.index, - idProperty = this.idProperty; - var id = object[idProperty] = (options && "id" in options) ? options.id : idProperty in object ? object[idProperty] : Math.random(); - if(id in index){ - // object exists - if(options && options.overwrite === false){ - throw new Error("Object already exists"); - } - // replace the entry in data - data[index[id]] = object; - }else{ - // add the new object - index[id] = data.push(object) - 1; - } - return id; - }, - add: function(object, options){ - // summary: - // Creates an object, throws an error if the object already exists - // object: Object - // The object to store. - // options: dojo/store/api/Store.PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - // returns: Number - (options = options || {}).overwrite = false; - // call put with overwrite being false - return this.put(object, options); - }, - remove: function(id){ - // summary: - // Deletes an object by its identity - // id: Number - // The identity to use to delete the object - // returns: Boolean - // Returns true if an object was removed, falsy (undefined) if no object matched the id - var index = this.index; - var data = this.data; - if(id in index){ - data.splice(index[id], 1); - // now we have to reindex - this.setData(data); - return true; - } - }, - query: function(query, options){ - // summary: - // Queries the store for objects. - // query: Object - // The query to use for retrieving objects from the store. - // options: dojo/store/api/Store.QueryOptions? - // The optional arguments to apply to the resultset. - // returns: dojo/store/api/Store.QueryResults - // The results of the query, extended with iterative methods. - // - // example: - // Given the following store: - // - // | var store = new Memory({ - // | data: [ - // | {id: 1, name: "one", prime: false }, - // | {id: 2, name: "two", even: true, prime: true}, - // | {id: 3, name: "three", prime: true}, - // | {id: 4, name: "four", even: true, prime: false}, - // | {id: 5, name: "five", prime: true} - // | ] - // | }); - // - // ...find all items where "prime" is true: - // - // | var results = store.query({ prime: true }); - // - // ...or find all items where "even" is true: - // - // | var results = store.query({ even: true }); - return QueryResults(this.queryEngine(query, options)(this.data)); - }, - setData: function(data){ - // summary: - // Sets the given data as the source for this store, and indexes it - // data: Object[] - // An array of objects to use as the source of data. - if(data.items){ - // just for convenience with the data format IFRS expects - this.idProperty = data.identifier; - data = this.data = data.items; - }else{ - this.data = data; - } - this.index = {}; - for(var i = 0, l = data.length; i < l; i++){ - this.index[data[i][this.idProperty]] = i; - } - } -}); - -}); diff --git a/lib/dojo/store/Observable.js.uncompressed.js b/lib/dojo/store/Observable.js.uncompressed.js deleted file mode 100644 index ed6ad7f6c..000000000 --- a/lib/dojo/store/Observable.js.uncompressed.js +++ /dev/null @@ -1,187 +0,0 @@ -define("dojo/store/Observable", ["../_base/kernel", "../_base/lang", "../_base/Deferred", "../_base/array" /*=====, "./api/Store" =====*/ -], function(kernel, lang, Deferred, array /*=====, Store =====*/){ - -// module: -// dojo/store/Observable - -var Observable = function(/*Store*/ store){ - // summary: - // The Observable store wrapper takes a store and sets an observe method on query() - // results that can be used to monitor results for changes. - // - // description: - // Observable wraps an existing store so that notifications can be made when a query - // is performed. - // - // example: - // Create a Memory store that returns an observable query, and then log some - // information about that query. - // - // | var store = Observable(new Memory({ - // | data: [ - // | {id: 1, name: "one", prime: false}, - // | {id: 2, name: "two", even: true, prime: true}, - // | {id: 3, name: "three", prime: true}, - // | {id: 4, name: "four", even: true, prime: false}, - // | {id: 5, name: "five", prime: true} - // | ] - // | })); - // | var changes = [], results = store.query({ prime: true }); - // | var observer = results.observe(function(object, previousIndex, newIndex){ - // | changes.push({previousIndex:previousIndex, newIndex:newIndex, object:object}); - // | }); - // - // See the Observable tests for more information. - - var undef, queryUpdaters = [], revision = 0; - // a Comet driven store could directly call notify to notify observers when data has - // changed on the backend - // create a new instance - store = lang.delegate(store); - - store.notify = function(object, existingId){ - revision++; - var updaters = queryUpdaters.slice(); - for(var i = 0, l = updaters.length; i < l; i++){ - updaters[i](object, existingId); - } - }; - var originalQuery = store.query; - store.query = function(query, options){ - options = options || {}; - var results = originalQuery.apply(this, arguments); - if(results && results.forEach){ - var nonPagedOptions = lang.mixin({}, options); - delete nonPagedOptions.start; - delete nonPagedOptions.count; - - var queryExecutor = store.queryEngine && store.queryEngine(query, nonPagedOptions); - var queryRevision = revision; - var listeners = [], queryUpdater; - results.observe = function(listener, includeObjectUpdates){ - if(listeners.push(listener) == 1){ - // first listener was added, create the query checker and updater - queryUpdaters.push(queryUpdater = function(changed, existingId){ - Deferred.when(results, function(resultsArray){ - var atEnd = resultsArray.length != options.count; - var i, l, listener; - if(++queryRevision != revision){ - throw new Error("Query is out of date, you must observe() the query prior to any data modifications"); - } - var removedObject, removedFrom = -1, insertedInto = -1; - if(existingId !== undef){ - // remove the old one - for(i = 0, l = resultsArray.length; i < l; i++){ - var object = resultsArray[i]; - if(store.getIdentity(object) == existingId){ - removedObject = object; - removedFrom = i; - if(queryExecutor || !changed){// if it was changed and we don't have a queryExecutor, we shouldn't remove it because updated objects would be eliminated - resultsArray.splice(i, 1); - } - break; - } - } - } - if(queryExecutor){ - // add the new one - if(changed && - // if a matches function exists, use that (probably more efficient) - (queryExecutor.matches ? queryExecutor.matches(changed) : queryExecutor([changed]).length)){ - - var firstInsertedInto = removedFrom > -1 ? - removedFrom : // put back in the original slot so it doesn't move unless it needs to (relying on a stable sort below) - resultsArray.length; - resultsArray.splice(firstInsertedInto, 0, changed); // add the new item - insertedInto = array.indexOf(queryExecutor(resultsArray), changed); // sort it - // we now need to push the chagne back into the original results array - resultsArray.splice(firstInsertedInto, 1); // remove the inserted item from the previous index - - if((options.start && insertedInto == 0) || - (!atEnd && insertedInto == resultsArray.length)){ - // if it is at the end of the page, assume it goes into the prev or next page - insertedInto = -1; - }else{ - resultsArray.splice(insertedInto, 0, changed); // and insert into the results array with the correct index - } - } - }else if(changed){ - // we don't have a queryEngine, so we can't provide any information - // about where it was inserted or moved to. If it is an update, we leave it's position alone, other we at least indicate a new object - if(existingId !== undef){ - // an update, keep the index the same - insertedInto = removedFrom; - }else if(!options.start){ - // a new object - insertedInto = store.defaultIndex || 0; - resultsArray.splice(insertedInto, 0, changed); - } - } - if((removedFrom > -1 || insertedInto > -1) && - (includeObjectUpdates || !queryExecutor || (removedFrom != insertedInto))){ - var copyListeners = listeners.slice(); - for(i = 0;listener = copyListeners[i]; i++){ - listener(changed || removedObject, removedFrom, insertedInto); - } - } - }); - }); - } - var handle = {}; - // TODO: Remove cancel in 2.0. - handle.remove = handle.cancel = function(){ - // remove this listener - var index = array.indexOf(listeners, listener); - if(index > -1){ // check to make sure we haven't already called cancel - listeners.splice(index, 1); - if(!listeners.length){ - // no more listeners, remove the query updater too - queryUpdaters.splice(array.indexOf(queryUpdaters, queryUpdater), 1); - } - } - }; - return handle; - }; - } - return results; - }; - var inMethod; - function whenFinished(method, action){ - var original = store[method]; - if(original){ - store[method] = function(value){ - if(inMethod){ - // if one method calls another (like add() calling put()) we don't want two events - return original.apply(this, arguments); - } - inMethod = true; - try{ - var results = original.apply(this, arguments); - Deferred.when(results, function(results){ - action((typeof results == "object" && results) || value); - }); - return results; - }finally{ - inMethod = false; - } - }; - } - } - // monitor for updates by listening to these methods - whenFinished("put", function(object){ - store.notify(object, store.getIdentity(object)); - }); - whenFinished("add", function(object){ - store.notify(object); - }); - whenFinished("remove", function(id){ - store.notify(undefined, id); - }); - - return store; -}; - -lang.setObject("dojo.store.Observable", Observable); - -return Observable; -}); diff --git a/lib/dojo/store/api/Store.js.uncompressed.js b/lib/dojo/store/api/Store.js.uncompressed.js deleted file mode 100644 index 6f571b78b..000000000 --- a/lib/dojo/store/api/Store.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define("dojo/store/api/Store", ["../../_base/declare"], function(declare){ - -// module: -// dojo/api/Store - -var Store = declare(null, { - // summary: - // This is an abstract API that data provider implementations conform to. - // This file defines methods signatures and intentionally leaves all the - // methods unimplemented. For more information on the , - // please visit: http://dojotoolkit.org/reference-guide/dojo/store.html - // Every method and property is optional, and is only needed if the functionality - // it provides is required. - // Every method may return a promise for the specified return value if the - // execution of the operation is asynchronous (except - // for query() which already defines an async return value). - - // idProperty: String - // If the store has a single primary key, this indicates the property to use as the - // identity property. The values of this property should be unique. - idProperty: "id", - - // queryEngine: Function - // If the store can be queried locally (on the client side in JS), this defines - // the query engine to use for querying the data store. - // This takes a query and query options and returns a function that can execute - // the provided query on a JavaScript array. The queryEngine may be replace to - // provide more sophisticated querying capabilities. For example: - // | var query = store.queryEngine({foo:"bar"}, {count:10}); - // | query(someArray) -> filtered array - // The returned query function may have a "matches" property that can be - // used to determine if an object matches the query. For example: - // | query.matches({id:"some-object", foo:"bar"}) -> true - // | query.matches({id:"some-object", foo:"something else"}) -> false - queryEngine: null, - - get: function(id){ - // summary: - // Retrieves an object by its identity - // id: Number - // The identity to use to lookup the object - // returns: Object - // The object in the store that matches the given id. - }, - getIdentity: function(object){ - // summary: - // Returns an object's identity - // object: Object - // The object to get the identity from - // returns: String|Number - }, - put: function(object, directives){ - // summary: - // Stores an object - // object: Object - // The object to store. - // directives: dojo/store/api/Store.PutDirectives? - // Additional directives for storing objects. - // returns: Number|String - }, - add: function(object, directives){ - // summary: - // Creates an object, throws an error if the object already exists - // object: Object - // The object to store. - // directives: dojo/store/api/Store.PutDirectives? - // Additional directives for creating objects. - // returns: Number|String - }, - remove: function(id){ - // summary: - // Deletes an object by its identity - // id: Number - // The identity to use to delete the object - delete this.index[id]; - var data = this.data, - idProperty = this.idProperty; - for(var i = 0, l = data.length; i < l; i++){ - if(data[i][idProperty] == id){ - data.splice(i, 1); - return; - } - } - }, - query: function(query, options){ - // summary: - // Queries the store for objects. This does not alter the store, but returns a - // set of data from the store. - // query: String|Object|Function - // The query to use for retrieving objects from the store. - // options: dojo/store/api/Store.QueryOptions - // The optional arguments to apply to the resultset. - // returns: dojo/store/api/Store.QueryResults - // The results of the query, extended with iterative methods. - // - // example: - // Given the following store: - // - // ...find all items where "prime" is true: - // - // | store.query({ prime: true }).forEach(function(object){ - // | // handle each object - // | }); - }, - transaction: function(){ - // summary: - // Starts a new transaction. - // Note that a store user might not call transaction() prior to using put, - // delete, etc. in which case these operations effectively could be thought of - // as "auto-commit" style actions. - // returns: dojo/store/api/Store.Transaction - // This represents the new current transaction. - }, - getChildren: function(parent, options){ - // summary: - // Retrieves the children of an object. - // parent: Object - // The object to find the children of. - // options: dojo/store/api/Store.QueryOptions? - // Additional options to apply to the retrieval of the children. - // returns: dojo/store/api/Store.QueryResults - // A result set of the children of the parent object. - }, - getMetadata: function(object){ - // summary: - // Returns any metadata about the object. This may include attribution, - // cache directives, history, or version information. - // object: Object - // The object to return metadata for. - // returns: Object - // An object containing metadata. - } -}); - -Store.PutDirectives = declare(null, { - // summary: - // Directives passed to put() and add() handlers for guiding the update and - // creation of stored objects. - // id: String|Number? - // Indicates the identity of the object if a new object is created - // before: Object? - // If the collection of objects in the store has a natural ordering, - // this indicates that the created or updated object should be placed before the - // object specified by the value of this property. A value of null indicates that the - // object should be last. - // parent: Object?, - // If the store is hierarchical (with single parenting) this property indicates the - // new parent of the created or updated object. - // overwrite: Boolean? - // If this is provided as a boolean it indicates that the object should or should not - // overwrite an existing object. A value of true indicates that a new object - // should not be created, the operation should update an existing object. A - // value of false indicates that an existing object should not be updated, a new - // object should be created (which is the same as an add() operation). When - // this property is not provided, either an update or creation is acceptable. -}); - -Store.SortInformation = declare(null, { - // summary: - // An object describing what attribute to sort on, and the direction of the sort. - // attribute: String - // The name of the attribute to sort on. - // descending: Boolean - // The direction of the sort. Default is false. -}); - -Store.QueryOptions = declare(null, { - // summary: - // Optional object with additional parameters for query results. - // sort: dojo/store/api/Store.SortInformation[]? - // A list of attributes to sort on, as well as direction - // For example: - // | [{attribute:"price, descending: true}]. - // If the sort parameter is omitted, then the natural order of the store may be - // applied if there is a natural order. - // start: Number? - // The first result to begin iteration on - // count: Number? - // The number of how many results should be returned. -}); - -Store.QueryResults = declare(null, { - // summary: - // This is an object returned from query() calls that provides access to the results - // of a query. Queries may be executed asynchronously. - - forEach: function(callback, thisObject){ - // summary: - // Iterates over the query results, based on - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach. - // Note that this may executed asynchronously. The callback may be called - // after this function returns. - // callback: - // Function that is called for each object in the query results - // thisObject: - // The object to use as |this| in the callback. - - }, - filter: function(callback, thisObject){ - // summary: - // Filters the query results, based on - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter. - // Note that this may executed asynchronously. The callback may be called - // after this function returns. - // callback: - // Function that is called for each object in the query results - // thisObject: - // The object to use as |this| in the callback. - // returns: dojo/store/api/Store.QueryResults - }, - map: function(callback, thisObject){ - // summary: - // Maps the query results, based on - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map. - // Note that this may executed asynchronously. The callback may be called - // after this function returns. - // callback: - // Function that is called for each object in the query results - // thisObject: - // The object to use as |this| in the callback. - // returns: dojo/store/api/Store.QueryResults - }, - then: function(callback, errorHandler){ - // summary: - // This registers a callback for when the query is complete, if the query is asynchronous. - // This is an optional method, and may not be present for synchronous queries. - // callback: - // This is called when the query is completed successfully, and is passed a single argument - // that is an array representing the query results. - // errorHandler: - // This is called if the query failed, and is passed a single argument that is the error - // for the failure. - }, - observe: function(listener, includeAllUpdates){ - // summary: - // This registers a callback for notification of when data is modified in the query results. - // This is an optional method, and is usually provided by dojo/store/Observable. - // listener: Function - // The listener function is called when objects in the query results are modified - // to affect the query result. The listener function is called with the following arguments: - // | listener(object, removedFrom, insertedInto); - // - // - The object parameter indicates the object that was create, modified, or deleted. - // - The removedFrom parameter indicates the index in the result array where - // the object used to be. If the value is -1, then the object is an addition to - // this result set (due to a new object being created, or changed such that it - // is a part of the result set). - // - The insertedInto parameter indicates the index in the result array where - // the object should be now. If the value is -1, then the object is a removal - // from this result set (due to an object being deleted, or changed such that it - // is not a part of the result set). - // includeAllUpdates: - // This indicates whether or not to include object updates that do not affect - // the inclusion or order of the object in the query results. By default this is false, - // which means that if any object is updated in such a way that it remains - // in the result set and it's position in result sets is not affected, then the listener - // will not be fired. - - }, - // total: Number|Promise? - // This property should be included in if the query options included the "count" - // property limiting the result set. This property indicates the total number of objects - // matching the query (as if "start" and "count" weren't present). This may be - // a promise if the query is asynchronous. - total: 0 -}); - -Store.Transaction = declare(null, { - // summary: - // This is an object returned from transaction() calls that represents the current - // transaction. - - commit: function(){ - // summary: - // Commits the transaction. This may throw an error if it fails. Of if the operation - // is asynchronous, it may return a promise that represents the eventual success - // or failure of the commit. - }, - abort: function(callback, thisObject){ - // summary: - // Aborts the transaction. This may throw an error if it fails. Of if the operation - // is asynchronous, it may return a promise that represents the eventual success - // or failure of the abort. - } -}); -return Store; -}); diff --git a/lib/dojo/store/util/QueryResults.js.uncompressed.js b/lib/dojo/store/util/QueryResults.js.uncompressed.js deleted file mode 100644 index 58503179a..000000000 --- a/lib/dojo/store/util/QueryResults.js.uncompressed.js +++ /dev/null @@ -1,63 +0,0 @@ -define("dojo/store/util/QueryResults", ["../../_base/array", "../../_base/lang", "../../_base/Deferred" -], function(array, lang, Deferred){ - -// module: -// dojo/store/util/QueryResults - -var QueryResults = function(results){ - // summary: - // A function that wraps the results of a store query with additional - // methods. - // description: - // QueryResults is a basic wrapper that allows for array-like iteration - // over any kind of returned data from a query. While the simplest store - // will return a plain array of data, other stores may return deferreds or - // promises; this wrapper makes sure that *all* results can be treated - // the same. - // - // Additional methods include `forEach`, `filter` and `map`. - // results: Array|dojo/promise/Promise - // The result set as an array, or a promise for an array. - // returns: - // An array-like object that can be used for iterating over. - // example: - // Query a store and iterate over the results. - // - // | store.query({ prime: true }).forEach(function(item){ - // | // do something - // | }); - - if(!results){ - return results; - } - // if it is a promise it may be frozen - if(results.then){ - results = lang.delegate(results); - } - function addIterativeMethod(method){ - if(!results[method]){ - results[method] = function(){ - var args = arguments; - return Deferred.when(results, function(results){ - Array.prototype.unshift.call(args, results); - return QueryResults(array[method].apply(array, args)); - }); - }; - } - } - addIterativeMethod("forEach"); - addIterativeMethod("filter"); - addIterativeMethod("map"); - if(!results.total){ - results.total = Deferred.when(results, function(results){ - return results.length; - }); - } - return results; // Object -}; - -lang.setObject("dojo.store.util.QueryResults", QueryResults); - -return QueryResults; - -}); diff --git a/lib/dojo/store/util/SimpleQueryEngine.js.uncompressed.js b/lib/dojo/store/util/SimpleQueryEngine.js.uncompressed.js deleted file mode 100644 index faf712781..000000000 --- a/lib/dojo/store/util/SimpleQueryEngine.js.uncompressed.js +++ /dev/null @@ -1,110 +0,0 @@ -define("dojo/store/util/SimpleQueryEngine", ["../../_base/array" /*=====, "../api/Store" =====*/], function(arrayUtil /*=====, Store =====*/){ - -// module: -// dojo/store/util/SimpleQueryEngine - -return function(query, options){ - // summary: - // Simple query engine that matches using filter functions, named filter - // functions or objects by name-value on a query object hash - // - // description: - // The SimpleQueryEngine provides a way of getting a QueryResults through - // the use of a simple object hash as a filter. The hash will be used to - // match properties on data objects with the corresponding value given. In - // other words, only exact matches will be returned. - // - // This function can be used as a template for more complex query engines; - // for example, an engine can be created that accepts an object hash that - // contains filtering functions, or a string that gets evaluated, etc. - // - // When creating a new dojo.store, simply set the store's queryEngine - // field as a reference to this function. - // - // query: Object - // An object hash with fields that may match fields of items in the store. - // Values in the hash will be compared by normal == operator, but regular expressions - // or any object that provides a test() method are also supported and can be - // used to match strings by more complex expressions - // (and then the regex's or object's test() method will be used to match values). - // - // options: dojo/store/api/Store.QueryOptions? - // An object that contains optional information such as sort, start, and count. - // - // returns: Function - // A function that caches the passed query under the field "matches". See any - // of the "query" methods on dojo.stores. - // - // example: - // Define a store with a reference to this engine, and set up a query method. - // - // | var myStore = function(options){ - // | // ...more properties here - // | this.queryEngine = SimpleQueryEngine; - // | // define our query method - // | this.query = function(query, options){ - // | return QueryResults(this.queryEngine(query, options)(this.data)); - // | }; - // | }; - - // create our matching query function - switch(typeof query){ - default: - throw new Error("Can not query with a " + typeof query); - case "object": case "undefined": - var queryObject = query; - query = function(object){ - for(var key in queryObject){ - var required = queryObject[key]; - if(required && required.test){ - // an object can provide a test method, which makes it work with regex - if(!required.test(object[key], object)){ - return false; - } - }else if(required != object[key]){ - return false; - } - } - return true; - }; - break; - case "string": - // named query - if(!this[query]){ - throw new Error("No filter function " + query + " was found in store"); - } - query = this[query]; - // fall through - case "function": - // fall through - } - function execute(array){ - // execute the whole query, first we filter - var results = arrayUtil.filter(array, query); - // next we sort - var sortSet = options && options.sort; - if(sortSet){ - results.sort(typeof sortSet == "function" ? sortSet : function(a, b){ - for(var sort, i=0; sort = sortSet[i]; i++){ - var aValue = a[sort.attribute]; - var bValue = b[sort.attribute]; - if (aValue != bValue){ - return !!sort.descending == (aValue == null || aValue > bValue) ? -1 : 1; - } - } - return 0; - }); - } - // now we paginate - if(options && (options.start || options.count)){ - var total = results.length; - results = results.slice(options.start || 0, (options.start || 0) + (options.count || Infinity)); - results.total = total; - } - return results; - } - execute.matches = query; - return execute; -}; - -}); diff --git a/lib/dojo/string.js.uncompressed.js b/lib/dojo/string.js.uncompressed.js deleted file mode 100644 index 25b64fb0b..000000000 --- a/lib/dojo/string.js.uncompressed.js +++ /dev/null @@ -1,162 +0,0 @@ -define("dojo/string", [ - "./_base/kernel", // kernel.global - "./_base/lang" -], function(kernel, lang){ - -// module: -// dojo/string - -var string = { - // summary: - // String utilities for Dojo -}; -lang.setObject("dojo.string", string); - -string.rep = function(/*String*/str, /*Integer*/num){ - // summary: - // Efficiently replicate a string `n` times. - // str: - // the string to replicate - // num: - // number of times to replicate the string - - if(num <= 0 || !str){ return ""; } - - var buf = []; - for(;;){ - if(num & 1){ - buf.push(str); - } - if(!(num >>= 1)){ break; } - str += str; - } - return buf.join(""); // String -}; - -string.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){ - // summary: - // Pad a string to guarantee that it is at least `size` length by - // filling with the character `ch` at either the start or end of the - // string. Pads at the start, by default. - // text: - // the string to pad - // size: - // length to provide padding - // ch: - // character to pad, defaults to '0' - // end: - // adds padding at the end if true, otherwise pads at start - // example: - // | // Fill the string to length 10 with "+" characters on the right. Yields "Dojo++++++". - // | string.pad("Dojo", 10, "+", true); - - if(!ch){ - ch = '0'; - } - var out = String(text), - pad = string.rep(ch, Math.ceil((size - out.length) / ch.length)); - return end ? out + pad : pad + out; // String -}; - -string.substitute = function( /*String*/ template, - /*Object|Array*/map, - /*Function?*/ transform, - /*Object?*/ thisObject){ - // summary: - // Performs parameterized substitutions on a string. Throws an - // exception if any parameter is unmatched. - // template: - // a string with expressions in the form `${key}` to be replaced or - // `${key:format}` which specifies a format function. keys are case-sensitive. - // map: - // hash to search for substitutions - // transform: - // a function to process all parameters before substitution takes - // place, e.g. mylib.encodeXML - // thisObject: - // where to look for optional format function; default to the global - // namespace - // example: - // Substitutes two expressions in a string from an Array or Object - // | // returns "File 'foo.html' is not found in directory '/temp'." - // | // by providing substitution data in an Array - // | string.substitute( - // | "File '${0}' is not found in directory '${1}'.", - // | ["foo.html","/temp"] - // | ); - // | - // | // also returns "File 'foo.html' is not found in directory '/temp'." - // | // but provides substitution data in an Object structure. Dotted - // | // notation may be used to traverse the structure. - // | string.substitute( - // | "File '${name}' is not found in directory '${info.dir}'.", - // | { name: "foo.html", info: { dir: "/temp" } } - // | ); - // example: - // Use a transform function to modify the values: - // | // returns "file 'foo.html' is not found in directory '/temp'." - // | string.substitute( - // | "${0} is not found in ${1}.", - // | ["foo.html","/temp"], - // | function(str){ - // | // try to figure out the type - // | var prefix = (str.charAt(0) == "/") ? "directory": "file"; - // | return prefix + " '" + str + "'"; - // | } - // | ); - // example: - // Use a formatter - // | // returns "thinger -- howdy" - // | string.substitute( - // | "${0:postfix}", ["thinger"], null, { - // | postfix: function(value, key){ - // | return value + " -- howdy"; - // | } - // | } - // | ); - - thisObject = thisObject || kernel.global; - transform = transform ? - lang.hitch(thisObject, transform) : function(v){ return v; }; - - return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, - function(match, key, format){ - var value = lang.getObject(key, false, map); - if(format){ - value = lang.getObject(format, false, thisObject).call(thisObject, value, key); - } - return transform(value, key).toString(); - }); // String -}; - -string.trim = String.prototype.trim ? - lang.trim : // aliasing to the native function - function(str){ - str = str.replace(/^\s+/, ''); - for(var i = str.length - 1; i >= 0; i--){ - if(/\S/.test(str.charAt(i))){ - str = str.substring(0, i + 1); - break; - } - } - return str; - }; - -/*===== - string.trim = function(str){ - // summary: - // Trims whitespace from both sides of the string - // str: String - // String to be trimmed - // returns: String - // Returns the trimmed string - // description: - // This version of trim() was taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript). - // The short yet performant version of this function is dojo.trim(), - // which is part of Dojo base. Uses String.prototype.trim instead, if available. - return ""; // String - }; - =====*/ - - return string; -}); diff --git a/lib/dojo/text.js.uncompressed.js b/lib/dojo/text.js.uncompressed.js deleted file mode 100644 index 1a9e98f2f..000000000 --- a/lib/dojo/text.js.uncompressed.js +++ /dev/null @@ -1,214 +0,0 @@ -define("dojo/text", ["./_base/kernel", "require", "./has", "./_base/xhr"], function(dojo, require, has, xhr){ - // module: - // dojo/text - - var getText; - if( 1 ){ - getText= function(url, sync, load){ - xhr("GET", {url: url, sync:!!sync, load: load, headers: dojo.config.textPluginHeaders || {}}); - }; - }else{ - // TODOC: only works for dojo AMD loader - if(require.getText){ - getText= require.getText; - }else{ - console.error("dojo/text plugin failed to load because loader does not support getText"); - } - } - - var - theCache = {}, - - strip= function(text){ - //Strips <?xml ...?> declarations so that external SVG and XML - //documents can be added to a document without worry. Also, if the string - //is an HTML document, only the part inside the body tag is returned. - if(text){ - text= text.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, ""); - var matches= text.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); - if(matches){ - text= matches[1]; - } - }else{ - text = ""; - } - return text; - }, - - notFound = {}, - - pending = {}; - - dojo.cache = function(/*String||Object*/module, /*String*/url, /*String||Object?*/value){ - // summary: - // A getter and setter for storing the string content associated with the - // module and url arguments. - // description: - // If module is a string that contains slashes, then it is interpretted as a fully - // resolved path (typically a result returned by require.toUrl), and url should not be - // provided. This is the preferred signature. If module is a string that does not - // contain slashes, then url must also be provided and module and url are used to - // call `dojo.moduleUrl()` to generate a module URL. This signature is deprecated. - // If value is specified, the cache value for the moduleUrl will be set to - // that value. Otherwise, dojo.cache will fetch the moduleUrl and store it - // in its internal cache and return that cached value for the URL. To clear - // a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the - // the URL contents, only modules on the same domain of the page can use this capability. - // The build system can inline the cache values though, to allow for xdomain hosting. - // module: String||Object - // If a String with slashes, a fully resolved path; if a String without slashes, the - // module name to use for the base part of the URL, similar to module argument - // to `dojo.moduleUrl`. If an Object, something that has a .toString() method that - // generates a valid path for the cache item. For example, a dojo._Url object. - // url: String - // The rest of the path to append to the path derived from the module argument. If - // module is an object, then this second argument should be the "value" argument instead. - // value: String||Object? - // If a String, the value to use in the cache for the module/url combination. - // If an Object, it can have two properties: value and sanitize. The value property - // should be the value to use in the cache, and sanitize can be set to true or false, - // to indicate if XML declarations should be removed from the value and if the HTML - // inside a body tag in the value should be extracted as the real value. The value argument - // or the value property on the value argument are usually only used by the build system - // as it inlines cache content. - // example: - // To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style - // of call is used to avoid an issue with the build system erroneously trying to intern - // this example. To get the build system to intern your dojo.cache calls, use the - // "dojo.cache" style of call): - // | //If template.html contains "<h1>Hello</h1>" that will be - // | //the value for the text variable. - // | var text = dojo["cache"]("my.module", "template.html"); - // example: - // To ask dojo.cache to fetch content and store it in the cache, and sanitize the input - // (the dojo["cache"] style of call is used to avoid an issue with the build system - // erroneously trying to intern this example. To get the build system to intern your - // dojo.cache calls, use the "dojo.cache" style of call): - // | //If template.html contains "<html><body><h1>Hello</h1></body></html>", the - // | //text variable will contain just "<h1>Hello</h1>". - // | var text = dojo["cache"]("my.module", "template.html", {sanitize: true}); - // example: - // Same example as previous, but demonstrates how an object can be passed in as - // the first argument, then the value argument can then be the second argument. - // | //If template.html contains "<html><body><h1>Hello</h1></body></html>", the - // | //text variable will contain just "<h1>Hello</h1>". - // | var text = dojo["cache"](new dojo._Url("my/module/template.html"), {sanitize: true}); - - // * (string string [value]) => (module, url, value) - // * (object [value]) => (module, value), url defaults to "" - // - // * if module is an object, then it must be convertable to a string - // * (module, url) module + (url ? ("/" + url) : "") must be a legal argument to require.toUrl - // * value may be a string or an object; if an object then may have the properties "value" and/or "sanitize" - var key; - if(typeof module=="string"){ - if(/\//.test(module)){ - // module is a version 1.7+ resolved path - key = module; - value = url; - }else{ - // module is a version 1.6- argument to dojo.moduleUrl - key = require.toUrl(module.replace(/\./g, "/") + (url ? ("/" + url) : "")); - } - }else{ - key = module + ""; - value = url; - } - var - val = (value != undefined && typeof value != "string") ? value.value : value, - sanitize = value && value.sanitize; - - if(typeof val == "string"){ - //We have a string, set cache value - theCache[key] = val; - return sanitize ? strip(val) : val; - }else if(val === null){ - //Remove cached value - delete theCache[key]; - return null; - }else{ - //Allow cache values to be empty strings. If key property does - //not exist, fetch it. - if(!(key in theCache)){ - getText(key, true, function(text){ - theCache[key]= text; - }); - } - return sanitize ? strip(theCache[key]) : theCache[key]; - } - }; - - return { - // summary: - // This module implements the dojo/text! plugin and the dojo.cache API. - // description: - // We choose to include our own plugin to leverage functionality already contained in dojo - // and thereby reduce the size of the plugin compared to various foreign loader implementations. - // Also, this allows foreign AMD loaders to be used without their plugins. - // - // CAUTION: this module is designed to optionally function synchronously to support the dojo v1.x synchronous - // loader. This feature is outside the scope of the CommonJS plugins specification. - - // the dojo/text caches it's own resources because of dojo.cache - dynamic: true, - - normalize: function(id, toAbsMid){ - // id is something like (path may be relative): - // - // "path/to/text.html" - // "path/to/text.html!strip" - var parts= id.split("!"), - url= parts[0]; - return (/^\./.test(url) ? toAbsMid(url) : url) + (parts[1] ? "!" + parts[1] : ""); - }, - - load: function(id, require, load){ - // id: String - // Path to the resource. - // require: Function - // Object that include the function toUrl with given id returns a valid URL from which to load the text. - // load: Function - // Callback function which will be called, when the loading finished. - - // id is something like (path is always absolute): - // - // "path/to/text.html" - // "path/to/text.html!strip" - var - parts= id.split("!"), - stripFlag= parts.length>1, - absMid= parts[0], - url = require.toUrl(parts[0]), - requireCacheUrl = "url:" + url, - text = notFound, - finish = function(text){ - load(stripFlag ? strip(text) : text); - }; - if(absMid in theCache){ - text = theCache[absMid]; - }else if(requireCacheUrl in require.cache){ - text = require.cache[requireCacheUrl]; - }else if(url in theCache){ - text = theCache[url]; - } - if(text===notFound){ - if(pending[url]){ - pending[url].push(finish); - }else{ - var pendingList = pending[url] = [finish]; - getText(url, !require.async, function(text){ - theCache[absMid]= theCache[url]= text; - for(var i = 0; i<pendingList.length;){ - pendingList[i++](text); - } - delete pending[url]; - }); - } - }else{ - finish(text); - } - } - }; - -}); - diff --git a/lib/dojo/topic.js.uncompressed.js b/lib/dojo/topic.js.uncompressed.js deleted file mode 100644 index 35e193739..000000000 --- a/lib/dojo/topic.js.uncompressed.js +++ /dev/null @@ -1,38 +0,0 @@ -define("dojo/topic", ["./Evented"], function(Evented){ - - // module: - // dojo/topic - - var hub = new Evented; - return { - // summary: - // Pubsub hub. - // example: - // | topic.subscribe("some/topic", function(event){ - // | ... do something with event - // | }); - // | topic.publish("some/topic", {name:"some event", ...}); - - publish: function(topic, event){ - // summary: - // Publishes a message to a topic on the pub/sub hub. All arguments after - // the first will be passed to the subscribers, so any number of arguments - // can be provided (not just event). - // topic: String - // The name of the topic to publish to - // event: Object - // An event to distribute to the topic listeners - return hub.emit.apply(hub, arguments); - }, - - subscribe: function(topic, listener){ - // summary: - // Subscribes to a topic on the pub/sub hub - // topic: String - // The topic to subscribe to - // listener: Function - // A function to call when a message is published to the given topic - return hub.on.apply(hub, arguments); - } - }; -}); diff --git a/lib/dojo/touch.js.uncompressed.js b/lib/dojo/touch.js.uncompressed.js deleted file mode 100644 index 9204ac6cd..000000000 --- a/lib/dojo/touch.js.uncompressed.js +++ /dev/null @@ -1,209 +0,0 @@ -define("dojo/touch", ["./_base/kernel", "./aspect", "./dom", "./on", "./has", "./mouse", "./ready", "./_base/window"], -function(dojo, aspect, dom, on, has, mouse, ready, win){ - - // module: - // dojo/touch - - var hasTouch = has("touch"); - - // TODO: get iOS version from dojo/sniff after #15827 is fixed - var ios4 = false; - if(has("ios")){ - var ua = navigator.userAgent; - var v = ua.match(/OS ([\d_]+)/) ? RegExp.$1 : "1"; - var os = parseFloat(v.replace(/_/, '.').replace(/_/g, '')); - ios4 = os < 5; - } - - var touchmove, hoveredNode; - - if(hasTouch){ - ready(function(){ - // Keep track of currently hovered node - hoveredNode = win.body(); // currently hovered node - - win.doc.addEventListener("touchstart", function(evt){ - // Precede touchstart event with touch.over event. DnD depends on this. - // Use addEventListener(cb, true) to run cb before any touchstart handlers on node run, - // and to ensure this code runs even if the listener on the node does event.stop(). - var oldNode = hoveredNode; - hoveredNode = evt.target; - on.emit(oldNode, "dojotouchout", { - target: oldNode, - relatedTarget: hoveredNode, - bubbles: true - }); - on.emit(hoveredNode, "dojotouchover", { - target: hoveredNode, - relatedTarget: oldNode, - bubbles: true - }); - }, true); - - // Fire synthetic touchover and touchout events on nodes since the browser won't do it natively. - on(win.doc, "touchmove", function(evt){ - var newNode = win.doc.elementFromPoint( - evt.pageX - (ios4 ? 0 : win.global.pageXOffset), // iOS 4 expects page coords - evt.pageY - (ios4 ? 0 : win.global.pageYOffset) - ); - if(newNode && hoveredNode !== newNode){ - // touch out on the old node - on.emit(hoveredNode, "dojotouchout", { - target: hoveredNode, - relatedTarget: newNode, - bubbles: true - }); - - // touchover on the new node - on.emit(newNode, "dojotouchover", { - target: newNode, - relatedTarget: hoveredNode, - bubbles: true - }); - - hoveredNode = newNode; - } - }); - }); - - // Define synthetic touch.move event that unlike the native touchmove, fires for the node the finger is - // currently dragging over rather than the node where the touch started. - touchmove = function(node, listener){ - return on(win.doc, "touchmove", function(evt){ - if(node === win.doc || dom.isDescendant(hoveredNode, node)){ - evt.target = hoveredNode; - listener.call(this, evt); - } - }); - }; - } - - - function _handle(type){ - // type: String - // press | move | release | cancel - - return function(node, listener){//called by on(), see dojo.on - return on(node, type, listener); - }; - } - - //device neutral events - touch.press|move|release|cancel/over/out - var touch = { - press: _handle(hasTouch ? "touchstart": "mousedown"), - move: hasTouch ? touchmove :_handle("mousemove"), - release: _handle(hasTouch ? "touchend": "mouseup"), - cancel: hasTouch ? _handle("touchcancel") : mouse.leave, - over: _handle(hasTouch ? "dojotouchover": "mouseover"), - out: _handle(hasTouch ? "dojotouchout": "mouseout"), - enter: mouse._eventHandler(hasTouch ? "dojotouchover" : "mouseover"), - leave: mouse._eventHandler(hasTouch ? "dojotouchout" : "mouseout") - }; - /*===== - touch = { - // summary: - // This module provides unified touch event handlers by exporting - // press, move, release and cancel which can also run well on desktop. - // Based on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html - // - // example: - // Used with dojo.on - // | define(["dojo/on", "dojo/touch"], function(on, touch){ - // | on(node, touch.press, function(e){}); - // | on(node, touch.move, function(e){}); - // | on(node, touch.release, function(e){}); - // | on(node, touch.cancel, function(e){}); - // example: - // Used with touch.* directly - // | touch.press(node, function(e){}); - // | touch.move(node, function(e){}); - // | touch.release(node, function(e){}); - // | touch.cancel(node, function(e){}); - - press: function(node, listener){ - // summary: - // Register a listener to 'touchstart'|'mousedown' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - move: function(node, listener){ - // summary: - // Register a listener to 'touchmove'|'mousemove' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - release: function(node, listener){ - // summary: - // Register a listener to 'touchend'|'mouseup' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - cancel: function(node, listener){ - // summary: - // Register a listener to 'touchcancel'|'mouseleave' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - over: function(node, listener){ - // summary: - // Register a listener to 'mouseover' or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - out: function(node, listener){ - // summary: - // Register a listener to 'mouseout' or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - enter: function(node, listener){ - // summary: - // Register a listener to mouse.enter or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - leave: function(node, listener){ - // summary: - // Register a listener to mouse.leave or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - } - }; - =====*/ - - 1 && (dojo.touch = touch); - - return touch; -}); diff --git a/lib/dojo/tt-rss-layer.js.uncompressed.js b/lib/dojo/tt-rss-layer.js.uncompressed.js deleted file mode 100644 index 8d05b4f80..000000000 --- a/lib/dojo/tt-rss-layer.js.uncompressed.js +++ /dev/null @@ -1,34329 +0,0 @@ -require({cache:{ -'url:dijit/templates/CheckedMenuItem.html':"<tr class=\"dijitReset dijitMenuItem\" data-dojo-attach-point=\"focusNode\" role=\"menuitemcheckbox\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t\t<span class=\"dijitCheckedMenuItemIconChar\">✓</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\"> </td>\n</tr>\n", -'dijit/form/TextBox':function(){ -require({cache:{ -'url:dijit/form/templates/TextBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n"}}); -define("dijit/form/TextBox", [ - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.create - "dojo/dom-style", // domStyle.getComputedStyle - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.hitch - "dojo/sniff", // has("ie") has("mozilla") - "./_FormValueWidget", - "./_TextBoxMixin", - "dojo/text!./templates/TextBox.html", - "../main" // to export dijit._setSelectionRange, remove in 2.0 -], function(declare, domConstruct, domStyle, kernel, lang, has, - _FormValueWidget, _TextBoxMixin, template, dijit){ - - // module: - // dijit/form/TextBox - - var TextBox = declare("dijit.form.TextBox", [_FormValueWidget, _TextBoxMixin], { - // summary: - // A base class for textbox form inputs - - templateString: template, - _singleNodeTemplate: '<input class="dijit dijitReset dijitLeft dijitInputField" data-dojo-attach-point="textbox,focusNode" autocomplete="off" type="${type}" ${!nameAttrSetting} />', - - _buttonInputDisabled: has("ie") ? "disabled" : "", // allows IE to disallow focus, but Firefox cannot be disabled for mousedown events - - baseClass: "dijitTextBox", - - postMixInProperties: function(){ - var type = this.type.toLowerCase(); - if(this.templateString && this.templateString.toLowerCase() == "input" || ((type == "hidden" || type == "file") && this.templateString == this.constructor.prototype.templateString)){ - this.templateString = this._singleNodeTemplate; - } - this.inherited(arguments); - }, - - postCreate: function(){ - this.inherited(arguments); - - if(has("ie") < 9){ - // IE INPUT tag fontFamily has to be set directly using STYLE - // the defer gives IE a chance to render the TextBox and to deal with font inheritance - this.defer(function(){ - try{ - var s = domStyle.getComputedStyle(this.domNode); // can throw an exception if widget is immediately destroyed - if(s){ - var ff = s.fontFamily; - if(ff){ - var inputs = this.domNode.getElementsByTagName("INPUT"); - if(inputs){ - for(var i=0; i < inputs.length; i++){ - inputs[i].style.fontFamily = ff; - } - } - } - } - }catch(e){/*when used in a Dialog, and this is called before the dialog is - shown, s.fontFamily would trigger "Invalid Argument" error.*/} - }); - } - }, - - _onInput: function(e){ - this.inherited(arguments); - if(this.intermediateChanges){ // _TextBoxMixin uses onInput - // allow the key to post to the widget input box - this.defer(function(){ this._handleOnChange(this.get('value'), false); }); - } - }, - - _setPlaceHolderAttr: function(v){ - this._set("placeHolder", v); - if(!this._phspan){ - this._attachPoints.push('_phspan'); - // dijitInputField class gives placeHolder same padding as the input field - // parent node already has dijitInputField class but it doesn't affect this <span> - // since it's position: absolute. - this._phspan = domConstruct.create('span',{ onmousedown:function(e){ e.preventDefault(); }, className:'dijitPlaceHolder dijitInputField'},this.textbox,'after'); - } - this._phspan.innerHTML=""; - this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v)); - this._updatePlaceHolder(); - }, - - _updatePlaceHolder: function(){ - if(this._phspan){ - this._phspan.style.display=(this.placeHolder&&!this.focused&&!this.textbox.value)?"":"none"; - } - }, - - _setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){ - this.inherited(arguments); - this._updatePlaceHolder(); - }, - - getDisplayedValue: function(){ - // summary: - // Deprecated. Use get('displayedValue') instead. - // tags: - // deprecated - kernel.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.", "", "2.0"); - return this.get('displayedValue'); - }, - - setDisplayedValue: function(/*String*/ value){ - // summary: - // Deprecated. Use set('displayedValue', ...) instead. - // tags: - // deprecated - kernel.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.", "", "2.0"); - this.set('displayedValue', value); - }, - - _onBlur: function(e){ - if(this.disabled){ return; } - this.inherited(arguments); - this._updatePlaceHolder(); - - if(has("mozilla")){ - if(this.selectOnClick){ - // clear selection so that the next mouse click doesn't reselect - this.textbox.selectionStart = this.textbox.selectionEnd = undefined; - } - } - }, - - _onFocus: function(/*String*/ by){ - if(this.disabled || this.readOnly){ return; } - this.inherited(arguments); - this._updatePlaceHolder(); - } - }); - - if(has("ie")){ - TextBox.prototype._isTextSelected = function(){ - var range = this.ownerDocument.selection.createRange(); - var parent = range.parentElement(); - return parent == this.textbox && range.text.length > 0; - }; - - // Overrides definition of _setSelectionRange from _TextBoxMixin (TODO: move to _TextBoxMixin.js?) - dijit._setSelectionRange = _TextBoxMixin._setSelectionRange = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){ - if(element.createTextRange){ - var r = element.createTextRange(); - r.collapse(true); - r.moveStart("character", -99999); // move to 0 - r.moveStart("character", start); // delta from 0 is the correct position - r.moveEnd("character", stop-start); - r.select(); - } - } - } - - return TextBox; -}); - -}, -'dijit/_base/scroll':function(){ -define("dijit/_base/scroll", [ - "dojo/window", // windowUtils.scrollIntoView - "../main" // export symbol to dijit -], function(windowUtils, dijit){ - // module: - // dijit/_base/scroll - - /*===== - return { - // summary: - // Back compatibility module, new code should use windowUtils directly instead of using this module. - }; - =====*/ - - dijit.scrollIntoView = function(/*DomNode*/ node, /*Object?*/ pos){ - // summary: - // Scroll the passed node into view, if it is not already. - // Deprecated, use `windowUtils.scrollIntoView` instead. - - windowUtils.scrollIntoView(node, pos); - }; -}); - -}, -'dijit/_TemplatedMixin':function(){ -define("dijit/_TemplatedMixin", [ - "dojo/_base/lang", // lang.getObject - "dojo/touch", - "./_WidgetBase", - "dojo/string", // string.substitute string.trim - "dojo/cache", // dojo.cache - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.destroy, domConstruct.toDom - "dojo/sniff", // has("ie") - "dojo/_base/unload" // unload.addOnWindowUnload -], function(lang, touch, _WidgetBase, string, cache, array, declare, domConstruct, has, unload) { - - // module: - // dijit/_TemplatedMixin - - var _TemplatedMixin = declare("dijit._TemplatedMixin", null, { - // summary: - // Mixin for widgets that are instantiated from a template - - // templateString: [protected] String - // A string that represents the widget template. - // Use in conjunction with dojo.cache() to load from a file. - templateString: null, - - // templatePath: [protected deprecated] String - // Path to template (HTML file) for this widget relative to dojo.baseUrl. - // Deprecated: use templateString with require([... "dojo/text!..."], ...) instead - templatePath: null, - - // skipNodeCache: [protected] Boolean - // If using a cached widget template nodes poses issues for a - // particular widget class, it can set this property to ensure - // that its template is always re-built from a string - _skipNodeCache: false, - - // _earlyTemplatedStartup: Boolean - // A fallback to preserve the 1.0 - 1.3 behavior of children in - // templates having their startup called before the parent widget - // fires postCreate. Defaults to 'false', causing child widgets to - // have their .startup() called immediately before a parent widget - // .startup(), but always after the parent .postCreate(). Set to - // 'true' to re-enable to previous, arguably broken, behavior. - _earlyTemplatedStartup: false, - -/*===== - // _attachPoints: [private] String[] - // List of widget attribute names associated with data-dojo-attach-point=... in the - // template, ex: ["containerNode", "labelNode"] - _attachPoints: [], - - // _attachEvents: [private] Handle[] - // List of connections associated with data-dojo-attach-event=... in the - // template - _attachEvents: [], - =====*/ - - constructor: function(/*===== params, srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree. - - this._attachPoints = []; - this._attachEvents = []; - }, - - _stringRepl: function(tmpl){ - // summary: - // Does substitution of ${foo} type properties in template string - // tags: - // private - var className = this.declaredClass, _this = this; - // Cache contains a string because we need to do property replacement - // do the property replacement - return string.substitute(tmpl, this, function(value, key){ - if(key.charAt(0) == '!'){ value = lang.getObject(key.substr(1), false, _this); } - if(typeof value == "undefined"){ throw new Error(className+" template:"+key); } // a debugging aide - if(value == null){ return ""; } - - // Substitution keys beginning with ! will skip the transform step, - // in case a user wishes to insert unescaped markup, e.g. ${!foo} - return key.charAt(0) == "!" ? value : - // Safer substitution, see heading "Attribute values" in - // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2 - value.toString().replace(/"/g,"""); //TODO: add &? use encodeXML method? - }, this); - }, - - buildRendering: function(){ - // summary: - // Construct the UI for this widget from a template, setting this.domNode. - // tags: - // protected - - if(!this.templateString){ - this.templateString = cache(this.templatePath, {sanitize: true}); - } - - // Lookup cached version of template, and download to cache if it - // isn't there already. Returns either a DomNode or a string, depending on - // whether or not the template contains ${foo} replacement parameters. - var cached = _TemplatedMixin.getCachedTemplate(this.templateString, this._skipNodeCache, this.ownerDocument); - - var node; - if(lang.isString(cached)){ - node = domConstruct.toDom(this._stringRepl(cached), this.ownerDocument); - if(node.nodeType != 1){ - // Flag common problems such as templates with multiple top level nodes (nodeType == 11) - throw new Error("Invalid template: " + cached); - } - }else{ - // if it's a node, all we have to do is clone it - node = cached.cloneNode(true); - } - - this.domNode = node; - - // Call down to _Widget.buildRendering() to get base classes assigned - // TODO: change the baseClass assignment to _setBaseClassAttr - this.inherited(arguments); - - // recurse through the node, looking for, and attaching to, our - // attachment points and events, which should be defined on the template node. - this._attachTemplateNodes(node, function(n,p){ return n.getAttribute(p); }); - - this._beforeFillContent(); // hook for _WidgetsInTemplateMixin - - this._fillContent(this.srcNodeRef); - }, - - _beforeFillContent: function(){ - }, - - _fillContent: function(/*DomNode*/ source){ - // summary: - // Relocate source contents to templated container node. - // this.containerNode must be able to receive children, or exceptions will be thrown. - // tags: - // protected - var dest = this.containerNode; - if(source && dest){ - while(source.hasChildNodes()){ - dest.appendChild(source.firstChild); - } - } - }, - - _attachTemplateNodes: function(rootNode, getAttrFunc){ - // summary: - // Iterate through the template and attach functions and nodes accordingly. - // Alternately, if rootNode is an array of widgets, then will process data-dojo-attach-point - // etc. for those widgets. - // description: - // Map widget properties and functions to the handlers specified in - // the dom node and it's descendants. This function iterates over all - // nodes and looks for these properties: - // - // - dojoAttachPoint/data-dojo-attach-point - // - dojoAttachEvent/data-dojo-attach-event - // rootNode: DomNode|Widget[] - // the node to search for properties. All children will be searched. - // getAttrFunc: Function - // a function which will be used to obtain property for a given - // DomNode/Widget - // tags: - // private - - var nodes = lang.isArray(rootNode) ? rootNode : (rootNode.all || rootNode.getElementsByTagName("*")); - var x = lang.isArray(rootNode) ? 0 : -1; - for(; x < 0 || nodes[x]; x++){ // don't access nodes.length on IE, see #14346 - var baseNode = (x == -1) ? rootNode : nodes[x]; - if(this.widgetsInTemplate && (getAttrFunc(baseNode, "dojoType") || getAttrFunc(baseNode, "data-dojo-type"))){ - continue; - } - // Process data-dojo-attach-point - var attachPoint = getAttrFunc(baseNode, "dojoAttachPoint") || getAttrFunc(baseNode, "data-dojo-attach-point"); - if(attachPoint){ - var point, points = attachPoint.split(/\s*,\s*/); - while((point = points.shift())){ - if(lang.isArray(this[point])){ - this[point].push(baseNode); - }else{ - this[point]=baseNode; - } - this._attachPoints.push(point); - } - } - - // Process data-dojo-attach-event - var attachEvent = getAttrFunc(baseNode, "dojoAttachEvent") || getAttrFunc(baseNode, "data-dojo-attach-event"); - if(attachEvent){ - // NOTE: we want to support attributes that have the form - // "domEvent: nativeEvent; ..." - var event, events = attachEvent.split(/\s*,\s*/); - var trim = lang.trim; - while((event = events.shift())){ - if(event){ - var thisFunc = null; - if(event.indexOf(":") != -1){ - // oh, if only JS had tuple assignment - var funcNameArr = event.split(":"); - event = trim(funcNameArr[0]); - thisFunc = trim(funcNameArr[1]); - }else{ - event = trim(event); - } - if(!thisFunc){ - thisFunc = event; - } - // Map "press", "move" and "release" to keys.touch, keys.move, keys.release - this._attachEvents.push(this.connect(baseNode, touch[event] || event, thisFunc)); - } - } - } - } - }, - - destroyRendering: function(){ - // Delete all attach points to prevent IE6 memory leaks. - array.forEach(this._attachPoints, function(point){ - delete this[point]; - }, this); - this._attachPoints = []; - - // And same for event handlers - array.forEach(this._attachEvents, this.disconnect, this); - this._attachEvents = []; - - this.inherited(arguments); - } - }); - - // key is templateString; object is either string or DOM tree - _TemplatedMixin._templateCache = {}; - - _TemplatedMixin.getCachedTemplate = function(templateString, alwaysUseString, doc){ - // summary: - // Static method to get a template based on the templatePath or - // templateString key - // templateString: String - // The template - // alwaysUseString: Boolean - // Don't cache the DOM tree for this template, even if it doesn't have any variables - // doc: Document? - // The target document. Defaults to document global if unspecified. - // returns: Mixed - // Either string (if there are ${} variables that need to be replaced) or just - // a DOM tree (if the node can be cloned directly) - - // is it already cached? - var tmplts = _TemplatedMixin._templateCache; - var key = templateString; - var cached = tmplts[key]; - if(cached){ - try{ - // if the cached value is an innerHTML string (no ownerDocument) or a DOM tree created within the - // current document, then use the current cached value - if(!cached.ownerDocument || cached.ownerDocument == (doc || document)){ - // string or node of the same document - return cached; - } - }catch(e){ /* squelch */ } // IE can throw an exception if cached.ownerDocument was reloaded - domConstruct.destroy(cached); - } - - templateString = string.trim(templateString); - - if(alwaysUseString || templateString.match(/\$\{([^\}]+)\}/g)){ - // there are variables in the template so all we can do is cache the string - return (tmplts[key] = templateString); //String - }else{ - // there are no variables in the template so we can cache the DOM tree - var node = domConstruct.toDom(templateString, doc); - if(node.nodeType != 1){ - throw new Error("Invalid template: " + templateString); - } - return (tmplts[key] = node); //Node - } - }; - - if(has("ie")){ - unload.addOnWindowUnload(function(){ - var cache = _TemplatedMixin._templateCache; - for(var key in cache){ - var value = cache[key]; - if(typeof value == "object"){ // value is either a string or a DOM node template - domConstruct.destroy(value); - } - delete cache[key]; - } - }); - } - - // These arguments can be specified for widgets which are used in templates. - // Since any widget can be specified as sub widgets in template, mix it - // into the base widget class. (This is a hack, but it's effective.). - // Remove for 2.0. Also, hide from API doc parser. - lang.extend(_WidgetBase, /*===== {} || =====*/ { - dojoAttachEvent: "", - dojoAttachPoint: "" - }); - - return _TemplatedMixin; -}); - -}, -'dijit/_CssStateMixin':function(){ -define("dijit/_CssStateMixin", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/declare", // declare - "dojo/dom", // dom.isDescendant() - "dojo/dom-class", // domClass.toggle - "dojo/has", - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/ready", - "dojo/_base/window", // win.body - "./registry" -], function(array, declare, dom, domClass, has, lang, on, ready, win, registry){ - -// module: -// dijit/_CssStateMixin - -var CssStateMixin = declare("dijit._CssStateMixin", [], { - // summary: - // Mixin for widgets to set CSS classes on the widget DOM nodes depending on hover/mouse press/focus - // state changes, and also higher-level state changes such becoming disabled or selected. - // - // description: - // By mixing this class into your widget, and setting the this.baseClass attribute, it will automatically - // maintain CSS classes on the widget root node (this.domNode) depending on hover, - // active, focus, etc. state. Ex: with a baseClass of dijitButton, it will apply the classes - // dijitButtonHovered and dijitButtonActive, as the user moves the mouse over the widget and clicks it. - // - // It also sets CSS like dijitButtonDisabled based on widget semantic state. - // - // By setting the cssStateNodes attribute, a widget can also track events on subnodes (like buttons - // within the widget). - - // cssStateNodes: [protected] Object - // List of sub-nodes within the widget that need CSS classes applied on mouse hover/press and focus - // - // Each entry in the hash is a an attachpoint names (like "upArrowButton") mapped to a CSS class names - // (like "dijitUpArrowButton"). Example: - // | { - // | "upArrowButton": "dijitUpArrowButton", - // | "downArrowButton": "dijitDownArrowButton" - // | } - // The above will set the CSS class dijitUpArrowButton to the this.upArrowButton DOMNode when it - // is hovered, etc. - cssStateNodes: {}, - - // hovering: [readonly] Boolean - // True if cursor is over this widget - hovering: false, - - // active: [readonly] Boolean - // True if mouse was pressed while over this widget, and hasn't been released yet - active: false, - - _applyAttributes: function(){ - // This code would typically be in postCreate(), but putting in _applyAttributes() for - // performance: so the class changes happen before DOM is inserted into the document. - // Change back to postCreate() in 2.0. See #11635. - - this.inherited(arguments); - - // Monitoring changes to disabled, readonly, etc. state, and update CSS class of root node - array.forEach(["disabled", "readOnly", "checked", "selected", "focused", "state", "hovering", "active", "_opened"], function(attr){ - this.watch(attr, lang.hitch(this, "_setStateClass")); - }, this); - - // Track hover and active mouse events on widget root node, plus possibly on subnodes - for(var ap in this.cssStateNodes){ - this._trackMouseState(this[ap], this.cssStateNodes[ap]); - } - this._trackMouseState(this.domNode, this.baseClass); - - // Set state initially; there's probably no hover/active/focus state but widget might be - // disabled/readonly/checked/selected so we want to set CSS classes for those conditions. - this._setStateClass(); - }, - - _cssMouseEvent: function(/*Event*/ event){ - // summary: - // Handler for CSS event on this.domNode. Sets hovering and active properties depending on mouse state, - // which triggers _setStateClass() to set appropriate CSS classes for this.domNode. - - if(!this.disabled){ - switch(event.type){ - case "mouseover": - this._set("hovering", true); - this._set("active", this._mouseDown); - break; - case "mouseout": - this._set("hovering", false); - this._set("active", false); - break; - case "mousedown": - case "touchstart": - this._set("active", true); - break; - case "mouseup": - case "touchend": - this._set("active", false); - break; - } - } - }, - - _setStateClass: function(){ - // summary: - // Update the visual state of the widget by setting the css classes on this.domNode - // (or this.stateNode if defined) by combining this.baseClass with - // various suffixes that represent the current widget state(s). - // - // description: - // In the case where a widget has multiple - // states, it sets the class based on all possible - // combinations. For example, an invalid form widget that is being hovered - // will be "dijitInput dijitInputInvalid dijitInputHover dijitInputInvalidHover". - // - // The widget may have one or more of the following states, determined - // by this.state, this.checked, this.valid, and this.selected: - // - // - Error - ValidationTextBox sets this.state to "Error" if the current input value is invalid - // - Incomplete - ValidationTextBox sets this.state to "Incomplete" if the current input value is not finished yet - // - Checked - ex: a checkmark or a ToggleButton in a checked state, will have this.checked==true - // - Selected - ex: currently selected tab will have this.selected==true - // - // In addition, it may have one or more of the following states, - // based on this.disabled and flags set in _onMouse (this.active, this.hovering) and from focus manager (this.focused): - // - // - Disabled - if the widget is disabled - // - Active - if the mouse (or space/enter key?) is being pressed down - // - Focused - if the widget has focus - // - Hover - if the mouse is over the widget - - // Compute new set of classes - var newStateClasses = this.baseClass.split(" "); - - function multiply(modifier){ - newStateClasses = newStateClasses.concat(array.map(newStateClasses, function(c){ return c+modifier; }), "dijit"+modifier); - } - - if(!this.isLeftToRight()){ - // For RTL mode we need to set an addition class like dijitTextBoxRtl. - multiply("Rtl"); - } - - var checkedState = this.checked == "mixed" ? "Mixed" : (this.checked ? "Checked" : ""); - if(this.checked){ - multiply(checkedState); - } - if(this.state){ - multiply(this.state); - } - if(this.selected){ - multiply("Selected"); - } - if(this._opened){ - multiply("Opened"); - } - - if(this.disabled){ - multiply("Disabled"); - }else if(this.readOnly){ - multiply("ReadOnly"); - }else{ - if(this.active){ - multiply("Active"); - }else if(this.hovering){ - multiply("Hover"); - } - } - - if(this.focused){ - multiply("Focused"); - } - - // Remove old state classes and add new ones. - // For performance concerns we only write into domNode.className once. - var tn = this.stateNode || this.domNode, - classHash = {}; // set of all classes (state and otherwise) for node - - array.forEach(tn.className.split(" "), function(c){ classHash[c] = true; }); - - if("_stateClasses" in this){ - array.forEach(this._stateClasses, function(c){ delete classHash[c]; }); - } - - array.forEach(newStateClasses, function(c){ classHash[c] = true; }); - - var newClasses = []; - for(var c in classHash){ - newClasses.push(c); - } - tn.className = newClasses.join(" "); - - this._stateClasses = newStateClasses; - }, - - _subnodeCssMouseEvent: function(node, clazz, evt){ - // summary: - // Handler for hover/active mouse event on widget's subnode - if(this.disabled || this.readOnly){ - return; - } - function hover(isHovering){ - domClass.toggle(node, clazz+"Hover", isHovering); - } - function active(isActive){ - domClass.toggle(node, clazz+"Active", isActive); - } - function focused(isFocused){ - domClass.toggle(node, clazz+"Focused", isFocused); - } - switch(evt.type){ - case "mouseover": - hover(true); - break; - case "mouseout": - hover(false); - active(false); - break; - case "mousedown": - case "touchstart": - active(true); - break; - case "mouseup": - case "touchend": - active(false); - break; - case "focus": - case "focusin": - focused(true); - break; - case "blur": - case "focusout": - focused(false); - break; - } - }, - - _trackMouseState: function(/*DomNode*/ node, /*String*/ clazz){ - // summary: - // Track mouse/focus events on specified node and set CSS class on that node to indicate - // current state. Usually not called directly, but via cssStateNodes attribute. - // description: - // Given class=foo, will set the following CSS class on the node - // - // - fooActive: if the user is currently pressing down the mouse button while over the node - // - fooHover: if the user is hovering the mouse over the node, but not pressing down a button - // - fooFocus: if the node is focused - // - // Note that it won't set any classes if the widget is disabled. - // node: DomNode - // Should be a sub-node of the widget, not the top node (this.domNode), since the top node - // is handled specially and automatically just by mixing in this class. - // clazz: String - // CSS class name (ex: dijitSliderUpArrow) - - // Flag for listener code below to call this._cssMouseEvent() or this._subnodeCssMouseEvent() - // when node is hovered/active - node._cssState = clazz; - } -}); - -ready(function(){ - // Document level listener to catch hover etc. events on widget root nodes and subnodes. - // Note that when the mouse is moved quickly, a single onmouseenter event could signal that multiple widgets - // have been hovered or unhovered (try test_Accordion.html) - function handler(evt){ - // Poor man's event propagation. Don't propagate event to ancestors of evt.relatedTarget, - // to avoid processing mouseout events moving from a widget's domNode to a descendant node; - // such events shouldn't be interpreted as a mouseleave on the widget. - if(!dom.isDescendant(evt.relatedTarget, evt.target)){ - for(var node = evt.target; node && node != evt.relatedTarget; node = node.parentNode){ - // Process any nodes with _cssState property. They are generally widget root nodes, - // but could also be sub-nodes within a widget - if(node._cssState){ - var widget = registry.getEnclosingWidget(node); - if(widget){ - if(node == widget.domNode){ - // event on the widget's root node - widget._cssMouseEvent(evt); - }else{ - // event on widget's sub-node - widget._subnodeCssMouseEvent(node, node._cssState, evt); - } - } - } - } - } - } - function ieHandler(evt){ - evt.target = evt.srcElement; - handler(evt); - } - - // Use addEventListener() (and attachEvent() on IE) to catch the relevant events even if other handlers - // (on individual nodes) call evt.stopPropagation() or event.stopEvent(). - // Currently typematic.js is doing that, not sure why. - // Don't monitor mouseover/mouseout on mobile because iOS generates "phantom" mouseover/mouseout events when - // drag-scrolling, at the point in the viewport where the drag originated. Test the Tree in api viewer. - var body = win.body(), - types = (has("touch") ? [] : ["mouseover", "mouseout"]).concat(["mousedown", "touchstart", "mouseup", "touchend"]); - array.forEach(types, function(type){ - if(body.addEventListener){ - body.addEventListener(type, handler, true); // W3C - }else{ - body.attachEvent("on"+type, ieHandler); // IE - } - }); - - // Track focus events on widget sub-nodes that have been registered via _trackMouseState(). - // However, don't track focus events on the widget root nodes, because focus is tracked via the - // focus manager (and it's not really tracking focus, but rather tracking that focus is on one of the widget's - // nodes or a subwidget's node or a popup node, etc.) - // Remove for 2.0 (if focus CSS needed, just use :focus pseudo-selector). - on(body, "focusin, focusout", function(evt){ - var node = evt.target; - if(node._cssState && !node.getAttribute("widgetId")){ - var widget = registry.getEnclosingWidget(node); - widget._subnodeCssMouseEvent(node, node._cssState, evt); - } - }); -}); - -return CssStateMixin; -}); - -}, -'dijit/layout/ScrollingTabController':function(){ -require({cache:{ -'url:dijit/layout/templates/ScrollingTabController.html':"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_menuBtn\"\n\t\t\tdata-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t\tdata-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">▼</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_leftBtn\"\n\t\t\tdata-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t\tdata-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">◀</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_rightBtn\"\n\t\t\tdata-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t\tdata-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">▶</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'\n\t\t\t\tdata-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>", -'url:dijit/layout/templates/_ScrollingTabControllerButton.html':"<div data-dojo-attach-event=\"onclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\">\n\t<img role=\"presentation\" alt=\"\" src=\"${_blankGif}\" class=\"dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>"}}); -define("dijit/layout/ScrollingTabController", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.contains - "dojo/dom-geometry", // domGeometry.contentBox - "dojo/dom-style", // domStyle.style - "dojo/_base/fx", // Animation - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/query", // query - "dojo/sniff", // has("ie"), has("webkit"), has("quirks") - "../registry", // registry.byId() - "dojo/text!./templates/ScrollingTabController.html", - "dojo/text!./templates/_ScrollingTabControllerButton.html", - "./TabController", - "./utils", // marginBox2contextBox, layoutChildren - "../_WidgetsInTemplateMixin", - "../Menu", - "../MenuItem", - "../form/Button", - "../_HasDropDown", - "dojo/NodeList-dom" // NodeList.style -], function(array, declare, domClass, domGeometry, domStyle, fx, lang, on, query, has, - registry, tabControllerTemplate, buttonTemplate, TabController, layoutUtils, _WidgetsInTemplateMixin, - Menu, MenuItem, Button, _HasDropDown){ - -// module: -// dijit/layout/ScrollingTabController - - -var ScrollingTabController = declare("dijit.layout.ScrollingTabController", [TabController, _WidgetsInTemplateMixin], { - // summary: - // Set of tabs with left/right arrow keys and a menu to switch between tabs not - // all fitting on a single row. - // Works only for horizontal tabs (either above or below the content, not to the left - // or right). - // tags: - // private - - baseClass: "dijitTabController dijitScrollingTabController", - - templateString: tabControllerTemplate, - - // useMenu: [const] Boolean - // True if a menu should be used to select tabs when they are too - // wide to fit the TabContainer, false otherwise. - useMenu: true, - - // useSlider: [const] Boolean - // True if a slider should be used to select tabs when they are too - // wide to fit the TabContainer, false otherwise. - useSlider: true, - - // tabStripClass: [const] String - // The css class to apply to the tab strip, if it is visible. - tabStripClass: "", - - widgetsInTemplate: true, - - // _minScroll: Number - // The distance in pixels from the edge of the tab strip which, - // if a scroll animation is less than, forces the scroll to - // go all the way to the left/right. - _minScroll: 5, - - // Override default behavior mapping class to DOMNode - _setClassAttr: { node: "containerNode", type: "class" }, - - buildRendering: function(){ - this.inherited(arguments); - var n = this.domNode; - - this.scrollNode = this.tablistWrapper; - this._initButtons(); - - if(!this.tabStripClass){ - this.tabStripClass = "dijitTabContainer" + - this.tabPosition.charAt(0).toUpperCase() + - this.tabPosition.substr(1).replace(/-.*/, "") + - "None"; - domClass.add(n, "tabStrip-disabled") - } - - domClass.add(this.tablistWrapper, this.tabStripClass); - }, - - onStartup: function(){ - this.inherited(arguments); - - // TabController is hidden until it finishes drawing, to give - // a less visually jumpy instantiation. When it's finished, set visibility to "" - // to that the tabs are hidden/shown depending on the container's visibility setting. - domStyle.set(this.domNode, "visibility", ""); - this._postStartup = true; - - // changes to the tab button label or iconClass will have changed the width of the - // buttons, so do a resize - this.own(on(this.containerNode, "attrmodified-label, attrmodified-iconclass", lang.hitch(this, function(evt){ - if(this._dim){ - this.resize(this._dim); - } - }))); - }, - - onAddChild: function(page, insertIndex){ - this.inherited(arguments); - - // Increment the width of the wrapper when a tab is added - // This makes sure that the buttons never wrap. - // The value 200 is chosen as it should be bigger than most - // Tab button widths. - domStyle.set(this.containerNode, "width", - (domStyle.get(this.containerNode, "width") + 200) + "px"); - }, - - onRemoveChild: function(page, insertIndex){ - // null out _selectedTab because we are about to delete that dom node - var button = this.pane2button[page.id]; - if(this._selectedTab === button.domNode){ - this._selectedTab = null; - } - - this.inherited(arguments); - }, - - _initButtons: function(){ - // summary: - // Creates the buttons used to scroll to view tabs that - // may not be visible if the TabContainer is too narrow. - - // Make a list of the buttons to display when the tab labels become - // wider than the TabContainer, and hide the other buttons. - // Also gets the total width of the displayed buttons. - this._btnWidth = 0; - this._buttons = query("> .tabStripButton", this.domNode).filter(function(btn){ - if((this.useMenu && btn == this._menuBtn.domNode) || - (this.useSlider && (btn == this._rightBtn.domNode || btn == this._leftBtn.domNode))){ - this._btnWidth += domGeometry.getMarginSize(btn).w; - return true; - }else{ - domStyle.set(btn, "display", "none"); - return false; - } - }, this); - }, - - _getTabsWidth: function(){ - var children = this.getChildren(); - if(children.length){ - var leftTab = children[this.isLeftToRight() ? 0 : children.length - 1].domNode, - rightTab = children[this.isLeftToRight() ? children.length - 1 : 0].domNode; - return rightTab.offsetLeft + rightTab.offsetWidth - leftTab.offsetLeft; - }else{ - return 0; - } - }, - - _enableBtn: function(width){ - // summary: - // Determines if the tabs are wider than the width of the TabContainer, and - // thus that we need to display left/right/menu navigation buttons. - var tabsWidth = this._getTabsWidth(); - width = width || domStyle.get(this.scrollNode, "width"); - return tabsWidth > 0 && width < tabsWidth; - }, - - resize: function(dim){ - // summary: - // Hides or displays the buttons used to scroll the tab list and launch the menu - // that selects tabs. - - // Save the dimensions to be used when a child is renamed. - this._dim = dim; - - // Set my height to be my natural height (tall enough for one row of tab labels), - // and my content-box width based on margin-box width specified in dim parameter. - // But first reset scrollNode.height in case it was set by layoutChildren() call - // in a previous run of this method. - this.scrollNode.style.height = "auto"; - var cb = this._contentBox = layoutUtils.marginBox2contentBox(this.domNode, {h: 0, w: dim.w}); - cb.h = this.scrollNode.offsetHeight; - domGeometry.setContentSize(this.domNode, cb); - - // Show/hide the left/right/menu navigation buttons depending on whether or not they - // are needed. - var enable = this._enableBtn(this._contentBox.w); - this._buttons.style("display", enable ? "" : "none"); - - // Position and size the navigation buttons and the tablist - this._leftBtn.layoutAlign = "left"; - this._rightBtn.layoutAlign = "right"; - this._menuBtn.layoutAlign = this.isLeftToRight() ? "right" : "left"; - layoutUtils.layoutChildren(this.domNode, this._contentBox, - [this._menuBtn, this._leftBtn, this._rightBtn, {domNode: this.scrollNode, layoutAlign: "client"}]); - - // set proper scroll so that selected tab is visible - if(this._selectedTab){ - if(this._anim && this._anim.status() == "playing"){ - this._anim.stop(); - } - this.scrollNode.scrollLeft = this._convertToScrollLeft(this._getScrollForSelectedTab()); - } - - // Enable/disabled left right buttons depending on whether or not user can scroll to left or right - this._setButtonClass(this._getScroll()); - - this._postResize = true; - - // Return my size so layoutChildren() can use it. - // Also avoids IE9 layout glitch on browser resize when scroll buttons present - return {h: this._contentBox.h, w: dim.w}; - }, - - _getScroll: function(){ - // summary: - // Returns the current scroll of the tabs where 0 means - // "scrolled all the way to the left" and some positive number, based on # - // of pixels of possible scroll (ex: 1000) means "scrolled all the way to the right" - return (this.isLeftToRight() || has("ie") < 8 || (has("ie") && has("quirks")) || has("webkit")) ? this.scrollNode.scrollLeft : - domStyle.get(this.containerNode, "width") - domStyle.get(this.scrollNode, "width") - + (has("ie") >= 8 ? -1 : 1) * this.scrollNode.scrollLeft; - }, - - _convertToScrollLeft: function(val){ - // summary: - // Given a scroll value where 0 means "scrolled all the way to the left" - // and some positive number, based on # of pixels of possible scroll (ex: 1000) - // means "scrolled all the way to the right", return value to set this.scrollNode.scrollLeft - // to achieve that scroll. - // - // This method is to adjust for RTL funniness in various browsers and versions. - if(this.isLeftToRight() || has("ie") < 8 || (has("ie") && has("quirks")) || has("webkit")){ - return val; - }else{ - var maxScroll = domStyle.get(this.containerNode, "width") - domStyle.get(this.scrollNode, "width"); - return (has("ie") >= 8 ? -1 : 1) * (val - maxScroll); - } - }, - - onSelectChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Smoothly scrolls to a tab when it is selected. - - var tab = this.pane2button[page.id]; - if(!tab || !page){return;} - - var node = tab.domNode; - - // Save the selection - if(node != this._selectedTab){ - this._selectedTab = node; - - // Scroll to the selected tab, except on startup, when scrolling is handled in resize() - if(this._postResize){ - var sl = this._getScroll(); - - if(sl > node.offsetLeft || - sl + domStyle.get(this.scrollNode, "width") < - node.offsetLeft + domStyle.get(node, "width")){ - this.createSmoothScroll().play(); - } - } - } - - this.inherited(arguments); - }, - - _getScrollBounds: function(){ - // summary: - // Returns the minimum and maximum scroll setting to show the leftmost and rightmost - // tabs (respectively) - var children = this.getChildren(), - scrollNodeWidth = domStyle.get(this.scrollNode, "width"), // about 500px - containerWidth = domStyle.get(this.containerNode, "width"), // 50,000px - maxPossibleScroll = containerWidth - scrollNodeWidth, // scrolling until right edge of containerNode visible - tabsWidth = this._getTabsWidth(); - - if(children.length && tabsWidth > scrollNodeWidth){ - // Scrolling should happen - return { - min: this.isLeftToRight() ? 0 : children[children.length-1].domNode.offsetLeft, - max: this.isLeftToRight() ? - (children[children.length-1].domNode.offsetLeft + children[children.length-1].domNode.offsetWidth) - scrollNodeWidth : - maxPossibleScroll - }; - }else{ - // No scrolling needed, all tabs visible, we stay either scrolled to far left or far right (depending on dir) - var onlyScrollPosition = this.isLeftToRight() ? 0 : maxPossibleScroll; - return { - min: onlyScrollPosition, - max: onlyScrollPosition - }; - } - }, - - _getScrollForSelectedTab: function(){ - // summary: - // Returns the scroll value setting so that the selected tab - // will appear in the center - var w = this.scrollNode, - n = this._selectedTab, - scrollNodeWidth = domStyle.get(this.scrollNode, "width"), - scrollBounds = this._getScrollBounds(); - - // TODO: scroll minimal amount (to either right or left) so that - // selected tab is fully visible, and just return if it's already visible? - var pos = (n.offsetLeft + domStyle.get(n, "width")/2) - scrollNodeWidth/2; - pos = Math.min(Math.max(pos, scrollBounds.min), scrollBounds.max); - - // TODO: - // If scrolling close to the left side or right side, scroll - // all the way to the left or right. See this._minScroll. - // (But need to make sure that doesn't scroll the tab out of view...) - return pos; - }, - - createSmoothScroll: function(x){ - // summary: - // Creates a dojo._Animation object that smoothly scrolls the tab list - // either to a fixed horizontal pixel value, or to the selected tab. - // description: - // If an number argument is passed to the function, that horizontal - // pixel position is scrolled to. Otherwise the currently selected - // tab is scrolled to. - // x: Integer? - // An optional pixel value to scroll to, indicating distance from left. - - // Calculate position to scroll to - if(arguments.length > 0){ - // position specified by caller, just make sure it's within bounds - var scrollBounds = this._getScrollBounds(); - x = Math.min(Math.max(x, scrollBounds.min), scrollBounds.max); - }else{ - // scroll to center the current tab - x = this._getScrollForSelectedTab(); - } - - if(this._anim && this._anim.status() == "playing"){ - this._anim.stop(); - } - - var self = this, - w = this.scrollNode, - anim = new fx.Animation({ - beforeBegin: function(){ - if(this.curve){ delete this.curve; } - var oldS = w.scrollLeft, - newS = self._convertToScrollLeft(x); - anim.curve = new fx._Line(oldS, newS); - }, - onAnimate: function(val){ - w.scrollLeft = val; - } - }); - this._anim = anim; - - // Disable/enable left/right buttons according to new scroll position - this._setButtonClass(x); - - return anim; // dojo/_base/fx/Animation - }, - - _getBtnNode: function(/*Event*/ e){ - // summary: - // Gets a button DOM node from a mouse click event. - // e: - // The mouse click event. - var n = e.target; - while(n && !domClass.contains(n, "tabStripButton")){ - n = n.parentNode; - } - return n; - }, - - doSlideRight: function(/*Event*/ e){ - // summary: - // Scrolls the menu to the right. - // e: - // The mouse click event. - this.doSlide(1, this._getBtnNode(e)); - }, - - doSlideLeft: function(/*Event*/ e){ - // summary: - // Scrolls the menu to the left. - // e: - // The mouse click event. - this.doSlide(-1,this._getBtnNode(e)); - }, - - doSlide: function(/*Number*/ direction, /*DomNode*/ node){ - // summary: - // Scrolls the tab list to the left or right by 75% of the widget width. - // direction: - // If the direction is 1, the widget scrolls to the right, if it is -1, - // it scrolls to the left. - - if(node && domClass.contains(node, "dijitTabDisabled")){return;} - - var sWidth = domStyle.get(this.scrollNode, "width"); - var d = (sWidth * 0.75) * direction; - - var to = this._getScroll() + d; - - this._setButtonClass(to); - - this.createSmoothScroll(to).play(); - }, - - _setButtonClass: function(/*Number*/ scroll){ - // summary: - // Disables the left scroll button if the tabs are scrolled all the way to the left, - // or the right scroll button in the opposite case. - // scroll: Integer - // amount of horizontal scroll - - var scrollBounds = this._getScrollBounds(); - this._leftBtn.set("disabled", scroll <= scrollBounds.min); - this._rightBtn.set("disabled", scroll >= scrollBounds.max); - } -}); - - -var ScrollingTabControllerButtonMixin = declare("dijit.layout._ScrollingTabControllerButtonMixin", null, { - baseClass: "dijitTab tabStripButton", - - templateString: buttonTemplate, - - // Override inherited tabIndex: 0 from dijit/form/Button, because user shouldn't be - // able to tab to the left/right/menu buttons - tabIndex: "", - - // Similarly, override FormWidget.isFocusable() because clicking a button shouldn't focus it - // either (this override avoids focus() call in FormWidget.js) - isFocusable: function(){ return false; } -}); - -// Class used in template -declare("dijit.layout._ScrollingTabControllerButton", - [Button, ScrollingTabControllerButtonMixin]); - -// Class used in template -declare( - "dijit.layout._ScrollingTabControllerMenuButton", - [Button, _HasDropDown, ScrollingTabControllerButtonMixin], -{ - // id of the TabContainer itself - containerId: "", - - // -1 so user can't tab into the button, but so that button can still be focused programatically. - // Because need to move focus to the button (or somewhere) before the menu is hidden or IE6 will crash. - tabIndex: "-1", - - isLoaded: function(){ - // recreate menu every time, in case the TabContainer's list of children (or their icons/labels) have changed - return false; - }, - - loadDropDown: function(callback){ - this.dropDown = new Menu({ - id: this.containerId + "_menu", - ownerDocument: this.ownerDocument, - dir: this.dir, - lang: this.lang, - textDir: this.textDir - }); - var container = registry.byId(this.containerId); - array.forEach(container.getChildren(), function(page){ - var menuItem = new MenuItem({ - id: page.id + "_stcMi", - label: page.title, - iconClass: page.iconClass, - disabled: page.disabled, - ownerDocument: this.ownerDocument, - dir: page.dir, - lang: page.lang, - textDir: page.textDir, - onClick: function(){ - container.selectChild(page); - } - }); - this.dropDown.addChild(menuItem); - }, this); - callback(); - }, - - closeDropDown: function(/*Boolean*/ focus){ - this.inherited(arguments); - if(this.dropDown){ - this.dropDown.destroyRecursive(); - delete this.dropDown; - } - } -}); - -return ScrollingTabController; -}); - -}, -'url:dijit/form/templates/ComboButton.html':"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:_onClick,onkeypress:_onButtonKeyPress\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeypress:_onArrowKeyPress\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">▼</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\" role=\"presentation\"\n\t\t/></td></tr></tbody\n></table>\n", -'dijit/DialogUnderlay':function(){ -define("dijit/DialogUnderlay", [ - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/window", // winUtils.getBox - "./_Widget", - "./_TemplatedMixin", - "./BackgroundIframe" -], function(declare, domAttr, winUtils, _Widget, _TemplatedMixin, BackgroundIframe){ - - // module: - // dijit/DialogUnderlay - - return declare("dijit.DialogUnderlay", [_Widget, _TemplatedMixin], { - // summary: - // The component that blocks the screen behind a `dijit.Dialog` - // - // description: - // A component used to block input behind a `dijit.Dialog`. Only a single - // instance of this widget is created by `dijit.Dialog`, and saved as - // a reference to be shared between all Dialogs as `dijit._underlay` - // - // The underlay itself can be styled based on and id: - // | #myDialog_underlay { background-color:red; } - // - // In the case of `dijit.Dialog`, this id is based on the id of the Dialog, - // suffixed with _underlay. - - // Template has two divs; outer div is used for fade-in/fade-out, and also to hold background iframe. - // Inner div has opacity specified in CSS file. - templateString: "<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' data-dojo-attach-point='node'></div></div>", - - // Parameters on creation or updatable later - - // dialogId: String - // Id of the dialog.... DialogUnderlay's id is based on this id - dialogId: "", - - // class: String - // This class name is used on the DialogUnderlay node, in addition to dijitDialogUnderlay - "class": "", - - _setDialogIdAttr: function(id){ - domAttr.set(this.node, "id", id + "_underlay"); - this._set("dialogId", id); - }, - - _setClassAttr: function(clazz){ - this.node.className = "dijitDialogUnderlay " + clazz; - this._set("class", clazz); - }, - - postCreate: function(){ - // summary: - // Append the underlay to the body - this.ownerDocumentBody.appendChild(this.domNode); - }, - - layout: function(){ - // summary: - // Sets the background to the size of the viewport - // - // description: - // Sets the background to the size of the viewport (rather than the size - // of the document) since we need to cover the whole browser window, even - // if the document is only a few lines long. - // tags: - // private - - var is = this.node.style, - os = this.domNode.style; - - // hide the background temporarily, so that the background itself isn't - // causing scrollbars to appear (might happen when user shrinks browser - // window and then we are called to resize) - os.display = "none"; - - // then resize and show - var viewport = winUtils.getBox(this.ownerDocument); - os.top = viewport.t + "px"; - os.left = viewport.l + "px"; - is.width = viewport.w + "px"; - is.height = viewport.h + "px"; - os.display = "block"; - }, - - show: function(){ - // summary: - // Show the dialog underlay - this.domNode.style.display = "block"; - this.layout(); - this.bgIframe = new BackgroundIframe(this.domNode); - }, - - hide: function(){ - // summary: - // Hides the dialog underlay - this.bgIframe.destroy(); - delete this.bgIframe; - this.domNode.style.display = "none"; - } - }); -}); - -}, -'dijit/place':function(){ -define("dijit/place", [ - "dojo/_base/array", // array.forEach array.map array.some - "dojo/dom-geometry", // domGeometry.position - "dojo/dom-style", // domStyle.getComputedStyle - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/window", // win.body - "dojo/window", // winUtils.getBox - "./main" // dijit (defining dijit.place to match API doc) -], function(array, domGeometry, domStyle, kernel, win, winUtils, dijit){ - - // module: - // dijit/place - - - function _place(/*DomNode*/ node, choices, layoutNode, aroundNodeCoords){ - // summary: - // Given a list of spots to put node, put it at the first spot where it fits, - // of if it doesn't fit anywhere then the place with the least overflow - // choices: Array - // Array of elements like: {corner: 'TL', pos: {x: 10, y: 20} } - // Above example says to put the top-left corner of the node at (10,20) - // layoutNode: Function(node, aroundNodeCorner, nodeCorner, size) - // for things like tooltip, they are displayed differently (and have different dimensions) - // based on their orientation relative to the parent. This adjusts the popup based on orientation. - // It also passes in the available size for the popup, which is useful for tooltips to - // tell them that their width is limited to a certain amount. layoutNode() may return a value expressing - // how much the popup had to be modified to fit into the available space. This is used to determine - // what the best placement is. - // aroundNodeCoords: Object - // Size of aroundNode, ex: {w: 200, h: 50} - - // get {x: 10, y: 10, w: 100, h:100} type obj representing position of - // viewport over document - var view = winUtils.getBox(node.ownerDocument); - - // This won't work if the node is inside a <div style="position: relative">, - // so reattach it to win.doc.body. (Otherwise, the positioning will be wrong - // and also it might get cutoff) - if(!node.parentNode || String(node.parentNode.tagName).toLowerCase() != "body"){ - win.body(node.ownerDocument).appendChild(node); - } - - var best = null; - array.some(choices, function(choice){ - var corner = choice.corner; - var pos = choice.pos; - var overflow = 0; - - // calculate amount of space available given specified position of node - var spaceAvailable = { - w: { - 'L': view.l + view.w - pos.x, - 'R': pos.x - view.l, - 'M': view.w - }[corner.charAt(1)], - h: { - 'T': view.t + view.h - pos.y, - 'B': pos.y - view.t, - 'M': view.h - }[corner.charAt(0)] - }; - - // Clear left/right position settings set earlier so they don't interfere with calculations, - // specifically when layoutNode() (a.k.a. Tooltip.orient()) measures natural width of Tooltip - var s = node.style; - s.left = s.right = "auto"; - - // configure node to be displayed in given position relative to button - // (need to do this in order to get an accurate size for the node, because - // a tooltip's size changes based on position, due to triangle) - if(layoutNode){ - var res = layoutNode(node, choice.aroundCorner, corner, spaceAvailable, aroundNodeCoords); - overflow = typeof res == "undefined" ? 0 : res; - } - - // get node's size - var style = node.style; - var oldDisplay = style.display; - var oldVis = style.visibility; - if(style.display == "none"){ - style.visibility = "hidden"; - style.display = ""; - } - var bb = domGeometry.position(node); - style.display = oldDisplay; - style.visibility = oldVis; - - // coordinates and size of node with specified corner placed at pos, - // and clipped by viewport - var - startXpos = { - 'L': pos.x, - 'R': pos.x - bb.w, - 'M': Math.max(view.l, Math.min(view.l + view.w, pos.x + (bb.w >> 1)) - bb.w) // M orientation is more flexible - }[corner.charAt(1)], - startYpos = { - 'T': pos.y, - 'B': pos.y - bb.h, - 'M': Math.max(view.t, Math.min(view.t + view.h, pos.y + (bb.h >> 1)) - bb.h) - }[corner.charAt(0)], - startX = Math.max(view.l, startXpos), - startY = Math.max(view.t, startYpos), - endX = Math.min(view.l + view.w, startXpos + bb.w), - endY = Math.min(view.t + view.h, startYpos + bb.h), - width = endX - startX, - height = endY - startY; - - overflow += (bb.w - width) + (bb.h - height); - - if(best == null || overflow < best.overflow){ - best = { - corner: corner, - aroundCorner: choice.aroundCorner, - x: startX, - y: startY, - w: width, - h: height, - overflow: overflow, - spaceAvailable: spaceAvailable - }; - } - - return !overflow; - }); - - // In case the best position is not the last one we checked, need to call - // layoutNode() again. - if(best.overflow && layoutNode){ - layoutNode(node, best.aroundCorner, best.corner, best.spaceAvailable, aroundNodeCoords); - } - - // And then position the node. Do this last, after the layoutNode() above - // has sized the node, due to browser quirks when the viewport is scrolled - // (specifically that a Tooltip will shrink to fit as though the window was - // scrolled to the left). - // - // In RTL mode, set style.right rather than style.left so in the common case, - // window resizes move the popup along with the aroundNode. - var l = domGeometry.isBodyLtr(node.ownerDocument), - s = node.style; - s.top = best.y + "px"; - s[l ? "left" : "right"] = (l ? best.x : view.w - best.x - best.w) + "px"; - s[l ? "right" : "left"] = "auto"; // needed for FF or else tooltip goes to far left - - return best; - } - - var place = { - // summary: - // Code to place a DOMNode relative to another DOMNode. - // Load using require(["dijit/place"], function(place){ ... }). - - at: function(node, pos, corners, padding){ - // summary: - // Positions one of the node's corners at specified position - // such that node is fully visible in viewport. - // description: - // NOTE: node is assumed to be absolutely or relatively positioned. - // node: DOMNode - // The node to position - // pos: dijit/place.__Position - // Object like {x: 10, y: 20} - // corners: String[] - // Array of Strings representing order to try corners in, like ["TR", "BL"]. - // Possible values are: - // - // - "BL" - bottom left - // - "BR" - bottom right - // - "TL" - top left - // - "TR" - top right - // padding: dijit/place.__Position? - // optional param to set padding, to put some buffer around the element you want to position. - // example: - // Try to place node's top right corner at (10,20). - // If that makes node go (partially) off screen, then try placing - // bottom left corner at (10,20). - // | place(node, {x: 10, y: 20}, ["TR", "BL"]) - var choices = array.map(corners, function(corner){ - var c = { corner: corner, pos: {x:pos.x,y:pos.y} }; - if(padding){ - c.pos.x += corner.charAt(1) == 'L' ? padding.x : -padding.x; - c.pos.y += corner.charAt(0) == 'T' ? padding.y : -padding.y; - } - return c; - }); - - return _place(node, choices); - }, - - around: function( - /*DomNode*/ node, - /*DomNode|dijit/place.__Rectangle*/ anchor, - /*String[]*/ positions, - /*Boolean*/ leftToRight, - /*Function?*/ layoutNode){ - - // summary: - // Position node adjacent or kitty-corner to anchor - // such that it's fully visible in viewport. - // description: - // Place node such that corner of node touches a corner of - // aroundNode, and that node is fully visible. - // anchor: - // Either a DOMNode or a rectangle (object with x, y, width, height). - // positions: - // Ordered list of positions to try matching up. - // - // - before: places drop down to the left of the anchor node/widget, or to the right in the case - // of RTL scripts like Hebrew and Arabic; aligns either the top of the drop down - // with the top of the anchor, or the bottom of the drop down with bottom of the anchor. - // - after: places drop down to the right of the anchor node/widget, or to the left in the case - // of RTL scripts like Hebrew and Arabic; aligns either the top of the drop down - // with the top of the anchor, or the bottom of the drop down with bottom of the anchor. - // - before-centered: centers drop down to the left of the anchor node/widget, or to the right - // in the case of RTL scripts like Hebrew and Arabic - // - after-centered: centers drop down to the right of the anchor node/widget, or to the left - // in the case of RTL scripts like Hebrew and Arabic - // - above-centered: drop down is centered above anchor node - // - above: drop down goes above anchor node, left sides aligned - // - above-alt: drop down goes above anchor node, right sides aligned - // - below-centered: drop down is centered above anchor node - // - below: drop down goes below anchor node - // - below-alt: drop down goes below anchor node, right sides aligned - // layoutNode: Function(node, aroundNodeCorner, nodeCorner) - // For things like tooltip, they are displayed differently (and have different dimensions) - // based on their orientation relative to the parent. This adjusts the popup based on orientation. - // leftToRight: - // True if widget is LTR, false if widget is RTL. Affects the behavior of "above" and "below" - // positions slightly. - // example: - // | placeAroundNode(node, aroundNode, {'BL':'TL', 'TR':'BR'}); - // This will try to position node such that node's top-left corner is at the same position - // as the bottom left corner of the aroundNode (ie, put node below - // aroundNode, with left edges aligned). If that fails it will try to put - // the bottom-right corner of node where the top right corner of aroundNode is - // (ie, put node above aroundNode, with right edges aligned) - // - - // if around is a DOMNode (or DOMNode id), convert to coordinates - var aroundNodePos = (typeof anchor == "string" || "offsetWidth" in anchor) - ? domGeometry.position(anchor, true) - : anchor; - - // Compute position and size of visible part of anchor (it may be partially hidden by ancestor nodes w/scrollbars) - if(anchor.parentNode){ - // ignore nodes between position:relative and position:absolute - var sawPosAbsolute = domStyle.getComputedStyle(anchor).position == "absolute"; - var parent = anchor.parentNode; - while(parent && parent.nodeType == 1 && parent.nodeName != "BODY"){ //ignoring the body will help performance - var parentPos = domGeometry.position(parent, true), - pcs = domStyle.getComputedStyle(parent); - if(/relative|absolute/.test(pcs.position)){ - sawPosAbsolute = false; - } - if(!sawPosAbsolute && /hidden|auto|scroll/.test(pcs.overflow)){ - var bottomYCoord = Math.min(aroundNodePos.y + aroundNodePos.h, parentPos.y + parentPos.h); - var rightXCoord = Math.min(aroundNodePos.x + aroundNodePos.w, parentPos.x + parentPos.w); - aroundNodePos.x = Math.max(aroundNodePos.x, parentPos.x); - aroundNodePos.y = Math.max(aroundNodePos.y, parentPos.y); - aroundNodePos.h = bottomYCoord - aroundNodePos.y; - aroundNodePos.w = rightXCoord - aroundNodePos.x; - } - if(pcs.position == "absolute"){ - sawPosAbsolute = true; - } - parent = parent.parentNode; - } - } - - var x = aroundNodePos.x, - y = aroundNodePos.y, - width = "w" in aroundNodePos ? aroundNodePos.w : (aroundNodePos.w = aroundNodePos.width), - height = "h" in aroundNodePos ? aroundNodePos.h : (kernel.deprecated("place.around: dijit/place.__Rectangle: { x:"+x+", y:"+y+", height:"+aroundNodePos.height+", width:"+width+" } has been deprecated. Please use { x:"+x+", y:"+y+", h:"+aroundNodePos.height+", w:"+width+" }", "", "2.0"), aroundNodePos.h = aroundNodePos.height); - - // Convert positions arguments into choices argument for _place() - var choices = []; - function push(aroundCorner, corner){ - choices.push({ - aroundCorner: aroundCorner, - corner: corner, - pos: { - x: { - 'L': x, - 'R': x + width, - 'M': x + (width >> 1) - }[aroundCorner.charAt(1)], - y: { - 'T': y, - 'B': y + height, - 'M': y + (height >> 1) - }[aroundCorner.charAt(0)] - } - }) - } - array.forEach(positions, function(pos){ - var ltr = leftToRight; - switch(pos){ - case "above-centered": - push("TM", "BM"); - break; - case "below-centered": - push("BM", "TM"); - break; - case "after-centered": - ltr = !ltr; - // fall through - case "before-centered": - push(ltr ? "ML" : "MR", ltr ? "MR" : "ML"); - break; - case "after": - ltr = !ltr; - // fall through - case "before": - push(ltr ? "TL" : "TR", ltr ? "TR" : "TL"); - push(ltr ? "BL" : "BR", ltr ? "BR" : "BL"); - break; - case "below-alt": - ltr = !ltr; - // fall through - case "below": - // first try to align left borders, next try to align right borders (or reverse for RTL mode) - push(ltr ? "BL" : "BR", ltr ? "TL" : "TR"); - push(ltr ? "BR" : "BL", ltr ? "TR" : "TL"); - break; - case "above-alt": - ltr = !ltr; - // fall through - case "above": - // first try to align left borders, next try to align right borders (or reverse for RTL mode) - push(ltr ? "TL" : "TR", ltr ? "BL" : "BR"); - push(ltr ? "TR" : "TL", ltr ? "BR" : "BL"); - break; - default: - // To assist dijit/_base/place, accept arguments of type {aroundCorner: "BL", corner: "TL"}. - // Not meant to be used directly. - push(pos.aroundCorner, pos.corner); - } - }); - - var position = _place(node, choices, layoutNode, {w: width, h: height}); - position.aroundNodePos = aroundNodePos; - - return position; - } - }; - - /*===== - place.__Position = { - // x: Integer - // horizontal coordinate in pixels, relative to document body - // y: Integer - // vertical coordinate in pixels, relative to document body - }; - place.__Rectangle = { - // x: Integer - // horizontal offset in pixels, relative to document body - // y: Integer - // vertical offset in pixels, relative to document body - // w: Integer - // width in pixels. Can also be specified as "width" for backwards-compatibility. - // h: Integer - // height in pixels. Can also be specified as "height" for backwards-compatibility. - }; - =====*/ - - return dijit.place = place; // setting dijit.place for back-compat, remove for 2.0 -}); - -}, -'dijit/_HasDropDown':function(){ -define("dijit/_HasDropDown", [ - "dojo/_base/declare", // declare - "dojo/_base/Deferred", - "dojo/_base/event", // event.stop - "dojo/dom", // dom.isDescendant - "dojo/dom-attr", // domAttr.set - "dojo/dom-class", // domClass.add domClass.contains domClass.remove - "dojo/dom-geometry", // domGeometry.marginBox domGeometry.position - "dojo/dom-style", // domStyle.set - "dojo/has", // has("touch") - "dojo/keys", // keys.DOWN_ARROW keys.ENTER keys.ESCAPE - "dojo/_base/lang", // lang.hitch lang.isFunction - "dojo/on", - "dojo/window", // winUtils.getBox - "./registry", // registry.byNode() - "./focus", - "./popup", - "./_FocusMixin" -], function(declare, Deferred, event,dom, domAttr, domClass, domGeometry, domStyle, has, keys, lang, on, - winUtils, registry, focus, popup, _FocusMixin){ - - - // module: - // dijit/_HasDropDown - - return declare("dijit._HasDropDown", _FocusMixin, { - // summary: - // Mixin for widgets that need drop down ability. - - // _buttonNode: [protected] DomNode - // The button/icon/node to click to display the drop down. - // Can be set via a data-dojo-attach-point assignment. - // If missing, then either focusNode or domNode (if focusNode is also missing) will be used. - _buttonNode: null, - - // _arrowWrapperNode: [protected] DomNode - // Will set CSS class dijitUpArrow, dijitDownArrow, dijitRightArrow etc. on this node depending - // on where the drop down is set to be positioned. - // Can be set via a data-dojo-attach-point assignment. - // If missing, then _buttonNode will be used. - _arrowWrapperNode: null, - - // _popupStateNode: [protected] DomNode - // The node to set the popupActive class on. - // Can be set via a data-dojo-attach-point assignment. - // If missing, then focusNode or _buttonNode (if focusNode is missing) will be used. - _popupStateNode: null, - - // _aroundNode: [protected] DomNode - // The node to display the popup around. - // Can be set via a data-dojo-attach-point assignment. - // If missing, then domNode will be used. - _aroundNode: null, - - // dropDown: [protected] Widget - // The widget to display as a popup. This widget *must* be - // defined before the startup function is called. - dropDown: null, - - // autoWidth: [protected] Boolean - // Set to true to make the drop down at least as wide as this - // widget. Set to false if the drop down should just be its - // default width - autoWidth: true, - - // forceWidth: [protected] Boolean - // Set to true to make the drop down exactly as wide as this - // widget. Overrides autoWidth. - forceWidth: false, - - // maxHeight: [protected] Integer - // The max height for our dropdown. - // Any dropdown taller than this will have scrollbars. - // Set to 0 for no max height, or -1 to limit height to available space in viewport - maxHeight: 0, - - // dropDownPosition: [const] String[] - // This variable controls the position of the drop down. - // It's an array of strings with the following values: - // - // - before: places drop down to the left of the target node/widget, or to the right in - // the case of RTL scripts like Hebrew and Arabic - // - after: places drop down to the right of the target node/widget, or to the left in - // the case of RTL scripts like Hebrew and Arabic - // - above: drop down goes above target node - // - below: drop down goes below target node - // - // The list is positions is tried, in order, until a position is found where the drop down fits - // within the viewport. - // - dropDownPosition: ["below","above"], - - // _stopClickEvents: Boolean - // When set to false, the click events will not be stopped, in - // case you want to use them in your subclass - _stopClickEvents: true, - - _onDropDownMouseDown: function(/*Event*/ e){ - // summary: - // Callback when the user mousedown's on the arrow icon - if(this.disabled || this.readOnly){ return; } - - // Prevent default to stop things like text selection, but don't stop propagation, so that: - // 1. TimeTextBox etc. can focus the <input> on mousedown - // 2. dropDownButtonActive class applied by _CssStateMixin (on button depress) - // 3. user defined onMouseDown handler fires - e.preventDefault(); - - this._docHandler = this.connect(this.ownerDocument, "mouseup", "_onDropDownMouseUp"); - - this.toggleDropDown(); - }, - - _onDropDownMouseUp: function(/*Event?*/ e){ - // summary: - // Callback when the user lifts their mouse after mouse down on the arrow icon. - // If the drop down is a simple menu and the mouse is over the menu, we execute it, otherwise, we focus our - // drop down widget. If the event is missing, then we are not - // a mouseup event. - // - // This is useful for the common mouse movement pattern - // with native browser `<select>` nodes: - // - // 1. mouse down on the select node (probably on the arrow) - // 2. move mouse to a menu item while holding down the mouse button - // 3. mouse up. this selects the menu item as though the user had clicked it. - if(e && this._docHandler){ - this.disconnect(this._docHandler); - } - var dropDown = this.dropDown, overMenu = false; - - if(e && this._opened){ - // This code deals with the corner-case when the drop down covers the original widget, - // because it's so large. In that case mouse-up shouldn't select a value from the menu. - // Find out if our target is somewhere in our dropdown widget, - // but not over our _buttonNode (the clickable node) - var c = domGeometry.position(this._buttonNode, true); - if(!(e.pageX >= c.x && e.pageX <= c.x + c.w) || - !(e.pageY >= c.y && e.pageY <= c.y + c.h)){ - var t = e.target; - while(t && !overMenu){ - if(domClass.contains(t, "dijitPopup")){ - overMenu = true; - }else{ - t = t.parentNode; - } - } - if(overMenu){ - t = e.target; - if(dropDown.onItemClick){ - var menuItem; - while(t && !(menuItem = registry.byNode(t))){ - t = t.parentNode; - } - if(menuItem && menuItem.onClick && menuItem.getParent){ - menuItem.getParent().onItemClick(menuItem, e); - } - } - return; - } - } - } - if(this._opened){ - if(dropDown.focus && dropDown.autoFocus !== false){ - // Focus the dropdown widget - do it on a delay so that we - // don't steal back focus from the dropdown. - this._focusDropDownTimer = this.defer(function(){ - dropDown.focus(); - delete this._focusDropDownTimer; - }); - } - }else{ - // The drop down arrow icon probably can't receive focus, but widget itself should get focus. - // defer() needed to make it work on IE (test DateTextBox) - this.defer("focus"); - } - - if(has("touch")){ - this._justGotMouseUp = true; - this.defer(function(){ - this._justGotMouseUp = false; - }); - } - }, - - _onDropDownClick: function(/*Event*/ e){ - if(has("touch") && !this._justGotMouseUp){ - // If there was no preceding mousedown/mouseup (like on android), then simulate them to - // toggle the drop down. - // - // The if(has("touch") is necessary since IE and desktop safari get spurious onclick events - // when there are nested tables (specifically, clicking on a table that holds a dijit/form/Select, - // but not on the Select itself, causes an onclick event on the Select) - this._onDropDownMouseDown(e); - this._onDropDownMouseUp(e); - } - - // The drop down was already opened on mousedown/keydown; just need to call stopEvent(). - if(this._stopClickEvents){ - event.stop(e); - } - }, - - buildRendering: function(){ - this.inherited(arguments); - - this._buttonNode = this._buttonNode || this.focusNode || this.domNode; - this._popupStateNode = this._popupStateNode || this.focusNode || this._buttonNode; - - // Add a class to the "dijitDownArrowButton" type class to _buttonNode so theme can set direction of arrow - // based on where drop down will normally appear - var defaultPos = { - "after" : this.isLeftToRight() ? "Right" : "Left", - "before" : this.isLeftToRight() ? "Left" : "Right", - "above" : "Up", - "below" : "Down", - "left" : "Left", - "right" : "Right" - }[this.dropDownPosition[0]] || this.dropDownPosition[0] || "Down"; - domClass.add(this._arrowWrapperNode || this._buttonNode, "dijit" + defaultPos + "ArrowButton"); - }, - - postCreate: function(){ - // summary: - // set up nodes and connect our mouse and keyboard events - - this.inherited(arguments); - - var keyboardEventNode = this.focusNode || this.domNode; - this.own( - on(this._buttonNode, "mousedown", lang.hitch(this, "_onDropDownMouseDown")), - on(this._buttonNode, "click", lang.hitch(this, "_onDropDownClick")), - on(keyboardEventNode, "keydown", lang.hitch(this, "_onKey")), - on(keyboardEventNode, "keyup", lang.hitch(this, "_onKeyUp")) - ); - }, - - destroy: function(){ - if(this.dropDown){ - // Destroy the drop down, unless it's already been destroyed. This can happen because - // the drop down is a direct child of <body> even though it's logically my child. - if(!this.dropDown._destroyed){ - this.dropDown.destroyRecursive(); - } - delete this.dropDown; - } - this.inherited(arguments); - }, - - _onKey: function(/*Event*/ e){ - // summary: - // Callback when the user presses a key while focused on the button node - - if(this.disabled || this.readOnly){ return; } - var d = this.dropDown, target = e.target; - if(d && this._opened && d.handleKey){ - if(d.handleKey(e) === false){ - /* false return code means that the drop down handled the key */ - event.stop(e); - return; - } - } - if(d && this._opened && e.keyCode == keys.ESCAPE){ - this.closeDropDown(); - event.stop(e); - }else if(!this._opened && - (e.keyCode == keys.DOWN_ARROW || - ( (e.keyCode == keys.ENTER || e.keyCode == keys.SPACE) && - //ignore enter and space if the event is for a text input - ((target.tagName || "").toLowerCase() !== 'input' || - (target.type && target.type.toLowerCase() !== 'text'))))){ - // Toggle the drop down, but wait until keyup so that the drop down doesn't - // get a stray keyup event, or in the case of key-repeat (because user held - // down key for too long), stray keydown events - this._toggleOnKeyUp = true; - event.stop(e); - } - }, - - _onKeyUp: function(){ - if(this._toggleOnKeyUp){ - delete this._toggleOnKeyUp; - this.toggleDropDown(); - var d = this.dropDown; // drop down may not exist until toggleDropDown() call - if(d && d.focus){ - this.defer(lang.hitch(d, "focus"), 1); - } - } - }, - - _onBlur: function(){ - // summary: - // Called magically when focus has shifted away from this widget and it's dropdown - - // Don't focus on button if the user has explicitly focused on something else (happens - // when user clicks another control causing the current popup to close).. - // But if focus is inside of the drop down then reset focus to me, because IE doesn't like - // it when you display:none a node with focus. - var focusMe = focus.curNode && this.dropDown && dom.isDescendant(focus.curNode, this.dropDown.domNode); - - this.closeDropDown(focusMe); - - this.inherited(arguments); - }, - - isLoaded: function(){ - // summary: - // Returns true if the dropdown exists and it's data is loaded. This can - // be overridden in order to force a call to loadDropDown(). - // tags: - // protected - - return true; - }, - - loadDropDown: function(/*Function*/ loadCallback){ - // summary: - // Creates the drop down if it doesn't exist, loads the data - // if there's an href and it hasn't been loaded yet, and then calls - // the given callback. - // tags: - // protected - - // TODO: for 2.0, change API to return a Deferred, instead of calling loadCallback? - loadCallback(); - }, - - loadAndOpenDropDown: function(){ - // summary: - // Creates the drop down if it doesn't exist, loads the data - // if there's an href and it hasn't been loaded yet, and - // then opens the drop down. This is basically a callback when the - // user presses the down arrow button to open the drop down. - // returns: Deferred - // Deferred for the drop down widget that - // fires when drop down is created and loaded - // tags: - // protected - var d = new Deferred(), - afterLoad = lang.hitch(this, function(){ - this.openDropDown(); - d.resolve(this.dropDown); - }); - if(!this.isLoaded()){ - this.loadDropDown(afterLoad); - }else{ - afterLoad(); - } - return d; - }, - - toggleDropDown: function(){ - // summary: - // Callback when the user presses the down arrow button or presses - // the down arrow key to open/close the drop down. - // Toggle the drop-down widget; if it is up, close it, if not, open it - // tags: - // protected - - if(this.disabled || this.readOnly){ return; } - if(!this._opened){ - this.loadAndOpenDropDown(); - }else{ - this.closeDropDown(); - } - }, - - openDropDown: function(){ - // summary: - // Opens the dropdown for this widget. To be called only when this.dropDown - // has been created and is ready to display (ie, it's data is loaded). - // returns: - // return value of dijit/popup.open() - // tags: - // protected - - var dropDown = this.dropDown, - ddNode = dropDown.domNode, - aroundNode = this._aroundNode || this.domNode, - self = this; - - // Prepare our popup's height and honor maxHeight if it exists. - - // TODO: isn't maxHeight dependent on the return value from dijit/popup.open(), - // ie, dependent on how much space is available (BK) - - if(!this._preparedNode){ - this._preparedNode = true; - // Check if we have explicitly set width and height on the dropdown widget dom node - if(ddNode.style.width){ - this._explicitDDWidth = true; - } - if(ddNode.style.height){ - this._explicitDDHeight = true; - } - } - - // Code for resizing dropdown (height limitation, or increasing width to match my width) - if(this.maxHeight || this.forceWidth || this.autoWidth){ - var myStyle = { - display: "", - visibility: "hidden" - }; - if(!this._explicitDDWidth){ - myStyle.width = ""; - } - if(!this._explicitDDHeight){ - myStyle.height = ""; - } - domStyle.set(ddNode, myStyle); - - // Figure out maximum height allowed (if there is a height restriction) - var maxHeight = this.maxHeight; - if(maxHeight == -1){ - // limit height to space available in viewport either above or below my domNode - // (whichever side has more room) - var viewport = winUtils.getBox(this.ownerDocument), - position = domGeometry.position(aroundNode, false); - maxHeight = Math.floor(Math.max(position.y, viewport.h - (position.y + position.h))); - } - - // Attach dropDown to DOM and make make visibility:hidden rather than display:none - // so we call startup() and also get the size - popup.moveOffScreen(dropDown); - - if(dropDown.startup && !dropDown._started){ - dropDown.startup(); // this has to be done after being added to the DOM - } - // Get size of drop down, and determine if vertical scroll bar needed. If no scroll bar needed, - // use overflow:visible rather than overflow:hidden so off-by-one errors don't hide drop down border. - var mb = domGeometry.getMarginSize(ddNode); - var overHeight = (maxHeight && mb.h > maxHeight); - domStyle.set(ddNode, { - overflowX: "visible", - overflowY: overHeight ? "auto" : "visible" - }); - if(overHeight){ - mb.h = maxHeight; - if("w" in mb){ - mb.w += 16; // room for vertical scrollbar - } - }else{ - delete mb.h; - } - - // Adjust dropdown width to match or be larger than my width - if(this.forceWidth){ - mb.w = aroundNode.offsetWidth; - }else if(this.autoWidth){ - mb.w = Math.max(mb.w, aroundNode.offsetWidth); - }else{ - delete mb.w; - } - - // And finally, resize the dropdown to calculated height and width - if(lang.isFunction(dropDown.resize)){ - dropDown.resize(mb); - }else{ - domGeometry.setMarginBox(ddNode, mb); - } - } - - var retVal = popup.open({ - parent: this, - popup: dropDown, - around: aroundNode, - orient: this.dropDownPosition, - onExecute: function(){ - self.closeDropDown(true); - }, - onCancel: function(){ - self.closeDropDown(true); - }, - onClose: function(){ - domAttr.set(self._popupStateNode, "popupActive", false); - domClass.remove(self._popupStateNode, "dijitHasDropDownOpen"); - self._set("_opened", false); // use set() because _CssStateMixin is watching - } - }); - domAttr.set(this._popupStateNode, "popupActive", "true"); - domClass.add(this._popupStateNode, "dijitHasDropDownOpen"); - this._set("_opened", true); // use set() because _CssStateMixin is watching - this.domNode.setAttribute("aria-expanded", "true"); - - return retVal; - }, - - closeDropDown: function(/*Boolean*/ focus){ - // summary: - // Closes the drop down on this widget - // focus: - // If true, refocuses the button widget - // tags: - // protected - - if(this._focusDropDownTimer){ - this._focusDropDownTimer.remove(); - delete this._focusDropDownTimer; - } - if(this._opened){ - this.domNode.setAttribute("aria-expanded", "false"); - if(focus){ this.focus(); } - popup.close(this.dropDown); - this._opened = false; - } - } - - }); -}); - -}, -'dijit/tree/TreeStoreModel':function(){ -define("dijit/tree/TreeStoreModel", [ - "dojo/_base/array", // array.filter array.forEach array.indexOf array.some - "dojo/aspect", // aspect.after - "dojo/_base/declare", // declare - "dojo/_base/lang" // lang.hitch -], function(array, aspect, declare, lang){ - - // module: - // dijit/tree/TreeStoreModel - - return declare("dijit.tree.TreeStoreModel", null, { - // summary: - // Implements dijit/Tree/model connecting to a dojo.data store with a single - // root item. Any methods passed into the constructor will override - // the ones defined here. - - // store: dojo/data/api/Read - // Underlying store - store: null, - - // childrenAttrs: String[] - // One or more attribute names (attributes in the dojo.data item) that specify that item's children - childrenAttrs: ["children"], - - // newItemIdAttr: String - // Name of attribute in the Object passed to newItem() that specifies the id. - // - // If newItemIdAttr is set then it's used when newItem() is called to see if an - // item with the same id already exists, and if so just links to the old item - // (so that the old item ends up with two parents). - // - // Setting this to null or "" will make every drop create a new item. - newItemIdAttr: "id", - - // labelAttr: String - // If specified, get label for tree node from this attribute, rather - // than by calling store.getLabel() - labelAttr: "", - - // root: [readonly] dojo/data/Item - // Pointer to the root item (read only, not a parameter) - root: null, - - // query: anything - // Specifies datastore query to return the root item for the tree. - // Must only return a single item. Alternately can just pass in pointer - // to root item. - // example: - // | {id:'ROOT'} - query: null, - - // deferItemLoadingUntilExpand: Boolean - // Setting this to true will cause the TreeStoreModel to defer calling loadItem on nodes - // until they are expanded. This allows for lazying loading where only one - // loadItem (and generally one network call, consequently) per expansion - // (rather than one for each child). - // This relies on partial loading of the children items; each children item of a - // fully loaded item should contain the label and info about having children. - deferItemLoadingUntilExpand: false, - - constructor: function(/* Object */ args){ - // summary: - // Passed the arguments listed above (store, etc) - // tags: - // private - - lang.mixin(this, args); - - this.connects = []; - - var store = this.store; - if(!store.getFeatures()['dojo.data.api.Identity']){ - throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity"); - } - - // if the store supports Notification, subscribe to the notification events - if(store.getFeatures()['dojo.data.api.Notification']){ - this.connects = this.connects.concat([ - aspect.after(store, "onNew", lang.hitch(this, "onNewItem"), true), - aspect.after(store, "onDelete", lang.hitch(this, "onDeleteItem"), true), - aspect.after(store, "onSet", lang.hitch(this, "onSetItem"), true) - ]); - } - }, - - destroy: function(){ - var h; - while(h = this.connects.pop()){ h.remove(); } - // TODO: should cancel any in-progress processing of getRoot(), getChildren() - }, - - // ======================================================================= - // Methods for traversing hierarchy - - getRoot: function(onItem, onError){ - // summary: - // Calls onItem with the root item for the tree, possibly a fabricated item. - // Calls onError on error. - if(this.root){ - onItem(this.root); - }else{ - this.store.fetch({ - query: this.query, - onComplete: lang.hitch(this, function(items){ - if(items.length != 1){ - throw new Error("dijit.tree.TreeStoreModel: root query returned " + items.length + - " items, but must return exactly one"); - } - this.root = items[0]; - onItem(this.root); - }), - onError: onError - }); - } - }, - - mayHaveChildren: function(/*dojo/data/Item*/ item){ - // summary: - // Tells if an item has or may have children. Implementing logic here - // avoids showing +/- expando icon for nodes that we know don't have children. - // (For efficiency reasons we may not want to check if an element actually - // has children until user clicks the expando node) - return array.some(this.childrenAttrs, function(attr){ - return this.store.hasAttribute(item, attr); - }, this); - }, - - getChildren: function(/*dojo/data/Item*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){ - // summary: - // Calls onComplete() with array of child items of given parent item, all loaded. - - var store = this.store; - if(!store.isItemLoaded(parentItem)){ - // The parent is not loaded yet, we must be in deferItemLoadingUntilExpand - // mode, so we will load it and just return the children (without loading each - // child item) - var getChildren = lang.hitch(this, arguments.callee); - store.loadItem({ - item: parentItem, - onItem: function(parentItem){ - getChildren(parentItem, onComplete, onError); - }, - onError: onError - }); - return; - } - // get children of specified item - var childItems = []; - for(var i=0; i<this.childrenAttrs.length; i++){ - var vals = store.getValues(parentItem, this.childrenAttrs[i]); - childItems = childItems.concat(vals); - } - - // count how many items need to be loaded - var _waitCount = 0; - if(!this.deferItemLoadingUntilExpand){ - array.forEach(childItems, function(item){ if(!store.isItemLoaded(item)){ _waitCount++; } }); - } - - if(_waitCount == 0){ - // all items are already loaded (or we aren't loading them). proceed... - onComplete(childItems); - }else{ - // still waiting for some or all of the items to load - array.forEach(childItems, function(item, idx){ - if(!store.isItemLoaded(item)){ - store.loadItem({ - item: item, - onItem: function(item){ - childItems[idx] = item; - if(--_waitCount == 0){ - // all nodes have been loaded, send them to the tree - onComplete(childItems); - } - }, - onError: onError - }); - } - }); - } - }, - - // ======================================================================= - // Inspecting items - - isItem: function(/* anything */ something){ - return this.store.isItem(something); // Boolean - }, - - fetchItemByIdentity: function(/* object */ keywordArgs){ - this.store.fetchItemByIdentity(keywordArgs); - }, - - getIdentity: function(/* item */ item){ - return this.store.getIdentity(item); // Object - }, - - getLabel: function(/*dojo/data/Item*/ item){ - // summary: - // Get the label for an item - if(this.labelAttr){ - return this.store.getValue(item,this.labelAttr); // String - }else{ - return this.store.getLabel(item); // String - } - }, - - // ======================================================================= - // Write interface - - newItem: function(/* dijit/tree/dndSource.__Item */ args, /*dojo/data/api/Item*/ parent, /*int?*/ insertIndex){ - // summary: - // Creates a new item. See `dojo/data/api/Write` for details on args. - // Used in drag & drop when item from external source dropped onto tree. - // description: - // Developers will need to override this method if new items get added - // to parents with multiple children attributes, in order to define which - // children attribute points to the new item. - - var pInfo = {parent: parent, attribute: this.childrenAttrs[0]}, LnewItem; - - if(this.newItemIdAttr && args[this.newItemIdAttr]){ - // Maybe there's already a corresponding item in the store; if so, reuse it. - this.fetchItemByIdentity({identity: args[this.newItemIdAttr], scope: this, onItem: function(item){ - if(item){ - // There's already a matching item in store, use it - this.pasteItem(item, null, parent, true, insertIndex); - }else{ - // Create new item in the tree, based on the drag source. - LnewItem=this.store.newItem(args, pInfo); - if(LnewItem && (insertIndex!=undefined)){ - // Move new item to desired position - this.pasteItem(LnewItem, parent, parent, false, insertIndex); - } - } - }}); - }else{ - // [as far as we know] there is no id so we must assume this is a new item - LnewItem=this.store.newItem(args, pInfo); - if(LnewItem && (insertIndex!=undefined)){ - // Move new item to desired position - this.pasteItem(LnewItem, parent, parent, false, insertIndex); - } - } - }, - - pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){ - // summary: - // Move or copy an item from one parent item to another. - // Used in drag & drop - var store = this.store, - parentAttr = this.childrenAttrs[0]; // name of "children" attr in parent item - - // remove child from source item, and record the attribute that child occurred in - if(oldParentItem){ - array.forEach(this.childrenAttrs, function(attr){ - if(store.containsValue(oldParentItem, attr, childItem)){ - if(!bCopy){ - var values = array.filter(store.getValues(oldParentItem, attr), function(x){ - return x != childItem; - }); - store.setValues(oldParentItem, attr, values); - } - parentAttr = attr; - } - }); - } - - // modify target item's children attribute to include this item - if(newParentItem){ - if(typeof insertIndex == "number"){ - // call slice() to avoid modifying the original array, confusing the data store - var childItems = store.getValues(newParentItem, parentAttr).slice(); - childItems.splice(insertIndex, 0, childItem); - store.setValues(newParentItem, parentAttr, childItems); - }else{ - store.setValues(newParentItem, parentAttr, - store.getValues(newParentItem, parentAttr).concat(childItem)); - } - } - }, - - // ======================================================================= - // Callbacks - - onChange: function(/*dojo/data/Item*/ /*===== item =====*/){ - // summary: - // Callback whenever an item has changed, so that Tree - // can update the label, icon, etc. Note that changes - // to an item's children or parent(s) will trigger an - // onChildrenChange() so you can ignore those changes here. - // tags: - // callback - }, - - onChildrenChange: function(/*===== parent, newChildrenList =====*/){ - // summary: - // Callback to do notifications about new, updated, or deleted items. - // parent: dojo/data/Item - // newChildrenList: dojo/data/Item[] - // tags: - // callback - }, - - onDelete: function(/*dojo/data/Item*/ /*===== item =====*/){ - // summary: - // Callback when an item has been deleted. - // description: - // Note that there will also be an onChildrenChange() callback for the parent - // of this item. - // tags: - // callback - }, - - // ======================================================================= - // Events from data store - - onNewItem: function(/* dojo/data/Item */ item, /* Object */ parentInfo){ - // summary: - // Handler for when new items appear in the store, either from a drop operation - // or some other way. Updates the tree view (if necessary). - // description: - // If the new item is a child of an existing item, - // calls onChildrenChange() with the new list of children - // for that existing item. - // - // tags: - // extension - - // We only care about the new item if it has a parent that corresponds to a TreeNode - // we are currently displaying - if(!parentInfo){ - return; - } - - // Call onChildrenChange() on parent (ie, existing) item with new list of children - // In the common case, the new list of children is simply parentInfo.newValue or - // [ parentInfo.newValue ], although if items in the store has multiple - // child attributes (see `childrenAttr`), then it's a superset of parentInfo.newValue, - // so call getChildren() to be sure to get right answer. - this.getChildren(parentInfo.item, lang.hitch(this, function(children){ - this.onChildrenChange(parentInfo.item, children); - })); - }, - - onDeleteItem: function(/*Object*/ item){ - // summary: - // Handler for delete notifications from underlying store - this.onDelete(item); - }, - - onSetItem: function(item, attribute /*===== , oldValue, newValue =====*/){ - // summary: - // Updates the tree view according to changes in the data store. - // description: - // Handles updates to an item's children by calling onChildrenChange(), and - // other updates to an item by calling onChange(). - // - // See `onNewItem` for more details on handling updates to an item's children. - // item: Item - // attribute: attribute-name-string - // oldValue: Object|Array - // newValue: Object|Array - // tags: - // extension - - if(array.indexOf(this.childrenAttrs, attribute) != -1){ - // item's children list changed - this.getChildren(item, lang.hitch(this, function(children){ - // See comments in onNewItem() about calling getChildren() - this.onChildrenChange(item, children); - })); - }else{ - // item's label/icon/etc. changed. - this.onChange(item); - } - } - }); -}); - -}, -'dijit/_MenuBase':function(){ -define("dijit/_MenuBase", [ - "dojo/_base/array", // array.indexOf - "dojo/_base/declare", // declare - "dojo/dom", // dom.isDescendant domClass.replace - "dojo/dom-attr", - "dojo/dom-class", // domClass.replace - "dojo/_base/lang", // lang.hitch - "dojo/mouse", // mouse.enter, mouse.leave - "dojo/on", - "dojo/window", - "./a11yclick", - "./popup", - "./registry", - "./_Widget", - "./_KeyNavContainer", - "./_TemplatedMixin" -], function(array, declare, dom, domAttr, domClass, lang, mouse, on, winUtils, - a11yclick, pm, registry, _Widget, _KeyNavContainer, _TemplatedMixin){ - - -// module: -// dijit/_MenuBase - -return declare("dijit._MenuBase", - [_Widget, _TemplatedMixin, _KeyNavContainer], -{ - // summary: - // Base class for Menu and MenuBar - - // parentMenu: [readonly] Widget - // pointer to menu that displayed me - parentMenu: null, - - // popupDelay: Integer - // number of milliseconds before hovering (without clicking) causes the popup to automatically open. - popupDelay: 500, - - // autoFocus: Boolean - // A toggle to control whether or not a Menu gets focused when opened as a drop down from a MenuBar - // or DropDownButton/ComboButton. Note though that it always get focused when opened via the keyboard. - autoFocus: false, - - childSelector: function(/*DOMNode*/ node){ - // summary: - // Selector (passed to on.selector()) used to identify MenuItem child widgets, but exclude inert children - // like MenuSeparator. If subclass overrides to a string (ex: "> *"), the subclass must require dojo/query. - // tags: - // protected - - var widget = registry.byNode(node); - return node.parentNode == this.containerNode && widget && widget.focus; - }, - - postCreate: function(){ - var self = this, - matches = typeof this.childSelector == "string" ? this.childSelector : lang.hitch(this, "childSelector"); - this.own( - on(this.containerNode, on.selector(matches, mouse.enter), function(){ - self.onItemHover(registry.byNode(this)); - }), - on(this.containerNode, on.selector(matches, mouse.leave), function(){ - self.onItemUnhover(registry.byNode(this)); - }), - on(this.containerNode, on.selector(matches, a11yclick), function(evt){ - self.onItemClick(registry.byNode(this), evt); - evt.stopPropagation(); - evt.preventDefault(); - }) - ); - this.inherited(arguments); - }, - - onExecute: function(){ - // summary: - // Attach point for notification about when a menu item has been executed. - // This is an internal mechanism used for Menus to signal to their parent to - // close them, because they are about to execute the onClick handler. In - // general developers should not attach to or override this method. - // tags: - // protected - }, - - onCancel: function(/*Boolean*/ /*===== closeAll =====*/){ - // summary: - // Attach point for notification about when the user cancels the current menu - // This is an internal mechanism used for Menus to signal to their parent to - // close them. In general developers should not attach to or override this method. - // tags: - // protected - }, - - _moveToPopup: function(/*Event*/ evt){ - // summary: - // This handles the right arrow key (left arrow key on RTL systems), - // which will either open a submenu, or move to the next item in the - // ancestor MenuBar - // tags: - // private - - if(this.focusedChild && this.focusedChild.popup && !this.focusedChild.disabled){ - this.onItemClick(this.focusedChild, evt); - }else{ - var topMenu = this._getTopMenu(); - if(topMenu && topMenu._isMenuBar){ - topMenu.focusNext(); - } - } - }, - - _onPopupHover: function(/*Event*/ /*===== evt =====*/){ - // summary: - // This handler is called when the mouse moves over the popup. - // tags: - // private - - // if the mouse hovers over a menu popup that is in pending-close state, - // then stop the close operation. - // This can't be done in onItemHover since some popup targets don't have MenuItems (e.g. ColorPicker) - if(this.currentPopup && this.currentPopup._pendingClose_timer){ - var parentMenu = this.currentPopup.parentMenu; - // highlight the parent menu item pointing to this popup - if(parentMenu.focusedChild){ - parentMenu.focusedChild._setSelected(false); - } - parentMenu.focusedChild = this.currentPopup.from_item; - parentMenu.focusedChild._setSelected(true); - // cancel the pending close - this._stopPendingCloseTimer(this.currentPopup); - } - }, - - onItemHover: function(/*MenuItem*/ item){ - // summary: - // Called when cursor is over a MenuItem. - // tags: - // protected - - // Don't do anything unless user has "activated" the menu by: - // 1) clicking it - // 2) opening it from a parent menu (which automatically focuses it) - if(this.isActive){ - this.focusChild(item); - if(this.focusedChild.popup && !this.focusedChild.disabled && !this.hover_timer){ - this.hover_timer = this.defer("_openPopup", this.popupDelay); - } - } - // if the user is mixing mouse and keyboard navigation, - // then the menu may not be active but a menu item has focus, - // but it's not the item that the mouse just hovered over. - // To avoid both keyboard and mouse selections, use the latest. - if(this.focusedChild){ - this.focusChild(item); - } - this._hoveredChild = item; - - item._set("hovering", true); - }, - - _onChildBlur: function(item){ - // summary: - // Called when a child MenuItem becomes inactive because focus - // has been removed from the MenuItem *and* it's descendant menus. - // tags: - // private - this._stopPopupTimer(); - item._setSelected(false); - // Close all popups that are open and descendants of this menu - var itemPopup = item.popup; - if(itemPopup){ - this._stopPendingCloseTimer(itemPopup); - itemPopup._pendingClose_timer = this.defer(function(){ - itemPopup._pendingClose_timer = null; - if(itemPopup.parentMenu){ - itemPopup.parentMenu.currentPopup = null; - } - pm.close(itemPopup); // this calls onClose - }, this.popupDelay); - } - }, - - onItemUnhover: function(/*MenuItem*/ item){ - // summary: - // Callback fires when mouse exits a MenuItem - // tags: - // protected - - if(this.isActive){ - this._stopPopupTimer(); - } - if(this._hoveredChild == item){ this._hoveredChild = null; } - - item._set("hovering", false); - }, - - _stopPopupTimer: function(){ - // summary: - // Cancels the popup timer because the user has stop hovering - // on the MenuItem, etc. - // tags: - // private - if(this.hover_timer){ - this.hover_timer = this.hover_timer.remove(); - } - }, - - _stopPendingCloseTimer: function(/*dijit/_WidgetBase*/ popup){ - // summary: - // Cancels the pending-close timer because the close has been preempted - // tags: - // private - if(popup._pendingClose_timer){ - popup._pendingClose_timer = popup._pendingClose_timer.remove(); - } - }, - - _stopFocusTimer: function(){ - // summary: - // Cancels the pending-focus timer because the menu was closed before focus occured - // tags: - // private - if(this._focus_timer){ - this._focus_timer = this._focus_timer.remove(); - } - }, - - _getTopMenu: function(){ - // summary: - // Returns the top menu in this chain of Menus - // tags: - // private - for(var top=this; top.parentMenu; top=top.parentMenu); - return top; - }, - - onItemClick: function(/*dijit/_WidgetBase*/ item, /*Event*/ evt){ - // summary: - // Handle clicks on an item. - // tags: - // private - - // this can't be done in _onFocus since the _onFocus events occurs asynchronously - if(typeof this.isShowingNow == 'undefined'){ // non-popup menu - this._markActive(); - } - - this.focusChild(item); - - if(item.disabled){ return false; } - - if(item.popup){ - this._openPopup(evt.type == "keypress"); - }else{ - // before calling user defined handler, close hierarchy of menus - // and restore focus to place it was when menu was opened - this.onExecute(); - - // user defined handler for click - item._onClick ? item._onClick(evt) : item.onClick(evt); - } - }, - - _openPopup: function(/*Boolean*/ focus){ - // summary: - // Open the popup to the side of/underneath the current menu item, and optionally focus first item - // tags: - // protected - - this._stopPopupTimer(); - var from_item = this.focusedChild; - if(!from_item){ return; } // the focused child lost focus since the timer was started - var popup = from_item.popup; - if(!popup.isShowingNow){ - if(this.currentPopup){ - this._stopPendingCloseTimer(this.currentPopup); - pm.close(this.currentPopup); - } - popup.parentMenu = this; - popup.from_item = from_item; // helps finding the parent item that should be focused for this popup - var self = this; - pm.open({ - parent: this, - popup: popup, - around: from_item.domNode, - orient: this._orient || ["after", "before"], - onCancel: function(){ // called when the child menu is canceled - // set isActive=false (_closeChild vs _cleanUp) so that subsequent hovering will NOT open child menus - // which seems aligned with the UX of most applications (e.g. notepad, wordpad, paint shop pro) - self.focusChild(from_item); // put focus back on my node - self._cleanUp(); // close the submenu (be sure this is done _after_ focus is moved) - from_item._setSelected(true); // oops, _cleanUp() deselected the item - self.focusedChild = from_item; // and unset focusedChild - }, - onExecute: lang.hitch(this, "_cleanUp") - }); - - this.currentPopup = popup; - // detect mouseovers to handle lazy mouse movements that temporarily focus other menu items - popup.connect(popup.domNode, "onmouseenter", lang.hitch(self, "_onPopupHover")); // cleaned up when the popped-up widget is destroyed on close - } - - if(focus && popup.focus){ - // If user is opening the popup via keyboard (right arrow, or down arrow for MenuBar), then focus the popup. - // If the cursor happens to collide with the popup, it will generate an onmouseover event - // even though the mouse wasn't moved. Use defer() to call popup.focus so that - // our focus() call overrides the onmouseover event, rather than vice-versa. (#8742) - popup._focus_timer = this.defer(lang.hitch(popup, function(){ - this._focus_timer = null; - this.focus(); - })); - } - }, - - _markActive: function(){ - // summary: - // Mark this menu's state as active. - // Called when this Menu gets focus from: - // - // 1. clicking it (mouse or via space/arrow key) - // 2. being opened by a parent menu. - // - // This is not called just from mouse hover. - // Focusing a menu via TAB does NOT automatically set isActive - // since TAB is a navigation operation and not a selection one. - // For Windows apps, pressing the ALT key focuses the menubar - // menus (similar to TAB navigation) but the menu is not active - // (ie no dropdown) until an item is clicked. - this.isActive = true; - domClass.replace(this.domNode, "dijitMenuActive", "dijitMenuPassive"); - }, - - onOpen: function(/*Event*/ /*===== e =====*/){ - // summary: - // Callback when this menu is opened. - // This is called by the popup manager as notification that the menu - // was opened. - // tags: - // private - - this.isShowingNow = true; - this._markActive(); - }, - - _markInactive: function(){ - // summary: - // Mark this menu's state as inactive. - this.isActive = false; // don't do this in _onBlur since the state is pending-close until we get here - domClass.replace(this.domNode, "dijitMenuPassive", "dijitMenuActive"); - }, - - onClose: function(){ - // summary: - // Callback when this menu is closed. - // This is called by the popup manager as notification that the menu - // was closed. - // tags: - // private - - this._stopFocusTimer(); - this._markInactive(); - this.isShowingNow = false; - this.parentMenu = null; - }, - - _closeChild: function(){ - // summary: - // Called when submenu is clicked or focus is lost. Close hierarchy of menus. - // tags: - // private - this._stopPopupTimer(); - - if(this.currentPopup){ - // If focus is on a descendant MenuItem then move focus to me, - // because IE doesn't like it when you display:none a node with focus, - // and also so keyboard users don't lose control. - // Likely, immediately after a user defined onClick handler will move focus somewhere - // else, like a Dialog. - if(array.indexOf(this._focusManager.activeStack, this.id) >= 0){ - domAttr.set(this.focusedChild.focusNode, "tabIndex", this.tabIndex); - this.focusedChild.focusNode.focus(); - } - // Close all popups that are open and descendants of this menu - pm.close(this.currentPopup); - this.currentPopup = null; - } - - if(this.focusedChild){ // unhighlight the focused item - this.focusedChild._setSelected(false); - this.onItemUnhover(this.focusedChild); - this.focusedChild = null; - } - }, - - _onItemFocus: function(/*MenuItem*/ item){ - // summary: - // Called when child of this Menu gets focus from: - // - // 1. clicking it - // 2. tabbing into it - // 3. being opened by a parent menu. - // - // This is not called just from mouse hover. - if(this._hoveredChild && this._hoveredChild != item){ - this.onItemUnhover(this._hoveredChild); // any previous mouse movement is trumped by focus selection - } - }, - - _onBlur: function(){ - // summary: - // Called when focus is moved away from this Menu and it's submenus. - // tags: - // protected - this._cleanUp(); - this.inherited(arguments); - }, - - _cleanUp: function(){ - // summary: - // Called when the user is done with this menu. Closes hierarchy of menus. - // tags: - // private - - this._closeChild(); // don't call this.onClose since that's incorrect for MenuBar's that never close - if(typeof this.isShowingNow == 'undefined'){ // non-popup menu doesn't call onClose - this._markInactive(); - } - } -}); - -}); - -}, -'dijit/focus':function(){ -define("dijit/focus", [ - "dojo/aspect", - "dojo/_base/declare", // declare - "dojo/dom", // domAttr.get dom.isDescendant - "dojo/dom-attr", // domAttr.get dom.isDescendant - "dojo/dom-construct", // connect to domConstruct.empty, domConstruct.destroy - "dojo/Evented", - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/ready", - "dojo/sniff", // has("ie") - "dojo/Stateful", - "dojo/_base/unload", // unload.addOnWindowUnload - "dojo/_base/window", // win.body - "dojo/window", // winUtils.get - "./a11y", // a11y.isTabNavigable - "./registry", // registry.byId - "./main" // to set dijit.focus -], function(aspect, declare, dom, domAttr, domConstruct, Evented, lang, on, ready, has, Stateful, unload, win, winUtils, - a11y, registry, dijit){ - - // module: - // dijit/focus - - var FocusManager = declare([Stateful, Evented], { - // summary: - // Tracks the currently focused node, and which widgets are currently "active". - // Access via require(["dijit/focus"], function(focus){ ... }). - // - // A widget is considered active if it or a descendant widget has focus, - // or if a non-focusable node of this widget or a descendant was recently clicked. - // - // Call focus.watch("curNode", callback) to track the current focused DOMNode, - // or focus.watch("activeStack", callback) to track the currently focused stack of widgets. - // - // Call focus.on("widget-blur", func) or focus.on("widget-focus", ...) to monitor when - // when widgets become active/inactive - // - // Finally, focus(node) will focus a node, suppressing errors if the node doesn't exist. - - // curNode: DomNode - // Currently focused item on screen - curNode: null, - - // activeStack: dijit/_WidgetBase[] - // List of currently active widgets (focused widget and it's ancestors) - activeStack: [], - - constructor: function(){ - // Don't leave curNode/prevNode pointing to bogus elements - var check = lang.hitch(this, function(node){ - if(dom.isDescendant(this.curNode, node)){ - this.set("curNode", null); - } - if(dom.isDescendant(this.prevNode, node)){ - this.set("prevNode", null); - } - }); - aspect.before(domConstruct, "empty", check); - aspect.before(domConstruct, "destroy", check); - }, - - registerIframe: function(/*DomNode*/ iframe){ - // summary: - // Registers listeners on the specified iframe so that any click - // or focus event on that iframe (or anything in it) is reported - // as a focus/click event on the `<iframe>` itself. - // description: - // Currently only used by editor. - // returns: - // Handle with remove() method to deregister. - return this.registerWin(iframe.contentWindow, iframe); - }, - - registerWin: function(/*Window?*/targetWindow, /*DomNode?*/ effectiveNode){ - // summary: - // Registers listeners on the specified window (either the main - // window or an iframe's window) to detect when the user has clicked somewhere - // or focused somewhere. - // description: - // Users should call registerIframe() instead of this method. - // targetWindow: - // If specified this is the window associated with the iframe, - // i.e. iframe.contentWindow. - // effectiveNode: - // If specified, report any focus events inside targetWindow as - // an event on effectiveNode, rather than on evt.target. - // returns: - // Handle with remove() method to deregister. - - // TODO: make this function private in 2.0; Editor/users should call registerIframe(), - - var _this = this; - var mousedownListener = function(evt){ - _this._justMouseDowned = true; - setTimeout(function(){ _this._justMouseDowned = false; }, 0); - - // workaround weird IE bug where the click is on an orphaned node - // (first time clicking a Select/DropDownButton inside a TooltipDialog) - if(has("ie") && evt && evt.srcElement && evt.srcElement.parentNode == null){ - return; - } - - _this._onTouchNode(effectiveNode || evt.target || evt.srcElement, "mouse"); - }; - - // Listen for blur and focus events on targetWindow's document. - // Using attachEvent()/addEventListener() rather than on() to try to catch mouseDown events even - // if other code calls evt.stopPropagation(). But rethink for 2.0 since that doesn't work for attachEvent(), - // which watches events at the bubbling phase rather than capturing phase, like addEventListener(..., false). - // Connect to <html> (rather than document) on IE to avoid memory leaks, but document on other browsers because - // (at least for FF) the focus event doesn't fire on <html> or <body>. - var doc = has("ie") ? targetWindow.document.documentElement : targetWindow.document; - if(doc){ - if(has("ie")){ - targetWindow.document.body.attachEvent('onmousedown', mousedownListener); - var focusinListener = function(evt){ - // IE reports that nodes like <body> have gotten focus, even though they have tabIndex=-1, - // ignore those events - var tag = evt.srcElement.tagName.toLowerCase(); - if(tag == "#document" || tag == "body"){ return; } - - // Previous code called _onTouchNode() for any activate event on a non-focusable node. Can - // probably just ignore such an event as it will be handled by onmousedown handler above, but - // leaving the code for now. - if(a11y.isTabNavigable(evt.srcElement)){ - _this._onFocusNode(effectiveNode || evt.srcElement); - }else{ - _this._onTouchNode(effectiveNode || evt.srcElement); - } - }; - doc.attachEvent('onfocusin', focusinListener); - var focusoutListener = function(evt){ - _this._onBlurNode(effectiveNode || evt.srcElement); - }; - doc.attachEvent('onfocusout', focusoutListener); - - return { - remove: function(){ - targetWindow.document.detachEvent('onmousedown', mousedownListener); - doc.detachEvent('onfocusin', focusinListener); - doc.detachEvent('onfocusout', focusoutListener); - doc = null; // prevent memory leak (apparent circular reference via closure) - } - }; - }else{ - doc.body.addEventListener('mousedown', mousedownListener, true); - doc.body.addEventListener('touchstart', mousedownListener, true); - var focusListener = function(evt){ - _this._onFocusNode(effectiveNode || evt.target); - }; - doc.addEventListener('focus', focusListener, true); - var blurListener = function(evt){ - _this._onBlurNode(effectiveNode || evt.target); - }; - doc.addEventListener('blur', blurListener, true); - - return { - remove: function(){ - doc.body.removeEventListener('mousedown', mousedownListener, true); - doc.body.removeEventListener('touchstart', mousedownListener, true); - doc.removeEventListener('focus', focusListener, true); - doc.removeEventListener('blur', blurListener, true); - doc = null; // prevent memory leak (apparent circular reference via closure) - } - }; - } - } - }, - - _onBlurNode: function(/*DomNode*/ node){ - // summary: - // Called when focus leaves a node. - // Usually ignored, _unless_ it *isn't* followed by touching another node, - // which indicates that we tabbed off the last field on the page, - // in which case every widget is marked inactive - - // If the blur event isn't followed by a focus event, it means the user clicked on something unfocusable, - // so clear focus. - if(this._clearFocusTimer){ - clearTimeout(this._clearFocusTimer); - } - this._clearFocusTimer = setTimeout(lang.hitch(this, function(){ - this.set("prevNode", this.curNode); - this.set("curNode", null); - }), 0); - - if(this._justMouseDowned){ - // the mouse down caused a new widget to be marked as active; this blur event - // is coming late, so ignore it. - return; - } - - // If the blur event isn't followed by a focus or touch event then mark all widgets as inactive. - if(this._clearActiveWidgetsTimer){ - clearTimeout(this._clearActiveWidgetsTimer); - } - this._clearActiveWidgetsTimer = setTimeout(lang.hitch(this, function(){ - delete this._clearActiveWidgetsTimer; - this._setStack([]); - }), 0); - }, - - _onTouchNode: function(/*DomNode*/ node, /*String*/ by){ - // summary: - // Callback when node is focused or mouse-downed - // node: - // The node that was touched. - // by: - // "mouse" if the focus/touch was caused by a mouse down event - - // ignore the recent blurNode event - if(this._clearActiveWidgetsTimer){ - clearTimeout(this._clearActiveWidgetsTimer); - delete this._clearActiveWidgetsTimer; - } - - // compute stack of active widgets (ex: ComboButton --> Menu --> MenuItem) - var newStack=[]; - try{ - while(node){ - var popupParent = domAttr.get(node, "dijitPopupParent"); - if(popupParent){ - node=registry.byId(popupParent).domNode; - }else if(node.tagName && node.tagName.toLowerCase() == "body"){ - // is this the root of the document or just the root of an iframe? - if(node === win.body()){ - // node is the root of the main document - break; - } - // otherwise, find the iframe this node refers to (can't access it via parentNode, - // need to do this trick instead). window.frameElement is supported in IE/FF/Webkit - node=winUtils.get(node.ownerDocument).frameElement; - }else{ - // if this node is the root node of a widget, then add widget id to stack, - // except ignore clicks on disabled widgets (actually focusing a disabled widget still works, - // to support MenuItem) - var id = node.getAttribute && node.getAttribute("widgetId"), - widget = id && registry.byId(id); - if(widget && !(by == "mouse" && widget.get("disabled"))){ - newStack.unshift(id); - } - node=node.parentNode; - } - } - }catch(e){ /* squelch */ } - - this._setStack(newStack, by); - }, - - _onFocusNode: function(/*DomNode*/ node){ - // summary: - // Callback when node is focused - - if(!node){ - return; - } - - if(node.nodeType == 9){ - // Ignore focus events on the document itself. This is here so that - // (for example) clicking the up/down arrows of a spinner - // (which don't get focus) won't cause that widget to blur. (FF issue) - return; - } - - // There was probably a blur event right before this event, but since we have a new focus, don't - // do anything with the blur - if(this._clearFocusTimer){ - clearTimeout(this._clearFocusTimer); - delete this._clearFocusTimer; - } - - this._onTouchNode(node); - - if(node == this.curNode){ return; } - this.set("prevNode", this.curNode); - this.set("curNode", node); - }, - - _setStack: function(/*String[]*/ newStack, /*String*/ by){ - // summary: - // The stack of active widgets has changed. Send out appropriate events and records new stack. - // newStack: - // array of widget id's, starting from the top (outermost) widget - // by: - // "mouse" if the focus/touch was caused by a mouse down event - - var oldStack = this.activeStack; - this.set("activeStack", newStack); - - // compare old stack to new stack to see how many elements they have in common - for(var nCommon=0; nCommon<Math.min(oldStack.length, newStack.length); nCommon++){ - if(oldStack[nCommon] != newStack[nCommon]){ - break; - } - } - - var widget; - // for all elements that have gone out of focus, set focused=false - for(var i=oldStack.length-1; i>=nCommon; i--){ - widget = registry.byId(oldStack[i]); - if(widget){ - widget._hasBeenBlurred = true; // TODO: used by form widgets, should be moved there - widget.set("focused", false); - if(widget._focusManager == this){ - widget._onBlur(by); - } - this.emit("widget-blur", widget, by); - } - } - - // for all element that have come into focus, set focused=true - for(i=nCommon; i<newStack.length; i++){ - widget = registry.byId(newStack[i]); - if(widget){ - widget.set("focused", true); - if(widget._focusManager == this){ - widget._onFocus(by); - } - this.emit("widget-focus", widget, by); - } - } - }, - - focus: function(node){ - // summary: - // Focus the specified node, suppressing errors if they occur - if(node){ - try{ node.focus(); }catch(e){/*quiet*/} - } - } - }); - - var singleton = new FocusManager(); - - // register top window and all the iframes it contains - ready(function(){ - var handle = singleton.registerWin(winUtils.get(win.doc)); - if(has("ie")){ - unload.addOnWindowUnload(function(){ - if(handle){ // because this gets called twice when doh.robot is running - handle.remove(); - handle = null; - } - }); - } - }); - - // Setup dijit.focus as a pointer to the singleton but also (for backwards compatibility) - // as a function to set focus. Remove for 2.0. - dijit.focus = function(node){ - singleton.focus(node); // indirection here allows dijit/_base/focus.js to override behavior - }; - for(var attr in singleton){ - if(!/^_/.test(attr)){ - dijit.focus[attr] = typeof singleton[attr] == "function" ? lang.hitch(singleton, attr) : singleton[attr]; - } - } - singleton.watch(function(attr, oldVal, newVal){ - dijit.focus[attr] = newVal; - }); - - return singleton; -}); - -}, -'dojo/i18n':function(){ -define("dojo/i18n", ["./_base/kernel", "require", "./has", "./_base/array", "./_base/config", "./_base/lang", "./_base/xhr", "./json", "module"], - function(dojo, require, has, array, config, lang, xhr, json, module){ - - // module: - // dojo/i18n - - has.add("dojo-preload-i18n-Api", - // if true, define the preload localizations machinery - 1 - ); - - 1 || has.add("dojo-v1x-i18n-Api", - // if true, define the v1.x i18n functions - 1 - ); - - var - thisModule = dojo.i18n = - { - // summary: - // This module implements the dojo/i18n! plugin and the v1.6- i18n API - // description: - // We choose to include our own plugin to leverage functionality already contained in dojo - // and thereby reduce the size of the plugin compared to various loader implementations. Also, this - // allows foreign AMD loaders to be used without their plugins. - }, - - nlsRe = - // regexp for reconstructing the master bundle name from parts of the regexp match - // nlsRe.exec("foo/bar/baz/nls/en-ca/foo") gives: - // ["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"] - // nlsRe.exec("foo/bar/baz/nls/foo") gives: - // ["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""] - // so, if match[5] is blank, it means this is the top bundle definition. - // courtesy of http://requirejs.org - /(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/, - - getAvailableLocales = function( - root, - locale, - bundlePath, - bundleName - ){ - // summary: - // return a vector of module ids containing all available locales with respect to the target locale - // For example, assuming: - // - // - the root bundle indicates specific bundles for "fr" and "fr-ca", - // - bundlePath is "myPackage/nls" - // - bundleName is "myBundle" - // - // Then a locale argument of "fr-ca" would return - // - // ["myPackage/nls/myBundle", "myPackage/nls/fr/myBundle", "myPackage/nls/fr-ca/myBundle"] - // - // Notice that bundles are returned least-specific to most-specific, starting with the root. - // - // If root===false indicates we're working with a pre-AMD i18n bundle that doesn't tell about the available locales; - // therefore, assume everything is available and get 404 errors that indicate a particular localization is not available - - for(var result = [bundlePath + bundleName], localeParts = locale.split("-"), current = "", i = 0; i<localeParts.length; i++){ - current += (current ? "-" : "") + localeParts[i]; - if(!root || root[current]){ - result.push(bundlePath + current + "/" + bundleName); - } - } - return result; - }, - - cache = {}, - - getBundleName = function(moduleName, bundleName, locale){ - locale = locale ? locale.toLowerCase() : dojo.locale; - moduleName = moduleName.replace(/\./g, "/"); - bundleName = bundleName.replace(/\./g, "/"); - return (/root/i.test(locale)) ? - (moduleName + "/nls/" + bundleName) : - (moduleName + "/nls/" + locale + "/" + bundleName); - }, - - getL10nName = dojo.getL10nName = function(moduleName, bundleName, locale){ - return moduleName = module.id + "!" + getBundleName(moduleName, bundleName, locale); - }, - - doLoad = function(require, bundlePathAndName, bundlePath, bundleName, locale, load){ - // summary: - // get the root bundle which instructs which other bundles are required to construct the localized bundle - require([bundlePathAndName], function(root){ - var current = lang.clone(root.root), - availableLocales = getAvailableLocales(!root._v1x && root, locale, bundlePath, bundleName); - require(availableLocales, function(){ - for (var i = 1; i<availableLocales.length; i++){ - current = lang.mixin(lang.clone(current), arguments[i]); - } - // target may not have been resolve (e.g., maybe only "fr" exists when "fr-ca" was requested) - var target = bundlePathAndName + "/" + locale; - cache[target] = current; - load(); - }); - }); - }, - - normalize = function(id, toAbsMid){ - // summary: - // id may be relative. - // preload has form `*preload*<path>/nls/<module>*<flattened locales>` and - // therefore never looks like a relative - return /^\./.test(id) ? toAbsMid(id) : id; - }, - - getLocalesToLoad = function(targetLocale){ - var list = config.extraLocale || []; - list = lang.isArray(list) ? list : [list]; - list.push(targetLocale); - return list; - }, - - load = function(id, require, load){ - // summary: - // id is in one of the following formats - // - // 1. <path>/nls/<bundle> - // => load the bundle, localized to config.locale; load all bundles localized to - // config.extraLocale (if any); return the loaded bundle localized to config.locale. - // - // 2. <path>/nls/<locale>/<bundle> - // => load then return the bundle localized to <locale> - // - // 3. *preload*<path>/nls/<module>*<JSON array of available locales> - // => for config.locale and all config.extraLocale, load all bundles found - // in the best-matching bundle rollup. A value of 1 is returned, which - // is meaningless other than to say the plugin is executing the requested - // preloads - // - // In cases 1 and 2, <path> is always normalized to an absolute module id upon entry; see - // normalize. In case 3, it <path> is assumed to be absolute; this is arranged by the builder. - // - // To load a bundle means to insert the bundle into the plugin's cache and publish the bundle - // value to the loader. Given <path>, <bundle>, and a particular <locale>, the cache key - // - // <path>/nls/<bundle>/<locale> - // - // will hold the value. Similarly, then plugin will publish this value to the loader by - // - // define("<path>/nls/<bundle>/<locale>", <bundle-value>); - // - // Given this algorithm, other machinery can provide fast load paths be preplacing - // values in the plugin's cache, which is public. When a load is demanded the - // cache is inspected before starting any loading. Explicitly placing values in the plugin - // cache is an advanced/experimental feature that should not be needed; use at your own risk. - // - // For the normal AMD algorithm, the root bundle is loaded first, which instructs the - // plugin what additional localized bundles are required for a particular locale. These - // additional locales are loaded and a mix of the root and each progressively-specific - // locale is returned. For example: - // - // 1. The client demands "dojo/i18n!some/path/nls/someBundle - // - // 2. The loader demands load(some/path/nls/someBundle) - // - // 3. This plugin require's "some/path/nls/someBundle", which is the root bundle. - // - // 4. Assuming config.locale is "ab-cd-ef" and the root bundle indicates that localizations - // are available for "ab" and "ab-cd-ef" (note the missing "ab-cd", then the plugin - // requires "some/path/nls/ab/someBundle" and "some/path/nls/ab-cd-ef/someBundle" - // - // 5. Upon receiving all required bundles, the plugin constructs the value of the bundle - // ab-cd-ef as... - // - // mixin(mixin(mixin({}, require("some/path/nls/someBundle"), - // require("some/path/nls/ab/someBundle")), - // require("some/path/nls/ab-cd-ef/someBundle")); - // - // This value is inserted into the cache and published to the loader at the - // key/module-id some/path/nls/someBundle/ab-cd-ef. - // - // The special preload signature (case 3) instructs the plugin to stop servicing all normal requests - // (further preload requests will be serviced) until all ongoing preloading has completed. - // - // The preload signature instructs the plugin that a special rollup module is available that contains - // one or more flattened, localized bundles. The JSON array of available locales indicates which locales - // are available. Here is an example: - // - // *preload*some/path/nls/someModule*["root", "ab", "ab-cd-ef"] - // - // This indicates the following rollup modules are available: - // - // some/path/nls/someModule_ROOT - // some/path/nls/someModule_ab - // some/path/nls/someModule_ab-cd-ef - // - // Each of these modules is a normal AMD module that contains one or more flattened bundles in a hash. - // For example, assume someModule contained the bundles some/bundle/path/someBundle and - // some/bundle/path/someOtherBundle, then some/path/nls/someModule_ab would be expressed as follows: - // - // define({ - // some/bundle/path/someBundle:<value of someBundle, flattened with respect to locale ab>, - // some/bundle/path/someOtherBundle:<value of someOtherBundle, flattened with respect to locale ab>, - // }); - // - // E.g., given this design, preloading for locale=="ab" can execute the following algorithm: - // - // require(["some/path/nls/someModule_ab"], function(rollup){ - // for(var p in rollup){ - // var id = p + "/ab", - // cache[id] = rollup[p]; - // define(id, rollup[p]); - // } - // }); - // - // Similarly, if "ab-cd" is requested, the algorithm can determine that "ab" is the best available and - // load accordingly. - // - // The builder will write such rollups for every layer if a non-empty localeList profile property is - // provided. Further, the builder will include the following cache entry in the cache associated with - // any layer. - // - // "*now":function(r){r(['dojo/i18n!*preload*<path>/nls/<module>*<JSON array of available locales>']);} - // - // The *now special cache module instructs the loader to apply the provided function to context-require - // with respect to the particular layer being defined. This causes the plugin to hold all normal service - // requests until all preloading is complete. - // - // Notice that this algorithm is rarely better than the standard AMD load algorithm. Consider the normal case - // where the target locale has a single segment and a layer depends on a single bundle: - // - // Without Preloads: - // - // 1. Layer loads root bundle. - // 2. bundle is demanded; plugin loads single localized bundle. - // - // With Preloads: - // - // 1. Layer causes preloading of target bundle. - // 2. bundle is demanded; service is delayed until preloading complete; bundle is returned. - // - // In each case a single transaction is required to load the target bundle. In cases where multiple bundles - // are required and/or the locale has multiple segments, preloads still requires a single transaction whereas - // the normal path requires an additional transaction for each additional bundle/locale-segment. However all - // of these additional transactions can be done concurrently. Owing to this analysis, the entire preloading - // algorithm can be discard during a build by setting the has feature dojo-preload-i18n-Api to false. - - if(has("dojo-preload-i18n-Api")){ - var split = id.split("*"), - preloadDemand = split[1] == "preload"; - if(preloadDemand){ - if(!cache[id]){ - // use cache[id] to prevent multiple preloads of the same preload; this shouldn't happen, but - // who knows what over-aggressive human optimizers may attempt - cache[id] = 1; - preloadL10n(split[2], json.parse(split[3]), 1, require); - } - // don't stall the loader! - load(1); - } - if(preloadDemand || waitForPreloads(id, require, load)){ - return; - } - } - - var match = nlsRe.exec(id), - bundlePath = match[1] + "/", - bundleName = match[5] || match[4], - bundlePathAndName = bundlePath + bundleName, - localeSpecified = (match[5] && match[4]), - targetLocale = localeSpecified || dojo.locale, - loadTarget = bundlePathAndName + "/" + targetLocale, - loadList = localeSpecified ? [targetLocale] : getLocalesToLoad(targetLocale), - remaining = loadList.length, - finish = function(){ - if(!--remaining){ - load(lang.delegate(cache[loadTarget])); - } - }; - array.forEach(loadList, function(locale){ - var target = bundlePathAndName + "/" + locale; - if(has("dojo-preload-i18n-Api")){ - checkForLegacyModules(target); - } - if(!cache[target]){ - doLoad(require, bundlePathAndName, bundlePath, bundleName, locale, finish); - }else{ - finish(); - } - }); - }; - - if(has("dojo-unit-tests")){ - var unitTests = thisModule.unitTests = []; - } - - if(has("dojo-preload-i18n-Api") || 1 ){ - var normalizeLocale = thisModule.normalizeLocale = function(locale){ - var result = locale ? locale.toLowerCase() : dojo.locale; - return result == "root" ? "ROOT" : result; - }, - - isXd = function(mid, contextRequire){ - return ( 1 && 1 ) ? - contextRequire.isXdUrl(require.toUrl(mid + ".js")) : - true; - }, - - preloading = 0, - - preloadWaitQueue = [], - - preloadL10n = thisModule._preloadLocalizations = function(/*String*/bundlePrefix, /*Array*/localesGenerated, /*boolean?*/ guaranteedAmdFormat, /*function?*/ contextRequire){ - // summary: - // Load available flattened resource bundles associated with a particular module for dojo/locale and all dojo/config.extraLocale (if any) - // description: - // Only called by built layer files. The entire locale hierarchy is loaded. For example, - // if locale=="ab-cd", then ROOT, "ab", and "ab-cd" are loaded. This is different than v1.6- - // in that the v1.6- would only load ab-cd...which was *always* flattened. - // - // If guaranteedAmdFormat is true, then the module can be loaded with require thereby circumventing the detection algorithm - // and the extra possible extra transaction. - - // If this function is called from legacy code, then guaranteedAmdFormat and contextRequire will be undefined. Since the function - // needs a require in order to resolve module ids, fall back to the context-require associated with this dojo/i18n module, which - // itself may have been mapped. - contextRequire = contextRequire || require; - - function doRequire(mid, callback){ - if(isXd(mid, contextRequire) || guaranteedAmdFormat){ - contextRequire([mid], callback); - }else{ - syncRequire([mid], callback, contextRequire); - } - } - - function forEachLocale(locale, func){ - // given locale= "ab-cd-ef", calls func on "ab-cd-ef", "ab-cd", "ab", "ROOT"; stops calling the first time func returns truthy - var parts = locale.split("-"); - while(parts.length){ - if(func(parts.join("-"))){ - return; - } - parts.pop(); - } - func("ROOT"); - } - - function preload(locale){ - locale = normalizeLocale(locale); - forEachLocale(locale, function(loc){ - if(array.indexOf(localesGenerated, loc)>=0){ - var mid = bundlePrefix.replace(/\./g, "/")+"_"+loc; - preloading++; - doRequire(mid, function(rollup){ - for(var p in rollup){ - cache[require.toAbsMid(p) + "/" + loc] = rollup[p]; - } - --preloading; - while(!preloading && preloadWaitQueue.length){ - load.apply(null, preloadWaitQueue.shift()); - } - }); - return true; - } - return false; - }); - } - - preload(); - array.forEach(dojo.config.extraLocale, preload); - }, - - waitForPreloads = function(id, require, load){ - if(preloading){ - preloadWaitQueue.push([id, require, load]); - } - return preloading; - }, - - checkForLegacyModules = function() - {}; - } - - if( 1 ){ - // this code path assumes the dojo loader and won't work with a standard AMD loader - var amdValue = {}, - evalBundle = - // use the function ctor to keep the minifiers away (also come close to global scope, but this is secondary) - new Function( - "__bundle", // the bundle to evalutate - "__checkForLegacyModules", // a function that checks if __bundle defined __mid in the global space - "__mid", // the mid that __bundle is intended to define - "__amdValue", - - // returns one of: - // 1 => the bundle was an AMD bundle - // a legacy bundle object that is the value of __mid - // instance of Error => could not figure out how to evaluate bundle - - // used to detect when __bundle calls define - "var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;}," - + " require = function(){define.called = 1;};" - - + "try{" - + "define.called = 0;" - + "eval(__bundle);" - + "if(define.called==1)" - // bundle called define; therefore signal it's an AMD bundle - + "return __amdValue;" - - + "if((__checkForLegacyModules = __checkForLegacyModules(__mid)))" - // bundle was probably a v1.6- built NLS flattened NLS bundle that defined __mid in the global space - + "return __checkForLegacyModules;" - - + "}catch(e){}" - // evaulating the bundle was *neither* an AMD *nor* a legacy flattened bundle - // either way, re-eval *after* surrounding with parentheses - - + "try{" - + "return eval('('+__bundle+')');" - + "}catch(e){" - + "return e;" - + "}" - ), - - syncRequire = function(deps, callback, require){ - var results = []; - array.forEach(deps, function(mid){ - var url = require.toUrl(mid + ".js"); - - function load(text){ - var result = evalBundle(text, checkForLegacyModules, mid, amdValue); - if(result===amdValue){ - // the bundle was an AMD module; re-inject it through the normal AMD path - // we gotta do this since it could be an anonymous module and simply evaluating - // the text here won't provide the loader with the context to know what - // module is being defined()'d. With browser caching, this should be free; further - // this entire code path can be circumvented by using the AMD format to begin with - results.push(cache[url] = amdValue.result); - }else{ - if(result instanceof Error){ - console.error("failed to evaluate i18n bundle; url=" + url, result); - result = {}; - } - // nls/<locale>/<bundle-name> indicates not the root. - results.push(cache[url] = (/nls\/[^\/]+\/[^\/]+$/.test(url) ? result : {root:result, _v1x:1})); - } - } - - if(cache[url]){ - results.push(cache[url]); - }else{ - var bundle = require.syncLoadNls(mid); - // don't need to check for legacy since syncLoadNls returns a module if the module - // (1) was already loaded, or (2) was in the cache. In case 1, if syncRequire is called - // from getLocalization --> load, then load will have called checkForLegacyModules() before - // calling syncRequire; if syncRequire is called from preloadLocalizations, then we - // don't care about checkForLegacyModules() because that will be done when a particular - // bundle is actually demanded. In case 2, checkForLegacyModules() is never relevant - // because cached modules are always v1.7+ built modules. - if(bundle){ - results.push(bundle); - }else{ - if(!xhr){ - try{ - require.getText(url, true, load); - }catch(e){ - results.push(cache[url] = {}); - } - }else{ - xhr.get({ - url:url, - sync:true, - load:load, - error:function(){ - results.push(cache[url] = {}); - } - }); - } - } - } - }); - callback && callback.apply(null, results); - }; - - checkForLegacyModules = function(target){ - // legacy code may have already loaded [e.g] the raw bundle x/y/z at x.y.z; when true, push into the cache - for(var result, names = target.split("/"), object = dojo.global[names[0]], i = 1; object && i<names.length-1; object = object[names[i++]]){} - if(object){ - result = object[names[i]]; - if(!result){ - // fallback for incorrect bundle build of 1.6 - result = object[names[i].replace(/-/g,"_")]; - } - if(result){ - cache[target] = result; - } - } - return result; - }; - - thisModule.getLocalization = function(moduleName, bundleName, locale){ - var result, - l10nName = getBundleName(moduleName, bundleName, locale); - load( - l10nName, - - // isXd() and syncRequire() need a context-require in order to resolve the mid with respect to a reference module. - // Since this legacy function does not have the concept of a reference module, resolve with respect to this - // dojo/i18n module, which, itself may have been mapped. - (!isXd(l10nName, require) ? function(deps, callback){ syncRequire(deps, callback, require); } : require), - - function(result_){ result = result_; } - ); - return result; - }; - - if(has("dojo-unit-tests")){ - unitTests.push(function(doh){ - doh.register("tests.i18n.unit", function(t){ - var check; - - check = evalBundle("{prop:1}", checkForLegacyModules, "nonsense", amdValue); - t.is({prop:1}, check); t.is(undefined, check[1]); - - check = evalBundle("({prop:1})", checkForLegacyModules, "nonsense", amdValue); - t.is({prop:1}, check); t.is(undefined, check[1]); - - check = evalBundle("{'prop-x':1}", checkForLegacyModules, "nonsense", amdValue); - t.is({'prop-x':1}, check); t.is(undefined, check[1]); - - check = evalBundle("({'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is({'prop-x':1}, check); t.is(undefined, check[1]); - - check = evalBundle("define({'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is(amdValue, check); t.is({'prop-x':1}, amdValue.result); - - check = evalBundle("define('some/module', {'prop-x':1})", checkForLegacyModules, "nonsense", amdValue); - t.is(amdValue, check); t.is({'prop-x':1}, amdValue.result); - - check = evalBundle("this is total nonsense and should throw an error", checkForLegacyModules, "nonsense", amdValue); - t.is(check instanceof Error, true); - }); - }); - } - } - - return lang.mixin(thisModule, { - dynamic:true, - normalize:normalize, - load:load, - cache:cache - }); -}); - -}, -'dijit/hccss':function(){ -define("dijit/hccss", ["dojo/dom-class", "dojo/hccss", "dojo/ready", "dojo/_base/window"], function(domClass, has, ready, win){ - - // module: - // dijit/hccss - - /*===== - return function(){ - // summary: - // Test if computer is in high contrast mode, and sets `dijit_a11y` flag on `<body>` if it is. - // Deprecated, use ``dojo/hccss`` instead. - }; - =====*/ - - // Priority is 90 to run ahead of parser priority of 100. For 2.0, remove the ready() call and instead - // change this module to depend on dojo/domReady! - ready(90, function(){ - if(has("highcontrast")){ - domClass.add(win.body(), "dijit_a11y"); - } - }); - - return has; -}); - -}, -'dijit/tree/ForestStoreModel':function(){ -define("dijit/tree/ForestStoreModel", [ - "dojo/_base/array", // array.indexOf array.some - "dojo/_base/declare", // declare - "dojo/_base/kernel", // global - "dojo/_base/lang", // lang.hitch - "./TreeStoreModel" -], function(array, declare, kernel, lang, TreeStoreModel){ - -// module: -// dijit/tree/ForestStoreModel - -return declare("dijit.tree.ForestStoreModel", TreeStoreModel, { - // summary: - // Interface between a dijit.Tree and a dojo.data store that doesn't have a root item, - // a.k.a. a store that has multiple "top level" items. - // - // description: - // Use this class to wrap a dojo.data store, making all the items matching the specified query - // appear as children of a fabricated "root item". If no query is specified then all the - // items returned by fetch() on the underlying store become children of the root item. - // This class allows dijit.Tree to assume a single root item, even if the store doesn't have one. - // - // When using this class the developer must override a number of methods according to their app and - // data, including: - // - // - onNewRootItem - // - onAddToRoot - // - onLeaveRoot - // - onNewItem - // - onSetItem - - // Parameters to constructor - - // rootId: String - // ID of fabricated root item - rootId: "$root$", - - // rootLabel: String - // Label of fabricated root item - rootLabel: "ROOT", - - // query: String - // Specifies the set of children of the root item. - // example: - // | {type:'continent'} - query: null, - - // End of parameters to constructor - - constructor: function(params){ - // summary: - // Sets up variables, etc. - // tags: - // private - - // Make dummy root item - this.root = { - store: this, - root: true, - id: params.rootId, - label: params.rootLabel, - children: params.rootChildren // optional param - }; - }, - - // ======================================================================= - // Methods for traversing hierarchy - - mayHaveChildren: function(/*dojo/data/Item*/ item){ - // summary: - // Tells if an item has or may have children. Implementing logic here - // avoids showing +/- expando icon for nodes that we know don't have children. - // (For efficiency reasons we may not want to check if an element actually - // has children until user clicks the expando node) - // tags: - // extension - return item === this.root || this.inherited(arguments); - }, - - getChildren: function(/*dojo/data/Item*/ parentItem, /*function(items)*/ callback, /*function*/ onError){ - // summary: - // Calls onComplete() with array of child items of given parent item, all loaded. - if(parentItem === this.root){ - if(this.root.children){ - // already loaded, just return - callback(this.root.children); - }else{ - this.store.fetch({ - query: this.query, - onComplete: lang.hitch(this, function(items){ - this.root.children = items; - callback(items); - }), - onError: onError - }); - } - }else{ - this.inherited(arguments); - } - }, - - // ======================================================================= - // Inspecting items - - isItem: function(/* anything */ something){ - return (something === this.root) ? true : this.inherited(arguments); - }, - - fetchItemByIdentity: function(/* object */ keywordArgs){ - if(keywordArgs.identity == this.root.id){ - var scope = keywordArgs.scope || kernel.global; - if(keywordArgs.onItem){ - keywordArgs.onItem.call(scope, this.root); - } - }else{ - this.inherited(arguments); - } - }, - - getIdentity: function(/* item */ item){ - return (item === this.root) ? this.root.id : this.inherited(arguments); - }, - - getLabel: function(/* item */ item){ - return (item === this.root) ? this.root.label : this.inherited(arguments); - }, - - // ======================================================================= - // Write interface - - newItem: function(/* dijit/tree/dndSource.__Item */ args, /*Item*/ parent, /*int?*/ insertIndex){ - // summary: - // Creates a new item. See dojo/data/api/Write for details on args. - // Used in drag & drop when item from external source dropped onto tree. - if(parent === this.root){ - this.onNewRootItem(args); - return this.store.newItem(args); - }else{ - return this.inherited(arguments); - } - }, - - onNewRootItem: function(/* dijit/tree/dndSource.__Item */ /*===== args =====*/){ - // summary: - // User can override this method to modify a new element that's being - // added to the root of the tree, for example to add a flag like root=true - }, - - pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){ - // summary: - // Move or copy an item from one parent item to another. - // Used in drag & drop - if(oldParentItem === this.root){ - if(!bCopy){ - // It's onLeaveRoot()'s responsibility to modify the item so it no longer matches - // this.query... thus triggering an onChildrenChange() event to notify the Tree - // that this element is no longer a child of the root node - this.onLeaveRoot(childItem); - } - } - this.inherited(arguments, [childItem, - oldParentItem === this.root ? null : oldParentItem, - newParentItem === this.root ? null : newParentItem, - bCopy, - insertIndex - ]); - if(newParentItem === this.root){ - // It's onAddToRoot()'s responsibility to modify the item so it matches - // this.query... thus triggering an onChildrenChange() event to notify the Tree - // that this element is now a child of the root node - this.onAddToRoot(childItem); - } - }, - - // ======================================================================= - // Handling for top level children - - onAddToRoot: function(/* item */ item){ - // summary: - // Called when item added to root of tree; user must override this method - // to modify the item so that it matches the query for top level items - // example: - // | store.setValue(item, "root", true); - // tags: - // extension - console.log(this, ": item ", item, " added to root"); - }, - - onLeaveRoot: function(/* item */ item){ - // summary: - // Called when item removed from root of tree; user must override this method - // to modify the item so it doesn't match the query for top level items - // example: - // | store.unsetAttribute(item, "root"); - // tags: - // extension - console.log(this, ": item ", item, " removed from root"); - }, - - // ======================================================================= - // Events from data store - - _requeryTop: function(){ - // reruns the query for the children of the root node, - // sending out an onSet notification if those children have changed - var oldChildren = this.root.children || []; - this.store.fetch({ - query: this.query, - onComplete: lang.hitch(this, function(newChildren){ - this.root.children = newChildren; - - // If the list of children or the order of children has changed... - if(oldChildren.length != newChildren.length || - array.some(oldChildren, function(item, idx){ return newChildren[idx] != item;})){ - this.onChildrenChange(this.root, newChildren); - } - }) - }); - }, - - onNewItem: function(/* dojo/data/api/Item */ item, /* Object */ parentInfo){ - // summary: - // Handler for when new items appear in the store. Developers should override this - // method to be more efficient based on their app/data. - // description: - // Note that the default implementation requeries the top level items every time - // a new item is created, since any new item could be a top level item (even in - // addition to being a child of another item, since items can have multiple parents). - // - // If developers can detect which items are possible top level items (based on the item and the - // parentInfo parameters), they should override this method to only call _requeryTop() for top - // level items. Often all top level items have parentInfo==null, but - // that will depend on which store you use and what your data is like. - // tags: - // extension - this._requeryTop(); - - this.inherited(arguments); - }, - - onDeleteItem: function(/*Object*/ item){ - // summary: - // Handler for delete notifications from underlying store - - // check if this was a child of root, and if so send notification that root's children - // have changed - if(array.indexOf(this.root.children, item) != -1){ - this._requeryTop(); - } - - this.inherited(arguments); - }, - - onSetItem: function(/* item */ item, - /* attribute-name-string */ attribute, - /* Object|Array */ oldValue, - /* Object|Array */ newValue){ - // summary: - // Updates the tree view according to changes to an item in the data store. - // Developers should override this method to be more efficient based on their app/data. - // description: - // Handles updates to an item's children by calling onChildrenChange(), and - // other updates to an item by calling onChange(). - // - // Also, any change to any item re-executes the query for the tree's top-level items, - // since this modified item may have started/stopped matching the query for top level items. - // - // If possible, developers should override this function to only call _requeryTop() when - // the change to the item has caused it to stop/start being a top level item in the tree. - // tags: - // extension - - this._requeryTop(); - this.inherited(arguments); - } - -}); - -}); - -}, -'url:dijit/layout/templates/AccordionButton.html':"<div data-dojo-attach-event='onclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeypress:_onTitleKeyPress'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" data-dojo-attach-point='iconNode' style=\"vertical-align: middle\" role=\"presentation\"/>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n", -'dijit/form/_ComboBoxMenuMixin':function(){ -define("dijit/form/_ComboBoxMenuMixin", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/i18n", // i18n.getLocalization - "dojo/i18n!./nls/ComboBox" -], function(array, declare, domAttr, i18n){ - -// module: -// dijit/form/_ComboBoxMenuMixin - -return declare( "dijit.form._ComboBoxMenuMixin", null, { - // summary: - // Focus-less menu for internal use in `dijit/form/ComboBox` - // tags: - // private - - // _messages: Object - // Holds "next" and "previous" text for paging buttons on drop down - _messages: null, - - postMixInProperties: function(){ - this.inherited(arguments); - this._messages = i18n.getLocalization("dijit.form", "ComboBox", this.lang); - }, - - buildRendering: function(){ - this.inherited(arguments); - - // fill in template with i18n messages - this.previousButton.innerHTML = this._messages["previousMessage"]; - this.nextButton.innerHTML = this._messages["nextMessage"]; - }, - - _setValueAttr: function(/*Object*/ value){ - this.value = value; - this.onChange(value); - }, - - onClick: function(/*DomNode*/ node){ - if(node == this.previousButton){ - this._setSelectedAttr(null); - this.onPage(-1); - }else if(node == this.nextButton){ - this._setSelectedAttr(null); - this.onPage(1); - }else{ - this.onChange(node); - } - }, - - // stubs - onChange: function(/*Number*/ /*===== direction =====*/){ - // summary: - // Notifies ComboBox/FilteringSelect that user selected an option. - // tags: - // callback - }, - - onPage: function(/*Number*/ /*===== direction =====*/){ - // summary: - // Notifies ComboBox/FilteringSelect that user clicked to advance to next/previous page. - // tags: - // callback - }, - - onClose: function(){ - // summary: - // Callback from dijit.popup code to this widget, notifying it that it closed - // tags: - // private - this._setSelectedAttr(null); - }, - - _createOption: function(/*Object*/ item, labelFunc){ - // summary: - // Creates an option to appear on the popup menu subclassed by - // `dijit/form/FilteringSelect`. - - var menuitem = this._createMenuItem(); - var labelObject = labelFunc(item); - if(labelObject.html){ - menuitem.innerHTML = labelObject.label; - }else{ - menuitem.appendChild( - menuitem.ownerDocument.createTextNode(labelObject.label) - ); - } - // #3250: in blank options, assign a normal height - if(menuitem.innerHTML == ""){ - menuitem.innerHTML = " "; //   - } - - // update menuitem.dir if BidiSupport was required - this.applyTextDir(menuitem, (menuitem.innerText || menuitem.textContent || "")); - - return menuitem; - }, - - createOptions: function(results, options, labelFunc){ - // summary: - // Fills in the items in the drop down list - // results: - // Array of items - // options: - // The options to the query function of the store - // - // labelFunc: - // Function to produce a label in the drop down list from a dojo.data item - - this.items = results; - - // display "Previous . . ." button - this.previousButton.style.display = (options.start == 0) ? "none" : ""; - domAttr.set(this.previousButton, "id", this.id + "_prev"); - // create options using _createOption function defined by parent - // ComboBox (or FilteringSelect) class - // #2309: - // iterate over cache nondestructively - array.forEach(results, function(item, i){ - var menuitem = this._createOption(item, labelFunc); - menuitem.setAttribute("item", i); // index to this.items; use indirection to avoid mem leak - domAttr.set(menuitem, "id", this.id + i); - this.nextButton.parentNode.insertBefore(menuitem, this.nextButton); - }, this); - // display "Next . . ." button - var displayMore = false; - // Try to determine if we should show 'more'... - if(results.total && !results.total.then && results.total != -1){ - if((options.start + options.count) < results.total){ - displayMore = true; - }else if((options.start + options.count) > results.total && options.count == results.length){ - // Weird return from a data store, where a start + count > maxOptions - // implies maxOptions isn't really valid and we have to go into faking it. - // And more or less assume more if count == results.length - displayMore = true; - } - }else if(options.count == results.length){ - //Don't know the size, so we do the best we can based off count alone. - //So, if we have an exact match to count, assume more. - displayMore = true; - } - - this.nextButton.style.display = displayMore ? "" : "none"; - domAttr.set(this.nextButton,"id", this.id + "_next"); - }, - - clearResultList: function(){ - // summary: - // Clears the entries in the drop down list, but of course keeps the previous and next buttons. - var container = this.containerNode; - while(container.childNodes.length > 2){ - container.removeChild(container.childNodes[container.childNodes.length-2]); - } - this._setSelectedAttr(null); - }, - - highlightFirstOption: function(){ - // summary: - // Highlight the first real item in the list (not Previous Choices). - this.selectFirstNode(); - }, - - highlightLastOption: function(){ - // summary: - // Highlight the last real item in the list (not More Choices). - this.selectLastNode(); - }, - - selectFirstNode: function(){ - this.inherited(arguments); - if(this.getHighlightedOption() == this.previousButton){ - this.selectNextNode(); - } - }, - - selectLastNode: function(){ - this.inherited(arguments); - if(this.getHighlightedOption() == this.nextButton){ - this.selectPreviousNode(); - } - }, - - getHighlightedOption: function(){ - return this.selected; - } -}); - -}); - -}, -'dijit/form/_SearchMixin':function(){ -define("dijit/form/_SearchMixin", [ - "dojo/data/util/filter", // patternToRegExp - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "dojo/_base/lang", // lang.clone lang.hitch - "dojo/query", // query - "dojo/sniff", // has("ie") - "dojo/string", // string.substitute - "dojo/when", - "../registry" // registry.byId -], function(filter, declare, event, keys, lang, query, has, string, when, registry){ - - // module: - // dijit/form/_SearchMixin - - - return declare("dijit.form._SearchMixin", null, { - // summary: - // A mixin that implements the base functionality to search a store based upon user-entered text such as - // with `dijit/form/ComboBox` or `dijit/form/FilteringSelect` - // tags: - // protected - - // pageSize: Integer - // Argument to data provider. - // Specifies maximum number of search results to return per query - pageSize: Infinity, - - // store: [const] dojo/store/api/Store - // Reference to data provider object used by this ComboBox. - // The store must accept an object hash of properties for its query. See `query` and `queryExpr` for details. - store: null, - - // fetchProperties: Object - // Mixin to the store's fetch. - // For example, to set the sort order of the ComboBox menu, pass: - // | { sort: [{attribute:"name",descending: true}] } - // To override the default queryOptions so that deep=false, do: - // | { queryOptions: {ignoreCase: true, deep: false} } - fetchProperties:{}, - - // query: Object - // A query that can be passed to `store` to initially filter the items. - // ComboBox overwrites any reference to the `searchAttr` and sets it to the `queryExpr` with the user's input substituted. - query: {}, - - // searchDelay: Integer - // Delay in milliseconds between when user types something and we start - // searching based on that value - searchDelay: 200, - - // searchAttr: String - // Search for items in the data store where this attribute (in the item) - // matches what the user typed - searchAttr: "name", - - // queryExpr: String - // This specifies what query is sent to the data store, - // based on what the user has typed. Changing this expression will modify - // whether the results are only exact matches, a "starting with" match, - // etc. - // dojo.data query expression pattern. - // `${0}` will be substituted for the user text. - // `*` is used for wildcards. - // `${0}*` means "starts with", `*${0}*` means "contains", `${0}` means "is" - queryExpr: "${0}*", - - // ignoreCase: Boolean - // Set true if the query should ignore case when matching possible items - ignoreCase: true, - - _abortQuery: function(){ - // stop in-progress query - if(this.searchTimer){ - this.searchTimer = this.searchTimer.remove(); - } - if(this._queryDeferHandle){ - this._queryDeferHandle = this._queryDeferHandle.remove(); - } - if(this._fetchHandle){ - if(this._fetchHandle.abort){ - this._cancelingQuery = true; - this._fetchHandle.abort(); - this._cancelingQuery = false; - } - if(this._fetchHandle.cancel){ - this._cancelingQuery = true; - this._fetchHandle.cancel(); - this._cancelingQuery = false; - } - this._fetchHandle = null; - } - }, - - _processInput: function(/*Event*/ evt){ - // summary: - // Handles input (keyboard/paste) events - if(this.disabled || this.readOnly){ return; } - var key = evt.charOrCode; - - // except for cutting/pasting case - ctrl + x/v - if(evt.altKey || ((evt.ctrlKey || evt.metaKey) && (key != 'x' && key != 'v')) || key == keys.SHIFT){ - return; // throw out weird key combinations and spurious events - } - - var doSearch = false; - this._prev_key_backspace = false; - - switch(key){ - case keys.DELETE: - case keys.BACKSPACE: - this._prev_key_backspace = true; - this._maskValidSubsetError = true; - doSearch = true; - break; - - default: - // Non char keys (F1-F12 etc..) shouldn't start a search.. - // Ascii characters and IME input (Chinese, Japanese etc.) should. - //IME input produces keycode == 229. - doSearch = typeof key == 'string' || key == 229; - } - if(doSearch){ - // need to wait a tad before start search so that the event - // bubbles through DOM and we have value visible - if(!this.store){ - this.onSearch(); - }else{ - this.searchTimer = this.defer("_startSearchFromInput", 1); - } - } - }, - - onSearch: function(/*===== results, query, options =====*/){ - // summary: - // Callback when a search completes. - // - // results: Object - // An array of items from the originating _SearchMixin's store. - // - // query: Object - // A copy of the originating _SearchMixin's query property. - // - // options: Object - // The additional parameters sent to the originating _SearchMixin's store, including: start, count, queryOptions. - // - // tags: - // callback - }, - - _startSearchFromInput: function(){ - this._startSearch(this.focusNode.value.replace(/([\\\*\?])/g, "\\$1")); - }, - - _startSearch: function(/*String*/ text){ - // summary: - // Starts a search for elements matching text (text=="" means to return all items), - // and calls onSearch(...) when the search completes, to display the results. - - this._abortQuery(); - var - _this = this, - // Setup parameters to be passed to store.query(). - // Create a new query to prevent accidentally querying for a hidden - // value from FilteringSelect's keyField - query = lang.clone(this.query), // #5970 - options = { - start: 0, - count: this.pageSize, - queryOptions: { // remove for 2.0 - ignoreCase: this.ignoreCase, - deep: true - } - }, - qs = string.substitute(this.queryExpr, [text]), - q, - startQuery = function(){ - var resPromise = _this._fetchHandle = _this.store.query(query, options); - if(_this.disabled || _this.readOnly || (q !== _this._lastQuery)){ - return; - } // avoid getting unwanted notify - when(resPromise, function(res){ - _this._fetchHandle = null; - if(!_this.disabled && !_this.readOnly && (q === _this._lastQuery)){ // avoid getting unwanted notify - when(resPromise.total, function(total){ - res.total = total; - var pageSize = _this.pageSize; - if(isNaN(pageSize) || pageSize > res.total){ pageSize = res.total; } - // Setup method to fetching the next page of results - res.nextPage = function(direction){ - // tell callback the direction of the paging so the screen - // reader knows which menu option to shout - options.direction = direction = direction !== false; - options.count = pageSize; - if(direction){ - options.start += res.length; - if(options.start >= res.total){ - options.count = 0; - } - }else{ - options.start -= pageSize; - if(options.start < 0){ - options.count = Math.max(pageSize + options.start, 0); - options.start = 0; - } - } - if(options.count <= 0){ - res.length = 0; - _this.onSearch(res, query, options); - }else{ - startQuery(); - } - }; - _this.onSearch(res, query, options); - }); - } - }, function(err){ - _this._fetchHandle = null; - if(!_this._cancelingQuery){ // don't treat canceled query as an error - console.error(_this.declaredClass + ' ' + err.toString()); - } - }); - }; - - lang.mixin(options, this.fetchProperties); - - // Generate query - if(this.store._oldAPI){ - // remove this branch for 2.0 - q = qs; - }else{ - // Query on searchAttr is a regex for benefit of dojo/store/Memory, - // but with a toString() method to help dojo/store/JsonRest. - // Search string like "Co*" converted to regex like /^Co.*$/i. - q = filter.patternToRegExp(qs, this.ignoreCase); - q.toString = function(){ return qs; }; - } - - // set _lastQuery, *then* start the timeout - // otherwise, if the user types and the last query returns before the timeout, - // _lastQuery won't be set and their input gets rewritten - this._lastQuery = query[this.searchAttr] = q; - this._queryDeferHandle = this.defer(startQuery, this.searchDelay); - }, - - //////////// INITIALIZATION METHODS /////////////////////////////////////// - - constructor: function(){ - this.query={}; - this.fetchProperties={}; - }, - - postMixInProperties: function(){ - if(!this.store){ - var list = this.list; - if(list){ - this.store = registry.byId(list); - } - } - this.inherited(arguments); - } - }); -}); - -}, -'dojo/parser':function(){ -define( - "dojo/parser", ["require", "./_base/kernel", "./_base/lang", "./_base/array", "./_base/config", "./_base/html", "./_base/window", - "./_base/url", "./_base/json", "./aspect", "./date/stamp", "./Deferred", "./has", "./query", "./on", "./ready"], - function(require, dojo, dlang, darray, config, dhtml, dwindow, _Url, djson, aspect, dates, Deferred, has, query, don, ready){ - - // module: - // dojo/parser - - new Date("X"); // workaround for #11279, new Date("") == NaN - - - // Widgets like BorderContainer add properties to _Widget via dojo.extend(). - // If BorderContainer is loaded after _Widget's parameter list has been cached, - // we need to refresh that parameter list (for _Widget and all widgets that extend _Widget). - var extendCnt = 0; - aspect.after(dlang, "extend", function(){ - extendCnt++; - }, true); - - function getNameMap(ctor){ - // summary: - // Returns map from lowercase name to attribute name in class, ex: {onclick: "onClick"} - var map = ctor._nameCaseMap, proto = ctor.prototype; - - // Create the map if it's undefined. - // Refresh the map if a superclass was possibly extended with new methods since the map was created. - if(!map || map._extendCnt < extendCnt){ - map = ctor._nameCaseMap = {}; - for(var name in proto){ - if(name.charAt(0) === "_"){ continue; } // skip internal properties - map[name.toLowerCase()] = name; - } - map._extendCnt = extendCnt; - } - return map; - } - - // Map from widget name or list of widget names(ex: "dijit/form/Button,acme/MyMixin") to a constructor. - var _ctorMap = {}; - - function getCtor(/*String[]*/ types){ - // summary: - // Retrieves a constructor. If the types array contains more than one class/MID then the - // subsequent classes will be mixed into the first class and a unique constructor will be - // returned for that array. - - var ts = types.join(); - if(!_ctorMap[ts]){ - var mixins = []; - for(var i = 0, l = types.length; i < l; i++){ - var t = types[i]; - // TODO: Consider swapping getObject and require in the future - mixins[mixins.length] = (_ctorMap[t] = _ctorMap[t] || (dlang.getObject(t) || (~t.indexOf('/') && require(t)))); - } - var ctor = mixins.shift(); - _ctorMap[ts] = mixins.length ? (ctor.createSubclass ? ctor.createSubclass(mixins) : ctor.extend.apply(ctor, mixins)) : ctor; - } - - return _ctorMap[ts]; - } - - var parser = { - // summary: - // The Dom/Widget parsing package - - _clearCache: function(){ - // summary: - // Clear cached data. Used mainly for benchmarking. - extendCnt++; - _ctorMap = {}; - }, - - _functionFromScript: function(script, attrData){ - // summary: - // Convert a `<script type="dojo/method" args="a, b, c"> ... </script>` - // into a function - // script: DOMNode - // The `<script>` DOMNode - // attrData: String - // For HTML5 compliance, searches for attrData + "args" (typically - // "data-dojo-args") instead of "args" - var preamble = "", - suffix = "", - argsStr = (script.getAttribute(attrData + "args") || script.getAttribute("args")), - withStr = script.getAttribute("with"); - - // Convert any arguments supplied in script tag into an array to be passed to the - var fnArgs = (argsStr || "").split(/\s*,\s*/); - - if(withStr && withStr.length){ - darray.forEach(withStr.split(/\s*,\s*/), function(part){ - preamble += "with("+part+"){"; - suffix += "}"; - }); - } - - return new Function(fnArgs, preamble + script.innerHTML + suffix); - }, - - instantiate: function(nodes, mixin, options){ - // summary: - // Takes array of nodes, and turns them into class instances and - // potentially calls a startup method to allow them to connect with - // any children. - // nodes: Array - // Array of DOM nodes - // mixin: Object? - // An object that will be mixed in with each node in the array. - // Values in the mixin will override values in the node, if they - // exist. - // options: Object? - // An object used to hold kwArgs for instantiation. - // See parse.options argument for details. - - mixin = mixin || {}; - options = options || {}; - - var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" - attrData = "data-" + (options.scope || dojo._scopeName) + "-",// typically "data-dojo-" - dataDojoType = attrData + "type", // typically "data-dojo-type" - dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" - - var list = []; - darray.forEach(nodes, function(node){ - var type = dojoType in mixin ? mixin[dojoType] : node.getAttribute(dataDojoType) || node.getAttribute(dojoType); - if(type){ - var mixinsValue = node.getAttribute(dataDojoMixins), - types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; - - list.push({ - node: node, - types: types - }); - } - }); - - // Instantiate the nodes and return the objects - return this._instantiate(list, mixin, options); - }, - - _instantiate: function(nodes, mixin, options){ - // summary: - // Takes array of objects representing nodes, and turns them into class instances and - // potentially calls a startup method to allow them to connect with - // any children. - // nodes: Array - // Array of objects like - // | { - // | ctor: Function (may be null) - // | types: ["dijit/form/Button", "acme/MyMixin"] (used if ctor not specified) - // | node: DOMNode, - // | scripts: [ ... ], // array of <script type="dojo/..."> children of node - // | inherited: { ... } // settings inherited from ancestors like dir, theme, etc. - // | } - // mixin: Object - // An object that will be mixed in with each node in the array. - // Values in the mixin will override values in the node, if they - // exist. - // options: Object - // An options object used to hold kwArgs for instantiation. - // See parse.options argument for details. - - // Call widget constructors - var thelist = darray.map(nodes, function(obj){ - var ctor = obj.ctor || getCtor(obj.types); - // If we still haven't resolved a ctor, it is fatal now - if(!ctor){ - throw new Error("Unable to resolve constructor for: '" + obj.types.join() + "'"); - } - return this.construct(ctor, obj.node, mixin, options, obj.scripts, obj.inherited); - }, this); - - // Call startup on each top level instance if it makes sense (as for - // widgets). Parent widgets will recursively call startup on their - // (non-top level) children - if(!mixin._started && !options.noStart){ - darray.forEach(thelist, function(instance){ - if(typeof instance.startup === "function" && !instance._started){ - instance.startup(); - } - }); - } - - return thelist; - }, - - construct: function(ctor, node, mixin, options, scripts, inherited){ - // summary: - // Calls new ctor(params, node), where params is the hash of parameters specified on the node, - // excluding data-dojo-type and data-dojo-mixins. Does not call startup(). Returns the widget. - // ctor: Function - // Widget constructor. - // node: DOMNode - // This node will be replaced/attached to by the widget. It also specifies the arguments to pass to ctor. - // mixin: Object? - // Attributes in this object will be passed as parameters to ctor, - // overriding attributes specified on the node. - // options: Object? - // An options object used to hold kwArgs for instantiation. See parse.options argument for details. - // scripts: DomNode[]? - // Array of `<script type="dojo/*">` DOMNodes. If not specified, will search for `<script>` tags inside node. - // inherited: Object? - // Settings from dir=rtl or lang=... on a node above this node. Overrides options.inherited. - - var proto = ctor && ctor.prototype; - options = options || {}; - - // Setup hash to hold parameter settings for this widget. Start with the parameter - // settings inherited from ancestors ("dir" and "lang"). - // Inherited setting may later be overridden by explicit settings on node itself. - var params = {}; - - if(options.defaults){ - // settings for the document itself (or whatever subtree is being parsed) - dlang.mixin(params, options.defaults); - } - if(inherited){ - // settings from dir=rtl or lang=... on a node above this node - dlang.mixin(params, inherited); - } - - // Get list of attributes explicitly listed in the markup - var attributes; - if(has("dom-attributes-explicit")){ - // Standard path to get list of user specified attributes - attributes = node.attributes; - }else if(has("dom-attributes-specified-flag")){ - // Special processing needed for IE8, to skip a few faux values in attributes[] - attributes = darray.filter(node.attributes, function(a){ return a.specified;}); - }else{ - // Special path for IE6-7, avoid (sometimes >100) bogus entries in node.attributes - var clone = /^input$|^img$/i.test(node.nodeName) ? node : node.cloneNode(false), - attrs = clone.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g, "").replace(/^\s*<[a-zA-Z0-9]*\s*/, "").replace(/\s*>.*$/, ""); - - attributes = darray.map(attrs.split(/\s+/), function(name){ - var lcName = name.toLowerCase(); - return { - name: name, - // getAttribute() doesn't work for button.value, returns innerHTML of button. - // but getAttributeNode().value doesn't work for the form.encType or li.value - value: (node.nodeName == "LI" && name == "value") || lcName == "enctype" ? - node.getAttribute(lcName) : node.getAttributeNode(lcName).value - }; - }); - } - - // Hash to convert scoped attribute name (ex: data-dojo17-params) to something friendly (ex: data-dojo-params) - // TODO: remove scope for 2.0 - var scope = options.scope || dojo._scopeName, - attrData = "data-" + scope + "-", // typically "data-dojo-" - hash = {}; - if(scope !== "dojo"){ - hash[attrData + "props"] = "data-dojo-props"; - hash[attrData + "type"] = "data-dojo-type"; - hash[attrData + "mixins"] = "data-dojo-mixins"; - hash[scope + "type"] = "dojoType"; - hash[attrData + "id"] = "data-dojo-id"; - } - - // Read in attributes and process them, including data-dojo-props, data-dojo-type, - // dojoAttachPoint, etc., as well as normal foo=bar attributes. - var i=0, item, funcAttrs=[], jsname, extra; - while(item = attributes[i++]){ - var name = item.name, - lcName = name.toLowerCase(), - value = item.value; - - switch(hash[lcName] || lcName){ - // Already processed, just ignore - case "data-dojo-type": - case "dojotype": - case "data-dojo-mixins": - break; - - // Data-dojo-props. Save for later to make sure it overrides direct foo=bar settings - case "data-dojo-props": - extra = value; - break; - - // data-dojo-id or jsId. TODO: drop jsId in 2.0 - case "data-dojo-id": - case "jsid": - jsname = value; - break; - - // For the benefit of _Templated - case "data-dojo-attach-point": - case "dojoattachpoint": - params.dojoAttachPoint = value; - break; - case "data-dojo-attach-event": - case "dojoattachevent": - params.dojoAttachEvent = value; - break; - - // Special parameter handling needed for IE - case "class": - params["class"] = node.className; - break; - case "style": - params["style"] = node.style && node.style.cssText; - break; - default: - // Normal attribute, ex: value="123" - - // Find attribute in widget corresponding to specified name. - // May involve case conversion, ex: onclick --> onClick - if(!(name in proto)){ - var map = getNameMap(ctor); - name = map[lcName] || name; - } - - // Set params[name] to value, doing type conversion - if(name in proto){ - switch(typeof proto[name]){ - case "string": - params[name] = value; - break; - case "number": - params[name] = value.length ? Number(value) : NaN; - break; - case "boolean": - // for checked/disabled value might be "" or "checked". interpret as true. - params[name] = value.toLowerCase() != "false"; - break; - case "function": - if(value === "" || value.search(/[^\w\.]+/i) != -1){ - // The user has specified some text for a function like "return x+5" - params[name] = new Function(value); - }else{ - // The user has specified the name of a global function like "myOnClick" - // or a single word function "return" - params[name] = dlang.getObject(value, false) || new Function(value); - } - funcAttrs.push(name); // prevent "double connect", see #15026 - break; - default: - var pVal = proto[name]; - params[name] = - (pVal && "length" in pVal) ? (value ? value.split(/\s*,\s*/) : []) : // array - (pVal instanceof Date) ? - (value == "" ? new Date("") : // the NaN of dates - value == "now" ? new Date() : // current date - dates.fromISOString(value)) : - (pVal instanceof _Url) ? (dojo.baseUrl + value) : - djson.fromJson(value); - } - }else{ - params[name] = value; - } - } - } - - // Remove function attributes from DOMNode to prevent "double connect" problem, see #15026. - // Do this as a separate loop since attributes[] is often a live collection (depends on the browser though). - for(var j=0; j<funcAttrs.length; j++){ - var lcfname = funcAttrs[j].toLowerCase(); - node.removeAttribute(lcfname); - node[lcfname] = null; - } - - // Mix things found in data-dojo-props into the params, overriding any direct settings - if(extra){ - try{ - extra = djson.fromJson.call(options.propsThis, "{" + extra + "}"); - dlang.mixin(params, extra); - }catch(e){ - // give the user a pointer to their invalid parameters. FIXME: can we kill this in production? - throw new Error(e.toString() + " in data-dojo-props='" + extra + "'"); - } - } - - // Any parameters specified in "mixin" override everything else. - dlang.mixin(params, mixin); - - // Get <script> nodes associated with this widget, if they weren't specified explicitly - if(!scripts){ - scripts = (ctor && (ctor._noScript || proto._noScript) ? [] : query("> script[type^='dojo/']", node)); - } - - // Process <script type="dojo/*"> script tags - // <script type="dojo/method" event="foo"> tags are added to params, and passed to - // the widget on instantiation. - // <script type="dojo/method"> tags (with no event) are executed after instantiation - // <script type="dojo/connect" data-dojo-event="foo"> tags are dojo.connected after instantiation - // <script type="dojo/watch" data-dojo-prop="foo"> tags are dojo.watch after instantiation - // <script type="dojo/on" data-dojo-event="foo"> tags are dojo.on after instantiation - // note: dojo/* script tags cannot exist in self closing widgets, like <input /> - var aspects = [], // aspects to connect after instantiation - calls = [], // functions to call after instantiation - watches = [], // functions to watch after instantiation - ons = []; // functions to on after instantiation - - if(scripts){ - for(i=0; i<scripts.length; i++){ - var script = scripts[i]; - node.removeChild(script); - // FIXME: drop event="" support in 2.0. use data-dojo-event="" instead - var event = (script.getAttribute(attrData + "event") || script.getAttribute("event")), - prop = script.getAttribute(attrData + "prop"), - method = script.getAttribute(attrData + "method"), - advice = script.getAttribute(attrData + "advice"), - scriptType = script.getAttribute("type"), - nf = this._functionFromScript(script, attrData); - if(event){ - if(scriptType == "dojo/connect"){ - aspects.push({ method: event, func: nf }); - }else if(scriptType == "dojo/on"){ - ons.push({ event: event, func: nf }); - }else{ - params[event] = nf; - } - }else if(scriptType == "dojo/aspect"){ - aspects.push({ method: method, advice: advice, func: nf }); - }else if(scriptType == "dojo/watch"){ - watches.push({ prop: prop, func: nf }); - }else{ - calls.push(nf); - } - } - } - - // create the instance - var markupFactory = ctor.markupFactory || proto.markupFactory; - var instance = markupFactory ? markupFactory(params, node, ctor) : new ctor(params, node); - - // map it to the JS namespace if that makes sense - if(jsname){ - dlang.setObject(jsname, instance); - } - - // process connections and startup functions - for(i=0; i<aspects.length; i++){ - aspect[aspects[i].advice || "after"](instance, aspects[i].method, dlang.hitch(instance, aspects[i].func), true); - } - for(i=0; i<calls.length; i++){ - calls[i].call(instance); - } - for(i=0; i<watches.length; i++){ - instance.watch(watches[i].prop, watches[i].func); - } - for(i=0; i<ons.length; i++){ - don(instance, ons[i].event, ons[i].func); - } - - return instance; - }, - - scan: function(root, options){ - // summary: - // Scan a DOM tree and return an array of objects representing the DOMNodes - // that need to be turned into widgets. - // description: - // Search specified node (or document root node) recursively for class instances - // and return an array of objects that represent potential widgets to be - // instantiated. Searches for either data-dojo-type="MID" or dojoType="MID" where - // "MID" is a module ID like "dijit/form/Button" or a fully qualified Class name - // like "dijit/form/Button". If the MID is not currently available, scan will - // attempt to require() in the module. - // - // See parser.parse() for details of markup. - // root: DomNode? - // A default starting root node from which to start the parsing. Can be - // omitted, defaulting to the entire document. If omitted, the `options` - // object can be passed in this place. If the `options` object has a - // `rootNode` member, that is used. - // options: Object - // a kwArgs options object, see parse() for details - // - // returns: Promise - // A promise that is resolved with the nodes that have been parsed. - - var list = [], // Output List - mids = [], // An array of modules that are not yet loaded - midsHash = {}; // Used to keep the mids array unique - - var dojoType = (options.scope || dojo._scopeName) + "Type", // typically "dojoType" - attrData = "data-" + (options.scope || dojo._scopeName) + "-", // typically "data-dojo-" - dataDojoType = attrData + "type", // typically "data-dojo-type" - dataDojoTextDir = attrData + "textdir", // typically "data-dojo-textdir" - dataDojoMixins = attrData + "mixins"; // typically "data-dojo-mixins" - - // Info on DOMNode currently being processed - var node = root.firstChild; - - // Info on parent of DOMNode currently being processed - // - inherited: dir, lang, and textDir setting of parent, or inherited by parent - // - parent: pointer to identical structure for my parent (or null if no parent) - // - scripts: if specified, collects <script type="dojo/..."> type nodes from children - var inherited = options.inherited; - if(!inherited){ - function findAncestorAttr(node, attr){ - return (node.getAttribute && node.getAttribute(attr)) || - (node.parentNode && findAncestorAttr(node.parentNode, attr)); - } - inherited = { - dir: findAncestorAttr(root, "dir"), - lang: findAncestorAttr(root, "lang"), - textDir: findAncestorAttr(root, dataDojoTextDir) - }; - for(var key in inherited){ - if(!inherited[key]){ delete inherited[key]; } - } - } - - // Metadata about parent node - var parent = { - inherited: inherited - }; - - // For collecting <script type="dojo/..."> type nodes (when null, we don't need to collect) - var scripts; - - // when true, only look for <script type="dojo/..."> tags, and don't recurse to children - var scriptsOnly; - - function getEffective(parent){ - // summary: - // Get effective dir, lang, textDir settings for specified obj - // (matching "parent" object structure above), and do caching. - // Take care not to return null entries. - if(!parent.inherited){ - parent.inherited = {}; - var node = parent.node, - grandparent = getEffective(parent.parent); - var inherited = { - dir: node.getAttribute("dir") || grandparent.dir, - lang: node.getAttribute("lang") || grandparent.lang, - textDir: node.getAttribute(dataDojoTextDir) || grandparent.textDir - }; - for(var key in inherited){ - if(inherited[key]){ - parent.inherited[key] = inherited[key]; - } - } - } - return parent.inherited; - } - - // DFS on DOM tree, collecting nodes with data-dojo-type specified. - while(true){ - if(!node){ - // Finished this level, continue to parent's next sibling - if(!parent || !parent.node){ - break; - } - node = parent.node.nextSibling; - scriptsOnly = false; - parent = parent.parent; - scripts = parent.scripts; - continue; - } - - if(node.nodeType != 1){ - // Text or comment node, skip to next sibling - node = node.nextSibling; - continue; - } - - if(scripts && node.nodeName.toLowerCase() == "script"){ - // Save <script type="dojo/..."> for parent, then continue to next sibling - type = node.getAttribute("type"); - if(type && /^dojo\/\w/i.test(type)){ - scripts.push(node); - } - node = node.nextSibling; - continue; - } - if(scriptsOnly){ - // scriptsOnly flag is set, we have already collected scripts if the parent wants them, so now we shouldn't - // continue further analysis of the node and will continue to the next sibling - node = node.nextSibling; - continue; - } - - // Check for data-dojo-type attribute, fallback to backward compatible dojoType - // TODO: Remove dojoType in 2.0 - var type = node.getAttribute(dataDojoType) || node.getAttribute(dojoType); - - // Short circuit for leaf nodes containing nothing [but text] - var firstChild = node.firstChild; - if(!type && (!firstChild || (firstChild.nodeType == 3 && !firstChild.nextSibling))){ - node = node.nextSibling; - continue; - } - - // Meta data about current node - var current; - - var ctor = null; - if(type){ - // If dojoType/data-dojo-type specified, add to output array of nodes to instantiate. - var mixinsValue = node.getAttribute(dataDojoMixins), - types = mixinsValue ? [type].concat(mixinsValue.split(/\s*,\s*/)) : [type]; - - // Note: won't find classes declared via dojo/Declaration or any modules that haven't been - // loaded yet so use try/catch to avoid throw from require() - try{ - ctor = getCtor(types); - }catch(e){} - - // If the constructor was not found, check to see if it has modules that can be loaded - if(!ctor){ - darray.forEach(types, function(t){ - if(~t.indexOf('/') && !midsHash[t]){ - // If the type looks like a MID and it currently isn't in the array of MIDs to load, add it. - midsHash[t] = true; - mids[mids.length] = t; - } - }); - } - - var childScripts = ctor && !ctor.prototype._noScript ? [] : null; // <script> nodes that are parent's children - - // Setup meta data about this widget node, and save it to list of nodes to instantiate - current = { - types: types, - ctor: ctor, - parent: parent, - node: node, - scripts: childScripts - }; - current.inherited = getEffective(current); // dir & lang settings for current node, explicit or inherited - list.push(current); - }else{ - // Meta data about this non-widget node - current = { - node: node, - scripts: scripts, - parent: parent - }; - } - - // Recurse, collecting <script type="dojo/..."> children, and also looking for - // descendant nodes with dojoType specified (unless the widget has the stopParser flag). - // When finished with children, go to my next sibling. - node = firstChild; - scripts = childScripts; - scriptsOnly = ctor && ctor.prototype.stopParser && !(options.template); - parent = current; - } - - var d = new Deferred(); - - // If there are modules to load then require them in - if(mids.length){ - // Warn that there are modules being auto-required - if(has("dojo-debug-messages")){ - console.warn("WARNING: Modules being Auto-Required: " + mids.join(", ")); - } - require(mids, function(){ - // Go through list of widget nodes, filling in missing constructors, and filtering out nodes that shouldn't - // be instantiated due to a stopParser flag on an ancestor that we belatedly learned about due to - // auto-require of a module like ContentPane. Assumes list is in DFS order. - d.resolve(darray.filter(list, function(widget){ - if(!widget.ctor){ - // Attempt to find the constructor again. Still won't find classes defined via - // dijit/Declaration so need to try/catch. - try{ - widget.ctor = getCtor(widget.types); - }catch(e){} - } - - // Get the parent widget - var parent = widget.parent; - while(parent && !parent.types){ - parent = parent.parent; - } - - // Return false if this node should be skipped due to stopParser on an ancestor. - // Since list[] is in DFS order, this loop will always set parent.instantiateChildren before - // trying to compute widget.instantiate. - var proto = widget.ctor && widget.ctor.prototype; - widget.instantiateChildren = !(proto && proto.stopParser && !(options.template)); - widget.instantiate = !parent || (parent.instantiate && parent.instantiateChildren); - return widget.instantiate; - })); - }); - }else{ - // There were no modules to load, so just resolve with the parsed nodes. This separate code path is for - // efficiency, to avoid running the require() and the callback code above. - d.resolve(list); - } - - // Return the promise - return d.promise; - }, - - _require: function(/*DOMNode*/ script){ - // summary: - // Helper for _scanAMD(). Takes a `<script type=dojo/require>bar: "acme/bar", ...</script>` node, - // calls require() to load the specified modules and (asynchronously) assign them to the specified global - // variables, and returns a Promise for when that operation completes. - // - // In the example above, it is effectively doing a require(["acme/bar", ...], function(a){ bar = a; }). - - var hash = djson.fromJson("{" + script.innerHTML + "}"), - vars = [], - mids = [], - d = new Deferred(); - - for(var name in hash){ - vars.push(name); - mids.push(hash[name]); - } - - require(mids, function(){ - for(var i=0; i<vars.length; i++){ - dlang.setObject(vars[i], arguments[i]); - } - d.resolve(arguments); - }); - - return d.promise; - }, - - _scanAmd: function(root){ - // summary: - // Scans the DOM for any declarative requires and returns their values. - // description: - // Looks for `<script type=dojo/require>bar: "acme/bar", ...</script>` node, calls require() to load the - // specified modules and (asynchronously) assign them to the specified global variables, - // and returns a Promise for when those operations complete. - // root: DomNode - // The node to base the scan from. - - // Promise that resolves when all the <script type=dojo/require> nodes have finished loading. - var deferred = new Deferred(), - promise = deferred.promise; - deferred.resolve(true); - - var self = this; - query("script[type='dojo/require']", root).forEach(function(node){ - // Fire off require() call for specified modules. Chain this require to fire after - // any previous requires complete, so that layers can be loaded before individual module require()'s fire. - promise = promise.then(function(){ return self._require(node); }); - - // Remove from DOM so it isn't seen again - node.parentNode.removeChild(node); - }); - - return promise; - }, - - parse: function(rootNode, options){ - // summary: - // Scan the DOM for class instances, and instantiate them. - // description: - // Search specified node (or root node) recursively for class instances, - // and instantiate them. Searches for either data-dojo-type="Class" or - // dojoType="Class" where "Class" is a a fully qualified class name, - // like `dijit/form/Button` - // - // Using `data-dojo-type`: - // Attributes using can be mixed into the parameters used to instantiate the - // Class by using a `data-dojo-props` attribute on the node being converted. - // `data-dojo-props` should be a string attribute to be converted from JSON. - // - // Using `dojoType`: - // Attributes are read from the original domNode and converted to appropriate - // types by looking up the Class prototype values. This is the default behavior - // from Dojo 1.0 to Dojo 1.5. `dojoType` support is deprecated, and will - // go away in Dojo 2.0. - // rootNode: DomNode? - // A default starting root node from which to start the parsing. Can be - // omitted, defaulting to the entire document. If omitted, the `options` - // object can be passed in this place. If the `options` object has a - // `rootNode` member, that is used. - // options: Object? - // A hash of options. - // - // - noStart: Boolean?: - // when set will prevent the parser from calling .startup() - // when locating the nodes. - // - rootNode: DomNode?: - // identical to the function's `rootNode` argument, though - // allowed to be passed in via this `options object. - // - template: Boolean: - // If true, ignores ContentPane's stopParser flag and parses contents inside of - // a ContentPane inside of a template. This allows dojoAttachPoint on widgets/nodes - // nested inside the ContentPane to work. - // - inherited: Object: - // Hash possibly containing dir and lang settings to be applied to - // parsed widgets, unless there's another setting on a sub-node that overrides - // - scope: String: - // Root for attribute names to search for. If scopeName is dojo, - // will search for data-dojo-type (or dojoType). For backwards compatibility - // reasons defaults to dojo._scopeName (which is "dojo" except when - // multi-version support is used, when it will be something like dojo16, dojo20, etc.) - // - propsThis: Object: - // If specified, "this" referenced from data-dojo-props will refer to propsThis. - // Intended for use from the widgets-in-template feature of `dijit._WidgetsInTemplateMixin` - // returns: Mixed - // Returns a blended object that is an array of the instantiated objects, but also can include - // a promise that is resolved with the instantiated objects. This is done for backwards - // compatibility. If the parser auto-requires modules, it will always behave in a promise - // fashion and `parser.parse().then(function(instances){...})` should be used. - // example: - // Parse all widgets on a page: - // | parser.parse(); - // example: - // Parse all classes within the node with id="foo" - // | parser.parse(dojo.byId('foo')); - // example: - // Parse all classes in a page, but do not call .startup() on any - // child - // | parser.parse({ noStart: true }) - // example: - // Parse all classes in a node, but do not call .startup() - // | parser.parse(someNode, { noStart:true }); - // | // or - // | parser.parse({ noStart:true, rootNode: someNode }); - - // determine the root node and options based on the passed arguments. - var root; - if(!options && rootNode && rootNode.rootNode){ - options = rootNode; - root = options.rootNode; - }else if(rootNode && dlang.isObject(rootNode) && !("nodeType" in rootNode)){ - options = rootNode; - }else{ - root = rootNode; - } - root = root ? dhtml.byId(root) : dwindow.body(); - - options = options || {}; - - var mixin = options.template ? { template: true } : {}, - instances = [], - self = this; - - // First scan for any <script type=dojo/require> nodes, and execute. - // Then scan for all nodes with data-dojo-type, and load any unloaded modules. - // Then build the object instances. Add instances to already existing (but empty) instances[] array, - // which may already have been returned to caller. Also, use otherwise to collect and throw any errors - // that occur during the parse(). - var p = - this._scanAmd(root, options).then(function(){ - return self.scan(root, options); - }).then(function(parsedNodes){ - return instances = instances.concat(self._instantiate(parsedNodes, mixin, options)); - }).otherwise(function(e){ - // TODO Modify to follow better pattern for promise error managment when available - console.error("dojo/parser::parse() error", e); - throw e; - }); - - // Blend the array with the promise - dlang.mixin(instances, p); - return instances; - } - }; - - if( 1 ){ - dojo.parser = parser; - } - - // Register the parser callback. It should be the first callback - // after the a11y test. - if(config.parseOnLoad){ - ready(100, parser, "parse"); - } - - return parser; -}); - -}, -'url:dijit/form/templates/DropDownButton.html':"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:_onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode,_popupStateNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">▼</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-point=\"valueNode\" role=\"presentation\"\n/></span>\n", -'dojo/dnd/Manager':function(){ -define("dojo/dnd/Manager", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", "../_base/window", - "../dom-class", "../Evented", "../has", "../keys", "../on", "../topic", "../touch", - "./common", "./autoscroll", "./Avatar" -], function(array, declare, event, lang, win, domClass, Evented, has, keys, on, topic, touch, - dnd, autoscroll, Avatar){ - -// module: -// dojo/dnd/Manager - -var Manager = declare("dojo.dnd.Manager", [Evented], { - // summary: - // the manager of DnD operations (usually a singleton) - constructor: function(){ - this.avatar = null; - this.source = null; - this.nodes = []; - this.copy = true; - this.target = null; - this.canDropFlag = false; - this.events = []; - }, - - // avatar's offset from the mouse - OFFSET_X: has("touch") ? 0 : 16, - OFFSET_Y: has("touch") ? -64 : 16, - - // methods - overSource: function(source){ - // summary: - // called when a source detected a mouse-over condition - // source: Object - // the reporter - if(this.avatar){ - this.target = (source && source.targetState != "Disabled") ? source : null; - this.canDropFlag = Boolean(this.target); - this.avatar.update(); - } - topic.publish("/dnd/source/over", source); - }, - outSource: function(source){ - // summary: - // called when a source detected a mouse-out condition - // source: Object - // the reporter - if(this.avatar){ - if(this.target == source){ - this.target = null; - this.canDropFlag = false; - this.avatar.update(); - topic.publish("/dnd/source/over", null); - } - }else{ - topic.publish("/dnd/source/over", null); - } - }, - startDrag: function(source, nodes, copy){ - // summary: - // called to initiate the DnD operation - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - - // Tell autoscroll that a drag is starting - autoscroll.autoScrollStart(win.doc); - - this.source = source; - this.nodes = nodes; - this.copy = Boolean(copy); // normalizing to true boolean - this.avatar = this.makeAvatar(); - win.body().appendChild(this.avatar.node); - topic.publish("/dnd/start", source, nodes, this.copy); - this.events = [ - on(win.doc, touch.move, lang.hitch(this, "onMouseMove")), - on(win.doc, touch.release, lang.hitch(this, "onMouseUp")), - on(win.doc, "keydown", lang.hitch(this, "onKeyDown")), - on(win.doc, "keyup", lang.hitch(this, "onKeyUp")), - // cancel text selection and text dragging - on(win.doc, "dragstart", event.stop), - on(win.body(), "selectstart", event.stop) - ]; - var c = "dojoDnd" + (copy ? "Copy" : "Move"); - domClass.add(win.body(), c); - }, - canDrop: function(flag){ - // summary: - // called to notify if the current target can accept items - var canDropFlag = Boolean(this.target && flag); - if(this.canDropFlag != canDropFlag){ - this.canDropFlag = canDropFlag; - this.avatar.update(); - } - }, - stopDrag: function(){ - // summary: - // stop the DnD in progress - domClass.remove(win.body(), ["dojoDndCopy", "dojoDndMove"]); - array.forEach(this.events, function(handle){ handle.remove(); }); - this.events = []; - this.avatar.destroy(); - this.avatar = null; - this.source = this.target = null; - this.nodes = []; - }, - makeAvatar: function(){ - // summary: - // makes the avatar; it is separate to be overwritten dynamically, if needed - return new Avatar(this); - }, - updateAvatar: function(){ - // summary: - // updates the avatar; it is separate to be overwritten dynamically, if needed - this.avatar.update(); - }, - - // mouse event processors - onMouseMove: function(e){ - // summary: - // event processor for onmousemove - // e: Event - // mouse event - var a = this.avatar; - if(a){ - autoscroll.autoScrollNodes(e); - //autoscroll.autoScroll(e); - var s = a.node.style; - s.left = (e.pageX + this.OFFSET_X) + "px"; - s.top = (e.pageY + this.OFFSET_Y) + "px"; - var copy = Boolean(this.source.copyState(dnd.getCopyKeyState(e))); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - } - if(has("touch")){ - // Prevent page from scrolling so that user can drag instead. - e.preventDefault(); - } - }, - onMouseUp: function(e){ - // summary: - // event processor for onmouseup - // e: Event - // mouse event - if(this.avatar){ - if(this.target && this.canDropFlag){ - var copy = Boolean(this.source.copyState(dnd.getCopyKeyState(e))); - topic.publish("/dnd/drop/before", this.source, this.nodes, copy, this.target, e); - topic.publish("/dnd/drop", this.source, this.nodes, copy, this.target, e); - }else{ - topic.publish("/dnd/cancel"); - } - this.stopDrag(); - } - }, - - // keyboard event processors - onKeyDown: function(e){ - // summary: - // event processor for onkeydown: - // watching for CTRL for copy/move status, watching for ESCAPE to cancel the drag - // e: Event - // keyboard event - if(this.avatar){ - switch(e.keyCode){ - case keys.CTRL: - var copy = Boolean(this.source.copyState(true)); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - break; - case keys.ESCAPE: - topic.publish("/dnd/cancel"); - this.stopDrag(); - break; - } - } - }, - onKeyUp: function(e){ - // summary: - // event processor for onkeyup, watching for CTRL for copy/move status - // e: Event - // keyboard event - if(this.avatar && e.keyCode == keys.CTRL){ - var copy = Boolean(this.source.copyState(false)); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - } - }, - - // utilities - _setCopyStatus: function(copy){ - // summary: - // changes the copy status - // copy: Boolean - // the copy status - this.copy = copy; - this.source._markDndStatus(this.copy); - this.updateAvatar(); - domClass.replace(win.body(), - "dojoDnd" + (this.copy ? "Copy" : "Move"), - "dojoDnd" + (this.copy ? "Move" : "Copy")); - } -}); - -// dnd._manager: -// The manager singleton variable. Can be overwritten if needed. -dnd._manager = null; - -Manager.manager = dnd.manager = function(){ - // summary: - // Returns the current DnD manager. Creates one if it is not created yet. - if(!dnd._manager){ - dnd._manager = new Manager(); - } - return dnd._manager; // Object -}; - -return Manager; -}); - -}, -'dijit/form/ToggleButton':function(){ -define("dijit/form/ToggleButton", [ - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.deprecated - "./Button", - "./_ToggleButtonMixin" -], function(declare, kernel, Button, _ToggleButtonMixin){ - - // module: - // dijit/form/ToggleButton - - - return declare("dijit.form.ToggleButton", [Button, _ToggleButtonMixin], { - // summary: - // A templated button widget that can be in two states (checked or not). - // Can be base class for things like tabs or checkbox or radio buttons. - - baseClass: "dijitToggleButton", - - setChecked: function(/*Boolean*/ checked){ - // summary: - // Deprecated. Use set('checked', true/false) instead. - kernel.deprecated("setChecked("+checked+") is deprecated. Use set('checked',"+checked+") instead.", "", "2.0"); - this.set('checked', checked); - } - }); -}); - -}, -'dojo/date/stamp':function(){ -define("dojo/date/stamp", ["../_base/lang", "../_base/array"], function(lang, array){ - -// module: -// dojo/date/stamp - -var stamp = { - // summary: - // TODOC -}; -lang.setObject("dojo.date.stamp", stamp); - -// Methods to convert dates to or from a wire (string) format using well-known conventions - -stamp.fromISOString = function(/*String*/ formattedString, /*Number?*/ defaultTime){ - // summary: - // Returns a Date object given a string formatted according to a subset of the ISO-8601 standard. - // - // description: - // Accepts a string formatted according to a profile of ISO8601 as defined by - // [RFC3339](http://www.ietf.org/rfc/rfc3339.txt), except that partial input is allowed. - // Can also process dates as specified [by the W3C](http://www.w3.org/TR/NOTE-datetime) - // The following combinations are valid: - // - // - dates only - // - yyyy - // - yyyy-MM - // - yyyy-MM-dd - // - times only, with an optional time zone appended - // - THH:mm - // - THH:mm:ss - // - THH:mm:ss.SSS - // - and "datetimes" which could be any combination of the above - // - // timezones may be specified as Z (for UTC) or +/- followed by a time expression HH:mm - // Assumes the local time zone if not specified. Does not validate. Improperly formatted - // input may return null. Arguments which are out of bounds will be handled - // by the Date constructor (e.g. January 32nd typically gets resolved to February 1st) - // Only years between 100 and 9999 are supported. - // formattedString: - // A string such as 2005-06-30T08:05:00-07:00 or 2005-06-30 or T08:05:00 - // defaultTime: - // Used for defaults for fields omitted in the formattedString. - // Uses 1970-01-01T00:00:00.0Z by default. - - if(!stamp._isoRegExp){ - stamp._isoRegExp = -//TODO: could be more restrictive and check for 00-59, etc. - /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/; - } - - var match = stamp._isoRegExp.exec(formattedString), - result = null; - - if(match){ - match.shift(); - if(match[1]){match[1]--;} // Javascript Date months are 0-based - if(match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds - - if(defaultTime){ - // mix in defaultTime. Relatively expensive, so use || operators for the fast path of defaultTime === 0 - defaultTime = new Date(defaultTime); - array.forEach(array.map(["FullYear", "Month", "Date", "Hours", "Minutes", "Seconds", "Milliseconds"], function(prop){ - return defaultTime["get" + prop](); - }), function(value, index){ - match[index] = match[index] || value; - }); - } - result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0); //TODO: UTC defaults - if(match[0] < 100){ - result.setFullYear(match[0] || 1970); - } - - var offset = 0, - zoneSign = match[7] && match[7].charAt(0); - if(zoneSign != 'Z'){ - offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0); - if(zoneSign != '-'){ offset *= -1; } - } - if(zoneSign){ - offset -= result.getTimezoneOffset(); - } - if(offset){ - result.setTime(result.getTime() + offset * 60000); - } - } - - return result; // Date or null -}; - -/*===== -var __Options = { - // selector: String - // "date" or "time" for partial formatting of the Date object. - // Both date and time will be formatted by default. - // zulu: Boolean - // if true, UTC/GMT is used for a timezone - // milliseconds: Boolean - // if true, output milliseconds -}; -=====*/ - -stamp.toISOString = function(/*Date*/ dateObject, /*__Options?*/ options){ - // summary: - // Format a Date object as a string according a subset of the ISO-8601 standard - // - // description: - // When options.selector is omitted, output follows [RFC3339](http://www.ietf.org/rfc/rfc3339.txt) - // The local time zone is included as an offset from GMT, except when selector=='time' (time without a date) - // Does not check bounds. Only years between 100 and 9999 are supported. - // - // dateObject: - // A Date object - - var _ = function(n){ return (n < 10) ? "0" + n : n; }; - options = options || {}; - var formattedDate = [], - getter = options.zulu ? "getUTC" : "get", - date = ""; - if(options.selector != "time"){ - var year = dateObject[getter+"FullYear"](); - date = ["0000".substr((year+"").length)+year, _(dateObject[getter+"Month"]()+1), _(dateObject[getter+"Date"]())].join('-'); - } - formattedDate.push(date); - if(options.selector != "date"){ - var time = [_(dateObject[getter+"Hours"]()), _(dateObject[getter+"Minutes"]()), _(dateObject[getter+"Seconds"]())].join(':'); - var millis = dateObject[getter+"Milliseconds"](); - if(options.milliseconds){ - time += "."+ (millis < 100 ? "0" : "") + _(millis); - } - if(options.zulu){ - time += "Z"; - }else if(options.selector != "time"){ - var timezoneOffset = dateObject.getTimezoneOffset(); - var absOffset = Math.abs(timezoneOffset); - time += (timezoneOffset > 0 ? "-" : "+") + - _(Math.floor(absOffset/60)) + ":" + _(absOffset%60); - } - formattedDate.push(time); - } - return formattedDate.join('T'); // String -}; - -return stamp; -}); - -}, -'dojo/Stateful':function(){ -define("dojo/Stateful", ["./_base/declare", "./_base/lang", "./_base/array", "dojo/when"], function(declare, lang, array, when){ - // module: - // dojo/Stateful - -return declare("dojo.Stateful", null, { - // summary: - // Base class for objects that provide named properties with optional getter/setter - // control and the ability to watch for property changes - // - // The class also provides the functionality to auto-magically manage getters - // and setters for object attributes/properties. - // - // Getters and Setters should follow the format of _xxxGetter or _xxxSetter where - // the xxx is a name of the attribute to handle. So an attribute of "foo" - // would have a custom getter of _fooGetter and a custom setter of _fooSetter. - // - // example: - // | var obj = new dojo.Stateful(); - // | obj.watch("foo", function(){ - // | console.log("foo changed to " + this.get("foo")); - // | }); - // | obj.set("foo","bar"); - - // _attrPairNames: Hash - // Used across all instances a hash to cache attribute names and their getter - // and setter names. - _attrPairNames: {}, - - _getAttrNames: function(name){ - // summary: - // Helper function for get() and set(). - // Caches attribute name values so we don't do the string ops every time. - // tags: - // private - - var apn = this._attrPairNames; - if(apn[name]){ return apn[name]; } - return (apn[name] = { - s: "_" + name + "Setter", - g: "_" + name + "Getter" - }); - }, - - postscript: function(/*Object?*/ params){ - // Automatic setting of params during construction - if (params){ this.set(params); } - }, - - _get: function(name, names){ - // summary: - // Private function that does a get based off a hash of names - // names: - // Hash of names of custom attributes - return typeof this[names.g] === "function" ? this[names.g]() : this[name]; - }, - get: function(/*String*/name){ - // summary: - // Get a property on a Stateful instance. - // name: - // The property to get. - // returns: - // The property value on this Stateful instance. - // description: - // Get a named property on a Stateful object. The property may - // potentially be retrieved via a getter method in subclasses. In the base class - // this just retrieves the object's property. - // For example: - // | stateful = new dojo.Stateful({foo: 3}); - // | stateful.get("foo") // returns 3 - // | stateful.foo // returns 3 - - return this._get(name, this._getAttrNames(name)); //Any - }, - set: function(/*String*/name, /*Object*/value){ - // summary: - // Set a property on a Stateful instance - // name: - // The property to set. - // value: - // The value to set in the property. - // returns: - // The function returns this dojo.Stateful instance. - // description: - // Sets named properties on a stateful object and notifies any watchers of - // the property. A programmatic setter may be defined in subclasses. - // For example: - // | stateful = new dojo.Stateful(); - // | stateful.watch(function(name, oldValue, value){ - // | // this will be called on the set below - // | } - // | stateful.set(foo, 5); - // - // set() may also be called with a hash of name/value pairs, ex: - // | myObj.set({ - // | foo: "Howdy", - // | bar: 3 - // | }) - // This is equivalent to calling set(foo, "Howdy") and set(bar, 3) - - // If an object is used, iterate through object - if(typeof name === "object"){ - for(var x in name){ - if(name.hasOwnProperty(x) && x !="_watchCallbacks"){ - this.set(x, name[x]); - } - } - return this; - } - - var names = this._getAttrNames(name), - oldValue = this._get(name, names), - setter = this[names.s], - result; - if(typeof setter === "function"){ - // use the explicit setter - result = setter.apply(this, Array.prototype.slice.call(arguments, 1)); - }else{ - // no setter so set attribute directly - this[name] = value; - } - if(this._watchCallbacks){ - var self = this; - // If setter returned a promise, wait for it to complete, otherwise call watches immediatly - when(result, function(){ - self._watchCallbacks(name, oldValue, value); - }); - } - return this; // dojo/Stateful - }, - _changeAttrValue: function(name, value){ - // summary: - // Internal helper for directly changing an attribute value. - // - // name: String - // The property to set. - // value: Mixed - // The value to set in the property. - // - // description: - // Directly change the value of an attribute on an object, bypassing any - // accessor setter. Also handles the calling of watch and emitting events. - // It is designed to be used by descendent class when there are two values - // of attributes that are linked, but calling .set() is not appropriate. - - var oldValue = this.get(name); - this[name] = value; - if(this._watchCallbacks){ - this._watchCallbacks(name, oldValue, value); - } - return this; // dojo/Stateful - }, - watch: function(/*String?*/name, /*Function*/callback){ - // summary: - // Watches a property for changes - // name: - // Indicates the property to watch. This is optional (the callback may be the - // only parameter), and if omitted, all the properties will be watched - // returns: - // An object handle for the watch. The unwatch method of this object - // can be used to discontinue watching this property: - // | var watchHandle = obj.watch("foo", callback); - // | watchHandle.unwatch(); // callback won't be called now - // callback: - // The function to execute when the property changes. This will be called after - // the property has been changed. The callback will be called with the |this| - // set to the instance, the first argument as the name of the property, the - // second argument as the old value and the third argument as the new value. - - var callbacks = this._watchCallbacks; - if(!callbacks){ - var self = this; - callbacks = this._watchCallbacks = function(name, oldValue, value, ignoreCatchall){ - var notify = function(propertyCallbacks){ - if(propertyCallbacks){ - propertyCallbacks = propertyCallbacks.slice(); - for(var i = 0, l = propertyCallbacks.length; i < l; i++){ - propertyCallbacks[i].call(self, name, oldValue, value); - } - } - }; - notify(callbacks['_' + name]); - if(!ignoreCatchall){ - notify(callbacks["*"]); // the catch-all - } - }; // we use a function instead of an object so it will be ignored by JSON conversion - } - if(!callback && typeof name === "function"){ - callback = name; - name = "*"; - }else{ - // prepend with dash to prevent name conflicts with function (like "name" property) - name = '_' + name; - } - var propertyCallbacks = callbacks[name]; - if(typeof propertyCallbacks !== "object"){ - propertyCallbacks = callbacks[name] = []; - } - propertyCallbacks.push(callback); - - // TODO: Remove unwatch in 2.0 - var handle = {}; - handle.unwatch = handle.remove = function(){ - var index = array.indexOf(propertyCallbacks, callback); - if(index > -1){ - propertyCallbacks.splice(index, 1); - } - }; - return handle; //Object - } - -}); - -}); - -}, -'dijit/layout/AccordionContainer':function(){ -require({cache:{ -'url:dijit/layout/templates/AccordionButton.html':"<div data-dojo-attach-event='onclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeypress:_onTitleKeyPress'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" data-dojo-attach-point='iconNode' style=\"vertical-align: middle\" role=\"presentation\"/>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n"}}); -define("dijit/layout/AccordionContainer", [ - "require", - "dojo/_base/array", // array.forEach array.map - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/_base/fx", // fx.Animation - "dojo/dom", // dom.setSelectable - "dojo/dom-attr", // domAttr.attr - "dojo/dom-class", // domClass.remove - "dojo/dom-construct", // domConstruct.place - "dojo/dom-geometry", - "dojo/keys", // keys - "dojo/_base/lang", // lang.getObject lang.hitch - "dojo/sniff", // has("ie") has("dijit-legacy-requires") - "dojo/topic", // publish - "../focus", // focus.focus() - "../_base/manager", // manager.defaultDuration - "dojo/ready", - "../_Widget", - "../_Container", - "../_TemplatedMixin", - "../_CssStateMixin", - "./StackContainer", - "./ContentPane", - "dojo/text!./templates/AccordionButton.html" -], function(require, array, declare, event, fx, dom, domAttr, domClass, domConstruct, domGeometry, - keys, lang, has, topic, focus, manager, ready, - _Widget, _Container, _TemplatedMixin, _CssStateMixin, StackContainer, ContentPane, template){ - - // module: - // dijit/layout/AccordionContainer - - - // Design notes: - // - // An AccordionContainer is a StackContainer, but each child (typically ContentPane) - // is wrapped in a _AccordionInnerContainer. This is hidden from the caller. - // - // The resulting markup will look like: - // - // <div class=dijitAccordionContainer> - // <div class=dijitAccordionInnerContainer> (one pane) - // <div class=dijitAccordionTitle> (title bar) ... </div> - // <div class=dijtAccordionChildWrapper> (content pane) </div> - // </div> - // </div> - // - // Normally the dijtAccordionChildWrapper is hidden for all but one child (the shown - // child), so the space for the content pane is all the title bars + the one dijtAccordionChildWrapper, - // which on claro has a 1px border plus a 2px bottom margin. - // - // During animation there are two dijtAccordionChildWrapper's shown, so we need - // to compensate for that. - - - var AccordionButton = declare("dijit.layout._AccordionButton", [_Widget, _TemplatedMixin, _CssStateMixin], { - // summary: - // The title bar to click to open up an accordion pane. - // Internal widget used by AccordionContainer. - // tags: - // private - - templateString: template, - - // label: String - // Title of the pane - label: "", - _setLabelAttr: {node: "titleTextNode", type: "innerHTML" }, - - // title: String - // Tooltip that appears on hover - title: "", - _setTitleAttr: {node: "titleTextNode", type: "attribute", attribute: "title"}, - - // iconClassAttr: String - // CSS class for icon to left of label - iconClassAttr: "", - _setIconClassAttr: { node: "iconNode", type: "class" }, - - baseClass: "dijitAccordionTitle", - - getParent: function(){ - // summary: - // Returns the AccordionContainer parent. - // tags: - // private - return this.parent; - }, - - buildRendering: function(){ - this.inherited(arguments); - var titleTextNodeId = this.id.replace(' ','_'); - domAttr.set(this.titleTextNode, "id", titleTextNodeId+"_title"); - this.focusNode.setAttribute("aria-labelledby", domAttr.get(this.titleTextNode, "id")); - dom.setSelectable(this.domNode, false); - }, - - getTitleHeight: function(){ - // summary: - // Returns the height of the title dom node. - return domGeometry.getMarginSize(this.domNode).h; // Integer - }, - - // TODO: maybe the parent should set these methods directly rather than forcing the code - // into the button widget? - _onTitleClick: function(){ - // summary: - // Callback when someone clicks my title. - var parent = this.getParent(); - parent.selectChild(this.contentWidget, true); - focus.focus(this.focusNode); - }, - - _onTitleKeyPress: function(/*Event*/ evt){ - return this.getParent()._onKeyPress(evt, this.contentWidget); - }, - - _setSelectedAttr: function(/*Boolean*/ isSelected){ - this._set("selected", isSelected); - this.focusNode.setAttribute("aria-expanded", isSelected ? "true" : "false"); - this.focusNode.setAttribute("aria-selected", isSelected ? "true" : "false"); - this.focusNode.setAttribute("tabIndex", isSelected ? "0" : "-1"); - } - }); - - var AccordionInnerContainer = declare("dijit.layout._AccordionInnerContainer", [_Widget, _CssStateMixin], { - // summary: - // Internal widget placed as direct child of AccordionContainer.containerNode. - // When other widgets are added as children to an AccordionContainer they are wrapped in - // this widget. - -/*===== - // buttonWidget: Function|String - // Class to use to instantiate title - // (Wish we didn't have a separate widget for just the title but maintaining it - // for backwards compatibility, is it worth it?) - buttonWidget: null, -=====*/ - -/*===== - // contentWidget: dijit/_WidgetBase - // Pointer to the real child widget - contentWidget: null, -=====*/ - - baseClass: "dijitAccordionInnerContainer", - - // tell nested layout widget that we will take care of sizing - isLayoutContainer: true, - - buildRendering: function(){ - // Builds a template like: - // <div class=dijitAccordionInnerContainer> - // Button - // <div class=dijitAccordionChildWrapper> - // ContentPane - // </div> - // </div> - - // Create wrapper div, placed where the child is now - this.domNode = domConstruct.place("<div class='" + this.baseClass + - "' role='presentation'>", this.contentWidget.domNode, "after"); - - // wrapper div's first child is the button widget (ie, the title bar) - var child = this.contentWidget, - cls = lang.isString(this.buttonWidget) ? lang.getObject(this.buttonWidget) : this.buttonWidget; - this.button = child._buttonWidget = (new cls({ - contentWidget: child, - label: child.title, - title: child.tooltip, - dir: child.dir, - lang: child.lang, - textDir: child.textDir, - iconClass: child.iconClass, - id: child.id + "_button", - parent: this.parent - })).placeAt(this.domNode); - - // and then the actual content widget (changing it from prior-sibling to last-child), - // wrapped by a <div class=dijitAccordionChildWrapper> - this.containerNode = domConstruct.place("<div class='dijitAccordionChildWrapper' style='display:none'>", this.domNode); - domConstruct.place(this.contentWidget.domNode, this.containerNode); - }, - - postCreate: function(){ - this.inherited(arguments); - - // Map changes in content widget's title etc. to changes in the button - var button = this.button; - this._contentWidgetWatches = [ - this.contentWidget.watch('title', lang.hitch(this, function(name, oldValue, newValue){ - button.set("label", newValue); - })), - this.contentWidget.watch('tooltip', lang.hitch(this, function(name, oldValue, newValue){ - button.set("title", newValue); - })), - this.contentWidget.watch('iconClass', lang.hitch(this, function(name, oldValue, newValue){ - button.set("iconClass", newValue); - })) - ]; - }, - - _setSelectedAttr: function(/*Boolean*/ isSelected){ - this._set("selected", isSelected); - this.button.set("selected", isSelected); - if(isSelected){ - var cw = this.contentWidget; - if(cw.onSelected){ cw.onSelected(); } - } - }, - - startup: function(){ - // Called by _Container.addChild() - this.contentWidget.startup(); - }, - - destroy: function(){ - this.button.destroyRecursive(); - - array.forEach(this._contentWidgetWatches || [], function(w){ w.unwatch(); }); - - delete this.contentWidget._buttonWidget; - delete this.contentWidget._wrapperWidget; - - this.inherited(arguments); - }, - - destroyDescendants: function(/*Boolean*/ preserveDom){ - // since getChildren isn't working for me, have to code this manually - this.contentWidget.destroyRecursive(preserveDom); - } - }); - - var AccordionContainer = declare("dijit.layout.AccordionContainer", StackContainer, { - // summary: - // Holds a set of panes where every pane's title is visible, but only one pane's content is visible at a time, - // and switching between panes is visualized by sliding the other panes up/down. - // example: - // | <div data-dojo-type="dijit/layout/AccordionContainer"> - // | <div data-dojo-type="dijit/layout/ContentPane" title="pane 1"> - // | </div> - // | <div data-dojo-type="dijit/layout/ContentPane" title="pane 2"> - // | <p>This is some text</p> - // | </div> - // | </div> - - // duration: Integer - // Amount of time (in ms) it takes to slide panes - duration: manager.defaultDuration, - - // buttonWidget: [const] String - // The name of the widget used to display the title of each pane - buttonWidget: AccordionButton, - -/*===== - // _verticalSpace: Number - // Pixels of space available for the open pane - // (my content box size minus the cumulative size of all the title bars) - _verticalSpace: 0, -=====*/ - baseClass: "dijitAccordionContainer", - - buildRendering: function(){ - this.inherited(arguments); - this.domNode.style.overflow = "hidden"; // TODO: put this in dijit.css - this.domNode.setAttribute("role", "tablist"); // TODO: put this in template - }, - - startup: function(){ - if(this._started){ return; } - this.inherited(arguments); - if(this.selectedChildWidget){ - this.selectedChildWidget._wrapperWidget.set("selected", true); - } - }, - - layout: function(){ - // Implement _LayoutWidget.layout() virtual method. - // Set the height of the open pane based on what room remains. - - var openPane = this.selectedChildWidget; - - if(!openPane){ return;} - - // space taken up by title, plus wrapper div (with border/margin) for open pane - var wrapperDomNode = openPane._wrapperWidget.domNode, - wrapperDomNodeMargin = domGeometry.getMarginExtents(wrapperDomNode), - wrapperDomNodePadBorder = domGeometry.getPadBorderExtents(wrapperDomNode), - wrapperContainerNode = openPane._wrapperWidget.containerNode, - wrapperContainerNodeMargin = domGeometry.getMarginExtents(wrapperContainerNode), - wrapperContainerNodePadBorder = domGeometry.getPadBorderExtents(wrapperContainerNode), - mySize = this._contentBox; - - // get cumulative height of all the unselected title bars - var totalCollapsedHeight = 0; - array.forEach(this.getChildren(), function(child){ - if(child != openPane){ - // Using domGeometry.getMarginSize() rather than domGeometry.position() since claro has 1px bottom margin - // to separate accordion panes. Not sure that works perfectly, it's probably putting a 1px - // margin below the bottom pane (even though we don't want one). - totalCollapsedHeight += domGeometry.getMarginSize(child._wrapperWidget.domNode).h; - } - }); - this._verticalSpace = mySize.h - totalCollapsedHeight - wrapperDomNodeMargin.h - - wrapperDomNodePadBorder.h - wrapperContainerNodeMargin.h - wrapperContainerNodePadBorder.h - - openPane._buttonWidget.getTitleHeight(); - - // Memo size to make displayed child - this._containerContentBox = { - h: this._verticalSpace, - w: this._contentBox.w - wrapperDomNodeMargin.w - wrapperDomNodePadBorder.w - - wrapperContainerNodeMargin.w - wrapperContainerNodePadBorder.w - }; - - if(openPane){ - openPane.resize(this._containerContentBox); - } - }, - - _setupChild: function(child){ - // Overrides _LayoutWidget._setupChild(). - // Put wrapper widget around the child widget, showing title - - child._wrapperWidget = AccordionInnerContainer({ - contentWidget: child, - buttonWidget: this.buttonWidget, - id: child.id + "_wrapper", - dir: child.dir, - lang: child.lang, - textDir: child.textDir, - parent: this - }); - - this.inherited(arguments); - }, - - addChild: function(/*dijit/_WidgetBase*/ child, /*Integer?*/ insertIndex){ - // Overrides _LayoutWidget.addChild(). - if(this._started){ - // Adding a child to a started Accordion is complicated because children have - // wrapper widgets. Default code path (calling this.inherited()) would add - // the new child inside another child's wrapper. - - // First add in child as a direct child of this AccordionContainer - var refNode = this.containerNode; - if(insertIndex && typeof insertIndex == "number"){ - var children = _Widget.prototype.getChildren.call(this); // get wrapper panes - if(children && children.length >= insertIndex){ - refNode = children[insertIndex-1].domNode; - insertIndex = "after"; - } - } - domConstruct.place(child.domNode, refNode, insertIndex); - - if(!child._started){ - child.startup(); - } - - // Then stick the wrapper widget around the child widget - this._setupChild(child); - - // Code below copied from StackContainer - topic.publish(this.id+"-addChild", child, insertIndex); // publish - this.layout(); - if(!this.selectedChildWidget){ - this.selectChild(child); - } - }else{ - // We haven't been started yet so just add in the child widget directly, - // and the wrapper will be created on startup() - this.inherited(arguments); - } - }, - - removeChild: function(child){ - // Overrides _LayoutWidget.removeChild(). - - // Destroy wrapper widget first, before StackContainer.getChildren() call. - // Replace wrapper widget with true child widget (ContentPane etc.). - // This step only happens if the AccordionContainer has been started; otherwise there's no wrapper. - if(child._wrapperWidget){ - domConstruct.place(child.domNode, child._wrapperWidget.domNode, "after"); - child._wrapperWidget.destroy(); - delete child._wrapperWidget; - } - - domClass.remove(child.domNode, "dijitHidden"); - - this.inherited(arguments); - }, - - getChildren: function(){ - // Overrides _Container.getChildren() to return content panes rather than internal AccordionInnerContainer panes - return array.map(this.inherited(arguments), function(child){ - return child.declaredClass == "dijit.layout._AccordionInnerContainer" ? child.contentWidget : child; - }, this); - }, - - destroy: function(){ - if(this._animation){ - this._animation.stop(); - } - array.forEach(this.getChildren(), function(child){ - // If AccordionContainer has been started, then each child has a wrapper widget which - // also needs to be destroyed. - if(child._wrapperWidget){ - child._wrapperWidget.destroy(); - }else{ - child.destroyRecursive(); - } - }); - this.inherited(arguments); - }, - - _showChild: function(child){ - // Override StackContainer._showChild() to set visibility of _wrapperWidget.containerNode - child._wrapperWidget.containerNode.style.display="block"; - return this.inherited(arguments); - }, - - _hideChild: function(child){ - // Override StackContainer._showChild() to set visibility of _wrapperWidget.containerNode - child._wrapperWidget.containerNode.style.display="none"; - this.inherited(arguments); - }, - - _transition: function(/*dijit/_WidgetBase?*/ newWidget, /*dijit/_WidgetBase?*/ oldWidget, /*Boolean*/ animate){ - // Overrides StackContainer._transition() to provide sliding of title bars etc. - - if(has("ie") < 8){ - // workaround animation bugs by not animating; not worth supporting animation for IE6 & 7 - animate = false; - } - - if(this._animation){ - // there's an in-progress animation. speedily end it so we can do the newly requested one - this._animation.stop(true); - delete this._animation; - } - - var self = this; - - if(newWidget){ - newWidget._wrapperWidget.set("selected", true); - - var d = this._showChild(newWidget); // prepare widget to be slid in - - // Size the new widget, in case this is the first time it's being shown, - // or I have been resized since the last time it was shown. - // Note that page must be visible for resizing to work. - if(this.doLayout && newWidget.resize){ - newWidget.resize(this._containerContentBox); - } - } - - if(oldWidget){ - oldWidget._wrapperWidget.set("selected", false); - if(!animate){ - this._hideChild(oldWidget); - } - } - - if(animate){ - var newContents = newWidget._wrapperWidget.containerNode, - oldContents = oldWidget._wrapperWidget.containerNode; - - // During the animation we will be showing two dijitAccordionChildWrapper nodes at once, - // which on claro takes up 4px extra space (compared to stable AccordionContainer). - // Have to compensate for that by immediately shrinking the pane being closed. - var wrapperContainerNode = newWidget._wrapperWidget.containerNode, - wrapperContainerNodeMargin = domGeometry.getMarginExtents(wrapperContainerNode), - wrapperContainerNodePadBorder = domGeometry.getPadBorderExtents(wrapperContainerNode), - animationHeightOverhead = wrapperContainerNodeMargin.h + wrapperContainerNodePadBorder.h; - - oldContents.style.height = (self._verticalSpace - animationHeightOverhead) + "px"; - - this._animation = new fx.Animation({ - node: newContents, - duration: this.duration, - curve: [1, this._verticalSpace - animationHeightOverhead - 1], - onAnimate: function(value){ - value = Math.floor(value); // avoid fractional values - newContents.style.height = value + "px"; - oldContents.style.height = (self._verticalSpace - animationHeightOverhead - value) + "px"; - }, - onEnd: function(){ - delete self._animation; - newContents.style.height = "auto"; - oldWidget._wrapperWidget.containerNode.style.display = "none"; - oldContents.style.height = "auto"; - self._hideChild(oldWidget); - } - }); - this._animation.onStop = this._animation.onEnd; - this._animation.play(); - } - - return d; // If child has an href, promise that fires when the widget has finished loading - }, - - // note: we are treating the container as controller here - _onKeyPress: function(/*Event*/ e, /*dijit/_WidgetBase*/ fromTitle){ - // summary: - // Handle keypress events - // description: - // This is called from a handler on AccordionContainer.domNode - // (setup in StackContainer), and is also called directly from - // the click handler for accordion labels - if(this.disabled || e.altKey || !(fromTitle || e.ctrlKey)){ - return; - } - var c = e.charOrCode; - if((fromTitle && (c == keys.LEFT_ARROW || c == keys.UP_ARROW)) || - (e.ctrlKey && c == keys.PAGE_UP)){ - this._adjacent(false)._buttonWidget._onTitleClick(); - event.stop(e); - }else if((fromTitle && (c == keys.RIGHT_ARROW || c == keys.DOWN_ARROW)) || - (e.ctrlKey && (c == keys.PAGE_DOWN || c == keys.TAB))){ - this._adjacent(true)._buttonWidget._onTitleClick(); - event.stop(e); - } - } - }); - - // Back compat w/1.6, remove for 2.0 - if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/layout/AccordionPane"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - // For monkey patching - AccordionContainer._InnerContainer = AccordionInnerContainer; - AccordionContainer._Button = AccordionButton; - - return AccordionContainer; -}); - -}, -'dijit/form/ComboButton':function(){ -require({cache:{ -'url:dijit/form/templates/ComboButton.html':"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:_onClick,onkeypress:_onButtonKeyPress\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeypress:_onArrowKeyPress\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">▼</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\" role=\"presentation\"\n\t\t/></td></tr></tbody\n></table>\n"}}); -define("dijit/form/ComboButton", [ - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "../focus", // focus.focus() - "./DropDownButton", - "dojo/text!./templates/ComboButton.html" -], function(declare, event, keys, focus, DropDownButton, template){ - -// module: -// dijit/form/ComboButton - -return declare("dijit.form.ComboButton", DropDownButton, { - // summary: - // A combination button and drop-down button. - // Users can click one side to "press" the button, or click an arrow - // icon to display the drop down. - // - // example: - // | <button data-dojo-type="dijit/form/ComboButton" onClick="..."> - // | <span>Hello world</span> - // | <div data-dojo-type="dijit/Menu">...</div> - // | </button> - // - // example: - // | var button1 = new ComboButton({label: "hello world", onClick: foo, dropDown: "myMenu"}); - // | dojo.body().appendChild(button1.domNode); - // - - templateString: template, - - // Map widget attributes to DOMNode attributes. - _setIdAttr: "", // override _FormWidgetMixin which puts id on the focusNode - _setTabIndexAttr: ["focusNode", "titleNode"], - _setTitleAttr: "titleNode", - - // optionsTitle: String - // Text that describes the options menu (accessibility) - optionsTitle: "", - - baseClass: "dijitComboButton", - - // Set classes like dijitButtonContentsHover or dijitArrowButtonActive depending on - // mouse action over specified node - cssStateNodes: { - "buttonNode": "dijitButtonNode", - "titleNode": "dijitButtonContents", - "_popupStateNode": "dijitDownArrowButton" - }, - - _focusedNode: null, - - _onButtonKeyPress: function(/*Event*/ evt){ - // summary: - // Handler for right arrow key when focus is on left part of button - if(evt.charOrCode == keys[this.isLeftToRight() ? "RIGHT_ARROW" : "LEFT_ARROW"]){ - focus.focus(this._popupStateNode); - event.stop(evt); - } - }, - - _onArrowKeyPress: function(/*Event*/ evt){ - // summary: - // Handler for left arrow key when focus is on right part of button - if(evt.charOrCode == keys[this.isLeftToRight() ? "LEFT_ARROW" : "RIGHT_ARROW"]){ - focus.focus(this.titleNode); - event.stop(evt); - } - }, - - focus: function(/*String*/ position){ - // summary: - // Focuses this widget to according to position, if specified, - // otherwise on arrow node - // position: - // "start" or "end" - if(!this.disabled){ - focus.focus(position == "start" ? this.titleNode : this._popupStateNode); - } - } -}); - -}); - -}, -'dijit/form/_AutoCompleterMixin':function(){ -define("dijit/form/_AutoCompleterMixin", [ - "dojo/data/util/filter", // patternToRegExp - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.get - "dojo/_base/event", // event.stop - "dojo/keys", - "dojo/_base/lang", // lang.clone lang.hitch - "dojo/query", // query - "dojo/regexp", // regexp.escapeString - "dojo/sniff", // has("ie") - "dojo/string", // string.substitute - "./DataList", - "../registry", // registry.byId - "./_TextBoxMixin", // defines _TextBoxMixin.selectInputText - "./_SearchMixin" -], function(filter, declare, domAttr, event, keys, lang, query, regexp, has, string, - DataList, registry, _TextBoxMixin, SearchMixin){ - - // module: - // dijit/form/_AutoCompleterMixin - - return declare("dijit.form._AutoCompleterMixin", SearchMixin, { - // summary: - // A mixin that implements the base functionality for `dijit/form/ComboBox`/`dijit/form/FilteringSelect` - // description: - // All widgets that mix in dijit/form/_AutoCompleterMixin must extend `dijit/form/_FormValueWidget`. - // tags: - // protected - - // item: Object - // This is the item returned by the dojo/store/api/Store implementation that - // provides the data for this ComboBox, it's the currently selected item. - item: null, - - // autoComplete: Boolean - // If user types in a partial string, and then tab out of the `<input>` box, - // automatically copy the first entry displayed in the drop down list to - // the `<input>` field - autoComplete: true, - - // highlightMatch: String - // One of: "first", "all" or "none". - // - // If the ComboBox/FilteringSelect opens with the search results and the searched - // string can be found, it will be highlighted. If set to "all" - // then will probably want to change `queryExpr` parameter to '*${0}*' - // - // Highlighting is only performed when `labelType` is "text", so as to not - // interfere with any HTML markup an HTML label might contain. - highlightMatch: "first", - - // labelAttr: String? - // The entries in the drop down list come from this attribute in the - // dojo.data items. - // If not specified, the searchAttr attribute is used instead. - labelAttr: "", - - // labelType: String - // Specifies how to interpret the labelAttr in the data store items. - // Can be "html" or "text". - labelType: "text", - - // Flags to _HasDropDown to limit height of drop down to make it fit in viewport - maxHeight: -1, - - // For backwards compatibility let onClick events propagate, even clicks on the down arrow button - _stopClickEvents: false, - - _getCaretPos: function(/*DomNode*/ element){ - // khtml 3.5.2 has selection* methods as does webkit nightlies from 2005-06-22 - var pos = 0; - if(typeof(element.selectionStart) == "number"){ - // FIXME: this is totally borked on Moz < 1.3. Any recourse? - pos = element.selectionStart; - }else if(has("ie")){ - // in the case of a mouse click in a popup being handled, - // then the win.doc.selection is not the textarea, but the popup - // var r = win.doc.selection.createRange(); - // hack to get IE 6 to play nice. What a POS browser. - var tr = element.ownerDocument.selection.createRange().duplicate(); - var ntr = element.createTextRange(); - tr.move("character",0); - ntr.move("character",0); - try{ - // If control doesn't have focus, you get an exception. - // Seems to happen on reverse-tab, but can also happen on tab (seems to be a race condition - only happens sometimes). - // There appears to be no workaround for this - googled for quite a while. - ntr.setEndPoint("EndToEnd", tr); - pos = String(ntr.text).replace(/\r/g,"").length; - }catch(e){ - // If focus has shifted, 0 is fine for caret pos. - } - } - return pos; - }, - - _setCaretPos: function(/*DomNode*/ element, /*Number*/ location){ - location = parseInt(location); - _TextBoxMixin.selectInputText(element, location, location); - }, - - _setDisabledAttr: function(/*Boolean*/ value){ - // Additional code to set disabled state of ComboBox node. - // Overrides _FormValueWidget._setDisabledAttr() or ValidationTextBox._setDisabledAttr(). - this.inherited(arguments); - this.domNode.setAttribute("aria-disabled", value ? "true" : "false"); - }, - - _onKey: function(/*Event*/ evt){ - // summary: - // Handles keyboard events - - if(evt.charCode >= 32){ return; } // alphanumeric reserved for searching - - var key = evt.charCode || evt.keyCode; - - // except for cutting/pasting case - ctrl + x/v - if(key == keys.ALT || key == keys.CTRL || key == keys.META || key == keys.SHIFT){ - return; // throw out spurious events - } - - var pw = this.dropDown; - var highlighted = null; - this._abortQuery(); - - // _HasDropDown will do some of the work: - // - // 1. when drop down is not yet shown: - // - if user presses the down arrow key, call loadDropDown() - // 2. when drop down is already displayed: - // - on ESC key, call closeDropDown() - // - otherwise, call dropDown.handleKey() to process the keystroke - this.inherited(arguments); - - if(evt.altKey || evt.ctrlKey || evt.metaKey){ return; } // don't process keys with modifiers - but we want shift+TAB - - if(this._opened){ - highlighted = pw.getHighlightedOption(); - } - switch(key){ - case keys.PAGE_DOWN: - case keys.DOWN_ARROW: - case keys.PAGE_UP: - case keys.UP_ARROW: - // Keystroke caused ComboBox_menu to move to a different item. - // Copy new item to <input> box. - if(this._opened){ - this._announceOption(highlighted); - } - event.stop(evt); - break; - - case keys.ENTER: - // prevent submitting form if user presses enter. Also - // prevent accepting the value if either Next or Previous - // are selected - if(highlighted){ - // only stop event on prev/next - if(highlighted == pw.nextButton){ - this._nextSearch(1); - event.stop(evt); // prevent submit - break; - }else if(highlighted == pw.previousButton){ - this._nextSearch(-1); - event.stop(evt); // prevent submit - break; - } - event.stop(evt); // prevent submit if ENTER was to choose an item - }else{ - // Update 'value' (ex: KY) according to currently displayed text - this._setBlurValue(); // set value if needed - this._setCaretPos(this.focusNode, this.focusNode.value.length); // move cursor to end and cancel highlighting - } - // fall through - - case keys.TAB: - var newvalue = this.get('displayedValue'); - // if the user had More Choices selected fall into the - // _onBlur handler - if(pw && ( - newvalue == pw._messages["previousMessage"] || - newvalue == pw._messages["nextMessage"]) - ){ - break; - } - if(highlighted){ - this._selectOption(highlighted); - } - // fall through - - case keys.ESCAPE: - if(this._opened){ - this._lastQuery = null; // in case results come back later - this.closeDropDown(); - } - break; - } - }, - - _autoCompleteText: function(/*String*/ text){ - // summary: - // Fill in the textbox with the first item from the drop down - // list, and highlight the characters that were - // auto-completed. For example, if user typed "CA" and the - // drop down list appeared, the textbox would be changed to - // "California" and "ifornia" would be highlighted. - - var fn = this.focusNode; - - // IE7: clear selection so next highlight works all the time - _TextBoxMixin.selectInputText(fn, fn.value.length); - // does text autoComplete the value in the textbox? - var caseFilter = this.ignoreCase? 'toLowerCase' : 'substr'; - if(text[caseFilter](0).indexOf(this.focusNode.value[caseFilter](0)) == 0){ - var cpos = this.autoComplete ? this._getCaretPos(fn) : fn.value.length; - // only try to extend if we added the last character at the end of the input - if((cpos+1) > fn.value.length){ - // only add to input node as we would overwrite Capitalisation of chars - // actually, that is ok - fn.value = text;//.substr(cpos); - // visually highlight the autocompleted characters - _TextBoxMixin.selectInputText(fn, cpos); - } - }else{ - // text does not autoComplete; replace the whole value and highlight - fn.value = text; - _TextBoxMixin.selectInputText(fn); - } - }, - - _openResultList: function(/*Object*/ results, /*Object*/ query, /*Object*/ options){ - // summary: - // Callback when a search completes. - // description: - // 1. generates drop-down list and calls _showResultList() to display it - // 2. if this result list is from user pressing "more choices"/"previous choices" - // then tell screen reader to announce new option - var wasSelected = this.dropDown.getHighlightedOption(); - this.dropDown.clearResultList(); - if(!results.length && options.start == 0){ // if no results and not just the previous choices button - this.closeDropDown(); - return; - } - this._nextSearch = this.dropDown.onPage = lang.hitch(this, function(direction){ - results.nextPage(direction !== -1); - this.focus(); - }); - - // Fill in the textbox with the first item from the drop down list, - // and highlight the characters that were auto-completed. For - // example, if user typed "CA" and the drop down list appeared, the - // textbox would be changed to "California" and "ifornia" would be - // highlighted. - - this.dropDown.createOptions( - results, - options, - lang.hitch(this, "_getMenuLabelFromItem") - ); - - // show our list (only if we have content, else nothing) - this._showResultList(); - - // #4091: - // tell the screen reader that the paging callback finished by - // shouting the next choice - if("direction" in options){ - if(options.direction){ - this.dropDown.highlightFirstOption(); - }else if(!options.direction){ - this.dropDown.highlightLastOption(); - } - if(wasSelected){ - this._announceOption(this.dropDown.getHighlightedOption()); - } - }else if(this.autoComplete && !this._prev_key_backspace - // when the user clicks the arrow button to show the full list, - // startSearch looks for "*". - // it does not make sense to autocomplete - // if they are just previewing the options available. - && !/^[*]+$/.test(query[this.searchAttr].toString())){ - this._announceOption(this.dropDown.containerNode.firstChild.nextSibling); // 1st real item - } - }, - - _showResultList: function(){ - // summary: - // Display the drop down if not already displayed, or if it is displayed, then - // reposition it if necessary (reposition may be necessary if drop down's height changed). - this.closeDropDown(true); - this.openDropDown(); - this.domNode.setAttribute("aria-expanded", "true"); - }, - - loadDropDown: function(/*Function*/ /*===== callback =====*/){ - // Overrides _HasDropDown.loadDropDown(). - // This is called when user has pressed button icon or pressed the down arrow key - // to open the drop down. - this._startSearchAll(); - }, - - isLoaded: function(){ - // signal to _HasDropDown that it needs to call loadDropDown() to load the - // drop down asynchronously before displaying it - return false; - }, - - closeDropDown: function(){ - // Overrides _HasDropDown.closeDropDown(). Closes the drop down (assuming that it's open). - // This method is the callback when the user types ESC or clicking - // the button icon while the drop down is open. It's also called by other code. - this._abortQuery(); - if(this._opened){ - this.inherited(arguments); - this.domNode.setAttribute("aria-expanded", "false"); - this.focusNode.removeAttribute("aria-activedescendant"); - } - }, - - _setBlurValue: function(){ - // if the user clicks away from the textbox OR tabs away, set the - // value to the textbox value - // #4617: - // if value is now more choices or previous choices, revert - // the value - var newvalue = this.get('displayedValue'); - var pw = this.dropDown; - if(pw && ( - newvalue == pw._messages["previousMessage"] || - newvalue == pw._messages["nextMessage"] - ) - ){ - this._setValueAttr(this._lastValueReported, true); - }else if(typeof this.item == "undefined"){ - // Update 'value' (ex: KY) according to currently displayed text - this.item = null; - this.set('displayedValue', newvalue); - }else{ - if(this.value != this._lastValueReported){ - this._handleOnChange(this.value, true); - } - this._refreshState(); - } - }, - - _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){ - // summary: - // Set the displayed valued in the input box, and the hidden value - // that gets submitted, based on a dojo.data store item. - // description: - // Users shouldn't call this function; they should be calling - // set('item', value) - // tags: - // private - var value = ''; - if(item){ - if(!displayedValue){ - displayedValue = this.store._oldAPI ? // remove getValue() for 2.0 (old dojo.data API) - this.store.getValue(item, this.searchAttr) : item[this.searchAttr]; - } - value = this._getValueField() != this.searchAttr ? this.store.getIdentity(item) : displayedValue; - } - this.set('value', value, priorityChange, displayedValue, item); - }, - - _announceOption: function(/*Node*/ node){ - // summary: - // a11y code that puts the highlighted option in the textbox. - // This way screen readers will know what is happening in the - // menu. - - if(!node){ - return; - } - // pull the text value from the item attached to the DOM node - var newValue; - if(node == this.dropDown.nextButton || - node == this.dropDown.previousButton){ - newValue = node.innerHTML; - this.item = undefined; - this.value = ''; - }else{ - var item = this.dropDown.items[node.getAttribute("item")]; - newValue = (this.store._oldAPI ? // remove getValue() for 2.0 (old dojo.data API) - this.store.getValue(item, this.searchAttr) : item[this.searchAttr]).toString(); - this.set('item', item, false, newValue); - } - // get the text that the user manually entered (cut off autocompleted text) - this.focusNode.value = this.focusNode.value.substring(0, this._lastInput.length); - // set up ARIA activedescendant - this.focusNode.setAttribute("aria-activedescendant", domAttr.get(node, "id")); - // autocomplete the rest of the option to announce change - this._autoCompleteText(newValue); - }, - - _selectOption: function(/*DomNode*/ target){ - // summary: - // Menu callback function, called when an item in the menu is selected. - this.closeDropDown(); - if(target){ - this._announceOption(target); - } - this._setCaretPos(this.focusNode, this.focusNode.value.length); - this._handleOnChange(this.value, true); - }, - - _startSearchAll: function(){ - this._startSearch(''); - }, - - _startSearchFromInput: function(){ - this.item = undefined; // undefined means item needs to be set - this.inherited(arguments); - }, - - _startSearch: function(/*String*/ key){ - // summary: - // Starts a search for elements matching key (key=="" means to return all items), - // and calls _openResultList() when the search completes, to display the results. - if(!this.dropDown){ - var popupId = this.id + "_popup", - dropDownConstructor = lang.isString(this.dropDownClass) ? - lang.getObject(this.dropDownClass, false) : this.dropDownClass; - this.dropDown = new dropDownConstructor({ - onChange: lang.hitch(this, this._selectOption), - id: popupId, - dir: this.dir, - textDir: this.textDir - }); - this.focusNode.removeAttribute("aria-activedescendant"); - this.textbox.setAttribute("aria-owns",popupId); // associate popup with textbox - } - this._lastInput = key; // Store exactly what was entered by the user. - this.inherited(arguments); - }, - - _getValueField: function(){ - // summary: - // Helper for postMixInProperties() to set this.value based on data inlined into the markup. - // Returns the attribute name in the item (in dijit/form/_ComboBoxDataStore) to use as the value. - return this.searchAttr; - }, - - //////////// INITIALIZATION METHODS /////////////////////////////////////// - - postMixInProperties: function(){ - this.inherited(arguments); - if(!this.store){ - var srcNodeRef = this.srcNodeRef; - // if user didn't specify store, then assume there are option tags - this.store = new DataList({}, srcNodeRef); - - // if there is no value set and there is an option list, set - // the value to the first value to be consistent with native Select - // Firefox and Safari set value - // IE6 and Opera set selectedIndex, which is automatically set - // by the selected attribute of an option tag - // IE6 does not set value, Opera sets value = selectedIndex - if(!("value" in this.params)){ - var item = (this.item = this.store.fetchSelectedItem()); - if(item){ - var valueField = this._getValueField(); - // remove getValue() for 2.0 (old dojo.data API) - this.value = this.store._oldAPI ? this.store.getValue(item, valueField) : item[valueField]; - } - } - } - }, - - postCreate: function(){ - // summary: - // Subclasses must call this method from their postCreate() methods - // tags: - // protected - - // find any associated label element and add to ComboBox node. - var label=query('label[for="'+this.id+'"]'); - if(label.length){ - if(!label[0].id){ label[0].id = this.id + "_label"; } - this.domNode.setAttribute("aria-labelledby", label[0].id); - - } - this.inherited(arguments); - this.connect(this, "onSearch", "_openResultList"); - }, - - _getMenuLabelFromItem: function(/*Item*/ item){ - var label = this.labelFunc(item, this.store), - labelType = this.labelType; - // If labelType is not "text" we don't want to screw any markup ot whatever. - if(this.highlightMatch != "none" && this.labelType == "text" && this._lastInput){ - label = this.doHighlight(label, this._lastInput); - labelType = "html"; - } - return {html: labelType == "html", label: label}; - }, - - doHighlight: function(/*String*/ label, /*String*/ find){ - // summary: - // Highlights the string entered by the user in the menu. By default this - // highlights the first occurrence found. Override this method - // to implement your custom highlighting. - // tags: - // protected - - var - // Add (g)lobal modifier when this.highlightMatch == "all" and (i)gnorecase when this.ignoreCase == true - modifiers = (this.ignoreCase ? "i" : "") + (this.highlightMatch == "all" ? "g" : ""), - i = this.queryExpr.indexOf("${0}"); - find = regexp.escapeString(find); // escape regexp special chars - //If < appears in label, and user presses t, we don't want to highlight the t in the escaped "<" - //first find out every occurences of "find", wrap each occurence in a pair of "\uFFFF" characters (which - //should not appear in any string). then html escape the whole string, and replace '\uFFFF" with the - //HTML highlight markup. - return this._escapeHtml(label.replace( - new RegExp((i == 0 ? "^" : "") + "("+ find +")" + (i == (this.queryExpr.length - 4) ? "$" : ""), modifiers), - '\uFFFF$1\uFFFF')).replace( - /\uFFFF([^\uFFFF]+)\uFFFF/g, '<span class="dijitComboBoxHighlightMatch">$1</span>' - ); // returns String, (almost) valid HTML (entities encoded) - }, - - _escapeHtml: function(/*String*/ str){ - // TODO Should become dojo.html.entities(), when exists use instead - // summary: - // Adds escape sequences for special characters in XML: `&<>"'` - str = String(str).replace(/&/gm, "&").replace(/</gm, "<") - .replace(/>/gm, ">").replace(/"/gm, """); //balance" - return str; // string - }, - - reset: function(){ - // Overrides the _FormWidget.reset(). - // Additionally reset the .item (to clean up). - this.item = null; - this.inherited(arguments); - }, - - labelFunc: function(item, store){ - // summary: - // Computes the label to display based on the dojo.data store item. - // item: Object - // The item from the store - // store: dojo/store/api/Store - // The store. - // returns: - // The label that the ComboBox should display - // tags: - // private - - // Use toString() because XMLStore returns an XMLItem whereas this - // method is expected to return a String (#9354). - // Remove getValue() for 2.0 (old dojo.data API) - return (store._oldAPI ? store.getValue(item, this.labelAttr || this.searchAttr) : - item[this.labelAttr || this.searchAttr]).toString(); // String - }, - - _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange, /*String?*/ displayedValue, /*item?*/ item){ - // summary: - // Hook so set('value', value) works. - // description: - // Sets the value of the select. - this._set("item", item||null); // value not looked up in store - if(value == null /* or undefined */){ value = ''; } // null translates to blank - this.inherited(arguments); - }, - _setTextDirAttr: function(/*String*/ textDir){ - // summary: - // Setter for textDir, needed for the dropDown's textDir update. - // description: - // Users shouldn't call this function; they should be calling - // set('textDir', value) - // tags: - // private - this.inherited(arguments); - // update the drop down also (_ComboBoxMenuMixin) - if(this.dropDown){ - this.dropDown._set("textDir", textDir); - } - } - }); -}); - -}, -'url:dijit/templates/ColorPalette.html':"<div class=\"dijitInline dijitColorPalette\">\n\t<table dojoAttachPoint=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"grid\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n", -'url:dijit/layout/templates/_ScrollingTabControllerButton.html':"<div data-dojo-attach-event=\"onclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\">\n\t<img role=\"presentation\" alt=\"\" src=\"${_blankGif}\" class=\"dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>", -'dijit/form/MappedTextBox':function(){ -define("dijit/form/MappedTextBox", [ - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.place - "./ValidationTextBox" -], function(declare, domConstruct, ValidationTextBox){ - - // module: - // dijit/form/MappedTextBox - - return declare("dijit.form.MappedTextBox", ValidationTextBox, { - // summary: - // A dijit/form/ValidationTextBox subclass which provides a base class for widgets that have - // a visible formatted display value, and a serializable - // value in a hidden input field which is actually sent to the server. - // description: - // The visible display may - // be locale-dependent and interactive. The value sent to the server is stored in a hidden - // input field which uses the `name` attribute declared by the original widget. That value sent - // to the server is defined by the dijit/form/MappedTextBox.serialize() method and is typically - // locale-neutral. - // tags: - // protected - - postMixInProperties: function(){ - this.inherited(arguments); - - // we want the name attribute to go to the hidden <input>, not the displayed <input>, - // so override _FormWidget.postMixInProperties() setting of nameAttrSetting - this.nameAttrSetting = ""; - }, - - // Override default behavior to assign name to focusNode - _setNameAttr: null, - - serialize: function(val /*=====, options =====*/){ - // summary: - // Overridable function used to convert the get('value') result to a canonical - // (non-localized) string. For example, will print dates in ISO format, and - // numbers the same way as they are represented in javascript. - // val: anything - // options: Object? - // tags: - // protected extension - return val.toString ? val.toString() : ""; // String - }, - - toString: function(){ - // summary: - // Returns widget as a printable string using the widget's value - // tags: - // protected - var val = this.filter(this.get('value')); // call filter in case value is nonstring and filter has been customized - return val != null ? (typeof val == "string" ? val : this.serialize(val, this.constraints)) : ""; // String - }, - - validate: function(){ - // Overrides `dijit/form/TextBox.validate` - this.valueNode.value = this.toString(); - return this.inherited(arguments); - }, - - buildRendering: function(){ - // Overrides `dijit/_TemplatedMixin/buildRendering` - - this.inherited(arguments); - - // Create a hidden <input> node with the serialized value used for submit - // (as opposed to the displayed value). - // Passing in name as markup rather than calling domConstruct.create() with an attrs argument - // to make query(input[name=...]) work on IE. (see #8660) - this.valueNode = domConstruct.place("<input type='hidden'" + (this.name ? ' name="' + this.name.replace(/"/g, """) + '"' : "") + "/>", this.textbox, "after"); - }, - - reset: function(){ - // Overrides `dijit/form/ValidationTextBox.reset` to - // reset the hidden textbox value to '' - this.valueNode.value = ''; - this.inherited(arguments); - } - }); -}); - -}, -'dijit/form/ComboBoxMixin':function(){ -require({cache:{ -'url:dijit/form/templates/DropDownBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode, _popupStateNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"▼ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"text\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\" aria-haspopup=\"true\"\n\t/></div\n></div>\n"}}); -define("dijit/form/ComboBoxMixin", [ - "dojo/_base/declare", // declare - "dojo/_base/Deferred", - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.mixin - "dojo/store/util/QueryResults", - "./_AutoCompleterMixin", - "./_ComboBoxMenu", - "../_HasDropDown", - "dojo/text!./templates/DropDownBox.html" -], function(declare, Deferred, kernel, lang, QueryResults, _AutoCompleterMixin, _ComboBoxMenu, _HasDropDown, template){ - - - // module: - // dijit/form/ComboBoxMixin - - return declare("dijit.form.ComboBoxMixin", [_HasDropDown, _AutoCompleterMixin], { - // summary: - // Provides main functionality of ComboBox widget - - // dropDownClass: [protected extension] Function String - // Dropdown widget class used to select a date/time. - // Subclasses should specify this. - dropDownClass: _ComboBoxMenu, - - // hasDownArrow: Boolean - // Set this textbox to have a down arrow button, to display the drop down list. - // Defaults to true. - hasDownArrow: true, - - templateString: template, - - baseClass: "dijitTextBox dijitComboBox", - - /*===== - // store: [const] dojo/store/api/Store|dojo/data/api/Read - // Reference to data provider object used by this ComboBox. - // - // Should be dojo/store/api/Store, but dojo/data/api/Read supported - // for backwards compatibility. - store: null, - =====*/ - - // Set classes like dijitDownArrowButtonHover depending on - // mouse action over button node - cssStateNodes: { - "_buttonNode": "dijitDownArrowButton" - }, - - _setHasDownArrowAttr: function(/*Boolean*/ val){ - this._set("hasDownArrow", val); - this._buttonNode.style.display = val ? "" : "none"; - }, - - _showResultList: function(){ - // hide the tooltip - this.displayMessage(""); - this.inherited(arguments); - }, - - _setStoreAttr: function(store){ - // For backwards-compatibility, accept dojo.data store in addition to dojo/store/api/Store. Remove in 2.0. - if(!store.get){ - lang.mixin(store, { - _oldAPI: true, - get: function(id){ - // summary: - // Retrieves an object by it's identity. This will trigger a fetchItemByIdentity. - // Like dojo/store/DataStore.get() except returns native item. - var deferred = new Deferred(); - this.fetchItemByIdentity({ - identity: id, - onItem: function(object){ - deferred.resolve(object); - }, - onError: function(error){ - deferred.reject(error); - } - }); - return deferred.promise; - }, - query: function(query, options){ - // summary: - // Queries the store for objects. Like dojo/store/DataStore.query() - // except returned Deferred contains array of native items. - var deferred = new Deferred(function(){ fetchHandle.abort && fetchHandle.abort(); }); - deferred.total = new Deferred(); - var fetchHandle = this.fetch(lang.mixin({ - query: query, - onBegin: function(count){ - deferred.total.resolve(count); - }, - onComplete: function(results){ - deferred.resolve(results); - }, - onError: function(error){ - deferred.reject(error); - } - }, options)); - return QueryResults(deferred); - } - }); - } - this._set("store", store); - }, - - postMixInProperties: function(){ - // Since _setValueAttr() depends on this.store, _setStoreAttr() needs to execute first. - // Unfortunately, without special code, it ends up executing second. - var store = this.params.store || this.store; - if(store){ - this._setStoreAttr(store); - } - - this.inherited(arguments); - - // User may try to access this.store.getValue() etc. in a custom labelFunc() function. - // It's not available with the new data store for handling inline <option> tags, so add it. - if(!this.params.store && !this.store._oldAPI){ - var clazz = this.declaredClass; - lang.mixin(this.store, { - getValue: function(item, attr){ - kernel.deprecated(clazz + ".store.getValue(item, attr) is deprecated for builtin store. Use item.attr directly", "", "2.0"); - return item[attr]; - }, - getLabel: function(item){ - kernel.deprecated(clazz + ".store.getLabel(item) is deprecated for builtin store. Use item.label directly", "", "2.0"); - return item.name; - }, - fetch: function(args){ - kernel.deprecated(clazz + ".store.fetch() is deprecated for builtin store.", "Use store.query()", "2.0"); - var shim = ["dojo/data/ObjectStore"]; // indirection so it doesn't get rolled into a build - require(shim, lang.hitch(this, function(ObjectStore){ - new ObjectStore({objectStore: this}).fetch(args); - })); - } - }); - } - } - }); -}); - -}, -'dijit/form/_TextBoxMixin':function(){ -define("dijit/form/_TextBoxMixin", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom", // dom.byId - "dojo/_base/event", // event.stop - "dojo/keys", // keys.ALT keys.CAPS_LOCK keys.CTRL keys.META keys.SHIFT - "dojo/_base/lang", // lang.mixin - "dojo/on", // on - "../main" // for exporting dijit._setSelectionRange, dijit.selectInputText -], function(array, declare, dom, event, keys, lang, on, dijit){ - -// module: -// dijit/form/_TextBoxMixin - -var _TextBoxMixin = declare("dijit.form._TextBoxMixin", null, { - // summary: - // A mixin for textbox form input widgets - - // trim: Boolean - // Removes leading and trailing whitespace if true. Default is false. - trim: false, - - // uppercase: Boolean - // Converts all characters to uppercase if true. Default is false. - uppercase: false, - - // lowercase: Boolean - // Converts all characters to lowercase if true. Default is false. - lowercase: false, - - // propercase: Boolean - // Converts the first character of each word to uppercase if true. - propercase: false, - - // maxLength: String - // HTML INPUT tag maxLength declaration. - maxLength: "", - - // selectOnClick: [const] Boolean - // If true, all text will be selected when focused with mouse - selectOnClick: false, - - // placeHolder: String - // Defines a hint to help users fill out the input field (as defined in HTML 5). - // This should only contain plain text (no html markup). - placeHolder: "", - - _getValueAttr: function(){ - // summary: - // Hook so get('value') works as we like. - // description: - // For `dijit/form/TextBox` this basically returns the value of the `<input>`. - // - // For `dijit/form/MappedTextBox` subclasses, which have both - // a "displayed value" and a separate "submit value", - // This treats the "displayed value" as the master value, computing the - // submit value from it via this.parse(). - return this.parse(this.get('displayedValue'), this.constraints); - }, - - _setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){ - // summary: - // Hook so set('value', ...) works. - // - // description: - // Sets the value of the widget to "value" which can be of - // any type as determined by the widget. - // - // value: - // The visual element value is also set to a corresponding, - // but not necessarily the same, value. - // - // formattedValue: - // If specified, used to set the visual element value, - // otherwise a computed visual value is used. - // - // priorityChange: - // If true, an onChange event is fired immediately instead of - // waiting for the next blur event. - - var filteredValue; - if(value !== undefined){ - // TODO: this is calling filter() on both the display value and the actual value. - // I added a comment to the filter() definition about this, but it should be changed. - filteredValue = this.filter(value); - if(typeof formattedValue != "string"){ - if(filteredValue !== null && ((typeof filteredValue != "number") || !isNaN(filteredValue))){ - formattedValue = this.filter(this.format(filteredValue, this.constraints)); - }else{ formattedValue = ''; } - } - } - if(formattedValue != null /* and !undefined */ && ((typeof formattedValue) != "number" || !isNaN(formattedValue)) && this.textbox.value != formattedValue){ - this.textbox.value = formattedValue; - this._set("displayedValue", this.get("displayedValue")); - } - - if(this.textDir == "auto"){ - this.applyTextDir(this.focusNode, formattedValue); - } - - this.inherited(arguments, [filteredValue, priorityChange]); - }, - - // displayedValue: String - // For subclasses like ComboBox where the displayed value - // (ex: Kentucky) and the serialized value (ex: KY) are different, - // this represents the displayed value. - // - // Setting 'displayedValue' through set('displayedValue', ...) - // updates 'value', and vice-versa. Otherwise 'value' is updated - // from 'displayedValue' periodically, like onBlur etc. - // - // TODO: move declaration to MappedTextBox? - // Problem is that ComboBox references displayedValue, - // for benefit of FilteringSelect. - displayedValue: "", - - _getDisplayedValueAttr: function(){ - // summary: - // Hook so get('displayedValue') works. - // description: - // Returns the displayed value (what the user sees on the screen), - // after filtering (ie, trimming spaces etc.). - // - // For some subclasses of TextBox (like ComboBox), the displayed value - // is different from the serialized value that's actually - // sent to the server (see `dijit/form/ValidationTextBox.serialize()`) - - // TODO: maybe we should update this.displayedValue on every keystroke so that we don't need - // this method - // TODO: this isn't really the displayed value when the user is typing - return this.filter(this.textbox.value); - }, - - _setDisplayedValueAttr: function(/*String*/ value){ - // summary: - // Hook so set('displayedValue', ...) works. - // description: - // Sets the value of the visual element to the string "value". - // The widget value is also set to a corresponding, - // but not necessarily the same, value. - - if(value == null /* or undefined */){ value = '' } - else if(typeof value != "string"){ value = String(value) } - - this.textbox.value = value; - - // sets the serialized value to something corresponding to specified displayedValue - // (if possible), and also updates the textbox.value, for example converting "123" - // to "123.00" - this._setValueAttr(this.get('value'), undefined); - - this._set("displayedValue", this.get('displayedValue')); - - // textDir support - if(this.textDir == "auto"){ - this.applyTextDir(this.focusNode, value); - } - }, - - format: function(value /*=====, constraints =====*/){ - // summary: - // Replaceable function to convert a value to a properly formatted string. - // value: String - // constraints: Object - // tags: - // protected extension - return value == null /* or undefined */ ? "" : (value.toString ? value.toString() : value); - }, - - parse: function(value /*=====, constraints =====*/){ - // summary: - // Replaceable function to convert a formatted string to a value - // value: String - // constraints: Object - // tags: - // protected extension - - return value; // String - }, - - _refreshState: function(){ - // summary: - // After the user types some characters, etc., this method is - // called to check the field for validity etc. The base method - // in `dijit/form/TextBox` does nothing, but subclasses override. - // tags: - // protected - }, - - /*===== - onInput: function(event){ - // summary: - // Connect to this function to receive notifications of various user data-input events. - // Return false to cancel the event and prevent it from being processed. - // event: - // keydown | keypress | cut | paste | input - // tags: - // callback - }, - =====*/ - onInput: function(){}, - - __skipInputEvent: false, - _onInput: function(/*Event*/ evt){ - // summary: - // Called AFTER the input event has happened - - // set text direction according to textDir that was defined in creation - if(this.textDir == "auto"){ - this.applyTextDir(this.focusNode, this.focusNode.value); - } - - this._processInput(evt); - }, - - _processInput: function(/*Event*/ evt){ - // summary: - // Default action handler for user input events - - this._refreshState(); - - // In case someone is watch()'ing for changes to displayedValue - this._set("displayedValue", this.get("displayedValue")); - }, - - postCreate: function(){ - // setting the value here is needed since value="" in the template causes "undefined" - // and setting in the DOM (instead of the JS object) helps with form reset actions - this.textbox.setAttribute("value", this.textbox.value); // DOM and JS values should be the same - - this.inherited(arguments); - - // normalize input events to reduce spurious event processing - // onkeydown: do not forward modifier keys - // set charOrCode to numeric keycode - // onkeypress: do not forward numeric charOrCode keys (already sent through onkeydown) - // onpaste & oncut: set charOrCode to 229 (IME) - // oninput: if primary event not already processed, set charOrCode to 229 (IME), else do not forward - var handleEvent = function(e){ - var charOrCode; - if(e.type == "keydown"){ - charOrCode = e.keyCode; - switch(charOrCode){ // ignore state keys - case keys.SHIFT: - case keys.ALT: - case keys.CTRL: - case keys.META: - case keys.CAPS_LOCK: - case keys.NUM_LOCK: - case keys.SCROLL_LOCK: - return; - } - if(!e.ctrlKey && !e.metaKey && !e.altKey){ // no modifiers - switch(charOrCode){ // ignore location keys - case keys.NUMPAD_0: - case keys.NUMPAD_1: - case keys.NUMPAD_2: - case keys.NUMPAD_3: - case keys.NUMPAD_4: - case keys.NUMPAD_5: - case keys.NUMPAD_6: - case keys.NUMPAD_7: - case keys.NUMPAD_8: - case keys.NUMPAD_9: - case keys.NUMPAD_MULTIPLY: - case keys.NUMPAD_PLUS: - case keys.NUMPAD_ENTER: - case keys.NUMPAD_MINUS: - case keys.NUMPAD_PERIOD: - case keys.NUMPAD_DIVIDE: - return; - } - if((charOrCode >= 65 && charOrCode <= 90) || (charOrCode >= 48 && charOrCode <= 57) || charOrCode == keys.SPACE){ - return; // keypress will handle simple non-modified printable keys - } - var named = false; - for(var i in keys){ - if(keys[i] === e.keyCode){ - named = true; - break; - } - } - if(!named){ return; } // only allow named ones through - } - } - charOrCode = e.charCode >= 32 ? String.fromCharCode(e.charCode) : e.charCode; - if(!charOrCode){ - charOrCode = (e.keyCode >= 65 && e.keyCode <= 90) || (e.keyCode >= 48 && e.keyCode <= 57) || e.keyCode == keys.SPACE ? String.fromCharCode(e.keyCode) : e.keyCode; - } - if(!charOrCode){ - charOrCode = 229; // IME - } - if(e.type == "keypress"){ - if(typeof charOrCode != "string"){ return; } - if((charOrCode >= 'a' && charOrCode <= 'z') || (charOrCode >= 'A' && charOrCode <= 'Z') || (charOrCode >= '0' && charOrCode <= '9') || (charOrCode === ' ')){ - if(e.ctrlKey || e.metaKey || e.altKey){ return; } // can only be stopped reliably in keydown - } - } - if(e.type == "input"){ - if(this.__skipInputEvent){ // duplicate event - this.__skipInputEvent = false; - return; - } - }else{ - this.__skipInputEvent = true; - } - // create fake event to set charOrCode and to know if preventDefault() was called - var faux = { faux: true }, attr; - for(attr in e){ - if(attr != "layerX" && attr != "layerY"){ // prevent WebKit warnings - var v = e[attr]; - if(typeof v != "function" && typeof v != "undefined"){ faux[attr] = v; } - } - } - lang.mixin(faux, { - charOrCode: charOrCode, - _wasConsumed: false, - preventDefault: function(){ - faux._wasConsumed = true; - e.preventDefault(); - }, - stopPropagation: function(){ e.stopPropagation(); } - }); - // give web page author a chance to consume the event - //console.log(faux.type + ', charOrCode = (' + (typeof charOrCode) + ') ' + charOrCode + ', ctrl ' + !!faux.ctrlKey + ', alt ' + !!faux.altKey + ', meta ' + !!faux.metaKey + ', shift ' + !!faux.shiftKey); - if(this.onInput(faux) === false){ // return false means stop - faux.preventDefault(); - faux.stopPropagation(); - } - if(faux._wasConsumed){ return; } // if preventDefault was called - this.defer(function(){ this._onInput(faux); }); // widget notification after key has posted - }; - this.own(on(this.textbox, "keydown, keypress, paste, cut, input, compositionend", lang.hitch(this, handleEvent))); - }, - - _blankValue: '', // if the textbox is blank, what value should be reported - filter: function(val){ - // summary: - // Auto-corrections (such as trimming) that are applied to textbox - // value on blur or form submit. - // description: - // For MappedTextBox subclasses, this is called twice - // - // - once with the display value - // - once the value as set/returned by set('value', ...) - // - // and get('value'), ex: a Number for NumberTextBox. - // - // In the latter case it does corrections like converting null to NaN. In - // the former case the NumberTextBox.filter() method calls this.inherited() - // to execute standard trimming code in TextBox.filter(). - // - // TODO: break this into two methods in 2.0 - // - // tags: - // protected extension - if(val === null){ return this._blankValue; } - if(typeof val != "string"){ return val; } - if(this.trim){ - val = lang.trim(val); - } - if(this.uppercase){ - val = val.toUpperCase(); - } - if(this.lowercase){ - val = val.toLowerCase(); - } - if(this.propercase){ - val = val.replace(/[^\s]+/g, function(word){ - return word.substring(0,1).toUpperCase() + word.substring(1); - }); - } - return val; - }, - - _setBlurValue: function(){ - this._setValueAttr(this.get('value'), true); - }, - - _onBlur: function(e){ - if(this.disabled){ return; } - this._setBlurValue(); - this.inherited(arguments); - }, - - _isTextSelected: function(){ - return this.textbox.selectionStart != this.textbox.selectionEnd; - }, - - _onFocus: function(/*String*/ by){ - if(this.disabled || this.readOnly){ return; } - - // Select all text on focus via click if nothing already selected. - // Since mouse-up will clear the selection, need to defer selection until after mouse-up. - // Don't do anything on focus by tabbing into the widget since there's no associated mouse-up event. - if(this.selectOnClick && by == "mouse"){ - this._selectOnClickHandle = this.connect(this.domNode, "onmouseup", function(){ - // Only select all text on first click; otherwise users would have no way to clear - // the selection. - this.disconnect(this._selectOnClickHandle); - this._selectOnClickHandle = null; - - // Check if the user selected some text manually (mouse-down, mouse-move, mouse-up) - // and if not, then select all the text - if(!this._isTextSelected()){ - _TextBoxMixin.selectInputText(this.textbox); - } - }); - // in case the mouseup never comes - this.defer(function(){ - if(this._selectOnClickHandle){ - this.disconnect(this._selectOnClickHandle); - this._selectOnClickHandle = null; - } - }, 500); // if mouseup not received soon, then treat it as some gesture - } - // call this.inherited() before refreshState(), since this.inherited() will possibly scroll the viewport - // (to scroll the TextBox into view), which will affect how _refreshState() positions the tooltip - this.inherited(arguments); - - this._refreshState(); - }, - - reset: function(){ - // Overrides `dijit/_FormWidget/reset()`. - // Additionally resets the displayed textbox value to '' - this.textbox.value = ''; - this.inherited(arguments); - }, - - _setTextDirAttr: function(/*String*/ textDir){ - // summary: - // Setter for textDir. - // description: - // Users shouldn't call this function; they should be calling - // set('textDir', value) - // tags: - // private - - // only if new textDir is different from the old one - // and on widgets creation. - if(!this._created - || this.textDir != textDir){ - this._set("textDir", textDir); - // so the change of the textDir will take place immediately. - this.applyTextDir(this.focusNode, this.focusNode.value); - } - } -}); - - -_TextBoxMixin._setSelectionRange = dijit._setSelectionRange = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){ - if(element.setSelectionRange){ - element.setSelectionRange(start, stop); - } -}; - -_TextBoxMixin.selectInputText = dijit.selectInputText = function(/*DomNode*/ element, /*Number?*/ start, /*Number?*/ stop){ - // summary: - // Select text in the input element argument, from start (default 0), to stop (default end). - - // TODO: use functions in _editor/selection.js? - element = dom.byId(element); - if(isNaN(start)){ start = 0; } - if(isNaN(stop)){ stop = element.value ? element.value.length : 0; } - try{ - element.focus(); - _TextBoxMixin._setSelectionRange(element, start, stop); - }catch(e){ /* squelch random errors (esp. on IE) from unexpected focus changes or DOM nodes being hidden */ } -}; - -return _TextBoxMixin; -}); - -}, -'dijit/form/SimpleTextarea':function(){ -define("dijit/form/SimpleTextarea", [ - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add - "dojo/sniff", // has("ie") has("opera") - "./TextBox" -], function(declare, domClass, has, TextBox){ - -// module: -// dijit/form/SimpleTextarea - - -return declare("dijit.form.SimpleTextarea", TextBox, { - // summary: - // A simple textarea that degrades, and responds to - // minimal LayoutContainer usage, and works with dijit/form/Form. - // Doesn't automatically size according to input, like Textarea. - // - // example: - // | <textarea data-dojo-type="dijit/form/SimpleTextarea" name="foo" value="bar" rows=30 cols=40></textarea> - // - // example: - // | new SimpleTextarea({ rows:20, cols:30 }, "foo"); - - baseClass: "dijitTextBox dijitTextArea", - - // rows: Number - // The number of rows of text. - rows: "3", - - // rows: Number - // The number of characters per line. - cols: "20", - - templateString: "<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>", - - postMixInProperties: function(){ - // Copy value from srcNodeRef, unless user specified a value explicitly (or there is no srcNodeRef) - // TODO: parser will handle this in 2.0 - if(!this.value && this.srcNodeRef){ - this.value = this.srcNodeRef.value; - } - this.inherited(arguments); - }, - - buildRendering: function(){ - this.inherited(arguments); - if(has("ie") && this.cols){ // attribute selectors is not supported in IE6 - domClass.add(this.textbox, "dijitTextAreaCols"); - } - }, - - filter: function(/*String*/ value){ - // Override TextBox.filter to deal with newlines... specifically (IIRC) this is for IE which writes newlines - // as \r\n instead of just \n - if(value){ - value = value.replace(/\r/g,""); - } - return this.inherited(arguments); - }, - - _onInput: function(/*Event?*/ e){ - // Override TextBox._onInput() to enforce maxLength restriction - if(this.maxLength){ - var maxLength = parseInt(this.maxLength); - var value = this.textbox.value.replace(/\r/g,''); - var overflow = value.length - maxLength; - if(overflow > 0){ - var textarea = this.textbox; - if(textarea.selectionStart){ - var pos = textarea.selectionStart; - var cr = 0; - if(has("opera")){ - cr = (this.textbox.value.substring(0,pos).match(/\r/g) || []).length; - } - this.textbox.value = value.substring(0,pos-overflow-cr)+value.substring(pos-cr); - textarea.setSelectionRange(pos-overflow, pos-overflow); - }else if(this.ownerDocument.selection){ //IE - textarea.focus(); - var range = this.ownerDocument.selection.createRange(); - // delete overflow characters - range.moveStart("character", -overflow); - range.text = ''; - // show cursor - range.select(); - } - } - } - this.inherited(arguments); - } -}); - -}); - -}, -'url:dijit/layout/templates/_TabButton.html':"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon dijitTabButtonIcon\" data-dojo-attach-point='iconNode'/>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n", -'dijit/_base/window':function(){ -define("dijit/_base/window", [ - "dojo/window", // windowUtils.get - "../main" // export symbol to dijit -], function(windowUtils, dijit){ - // module: - // dijit/_base/window - - /*===== - return { - // summary: - // Back compatibility module, new code should use windowUtils directly instead of using this module. - }; - =====*/ - - dijit.getDocumentWindow = function(doc){ - return windowUtils.get(doc); - }; -}); - -}, -'dijit/PopupMenuItem':function(){ -define("dijit/PopupMenuItem", [ - "dojo/_base/declare", // declare - "dojo/dom-style", // domStyle.set - "dojo/query", // query - "./registry", // registry.byNode - "./MenuItem", - "./hccss" -], function(declare, domStyle, query, registry, MenuItem){ - - // module: - // dijit/PopupMenuItem - - return declare("dijit.PopupMenuItem", MenuItem, { - // summary: - // An item in a Menu that spawn a drop down (usually a drop down menu) - - _fillContent: function(){ - // summary: - // When Menu is declared in markup, this code gets the menu label and - // the popup widget from the srcNodeRef. - // description: - // srcNodeRefinnerHTML contains both the menu item text and a popup widget - // The first part holds the menu item text and the second part is the popup - // example: - // | <div data-dojo-type="dijit/PopupMenuItem"> - // | <span>pick me</span> - // | <popup> ... </popup> - // | </div> - // tags: - // protected - - if(this.srcNodeRef){ - var nodes = query("*", this.srcNodeRef); - this.inherited(arguments, [nodes[0]]); - - // save pointer to srcNode so we can grab the drop down widget after it's instantiated - this.dropDownContainer = this.srcNodeRef; - } - }, - - startup: function(){ - if(this._started){ return; } - this.inherited(arguments); - - // we didn't copy the dropdown widget from the this.srcNodeRef, so it's in no-man's - // land now. move it to win.doc.body. - if(!this.popup){ - var node = query("[widgetId]", this.dropDownContainer)[0]; - this.popup = registry.byNode(node); - } - this.ownerDocumentBody.appendChild(this.popup.domNode); - this.popup.startup(); - - this.popup.domNode.style.display="none"; - if(this.arrowWrapper){ - domStyle.set(this.arrowWrapper, "visibility", ""); - } - this.focusNode.setAttribute("aria-haspopup", "true"); - }, - - destroyDescendants: function(/*Boolean*/ preserveDom){ - if(this.popup){ - // Destroy the popup, unless it's already been destroyed. This can happen because - // the popup is a direct child of <body> even though it's logically my child. - if(!this.popup._destroyed){ - this.popup.destroyRecursive(preserveDom); - } - delete this.popup; - } - this.inherited(arguments); - } - }); -}); - -}, -'dojo/hccss':function(){ -define("dojo/hccss", [ - "require", // require.toUrl - "./_base/config", // config.blankGif - "./dom-class", // domClass.add - "./dom-style", // domStyle.getComputedStyle - "./has", - "./ready", // ready - "./_base/window" // win.body -], function(require, config, domClass, domStyle, has, ready, win){ - - // module: - // dojo/hccss - - /*===== - return function(){ - // summary: - // Test if computer is in high contrast mode (i.e. if browser is not displaying background images). - // Defines `has("highcontrast")` and sets `dj_a11y` CSS class on `<body>` if machine is in high contrast mode. - // Returns `has()` method; - }; - =====*/ - - // Has() test for when background images aren't displayed. Don't call has("highcontrast") before dojo/domReady!. - has.add("highcontrast", function(){ - // note: if multiple documents, doesn't matter which one we use - var div = win.doc.createElement("div"); - div.style.cssText = "border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;" + - "background-image: url(" + (config.blankGif || require.toUrl("./resources/blank.gif")) + ");"; - win.body().appendChild(div); - - var cs = domStyle.getComputedStyle(div), - bkImg = cs.backgroundImage, - hc = (cs.borderTopColor == cs.borderRightColor) || - (bkImg && (bkImg == "none" || bkImg == "url(invalid-url:)" )); - - if(has("ie") <= 8){ - div.outerHTML = ""; // prevent mixed-content warning, see http://support.microsoft.com/kb/925014 - }else{ - win.body().removeChild(div); - } - - return hc; - }); - - // Priority is 90 to run ahead of parser priority of 100. For 2.0, remove the ready() call and instead - // change this module to depend on dojo/domReady! - ready(90, function(){ - if(has("highcontrast")){ - domClass.add(win.body(), "dj_a11y"); - } - }); - - return has; -}); - -}, -'dijit/form/RadioButton':function(){ -define("dijit/form/RadioButton", [ - "dojo/_base/declare", // declare - "./CheckBox", - "./_RadioButtonMixin" -], function(declare, CheckBox, _RadioButtonMixin){ - - // module: - // dijit/form/RadioButton - - return declare("dijit.form.RadioButton", [CheckBox, _RadioButtonMixin], { - // summary: - // Same as an HTML radio, but with fancy styling. - - baseClass: "dijitRadio" - }); -}); - -}, -'dijit/main':function(){ -define("dijit/main", [ - "dojo/_base/kernel" -], function(dojo){ - // module: - // dijit/main - -/*===== -return { - // summary: - // The dijit package main module. - // Deprecated. Users should access individual modules (ex: dijit/registry) directly. -}; -=====*/ - - return dojo.dijit; -}); - -}, -'dijit/_OnDijitClickMixin':function(){ -define("dijit/_OnDijitClickMixin", [ - "dojo/on", - "dojo/_base/array", // array.forEach - "dojo/keys", // keys.ENTER keys.SPACE - "dojo/_base/declare", // declare - "dojo/has", // has("dom-addeventlistener") - "dojo/_base/unload", // unload.addOnWindowUnload - "dojo/_base/window", // win.doc.addEventListener win.doc.attachEvent win.doc.detachEvent - "./a11yclick" -], function(on, array, keys, declare, has, unload, win, a11yclick){ - - // module: - // dijit/_OnDijitClickMixin - - var ret = declare("dijit._OnDijitClickMixin", null, { - connect: function( - /*Object|null*/ obj, - /*String|Function*/ event, - /*String|Function*/ method){ - // summary: - // Connects specified obj/event to specified method of this object - // and registers for disconnect() on widget destroy. - // description: - // Provide widget-specific analog to connect.connect, except with the - // implicit use of this widget as the target object. - // This version of connect also provides a special "ondijitclick" - // event which triggers on a click or space or enter keyup. - // Events connected with `this.connect` are disconnected upon - // destruction. - // returns: - // A handle that can be passed to `disconnect` in order to disconnect before - // the widget is destroyed. - // example: - // | var btn = new Button(); - // | // when foo.bar() is called, call the listener we're going to - // | // provide in the scope of btn - // | btn.connect(foo, "bar", function(){ - // | console.debug(this.toString()); - // | }); - // tags: - // protected - - return this.inherited(arguments, [obj, event == "ondijitclick" ? a11yclick : event, method]); - } - }); - - ret.a11yclick = a11yclick; // back compat - - return ret; -}); - -}, -'dijit/InlineEditBox':function(){ -require({cache:{ -'url:dijit/templates/InlineEditBox.html':"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\tdata-dojo-attach-event=\"onkeypress: _onKeyPress\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"dijit/form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"dijit/form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n"}}); -define("dijit/InlineEditBox", [ - "require", - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set domAttr.get - "dojo/dom-class", // domClass.add domClass.remove domClass.toggle - "dojo/dom-construct", // domConstruct.create domConstruct.destroy - "dojo/dom-style", // domStyle.getComputedStyle domStyle.set domStyle.get - "dojo/_base/event", // event.stop - "dojo/i18n", // i18n.getLocalization - "dojo/_base/kernel", // kernel.deprecated - "dojo/keys", // keys.ENTER keys.ESCAPE - "dojo/_base/lang", // lang.getObject - "dojo/sniff", // has("ie") - "dojo/when", - "./focus", - "./_Widget", - "./_TemplatedMixin", - "./_WidgetsInTemplateMixin", - "./_Container", - "./form/Button", - "./form/_TextBoxMixin", - "./form/TextBox", - "dojo/text!./templates/InlineEditBox.html", - "dojo/i18n!./nls/common" -], function(require, array, declare, domAttr, domClass, domConstruct, domStyle, event, i18n, kernel, keys, lang, has, when, - fm, _Widget, _TemplatedMixin, _WidgetsInTemplateMixin, _Container, Button, _TextBoxMixin, TextBox, template){ - - // module: - // dijit/InlineEditBox - - var InlineEditor = declare("dijit._InlineEditor", [_Widget, _TemplatedMixin, _WidgetsInTemplateMixin], { - // summary: - // Internal widget used by InlineEditBox, displayed when in editing mode - // to display the editor and maybe save/cancel buttons. Calling code should - // connect to save/cancel methods to detect when editing is finished - // - // Has mainly the same parameters as InlineEditBox, plus these values: - // - // style: Object - // Set of CSS attributes of display node, to replicate in editor - // - // value: String - // Value as an HTML string or plain text string, depending on renderAsHTML flag - - templateString: template, - - postMixInProperties: function(){ - this.inherited(arguments); - this.messages = i18n.getLocalization("dijit", "common", this.lang); - array.forEach(["buttonSave", "buttonCancel"], function(prop){ - if(!this[prop]){ - this[prop] = this.messages[prop]; - } - }, this); - }, - - buildRendering: function(){ - this.inherited(arguments); - - // Create edit widget in place in the template - // TODO: remove getObject() for 2.0 - var Cls = typeof this.editor == "string" ? (lang.getObject(this.editor) || require(this.editor)) : this.editor; - - // Copy the style from the source - // Don't copy ALL properties though, just the necessary/applicable ones. - // wrapperStyle/destStyle code is to workaround IE bug where getComputedStyle().fontSize - // is a relative value like 200%, rather than an absolute value like 24px, and - // the 200% can refer *either* to a setting on the node or it's ancestor (see #11175) - var srcStyle = this.sourceStyle, - editStyle = "line-height:" + srcStyle.lineHeight + ";", - destStyle = domStyle.getComputedStyle(this.domNode); - array.forEach(["Weight", "Family", "Size", "Style"], function(prop){ - var textStyle = srcStyle["font" + prop], - wrapperStyle = destStyle["font" + prop]; - if(wrapperStyle != textStyle){ - editStyle += "font-" + prop + ":" + srcStyle["font" + prop] + ";"; - } - }, this); - array.forEach(["marginTop", "marginBottom", "marginLeft", "marginRight", "position", "left", "top", "right", "bottom", "float", "clear", "display"], function(prop){ - this.domNode.style[prop] = srcStyle[prop]; - }, this); - var width = this.inlineEditBox.width; - if(width == "100%"){ - // block mode - editStyle += "width:100%;"; - this.domNode.style.display = "block"; - }else{ - // inline-block mode - editStyle += "width:" + (width + (Number(width) == width ? "px" : "")) + ";"; - } - var editorParams = lang.delegate(this.inlineEditBox.editorParams, { - style: editStyle, - dir: this.dir, - lang: this.lang, - textDir: this.textDir - }); - editorParams[ "displayedValue" in Cls.prototype ? "displayedValue" : "value"] = this.value; - this.editWidget = new Cls(editorParams, this.editorPlaceholder); - - if(this.inlineEditBox.autoSave){ - // Remove the save/cancel buttons since saving is done by simply tabbing away or - // selecting a value from the drop down list - domConstruct.destroy(this.buttonContainer); - } - }, - - postCreate: function(){ - this.inherited(arguments); - - var ew = this.editWidget; - - if(this.inlineEditBox.autoSave){ - // Selecting a value from a drop down list causes an onChange event and then we save - this.connect(ew, "onChange", "_onChange"); - - // ESC and TAB should cancel and save. Note that edit widgets do a stopEvent() on ESC key (to - // prevent Dialog from closing when the user just wants to revert the value in the edit widget), - // so this is the only way we can see the key press event. - this.connect(ew, "onKeyPress", "_onKeyPress"); - }else{ - // If possible, enable/disable save button based on whether the user has changed the value - if("intermediateChanges" in ew){ - ew.set("intermediateChanges", true); - this.connect(ew, "onChange", "_onIntermediateChange"); - this.saveButton.set("disabled", true); - } - } - }, - - startup: function(){ - this.editWidget.startup(); - this.inherited(arguments); - }, - - _onIntermediateChange: function(/*===== val =====*/){ - // summary: - // Called for editor widgets that support the intermediateChanges=true flag as a way - // to detect when to enable/disabled the save button - this.saveButton.set("disabled", (this.getValue() == this._resetValue) || !this.enableSave()); - }, - - destroy: function(){ - this.editWidget.destroy(true); // let the parent wrapper widget clean up the DOM - this.inherited(arguments); - }, - - getValue: function(){ - // summary: - // Return the [display] value of the edit widget - var ew = this.editWidget; - return String(ew.get("displayedValue" in ew ? "displayedValue" : "value")); - }, - - _onKeyPress: function(e){ - // summary: - // Handler for keypress in the edit box in autoSave mode. - // description: - // For autoSave widgets, if Esc/Enter, call cancel/save. - // tags: - // private - - if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){ - if(e.altKey || e.ctrlKey){ - return; - } - // If Enter/Esc pressed, treat as save/cancel. - if(e.charOrCode == keys.ESCAPE){ - event.stop(e); - this.cancel(true); // sets editing=false which short-circuits _onBlur processing - }else if(e.charOrCode == keys.ENTER && e.target.tagName == "INPUT"){ - event.stop(e); - this._onChange(); // fire _onBlur and then save - } - - // _onBlur will handle TAB automatically by allowing - // the TAB to change focus before we mess with the DOM: #6227 - // Expounding by request: - // The current focus is on the edit widget input field. - // save() will hide and destroy this widget. - // We want the focus to jump from the currently hidden - // displayNode, but since it's hidden, it's impossible to - // unhide it, focus it, and then have the browser focus - // away from it to the next focusable element since each - // of these events is asynchronous and the focus-to-next-element - // is already queued. - // So we allow the browser time to unqueue the move-focus event - // before we do all the hide/show stuff. - } - }, - - _onBlur: function(){ - // summary: - // Called when focus moves outside the editor - // tags: - // private - - this.inherited(arguments); - if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){ - if(this.getValue() == this._resetValue){ - this.cancel(false); - }else if(this.enableSave()){ - this.save(false); - } - } - }, - - _onChange: function(){ - // summary: - // Called when the underlying widget fires an onChange event, - // such as when the user selects a value from the drop down list of a ComboBox, - // which means that the user has finished entering the value and we should save. - // tags: - // private - - if(this.inlineEditBox.autoSave && this.inlineEditBox.editing && this.enableSave()){ - fm.focus(this.inlineEditBox.displayNode); // fires _onBlur which will save the formatted value - } - }, - - enableSave: function(){ - // summary: - // User overridable function returning a Boolean to indicate - // if the Save button should be enabled or not - usually due to invalid conditions - // tags: - // extension - return this.editWidget.isValid ? this.editWidget.isValid() : true; - }, - - focus: function(){ - // summary: - // Focus the edit widget. - // tags: - // protected - - this.editWidget.focus(); - - if(this.editWidget.focusNode){ - // IE can take 30ms to report the focus event, but focus manager needs to know before a 0ms timeout. - fm._onFocusNode(this.editWidget.focusNode); - - if(this.editWidget.focusNode.tagName == "INPUT"){ - this.defer(function(){ - _TextBoxMixin.selectInputText(this.editWidget.focusNode); - }); - } - } - } - }); - - - var InlineEditBox = declare("dijit.InlineEditBox", _Widget, { - // summary: - // An element with in-line edit capabilities - // - // description: - // Behavior for an existing node (`<p>`, `<div>`, `<span>`, etc.) so that - // when you click it, an editor shows up in place of the original - // text. Optionally, Save and Cancel button are displayed below the edit widget. - // When Save is clicked, the text is pulled from the edit - // widget and redisplayed and the edit widget is again hidden. - // By default a plain Textarea widget is used as the editor (or for - // inline values a TextBox), but you can specify an editor such as - // dijit.Editor (for editing HTML) or a Slider (for adjusting a number). - // An edit widget must support the following API to be used: - // - // - displayedValue or value as initialization parameter, - // and available through set('displayedValue') / set('value') - // - void focus() - // - DOM-node focusNode = node containing editable text - - // editing: [readonly] Boolean - // Is the node currently in edit mode? - editing: false, - - // autoSave: Boolean - // Changing the value automatically saves it; don't have to push save button - // (and save button isn't even displayed) - autoSave: true, - - // buttonSave: String - // Save button label - buttonSave: "", - - // buttonCancel: String - // Cancel button label - buttonCancel: "", - - // renderAsHtml: Boolean - // Set this to true if the specified Editor's value should be interpreted as HTML - // rather than plain text (ex: `dijit.Editor`) - renderAsHtml: false, - - // editor: String|Function - // MID (ex: "dijit/form/TextBox") or constructor for editor widget - editor: TextBox, - - // editorWrapper: String|Function - // Class name (or reference to the Class) for widget that wraps the editor widget, displaying save/cancel - // buttons. - editorWrapper: InlineEditor, - - // editorParams: Object - // Set of parameters for editor, like {required: true} - editorParams: {}, - - // disabled: Boolean - // If true, clicking the InlineEditBox to edit it will have no effect. - disabled: false, - - onChange: function(/*===== value =====*/){ - // summary: - // Set this handler to be notified of changes to value. - // tags: - // callback - }, - - onCancel: function(){ - // summary: - // Set this handler to be notified when editing is cancelled. - // tags: - // callback - }, - - // width: String - // Width of editor. By default it's width=100% (ie, block mode). - width: "100%", - - // value: String - // The display value of the widget in read-only mode - value: "", - - // noValueIndicator: [const] String - // The text that gets displayed when there is no value (so that the user has a place to click to edit) - noValueIndicator: has("ie") <= 6 ? // font-family needed on IE6 but it messes up IE8 - "<span style='font-family: wingdings; text-decoration: underline;'>    ✍    </span>" : - "<span style='text-decoration: underline;'>    ✍    </span>", //   ==   - - constructor: function(/*===== params, srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified: - // - // - use srcNodeRef.innerHTML as my value - // - replace srcNodeRef with my generated DOM tree - - this.editorParams = {}; - }, - - postMixInProperties: function(){ - this.inherited(arguments); - - // save pointer to original source node, since Widget nulls-out srcNodeRef - this.displayNode = this.srcNodeRef; - - // connect handlers to the display node - var events = { - ondijitclick: "_onClick", - onmouseover: "_onMouseOver", - onmouseout: "_onMouseOut", - onfocus: "_onMouseOver", - onblur: "_onMouseOut" - }; - for(var name in events){ - this.connect(this.displayNode, name, events[name]); - } - this.displayNode.setAttribute("role", "button"); - if(!this.displayNode.getAttribute("tabIndex")){ - this.displayNode.setAttribute("tabIndex", 0); - } - - if(!this.value && !("value" in this.params)){ // "" is a good value if specified directly so check params){ - this.value = lang.trim(this.renderAsHtml ? this.displayNode.innerHTML : - (this.displayNode.innerText || this.displayNode.textContent || "")); - } - if(!this.value){ - this.displayNode.innerHTML = this.noValueIndicator; - } - - domClass.add(this.displayNode, 'dijitInlineEditBoxDisplayMode'); - }, - - setDisabled: function(/*Boolean*/ disabled){ - // summary: - // Deprecated. Use set('disabled', ...) instead. - // tags: - // deprecated - kernel.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.", "", "2.0"); - this.set('disabled', disabled); - }, - - _setDisabledAttr: function(/*Boolean*/ disabled){ - // summary: - // Hook to make set("disabled", ...) work. - // Set disabled state of widget. - this.domNode.setAttribute("aria-disabled", disabled ? "true" : "false"); - if(disabled){ - this.displayNode.removeAttribute("tabIndex"); - }else{ - this.displayNode.setAttribute("tabIndex", 0); - } - domClass.toggle(this.displayNode, "dijitInlineEditBoxDisplayModeDisabled", disabled); - this._set("disabled", disabled); - }, - - _onMouseOver: function(){ - // summary: - // Handler for onmouseover and onfocus event. - // tags: - // private - if(!this.disabled){ - domClass.add(this.displayNode, "dijitInlineEditBoxDisplayModeHover"); - } - }, - - _onMouseOut: function(){ - // summary: - // Handler for onmouseout and onblur event. - // tags: - // private - domClass.remove(this.displayNode, "dijitInlineEditBoxDisplayModeHover"); - }, - - _onClick: function(/*Event*/ e){ - // summary: - // Handler for onclick event. - // tags: - // private - if(this.disabled){ - return; - } - if(e){ - event.stop(e); - } - this._onMouseOut(); - - // Since FF gets upset if you move a node while in an event handler for that node... - this.defer("edit"); - }, - - edit: function(){ - // summary: - // Display the editor widget in place of the original (read only) markup. - // tags: - // private - - if(this.disabled || this.editing){ - return; - } - this._set('editing', true); - - // save some display node values that can be restored later - this._savedTabIndex = domAttr.get(this.displayNode, "tabIndex") || "0"; - - if(this.wrapperWidget){ - var ew = this.wrapperWidget.editWidget; - ew.set("displayedValue" in ew ? "displayedValue" : "value", this.value); - }else{ - // Placeholder for edit widget - // Put place holder (and eventually editWidget) before the display node so that it's positioned correctly - // when Calendar dropdown appears, which happens automatically on focus. - var placeholder = domConstruct.create("span", null, this.domNode, "before"); - - // Create the editor wrapper (the thing that holds the editor widget and the save/cancel buttons) - var Ewc = typeof this.editorWrapper == "string" ? lang.getObject(this.editorWrapper) : this.editorWrapper; - this.wrapperWidget = new Ewc({ - value: this.value, - buttonSave: this.buttonSave, - buttonCancel: this.buttonCancel, - dir: this.dir, - lang: this.lang, - tabIndex: this._savedTabIndex, - editor: this.editor, - inlineEditBox: this, - sourceStyle: domStyle.getComputedStyle(this.displayNode), - save: lang.hitch(this, "save"), - cancel: lang.hitch(this, "cancel"), - textDir: this.textDir - }, placeholder); - if(!this.wrapperWidget._started){ - this.wrapperWidget.startup(); - } - if(!this._started){ - this.startup(); - } - } - var ww = this.wrapperWidget; - - // to avoid screen jitter, we first create the editor with position: absolute, visibility: hidden, - // and then when it's finished rendering, we switch from display mode to editor - // position: absolute releases screen space allocated to the display node - // opacity:0 is the same as visibility: hidden but is still focusable - // visibility: hidden removes focus outline - - domClass.add(this.displayNode, "dijitOffScreen"); - domClass.remove(ww.domNode, "dijitOffScreen"); - domStyle.set(ww.domNode, { visibility: "visible" }); - domAttr.set(this.displayNode, "tabIndex", "-1"); // needed by WebKit for TAB from editor to skip displayNode - - // After edit widget has finished initializing (in particular need to wait for dijit.Editor), - // or immediately if there is no onLoadDeferred Deferred, - // replace the display widget with edit widget, leaving them both displayed for a brief time so that - // focus can be shifted without incident. - when(ww.editWidget.onLoadDeferred, lang.hitch(ww, function(){ - this.defer(function(){ // defer needed so that the change of focus doesn't happen on mousedown which also sets focus - this.focus(); // both nodes are showing, so we can switch focus safely - this._resetValue = this.getValue(); - }); - })); - }, - - _onBlur: function(){ - // summary: - // Called when focus moves outside the InlineEditBox. - // Performs garbage collection. - // tags: - // private - - this.inherited(arguments); - if(!this.editing){ - /* causes IE focus problems, see TooltipDialog_a11y.html... - this.defer(function(){ - if(this.wrapperWidget){ - this.wrapperWidget.destroy(); - delete this.wrapperWidget; - } - }); - */ - } - }, - - destroy: function(){ - if(this.wrapperWidget && !this.wrapperWidget._destroyed){ - this.wrapperWidget.destroy(); - delete this.wrapperWidget; - } - this.inherited(arguments); - }, - - _showText: function(/*Boolean*/ focus){ - // summary: - // Revert to display mode, and optionally focus on display node - // tags: - // private - - var ww = this.wrapperWidget; - domStyle.set(ww.domNode, { visibility: "hidden" }); // hide the editor from mouse/keyboard events - domClass.add(ww.domNode, "dijitOffScreen"); - domClass.remove(this.displayNode, "dijitOffScreen"); - domAttr.set(this.displayNode, "tabIndex", this._savedTabIndex); - if(focus){ - fm.focus(this.displayNode); - } - }, - - save: function(/*Boolean*/ focus){ - // summary: - // Save the contents of the editor and revert to display mode. - // focus: Boolean - // Focus on the display mode text - // tags: - // private - - if(this.disabled || !this.editing){ - return; - } - this._set('editing', false); - - var ww = this.wrapperWidget; - var value = ww.getValue(); - this.set('value', value); // display changed, formatted value - - this._showText(focus); // set focus as needed - }, - - setValue: function(/*String*/ val){ - // summary: - // Deprecated. Use set('value', ...) instead. - // tags: - // deprecated - kernel.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.", "", "2.0"); - return this.set("value", val); - }, - - _setValueAttr: function(/*String*/ val){ - // summary: - // Hook to make set("value", ...) work. - // Inserts specified HTML value into this node, or an "input needed" character if node is blank. - - val = lang.trim(val); - var renderVal = this.renderAsHtml ? val : val.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/gm, """).replace(/\n/g, "<br>"); - this.displayNode.innerHTML = renderVal || this.noValueIndicator; - this._set("value", val); - - if(this._started){ - // tell the world that we have changed - this.defer(function(){ - this.onChange(val); - }); // defer prevents browser freeze for long-running event handlers - } - // contextual (auto) text direction depends on the text value - if(this.textDir == "auto"){ - this.applyTextDir(this.displayNode, this.displayNode.innerText); - } - }, - - getValue: function(){ - // summary: - // Deprecated. Use get('value') instead. - // tags: - // deprecated - kernel.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.", "", "2.0"); - return this.get("value"); - }, - - cancel: function(/*Boolean*/ focus){ - // summary: - // Revert to display mode, discarding any changes made in the editor - // tags: - // private - - if(this.disabled || !this.editing){ - return; - } - this._set('editing', false); - - // tell the world that we have no changes - this.defer("onCancel"); // defer prevents browser freeze for long-running event handlers - - this._showText(focus); - }, - - _setTextDirAttr: function(/*String*/ textDir){ - // summary: - // Setter for textDir. - // description: - // Users shouldn't call this function; they should be calling - // set('textDir', value) - // tags: - // private - if(!this._created || this.textDir != textDir){ - this._set("textDir", textDir); - this.applyTextDir(this.displayNode, this.displayNode.innerText); - this.displayNode.align = this.dir == "rtl" ? "right" : "left"; //fix the text alignment - } - } - }); - - InlineEditBox._InlineEditor = InlineEditor; // for monkey patching - - return InlineEditBox; -}); -}, -'dojo/selector/acme':function(){ -define("dojo/selector/acme", [ - "../dom", "../sniff", "../_base/array", "../_base/lang", "../_base/window" -], function(dom, has, array, lang, win){ - - // module: - // dojo/selector/acme - -/* - acme architectural overview: - - acme is a relatively full-featured CSS3 query library. It is - designed to take any valid CSS3 selector and return the nodes matching - the selector. To do this quickly, it processes queries in several - steps, applying caching where profitable. - - The steps (roughly in reverse order of the way they appear in the code): - 1.) check to see if we already have a "query dispatcher" - - if so, use that with the given parameterization. Skip to step 4. - 2.) attempt to determine which branch to dispatch the query to: - - JS (optimized DOM iteration) - - native (FF3.1+, Safari 3.1+, IE 8+) - 3.) tokenize and convert to executable "query dispatcher" - - this is where the lion's share of the complexity in the - system lies. In the DOM version, the query dispatcher is - assembled as a chain of "yes/no" test functions pertaining to - a section of a simple query statement (".blah:nth-child(odd)" - but not "div div", which is 2 simple statements). Individual - statement dispatchers are cached (to prevent re-definition) - as are entire dispatch chains (to make re-execution of the - same query fast) - 4.) the resulting query dispatcher is called in the passed scope - (by default the top-level document) - - for DOM queries, this results in a recursive, top-down - evaluation of nodes based on each simple query section - - for native implementations, this may mean working around spec - bugs. So be it. - 5.) matched nodes are pruned to ensure they are unique (if necessary) -*/ - - - //////////////////////////////////////////////////////////////////////// - // Toolkit aliases - //////////////////////////////////////////////////////////////////////// - - // if you are extracting acme for use in your own system, you will - // need to provide these methods and properties. No other porting should be - // necessary, save for configuring the system to use a class other than - // dojo/NodeList as the return instance instantiator - var trim = lang.trim; - var each = array.forEach; - - var getDoc = function(){ return win.doc; }; - // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo - var cssCaseBug = (getDoc().compatMode) == "BackCompat"; - - //////////////////////////////////////////////////////////////////////// - // Global utilities - //////////////////////////////////////////////////////////////////////// - - - var specials = ">~+"; - - // global thunk to determine whether we should treat the current query as - // case sensitive or not. This switch is flipped by the query evaluator - // based on the document passed as the context to search. - var caseSensitive = false; - - // how high? - var yesman = function(){ return true; }; - - //////////////////////////////////////////////////////////////////////// - // Tokenizer - //////////////////////////////////////////////////////////////////////// - - var getQueryParts = function(query){ - // summary: - // state machine for query tokenization - // description: - // instead of using a brittle and slow regex-based CSS parser, - // acme implements an AST-style query representation. This - // representation is only generated once per query. For example, - // the same query run multiple times or under different root nodes - // does not re-parse the selector expression but instead uses the - // cached data structure. The state machine implemented here - // terminates on the last " " (space) character and returns an - // ordered array of query component structures (or "parts"). Each - // part represents an operator or a simple CSS filtering - // expression. The structure for parts is documented in the code - // below. - - - // NOTE: - // this code is designed to run fast and compress well. Sacrifices - // to readability and maintainability have been made. Your best - // bet when hacking the tokenizer is to put The Donnas on *really* - // loud (may we recommend their "Spend The Night" release?) and - // just assume you're gonna make mistakes. Keep the unit tests - // open and run them frequently. Knowing is half the battle ;-) - if(specials.indexOf(query.slice(-1)) >= 0){ - // if we end with a ">", "+", or "~", that means we're implicitly - // searching all children, so make it explicit - query += " * "; - }else{ - // if you have not provided a terminator, one will be provided for - // you... - query += " "; - } - - var ts = function(/*Integer*/ s, /*Integer*/ e){ - // trim and slice. - - // take an index to start a string slice from and an end position - // and return a trimmed copy of that sub-string - return trim(query.slice(s, e)); - }; - - // the overall data graph of the full query, as represented by queryPart objects - var queryParts = []; - - - // state keeping vars - var inBrackets = -1, inParens = -1, inMatchFor = -1, - inPseudo = -1, inClass = -1, inId = -1, inTag = -1, currentQuoteChar, - lc = "", cc = "", pStart; - - // iteration vars - var x = 0, // index in the query - ql = query.length, - currentPart = null, // data structure representing the entire clause - _cp = null; // the current pseudo or attr matcher - - // several temporary variables are assigned to this structure during a - // potential sub-expression match: - // attr: - // a string representing the current full attribute match in a - // bracket expression - // type: - // if there's an operator in a bracket expression, this is - // used to keep track of it - // value: - // the internals of parenthetical expression for a pseudo. for - // :nth-child(2n+1), value might be "2n+1" - - var endTag = function(){ - // called when the tokenizer hits the end of a particular tag name. - // Re-sets state variables for tag matching and sets up the matcher - // to handle the next type of token (tag or operator). - if(inTag >= 0){ - var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase(); - currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv; - inTag = -1; - } - }; - - var endId = function(){ - // called when the tokenizer might be at the end of an ID portion of a match - if(inId >= 0){ - currentPart.id = ts(inId, x).replace(/\\/g, ""); - inId = -1; - } - }; - - var endClass = function(){ - // called when the tokenizer might be at the end of a class name - // match. CSS allows for multiple classes, so we augment the - // current item with another class in its list - if(inClass >= 0){ - currentPart.classes.push(ts(inClass + 1, x).replace(/\\/g, "")); - inClass = -1; - } - }; - - var endAll = function(){ - // at the end of a simple fragment, so wall off the matches - endId(); - endTag(); - endClass(); - }; - - var endPart = function(){ - endAll(); - if(inPseudo >= 0){ - currentPart.pseudos.push({ name: ts(inPseudo + 1, x) }); - } - // hint to the selector engine to tell it whether or not it - // needs to do any iteration. Many simple selectors don't, and - // we can avoid significant construction-time work by advising - // the system to skip them - currentPart.loops = ( - currentPart.pseudos.length || - currentPart.attrs.length || - currentPart.classes.length ); - - currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string - - - // otag/tag are hints to suggest to the system whether or not - // it's an operator or a tag. We save a copy of otag since the - // tag name is cast to upper-case in regular HTML matches. The - // system has a global switch to figure out if the current - // expression needs to be case sensitive or not and it will use - // otag or tag accordingly - currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*"); - - if(currentPart.tag){ - // if we're in a case-insensitive HTML doc, we likely want - // the toUpperCase when matching on element.tagName. If we - // do it here, we can skip the string op per node - // comparison - currentPart.tag = currentPart.tag.toUpperCase(); - } - - // add the part to the list - if(queryParts.length && (queryParts[queryParts.length-1].oper)){ - // operators are always infix, so we remove them from the - // list and attach them to the next match. The evaluator is - // responsible for sorting out how to handle them. - currentPart.infixOper = queryParts.pop(); - currentPart.query = currentPart.infixOper.query + " " + currentPart.query; - /* - console.debug( "swapping out the infix", - currentPart.infixOper, - "and attaching it to", - currentPart); - */ - } - queryParts.push(currentPart); - - currentPart = null; - }; - - // iterate over the query, character by character, building up a - // list of query part objects - for(; lc=cc, cc=query.charAt(x), x < ql; x++){ - // cc: the current character in the match - // lc: the last character (if any) - - // someone is trying to escape something, so don't try to match any - // fragments. We assume we're inside a literal. - if(lc == "\\"){ continue; } - if(!currentPart){ // a part was just ended or none has yet been created - // NOTE: I hate all this alloc, but it's shorter than writing tons of if's - pStart = x; - // rules describe full CSS sub-expressions, like: - // #someId - // .className:first-child - // but not: - // thinger > div.howdy[type=thinger] - // the indidual components of the previous query would be - // split into 3 parts that would be represented a structure like: - // [ - // { - // query: "thinger", - // tag: "thinger", - // }, - // { - // query: "div.howdy[type=thinger]", - // classes: ["howdy"], - // infixOper: { - // query: ">", - // oper: ">", - // } - // }, - // ] - currentPart = { - query: null, // the full text of the part's rule - pseudos: [], // CSS supports multiple pseud-class matches in a single rule - attrs: [], // CSS supports multi-attribute match, so we need an array - classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy - tag: null, // only one tag... - oper: null, // ...or operator per component. Note that these wind up being exclusive. - id: null, // the id component of a rule - getTag: function(){ - return caseSensitive ? this.otag : this.tag; - } - }; - - // if we don't have a part, we assume we're going to start at - // the beginning of a match, which should be a tag name. This - // might fault a little later on, but we detect that and this - // iteration will still be fine. - inTag = x; - } - - // Skip processing all quoted characters. - // If we are inside quoted text then currentQuoteChar stores the character that began the quote, - // thus that character that will end it. - if(currentQuoteChar){ - if(cc == currentQuoteChar){ - currentQuoteChar = null; - } - continue; - }else if (cc == "'" || cc == '"'){ - currentQuoteChar = cc; - continue; - } - - if(inBrackets >= 0){ - // look for a the close first - if(cc == "]"){ // if we're in a [...] clause and we end, do assignment - if(!_cp.attr){ - // no attribute match was previously begun, so we - // assume this is an attribute existence match in the - // form of [someAttributeName] - _cp.attr = ts(inBrackets+1, x); - }else{ - // we had an attribute already, so we know that we're - // matching some sort of value, as in [attrName=howdy] - _cp.matchFor = ts((inMatchFor||inBrackets+1), x); - } - var cmf = _cp.matchFor; - if(cmf){ - // try to strip quotes from the matchFor value. We want - // [attrName=howdy] to match the same - // as [attrName = 'howdy' ] - if( (cmf.charAt(0) == '"') || (cmf.charAt(0) == "'") ){ - _cp.matchFor = cmf.slice(1, -1); - } - } - // remove backslash escapes from an attribute match, since DOM - // querying will get attribute values without backslashes - if(_cp.matchFor){ - _cp.matchFor = _cp.matchFor.replace(/\\/g, ""); - } - - // end the attribute by adding it to the list of attributes. - currentPart.attrs.push(_cp); - _cp = null; // necessary? - inBrackets = inMatchFor = -1; - }else if(cc == "="){ - // if the last char was an operator prefix, make sure we - // record it along with the "=" operator. - var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : ""; - _cp.type = addToCc+cc; - _cp.attr = ts(inBrackets+1, x-addToCc.length); - inMatchFor = x+1; - } - // now look for other clause parts - }else if(inParens >= 0){ - // if we're in a parenthetical expression, we need to figure - // out if it's attached to a pseudo-selector rule like - // :nth-child(1) - if(cc == ")"){ - if(inPseudo >= 0){ - _cp.value = ts(inParens+1, x); - } - inPseudo = inParens = -1; - } - }else if(cc == "#"){ - // start of an ID match - endAll(); - inId = x+1; - }else if(cc == "."){ - // start of a class match - endAll(); - inClass = x; - }else if(cc == ":"){ - // start of a pseudo-selector match - endAll(); - inPseudo = x; - }else if(cc == "["){ - // start of an attribute match. - endAll(); - inBrackets = x; - // provide a new structure for the attribute match to fill-in - _cp = { - /*===== - attr: null, type: null, matchFor: null - =====*/ - }; - }else if(cc == "("){ - // we really only care if we've entered a parenthetical - // expression if we're already inside a pseudo-selector match - if(inPseudo >= 0){ - // provide a new structure for the pseudo match to fill-in - _cp = { - name: ts(inPseudo+1, x), - value: null - }; - currentPart.pseudos.push(_cp); - } - inParens = x; - }else if( - (cc == " ") && - // if it's a space char and the last char is too, consume the - // current one without doing more work - (lc != cc) - ){ - endPart(); - } - } - return queryParts; - }; - - - //////////////////////////////////////////////////////////////////////// - // DOM query infrastructure - //////////////////////////////////////////////////////////////////////// - - var agree = function(first, second){ - // the basic building block of the yes/no chaining system. agree(f1, - // f2) generates a new function which returns the boolean results of - // both of the passed functions to a single logical-anded result. If - // either are not passed, the other is used exclusively. - if(!first){ return second; } - if(!second){ return first; } - - return function(){ - return first.apply(window, arguments) && second.apply(window, arguments); - }; - }; - - var getArr = function(i, arr){ - // helps us avoid array alloc when we don't need it - var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ? - if(i){ r.push(i); } - return r; - }; - - var _isElement = function(n){ return (1 == n.nodeType); }; - - // FIXME: need to coalesce _getAttr with defaultGetter - var blank = ""; - var _getAttr = function(elem, attr){ - if(!elem){ return blank; } - if(attr == "class"){ - return elem.className || blank; - } - if(attr == "for"){ - return elem.htmlFor || blank; - } - if(attr == "style"){ - return elem.style.cssText || blank; - } - return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank; - }; - - var attrs = { - "*=": function(attr, value){ - return function(elem){ - // E[foo*="bar"] - // an E element whose "foo" attribute value contains - // the substring "bar" - return (_getAttr(elem, attr).indexOf(value)>=0); - }; - }, - "^=": function(attr, value){ - // E[foo^="bar"] - // an E element whose "foo" attribute value begins exactly - // with the string "bar" - return function(elem){ - return (_getAttr(elem, attr).indexOf(value)==0); - }; - }, - "$=": function(attr, value){ - // E[foo$="bar"] - // an E element whose "foo" attribute value ends exactly - // with the string "bar" - return function(elem){ - var ea = " "+_getAttr(elem, attr); - var lastIndex = ea.lastIndexOf(value); - return lastIndex > -1 && (lastIndex==(ea.length-value.length)); - }; - }, - "~=": function(attr, value){ - // E[foo~="bar"] - // an E element whose "foo" attribute value is a list of - // space-separated values, one of which is exactly equal - // to "bar" - - // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]"; - var tval = " "+value+" "; - return function(elem){ - var ea = " "+_getAttr(elem, attr)+" "; - return (ea.indexOf(tval)>=0); - }; - }, - "|=": function(attr, value){ - // E[hreflang|="en"] - // an E element whose "hreflang" attribute has a - // hyphen-separated list of values beginning (from the - // left) with "en" - var valueDash = value+"-"; - return function(elem){ - var ea = _getAttr(elem, attr); - return ( - (ea == value) || - (ea.indexOf(valueDash)==0) - ); - }; - }, - "=": function(attr, value){ - return function(elem){ - return (_getAttr(elem, attr) == value); - }; - } - }; - - // avoid testing for node type if we can. Defining this in the negative - // here to avoid negation in the fast path. - var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined"); - var _ns = !_noNES ? "nextElementSibling" : "nextSibling"; - var _ps = !_noNES ? "previousElementSibling" : "previousSibling"; - var _simpleNodeTest = (_noNES ? _isElement : yesman); - - var _lookLeft = function(node){ - // look left - while(node = node[_ps]){ - if(_simpleNodeTest(node)){ return false; } - } - return true; - }; - - var _lookRight = function(node){ - // look right - while(node = node[_ns]){ - if(_simpleNodeTest(node)){ return false; } - } - return true; - }; - - var getNodeIndex = function(node){ - var root = node.parentNode; - root = root.nodeType != 7 ? root : root.nextSibling; // PROCESSING_INSTRUCTION_NODE - var i = 0, - tret = root.children || root.childNodes, - ci = (node["_i"]||node.getAttribute("_i")||-1), - cl = (root["_l"]|| (typeof root.getAttribute !== "undefined" ? root.getAttribute("_l") : -1)); - - if(!tret){ return -1; } - var l = tret.length; - - // we calculate the parent length as a cheap way to invalidate the - // cache. It's not 100% accurate, but it's much more honest than what - // other libraries do - if( cl == l && ci >= 0 && cl >= 0 ){ - // if it's legit, tag and release - return ci; - } - - // else re-key things - if(has("ie") && typeof root.setAttribute !== "undefined"){ - root.setAttribute("_l", l); - }else{ - root["_l"] = l; - } - ci = -1; - for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){ - if(_simpleNodeTest(te)){ - if(has("ie")){ - te.setAttribute("_i", ++i); - }else{ - te["_i"] = ++i; - } - if(node === te){ - // NOTE: - // shortcutting the return at this step in indexing works - // very well for benchmarking but we avoid it here since - // it leads to potential O(n^2) behavior in sequential - // getNodexIndex operations on a previously un-indexed - // parent. We may revisit this at a later time, but for - // now we just want to get the right answer more often - // than not. - ci = i; - } - } - } - return ci; - }; - - var isEven = function(elem){ - return !((getNodeIndex(elem)) % 2); - }; - - var isOdd = function(elem){ - return ((getNodeIndex(elem)) % 2); - }; - - var pseudos = { - "checked": function(name, condition){ - return function(elem){ - return !!("checked" in elem ? elem.checked : elem.selected); - }; - }, - "disabled": function(name, condition){ - return function(elem){ - return elem.disabled; - }; - }, - "enabled": function(name, condition){ - return function(elem){ - return !elem.disabled; - }; - }, - "first-child": function(){ return _lookLeft; }, - "last-child": function(){ return _lookRight; }, - "only-child": function(name, condition){ - return function(node){ - return _lookLeft(node) && _lookRight(node); - }; - }, - "empty": function(name, condition){ - return function(elem){ - // DomQuery and jQuery get this wrong, oddly enough. - // The CSS 3 selectors spec is pretty explicit about it, too. - var cn = elem.childNodes; - var cnl = elem.childNodes.length; - // if(!cnl){ return true; } - for(var x=cnl-1; x >= 0; x--){ - var nt = cn[x].nodeType; - if((nt === 1)||(nt == 3)){ return false; } - } - return true; - }; - }, - "contains": function(name, condition){ - var cz = condition.charAt(0); - if( cz == '"' || cz == "'" ){ //remove quote - condition = condition.slice(1, -1); - } - return function(elem){ - return (elem.innerHTML.indexOf(condition) >= 0); - }; - }, - "not": function(name, condition){ - var p = getQueryParts(condition)[0]; - var ignores = { el: 1 }; - if(p.tag != "*"){ - ignores.tag = 1; - } - if(!p.classes.length){ - ignores.classes = 1; - } - var ntf = getSimpleFilterFunc(p, ignores); - return function(elem){ - return (!ntf(elem)); - }; - }, - "nth-child": function(name, condition){ - var pi = parseInt; - // avoid re-defining function objects if we can - if(condition == "odd"){ - return isOdd; - }else if(condition == "even"){ - return isEven; - } - // FIXME: can we shorten this? - if(condition.indexOf("n") != -1){ - var tparts = condition.split("n", 2); - var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1; - var idx = tparts[1] ? pi(tparts[1]) : 0; - var lb = 0, ub = -1; - if(pred > 0){ - if(idx < 0){ - idx = (idx % pred) && (pred + (idx % pred)); - }else if(idx>0){ - if(idx >= pred){ - lb = idx - idx % pred; - } - idx = idx % pred; - } - }else if(pred<0){ - pred *= -1; - // idx has to be greater than 0 when pred is negative; - // shall we throw an error here? - if(idx > 0){ - ub = idx; - idx = idx % pred; - } - } - if(pred > 0){ - return function(elem){ - var i = getNodeIndex(elem); - return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx); - }; - }else{ - condition = idx; - } - } - var ncount = pi(condition); - return function(elem){ - return (getNodeIndex(elem) == ncount); - }; - } - }; - - var defaultGetter = (has("ie") < 9 || has("ie") == 9 && has("quirks")) ? function(cond){ - var clc = cond.toLowerCase(); - if(clc == "class"){ cond = "className"; } - return function(elem){ - return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]); - }; - } : function(cond){ - return function(elem){ - return (elem && elem.getAttribute && elem.hasAttribute(cond)); - }; - }; - - var getSimpleFilterFunc = function(query, ignores){ - // generates a node tester function based on the passed query part. The - // query part is one of the structures generated by the query parser - // when it creates the query AST. The "ignores" object specifies which - // (if any) tests to skip, allowing the system to avoid duplicating - // work where it may have already been taken into account by other - // factors such as how the nodes to test were fetched in the first - // place - if(!query){ return yesman; } - ignores = ignores||{}; - - var ff = null; - - if(!("el" in ignores)){ - ff = agree(ff, _isElement); - } - - if(!("tag" in ignores)){ - if(query.tag != "*"){ - ff = agree(ff, function(elem){ - return (elem && ((caseSensitive ? elem.tagName : elem.tagName.toUpperCase()) == query.getTag())); - }); - } - } - - if(!("classes" in ignores)){ - each(query.classes, function(cname, idx, arr){ - // get the class name - /* - var isWildcard = cname.charAt(cname.length-1) == "*"; - if(isWildcard){ - cname = cname.substr(0, cname.length-1); - } - // I dislike the regex thing, even if memoized in a cache, but it's VERY short - var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)"); - */ - var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)"); - ff = agree(ff, function(elem){ - return re.test(elem.className); - }); - ff.count = idx; - }); - } - - if(!("pseudos" in ignores)){ - each(query.pseudos, function(pseudo){ - var pn = pseudo.name; - if(pseudos[pn]){ - ff = agree(ff, pseudos[pn](pn, pseudo.value)); - } - }); - } - - if(!("attrs" in ignores)){ - each(query.attrs, function(attr){ - var matcher; - var a = attr.attr; - // type, attr, matchFor - if(attr.type && attrs[attr.type]){ - matcher = attrs[attr.type](a, attr.matchFor); - }else if(a.length){ - matcher = defaultGetter(a); - } - if(matcher){ - ff = agree(ff, matcher); - } - }); - } - - if(!("id" in ignores)){ - if(query.id){ - ff = agree(ff, function(elem){ - return (!!elem && (elem.id == query.id)); - }); - } - } - - if(!ff){ - if(!("default" in ignores)){ - ff = yesman; - } - } - return ff; - }; - - var _nextSibling = function(filterFunc){ - return function(node, ret, bag){ - while(node = node[_ns]){ - if(_noNES && (!_isElement(node))){ continue; } - if( - (!bag || _isUnique(node, bag)) && - filterFunc(node) - ){ - ret.push(node); - } - break; - } - return ret; - }; - }; - - var _nextSiblings = function(filterFunc){ - return function(root, ret, bag){ - var te = root[_ns]; - while(te){ - if(_simpleNodeTest(te)){ - if(bag && !_isUnique(te, bag)){ - break; - } - if(filterFunc(te)){ - ret.push(te); - } - } - te = te[_ns]; - } - return ret; - }; - }; - - // get an array of child *elements*, skipping text and comment nodes - var _childElements = function(filterFunc){ - filterFunc = filterFunc||yesman; - return function(root, ret, bag){ - // get an array of child elements, skipping text and comment nodes - var te, x = 0, tret = root.children || root.childNodes; - while(te = tret[x++]){ - if( - _simpleNodeTest(te) && - (!bag || _isUnique(te, bag)) && - (filterFunc(te, x)) - ){ - ret.push(te); - } - } - return ret; - }; - }; - - // test to see if node is below root - var _isDescendant = function(node, root){ - var pn = node.parentNode; - while(pn){ - if(pn == root){ - break; - } - pn = pn.parentNode; - } - return !!pn; - }; - - var _getElementsFuncCache = {}; - - var getElementsFunc = function(query){ - var retFunc = _getElementsFuncCache[query.query]; - // if we've got a cached dispatcher, just use that - if(retFunc){ return retFunc; } - // else, generate a new on - - // NOTE: - // this function returns a function that searches for nodes and - // filters them. The search may be specialized by infix operators - // (">", "~", or "+") else it will default to searching all - // descendants (the " " selector). Once a group of children is - // found, a test function is applied to weed out the ones we - // don't want. Many common cases can be fast-pathed. We spend a - // lot of cycles to create a dispatcher that doesn't do more work - // than necessary at any point since, unlike this function, the - // dispatchers will be called every time. The logic of generating - // efficient dispatchers looks like this in pseudo code: - // - // # if it's a purely descendant query (no ">", "+", or "~" modifiers) - // if infixOperator == " ": - // if only(id): - // return def(root): - // return d.byId(id, root); - // - // elif id: - // return def(root): - // return filter(d.byId(id, root)); - // - // elif cssClass && getElementsByClassName: - // return def(root): - // return filter(root.getElementsByClassName(cssClass)); - // - // elif only(tag): - // return def(root): - // return root.getElementsByTagName(tagName); - // - // else: - // # search by tag name, then filter - // return def(root): - // return filter(root.getElementsByTagName(tagName||"*")); - // - // elif infixOperator == ">": - // # search direct children - // return def(root): - // return filter(root.children); - // - // elif infixOperator == "+": - // # search next sibling - // return def(root): - // return filter(root.nextElementSibling); - // - // elif infixOperator == "~": - // # search rightward siblings - // return def(root): - // return filter(nextSiblings(root)); - - var io = query.infixOper; - var oper = (io ? io.oper : ""); - // the default filter func which tests for all conditions in the query - // part. This is potentially inefficient, so some optimized paths may - // re-define it to test fewer things. - var filterFunc = getSimpleFilterFunc(query, { el: 1 }); - var qt = query.tag; - var wildcardTag = ("*" == qt); - var ecs = getDoc()["getElementsByClassName"]; - - if(!oper){ - // if there's no infix operator, then it's a descendant query. ID - // and "elements by class name" variants can be accelerated so we - // call them out explicitly: - if(query.id){ - // testing shows that the overhead of yesman() is acceptable - // and can save us some bytes vs. re-defining the function - // everywhere. - filterFunc = (!query.loops && wildcardTag) ? - yesman : - getSimpleFilterFunc(query, { el: 1, id: 1 }); - - retFunc = function(root, arr){ - var te = dom.byId(query.id, (root.ownerDocument||root)); - if(!te || !filterFunc(te)){ return; } - if(9 == root.nodeType){ // if root's a doc, we just return directly - return getArr(te, arr); - }else{ // otherwise check ancestry - if(_isDescendant(te, root)){ - return getArr(te, arr); - } - } - }; - }else if( - ecs && - // isAlien check. Workaround for Prototype.js being totally evil/dumb. - /\{\s*\[native code\]\s*\}/.test(String(ecs)) && - query.classes.length && - !cssCaseBug - ){ - // it's a class-based query and we've got a fast way to run it. - - // ignore class and ID filters since we will have handled both - filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 }); - var classesString = query.classes.join(" "); - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - var tret = root.getElementsByClassName(classesString); - while((te = tret[x++])){ - if(filterFunc(te, root) && _isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - - }else if(!wildcardTag && !query.loops){ - // it's tag only. Fast-path it. - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - var tag = query.getTag(), - tret = tag ? root.getElementsByTagName(tag) : []; - while((te = tret[x++])){ - if(_isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - }else{ - // the common case: - // a descendant selector without a fast path. By now it's got - // to have a tag selector, even if it's just "*" so we query - // by that and filter - filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 }); - retFunc = function(root, arr, bag){ - var ret = getArr(0, arr), te, x=0; - // we use getTag() to avoid case sensitivity issues - var tag = query.getTag(), - tret = tag ? root.getElementsByTagName(tag) : []; - while((te = tret[x++])){ - if(filterFunc(te, root) && _isUnique(te, bag)){ - ret.push(te); - } - } - return ret; - }; - } - }else{ - // the query is scoped in some way. Instead of querying by tag we - // use some other collection to find candidate nodes - var skipFilters = { el: 1 }; - if(wildcardTag){ - skipFilters.tag = 1; - } - filterFunc = getSimpleFilterFunc(query, skipFilters); - if("+" == oper){ - retFunc = _nextSibling(filterFunc); - }else if("~" == oper){ - retFunc = _nextSiblings(filterFunc); - }else if(">" == oper){ - retFunc = _childElements(filterFunc); - } - } - // cache it and return - return _getElementsFuncCache[query.query] = retFunc; - }; - - var filterDown = function(root, queryParts){ - // NOTE: - // this is the guts of the DOM query system. It takes a list of - // parsed query parts and a root and finds children which match - // the selector represented by the parts - var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret; - - for(var i = 0; i < qpl; i++){ - ret = []; - qp = queryParts[i]; - x = candidates.length - 1; - if(x > 0){ - // if we have more than one root at this level, provide a new - // hash to use for checking group membership but tell the - // system not to post-filter us since we will already have been - // guaranteed to be unique - bag = {}; - ret.nozip = true; - } - var gef = getElementsFunc(qp); - for(var j = 0; (te = candidates[j]); j++){ - // for every root, get the elements that match the descendant - // selector, adding them to the "ret" array and filtering them - // via membership in this level's bag. If there are more query - // parts, then this level's return will be used as the next - // level's candidates - gef(te, ret, bag); - } - if(!ret.length){ break; } - candidates = ret; - } - return ret; - }; - - //////////////////////////////////////////////////////////////////////// - // the query runner - //////////////////////////////////////////////////////////////////////// - - // these are the primary caches for full-query results. The query - // dispatcher functions are generated then stored here for hash lookup in - // the future - var _queryFuncCacheDOM = {}, - _queryFuncCacheQSA = {}; - - // this is the second level of splitting, from full-length queries (e.g., - // "div.foo .bar") into simple query expressions (e.g., ["div.foo", - // ".bar"]) - var getStepQueryFunc = function(query){ - var qparts = getQueryParts(trim(query)); - - // if it's trivial, avoid iteration and zipping costs - if(qparts.length == 1){ - // we optimize this case here to prevent dispatch further down the - // chain, potentially slowing things down. We could more elegantly - // handle this in filterDown(), but it's slower for simple things - // that need to be fast (e.g., "#someId"). - var tef = getElementsFunc(qparts[0]); - return function(root){ - var r = tef(root, []); - if(r){ r.nozip = true; } - return r; - }; - } - - // otherwise, break it up and return a runner that iterates over the parts recursively - return function(root){ - return filterDown(root, qparts); - }; - }; - - // NOTES: - // * we can't trust QSA for anything but document-rooted queries, so - // caching is split into DOM query evaluators and QSA query evaluators - // * caching query results is dirty and leak-prone (or, at a minimum, - // prone to unbounded growth). Other toolkits may go this route, but - // they totally destroy their own ability to manage their memory - // footprint. If we implement it, it should only ever be with a fixed - // total element reference # limit and an LRU-style algorithm since JS - // has no weakref support. Caching compiled query evaluators is also - // potentially problematic, but even on large documents the size of the - // query evaluators is often < 100 function objects per evaluator (and - // LRU can be applied if it's ever shown to be an issue). - // * since IE's QSA support is currently only for HTML documents and even - // then only in IE 8's "standards mode", we have to detect our dispatch - // route at query time and keep 2 separate caches. Ugg. - - // we need to determine if we think we can run a given query via - // querySelectorAll or if we'll need to fall back on DOM queries to get - // there. We need a lot of information about the environment and the query - // to make the determination (e.g. does it support QSA, does the query in - // question work in the native QSA impl, etc.). - - // IE QSA queries may incorrectly include comment nodes, so we throw the - // zipping function into "remove" comments mode instead of the normal "skip - // it" which every other QSA-clued browser enjoys - var noZip = has("ie") ? "commentStrip" : "nozip"; - - var qsa = "querySelectorAll"; - var qsaAvail = !!getDoc()[qsa]; - - //Don't bother with n+3 type of matches, IE complains if we modify those. - var infixSpaceRe = /\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g; - var infixSpaceFunc = function(match, pre, ch, post){ - return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match; - }; - - //Don't apply the infixSpaceRe to attribute value selectors - var attRe = /([^[]*)([^\]]*])?/g; - var attFunc = function(match, nonAtt, att){ - return nonAtt.replace(infixSpaceRe, infixSpaceFunc) + (att||""); - }; - var getQueryFunc = function(query, forceDOM){ - //Normalize query. The CSS3 selectors spec allows for omitting spaces around - //infix operators, >, ~ and + - //Do the work here since detection for spaces is used as a simple "not use QSA" - //test below. - query = query.replace(attRe, attFunc); - - if(qsaAvail){ - // if we've got a cached variant and we think we can do it, run it! - var qsaCached = _queryFuncCacheQSA[query]; - if(qsaCached && !forceDOM){ return qsaCached; } - } - - // else if we've got a DOM cached variant, assume that we already know - // all we need to and use it - var domCached = _queryFuncCacheDOM[query]; - if(domCached){ return domCached; } - - // TODO: - // today we're caching DOM and QSA branches separately so we - // recalc useQSA every time. If we had a way to tag root+query - // efficiently, we'd be in good shape to do a global cache. - - var qcz = query.charAt(0); - var nospace = (-1 == query.indexOf(" ")); - - // byId searches are wicked fast compared to QSA, even when filtering - // is required - if( (query.indexOf("#") >= 0) && (nospace) ){ - forceDOM = true; - } - - var useQSA = ( - qsaAvail && (!forceDOM) && - // as per CSS 3, we can't currently start w/ combinator: - // http://www.w3.org/TR/css3-selectors/#w3cselgrammar - (specials.indexOf(qcz) == -1) && - // IE's QSA impl sucks on pseudos - (!has("ie") || (query.indexOf(":") == -1)) && - - (!(cssCaseBug && (query.indexOf(".") >= 0))) && - - // FIXME: - // need to tighten up browser rules on ":contains" and "|=" to - // figure out which aren't good - // Latest webkit (around 531.21.8) does not seem to do well with :checked on option - // elements, even though according to spec, selected options should - // match :checked. So go nonQSA for it: - // http://bugs.dojotoolkit.org/ticket/5179 - (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) && - (query.indexOf("|=") == -1) // some browsers don't grok it - ); - - // TODO: - // if we've got a descendant query (e.g., "> .thinger" instead of - // just ".thinger") in a QSA-able doc, but are passed a child as a - // root, it should be possible to give the item a synthetic ID and - // trivially rewrite the query to the form "#synid > .thinger" to - // use the QSA branch - - - if(useQSA){ - var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ? - (query + " *") : query; - return _queryFuncCacheQSA[query] = function(root){ - try{ - // the QSA system contains an egregious spec bug which - // limits us, effectively, to only running QSA queries over - // entire documents. See: - // http://ejohn.org/blog/thoughts-on-queryselectorall/ - // despite this, we can also handle QSA runs on simple - // selectors, but we don't want detection to be expensive - // so we're just checking for the presence of a space char - // right now. Not elegant, but it's cheaper than running - // the query parser when we might not need to - if(!((9 == root.nodeType) || nospace)){ throw ""; } - var r = root[qsa](tq); - // skip expensive duplication checks and just wrap in a NodeList - r[noZip] = true; - return r; - }catch(e){ - // else run the DOM branch on this query, ensuring that we - // default that way in the future - return getQueryFunc(query, true)(root); - } - }; - }else{ - // DOM branch - var parts = query.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g); - return _queryFuncCacheDOM[query] = ((parts.length < 2) ? - // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher - getStepQueryFunc(query) : - // if it *is* a complex query, break it up into its - // constituent parts and return a dispatcher that will - // merge the parts when run - function(root){ - var pindex = 0, // avoid array alloc for every invocation - ret = [], - tp; - while((tp = parts[pindex++])){ - ret = ret.concat(getStepQueryFunc(tp)(root)); - } - return ret; - } - ); - } - }; - - var _zipIdx = 0; - - // NOTE: - // this function is Moo inspired, but our own impl to deal correctly - // with XML in IE - var _nodeUID = has("ie") ? function(node){ - if(caseSensitive){ - // XML docs don't have uniqueID on their nodes - return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx); - - }else{ - return node.uniqueID; - } - } : - function(node){ - return (node._uid || (node._uid = ++_zipIdx)); - }; - - // determine if a node in is unique in a "bag". In this case we don't want - // to flatten a list of unique items, but rather just tell if the item in - // question is already in the bag. Normally we'd just use hash lookup to do - // this for us but IE's DOM is busted so we can't really count on that. On - // the upside, it gives us a built in unique ID function. - var _isUnique = function(node, bag){ - if(!bag){ return 1; } - var id = _nodeUID(node); - if(!bag[id]){ return bag[id] = 1; } - return 0; - }; - - // attempt to efficiently determine if an item in a list is a dupe, - // returning a list of "uniques", hopefully in document order - var _zipIdxName = "_zipIdx"; - var _zip = function(arr){ - if(arr && arr.nozip){ - return arr; - } - var ret = []; - if(!arr || !arr.length){ return ret; } - if(arr[0]){ - ret.push(arr[0]); - } - if(arr.length < 2){ return ret; } - - _zipIdx++; - - // we have to fork here for IE and XML docs because we can't set - // expandos on their nodes (apparently). *sigh* - var x, te; - if(has("ie") && caseSensitive){ - var szidx = _zipIdx+""; - arr[0].setAttribute(_zipIdxName, szidx); - for(x = 1; te = arr[x]; x++){ - if(arr[x].getAttribute(_zipIdxName) != szidx){ - ret.push(te); - } - te.setAttribute(_zipIdxName, szidx); - } - }else if(has("ie") && arr.commentStrip){ - try{ - for(x = 1; te = arr[x]; x++){ - if(_isElement(te)){ - ret.push(te); - } - } - }catch(e){ /* squelch */ } - }else{ - if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; } - for(x = 1; te = arr[x]; x++){ - if(arr[x][_zipIdxName] != _zipIdx){ - ret.push(te); - } - te[_zipIdxName] = _zipIdx; - } - } - return ret; - }; - - // the main executor - var query = function(/*String*/ query, /*String|DOMNode?*/ root){ - // summary: - // Returns nodes which match the given CSS3 selector, searching the - // entire document by default but optionally taking a node to scope - // the search by. Returns an array. - // description: - // dojo.query() is the swiss army knife of DOM node manipulation in - // Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's - // "$" function, dojo.query provides robust, high-performance - // CSS-based node selector support with the option of scoping searches - // to a particular sub-tree of a document. - // - // Supported Selectors: - // -------------------- - // - // acme supports a rich set of CSS3 selectors, including: - // - // - class selectors (e.g., `.foo`) - // - node type selectors like `span` - // - ` ` descendant selectors - // - `>` child element selectors - // - `#foo` style ID selectors - // - `*` universal selector - // - `~`, the preceded-by sibling selector - // - `+`, the immediately preceded-by sibling selector - // - attribute queries: - // - `[foo]` attribute presence selector - // - `[foo='bar']` attribute value exact match - // - `[foo~='bar']` attribute value list item match - // - `[foo^='bar']` attribute start match - // - `[foo$='bar']` attribute end match - // - `[foo*='bar']` attribute substring match - // - `:first-child`, `:last-child`, and `:only-child` positional selectors - // - `:empty` content emtpy selector - // - `:checked` pseudo selector - // - `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations - // - `:nth-child(even)`, `:nth-child(odd)` positional selectors - // - `:not(...)` negation pseudo selectors - // - // Any legal combination of these selectors will work with - // `dojo.query()`, including compound selectors ("," delimited). - // Very complex and useful searches can be constructed with this - // palette of selectors and when combined with functions for - // manipulation presented by dojo/NodeList, many types of DOM - // manipulation operations become very straightforward. - // - // Unsupported Selectors: - // ---------------------- - // - // While dojo.query handles many CSS3 selectors, some fall outside of - // what's reasonable for a programmatic node querying engine to - // handle. Currently unsupported selectors include: - // - // - namespace-differentiated selectors of any form - // - all `::` pseduo-element selectors - // - certain pseudo-selectors which don't get a lot of day-to-day use: - // - `:root`, `:lang()`, `:target`, `:focus` - // - all visual and state selectors: - // - `:root`, `:active`, `:hover`, `:visited`, `:link`, - // `:enabled`, `:disabled` - // - `:*-of-type` pseudo selectors - // - // dojo.query and XML Documents: - // ----------------------------- - // - // `dojo.query` (as of dojo 1.2) supports searching XML documents - // in a case-sensitive manner. If an HTML document is served with - // a doctype that forces case-sensitivity (e.g., XHTML 1.1 - // Strict), dojo.query() will detect this and "do the right - // thing". Case sensitivity is dependent upon the document being - // searched and not the query used. It is therefore possible to - // use case-sensitive queries on strict sub-documents (iframes, - // etc.) or XML documents while still assuming case-insensitivity - // for a host/root document. - // - // Non-selector Queries: - // --------------------- - // - // If something other than a String is passed for the query, - // `dojo.query` will return a new `dojo/NodeList` instance - // constructed from that parameter alone and all further - // processing will stop. This means that if you have a reference - // to a node or NodeList, you can quickly construct a new NodeList - // from the original by calling `dojo.query(node)` or - // `dojo.query(list)`. - // - // query: - // The CSS3 expression to match against. For details on the syntax of - // CSS3 selectors, see <http://www.w3.org/TR/css3-selectors/#selectors> - // root: - // A DOMNode (or node id) to scope the search from. Optional. - // returns: Array - // example: - // search the entire document for elements with the class "foo": - // | dojo.query(".foo"); - // these elements will match: - // | <span class="foo"></span> - // | <span class="foo bar"></span> - // | <p class="thud foo"></p> - // example: - // search the entire document for elements with the classes "foo" *and* "bar": - // | dojo.query(".foo.bar"); - // these elements will match: - // | <span class="foo bar"></span> - // while these will not: - // | <span class="foo"></span> - // | <p class="thud foo"></p> - // example: - // find `<span>` elements which are descendants of paragraphs and - // which have a "highlighted" class: - // | dojo.query("p span.highlighted"); - // the innermost span in this fragment matches: - // | <p class="foo"> - // | <span>... - // | <span class="highlighted foo bar">...</span> - // | </span> - // | </p> - // example: - // set an "odd" class on all odd table rows inside of the table - // `#tabular_data`, using the `>` (direct child) selector to avoid - // affecting any nested tables: - // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd"); - // example: - // remove all elements with the class "error" from the document - // and store them in a list: - // | var errors = dojo.query(".error").orphan(); - // example: - // add an onclick handler to every submit button in the document - // which causes the form to be sent via Ajax instead: - // | dojo.query("input[type='submit']").onclick(function(e){ - // | dojo.stopEvent(e); // prevent sending the form - // | var btn = e.target; - // | dojo.xhrPost({ - // | form: btn.form, - // | load: function(data){ - // | // replace the form with the response - // | var div = dojo.doc.createElement("div"); - // | dojo.place(div, btn.form, "after"); - // | div.innerHTML = data; - // | dojo.style(btn.form, "display", "none"); - // | } - // | }); - // | }); - - root = root || getDoc(); - - // throw the big case sensitivity switch - var od = root.ownerDocument || root; // root is either Document or a node inside the document - caseSensitive = (od.createElement("div").tagName === "div"); - - // NOTE: - // adding "true" as the 2nd argument to getQueryFunc is useful for - // testing the DOM branch without worrying about the - // behavior/performance of the QSA branch. - var r = getQueryFunc(query)(root); - - // FIXME: - // need to investigate this branch WRT #8074 and #8075 - if(r && r.nozip){ - return r; - } - return _zip(r); // dojo/NodeList - }; - query.filter = function(/*Node[]*/ nodeList, /*String*/ filter, /*String|DOMNode?*/ root){ - // summary: - // function for filtering a NodeList based on a selector, optimized for simple selectors - var tmpNodeList = [], - parts = getQueryParts(filter), - filterFunc = - (parts.length == 1 && !/[^\w#\.]/.test(filter)) ? - getSimpleFilterFunc(parts[0]) : - function(node){ - return array.indexOf(query(filter, dom.byId(root)), node) != -1; - }; - for(var x = 0, te; te = nodeList[x]; x++){ - if(filterFunc(te)){ tmpNodeList.push(te); } - } - return tmpNodeList; - }; - return query; -}); - -}, -'dojo/dnd/autoscroll':function(){ -define("dojo/dnd/autoscroll", ["../_base/lang", "../sniff", "../_base/window", "../dom-geometry", "../dom-style", "../window"], - function(lang, has, win, domGeom, domStyle, winUtils){ - -// module: -// dojo/dnd/autoscroll - -var exports = { - // summary: - // Used by dojo/dnd/Manager to scroll document or internal node when the user - // drags near the edge of the viewport or a scrollable node -}; -lang.setObject("dojo.dnd.autoscroll", exports); - -exports.getViewport = winUtils.getBox; - -exports.V_TRIGGER_AUTOSCROLL = 32; -exports.H_TRIGGER_AUTOSCROLL = 32; - -exports.V_AUTOSCROLL_VALUE = 16; -exports.H_AUTOSCROLL_VALUE = 16; - -// These are set by autoScrollStart(). -// Set to default values in case autoScrollStart() isn't called. (back-compat, remove for 2.0) -var viewport, - doc = win.doc, - maxScrollTop = Infinity, - maxScrollLeft = Infinity; - -exports.autoScrollStart = function(d){ - // summary: - // Called at the start of a drag. - // d: Document - // The document of the node being dragged. - - doc = d; - viewport = winUtils.getBox(doc); - - // Save height/width of document at start of drag, before it gets distorted by a user dragging an avatar past - // the document's edge - var html = win.body(doc).parentNode; - maxScrollTop = Math.max(html.scrollHeight - viewport.h, 0); - maxScrollLeft = Math.max(html.scrollWidth - viewport.w, 0); // usually 0 -}; - -exports.autoScroll = function(e){ - // summary: - // a handler for mousemove and touchmove events, which scrolls the window, if - // necessary - // e: Event - // mousemove/touchmove event - - // FIXME: needs more docs! - var v = viewport || winUtils.getBox(doc), // getBox() call for back-compat, in case autoScrollStart() wasn't called - html = win.body(doc).parentNode, - dx = 0, dy = 0; - if(e.clientX < exports.H_TRIGGER_AUTOSCROLL){ - dx = -exports.H_AUTOSCROLL_VALUE; - }else if(e.clientX > v.w - exports.H_TRIGGER_AUTOSCROLL){ - dx = Math.min(exports.H_AUTOSCROLL_VALUE, maxScrollLeft - html.scrollLeft); // don't scroll past edge of doc - } - if(e.clientY < exports.V_TRIGGER_AUTOSCROLL){ - dy = -exports.V_AUTOSCROLL_VALUE; - }else if(e.clientY > v.h - exports.V_TRIGGER_AUTOSCROLL){ - dy = Math.min(exports.V_AUTOSCROLL_VALUE, maxScrollTop - html.scrollTop); // don't scroll past edge of doc - } - window.scrollBy(dx, dy); -}; - -exports._validNodes = {"div": 1, "p": 1, "td": 1}; -exports._validOverflow = {"auto": 1, "scroll": 1}; - -exports.autoScrollNodes = function(e){ - // summary: - // a handler for mousemove and touchmove events, which scrolls the first available - // Dom element, it falls back to exports.autoScroll() - // e: Event - // mousemove/touchmove event - - // FIXME: needs more docs! - - var b, t, w, h, rx, ry, dx = 0, dy = 0, oldLeft, oldTop; - - for(var n = e.target; n;){ - if(n.nodeType == 1 && (n.tagName.toLowerCase() in exports._validNodes)){ - var s = domStyle.getComputedStyle(n), - overflow = (s.overflow.toLowerCase() in exports._validOverflow), - overflowX = (s.overflowX.toLowerCase() in exports._validOverflow), - overflowY = (s.overflowY.toLowerCase() in exports._validOverflow); - if(overflow || overflowX || overflowY){ - b = domGeom.getContentBox(n, s); - t = domGeom.position(n, true); - } - // overflow-x - if(overflow || overflowX){ - w = Math.min(exports.H_TRIGGER_AUTOSCROLL, b.w / 2); - rx = e.pageX - t.x; - if(has("webkit") || has("opera")){ - // FIXME: this code should not be here, it should be taken into account - // either by the event fixing code, or the domGeom.position() - // FIXME: this code doesn't work on Opera 9.5 Beta - rx += win.body().scrollLeft; - } - dx = 0; - if(rx > 0 && rx < b.w){ - if(rx < w){ - dx = -w; - }else if(rx > b.w - w){ - dx = w; - } - oldLeft = n.scrollLeft; - n.scrollLeft = n.scrollLeft + dx; - } - } - // overflow-y - if(overflow || overflowY){ - //console.log(b.l, b.t, t.x, t.y, n.scrollLeft, n.scrollTop); - h = Math.min(exports.V_TRIGGER_AUTOSCROLL, b.h / 2); - ry = e.pageY - t.y; - if(has("webkit") || has("opera")){ - // FIXME: this code should not be here, it should be taken into account - // either by the event fixing code, or the domGeom.position() - // FIXME: this code doesn't work on Opera 9.5 Beta - ry += win.body().scrollTop; - } - dy = 0; - if(ry > 0 && ry < b.h){ - if(ry < h){ - dy = -h; - }else if(ry > b.h - h){ - dy = h; - } - oldTop = n.scrollTop; - n.scrollTop = n.scrollTop + dy; - } - } - if(dx || dy){ return; } - } - try{ - n = n.parentNode; - }catch(x){ - n = null; - } - } - exports.autoScroll(e); -}; - -return exports; - -}); - -}, -'dijit/form/_RadioButtonMixin':function(){ -define("dijit/form/_RadioButtonMixin", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/_base/event", // event.stop - "dojo/_base/lang", // lang.hitch - "dojo/query", // query - "../registry" // registry.getEnclosingWidget -], function(array, declare, domAttr, event, lang, query, registry){ - - // module: - // dijit/form/_RadioButtonMixin - - return declare("dijit.form._RadioButtonMixin", null, { - // summary: - // Mixin to provide widget functionality for an HTML radio button - - // type: [private] String - // type attribute on `<input>` node. - // Users should not change this value. - type: "radio", - - _getRelatedWidgets: function(){ - // Private function needed to help iterate over all radio buttons in a group. - var ary = []; - query("input[type=radio]", this.focusNode.form || this.ownerDocument).forEach( // can't use name= since query doesn't support [] in the name - lang.hitch(this, function(inputNode){ - if(inputNode.name == this.name && inputNode.form == this.focusNode.form){ - var widget = registry.getEnclosingWidget(inputNode); - if(widget){ - ary.push(widget); - } - } - }) - ); - return ary; - }, - - _setCheckedAttr: function(/*Boolean*/ value){ - // If I am being checked then have to deselect currently checked radio button - this.inherited(arguments); - if(!this._created){ return; } - if(value){ - array.forEach(this._getRelatedWidgets(), lang.hitch(this, function(widget){ - if(widget != this && widget.checked){ - widget.set('checked', false); - } - })); - } - }, - - _getSubmitValue: function(/*String*/ value){ - return value === null ? "on" : value; - }, - - _onClick: function(/*Event*/ e){ - if(this.checked || this.disabled){ // nothing to do - event.stop(e); - return false; - } - if(this.readOnly){ // ignored by some browsers so we have to resync the DOM elements with widget values - event.stop(e); - array.forEach(this._getRelatedWidgets(), lang.hitch(this, function(widget){ - domAttr.set(this.focusNode || this.domNode, 'checked', widget.checked); - })); - return false; - } - return this.inherited(arguments); - } - }); -}); - -}, -'dojo/data/ItemFileWriteStore':function(){ -define("dojo/data/ItemFileWriteStore", ["../_base/lang", "../_base/declare", "../_base/array", "../_base/json", "../_base/kernel", - "./ItemFileReadStore", "../date/stamp" -], function(lang, declare, arrayUtil, jsonUtil, kernel, ItemFileReadStore, dateStamp){ - -// module: -// dojo/data/ItemFileWriteStore - -return declare("dojo.data.ItemFileWriteStore", ItemFileReadStore, { - // summary: - // TODOC - - constructor: function(/* object */ keywordParameters){ - // keywordParameters: - // The structure of the typeMap object is as follows: - // | { - // | type0: function || object, - // | type1: function || object, - // | ... - // | typeN: function || object - // | } - // Where if it is a function, it is assumed to be an object constructor that takes the - // value of _value as the initialization parameters. It is serialized assuming object.toString() - // serialization. If it is an object, then it is assumed - // to be an object of general form: - // | { - // | type: function, //constructor. - // | deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. - // | serialize: function(object) //The function that converts the object back into the proper file format form. - // | } - - // ItemFileWriteStore extends ItemFileReadStore to implement these additional dojo.data APIs - this._features['dojo.data.api.Write'] = true; - this._features['dojo.data.api.Notification'] = true; - - // For keeping track of changes so that we can implement isDirty and revert - this._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - - if(!this._datatypeMap['Date'].serialize){ - this._datatypeMap['Date'].serialize = function(obj){ - return dateStamp.toISOString(obj, {zulu:true}); - }; - } - //Disable only if explicitly set to false. - if(keywordParameters && (keywordParameters.referenceIntegrity === false)){ - this.referenceIntegrity = false; - } - - // this._saveInProgress is set to true, briefly, from when save() is first called to when it completes - this._saveInProgress = false; - }, - - referenceIntegrity: true, //Flag that defaultly enabled reference integrity tracking. This way it can also be disabled pogrammatially or declaratively. - - _assert: function(/* boolean */ condition){ - if(!condition){ - throw new Error("assertion failed in ItemFileWriteStore"); - } - }, - - _getIdentifierAttribute: function(){ - // this._assert((identifierAttribute === Number) || (dojo.isString(identifierAttribute))); - return this.getFeatures()['dojo.data.api.Identity']; - }, - - -/* dojo/data/api/Write */ - - newItem: function(/* Object? */ keywordArgs, /* Object? */ parentInfo){ - // summary: - // See dojo/data/api/Write.newItem() - - this._assert(!this._saveInProgress); - - if(!this._loadFinished){ - // We need to do this here so that we'll be able to find out what - // identifierAttribute was specified in the data file. - this._forceLoad(); - } - - if(typeof keywordArgs != "object" && typeof keywordArgs != "undefined"){ - throw new Error("newItem() was passed something other than an object"); - } - var newIdentity = null; - var identifierAttribute = this._getIdentifierAttribute(); - if(identifierAttribute === Number){ - newIdentity = this._arrayOfAllItems.length; - }else{ - newIdentity = keywordArgs[identifierAttribute]; - if(typeof newIdentity === "undefined"){ - throw new Error("newItem() was not passed an identity for the new item"); - } - if(lang.isArray(newIdentity)){ - throw new Error("newItem() was not passed an single-valued identity"); - } - } - - // make sure this identity is not already in use by another item, if identifiers were - // defined in the file. Otherwise it would be the item count, - // which should always be unique in this case. - if(this._itemsByIdentity){ - this._assert(typeof this._itemsByIdentity[newIdentity] === "undefined"); - } - this._assert(typeof this._pending._newItems[newIdentity] === "undefined"); - this._assert(typeof this._pending._deletedItems[newIdentity] === "undefined"); - - var newItem = {}; - newItem[this._storeRefPropName] = this; - newItem[this._itemNumPropName] = this._arrayOfAllItems.length; - if(this._itemsByIdentity){ - this._itemsByIdentity[newIdentity] = newItem; - //We have to set the identifier now, otherwise we can't look it - //up at calls to setValueorValues in parentInfo handling. - newItem[identifierAttribute] = [newIdentity]; - } - this._arrayOfAllItems.push(newItem); - - //We need to construct some data for the onNew call too... - var pInfo = null; - - // Now we need to check to see where we want to assign this thingm if any. - if(parentInfo && parentInfo.parent && parentInfo.attribute){ - pInfo = { - item: parentInfo.parent, - attribute: parentInfo.attribute, - oldValue: undefined - }; - - //See if it is multi-valued or not and handle appropriately - //Generally, all attributes are multi-valued for this store - //So, we only need to append if there are already values present. - var values = this.getValues(parentInfo.parent, parentInfo.attribute); - if(values && values.length > 0){ - var tempValues = values.slice(0, values.length); - if(values.length === 1){ - pInfo.oldValue = values[0]; - }else{ - pInfo.oldValue = values.slice(0, values.length); - } - tempValues.push(newItem); - this._setValueOrValues(parentInfo.parent, parentInfo.attribute, tempValues, false); - pInfo.newValue = this.getValues(parentInfo.parent, parentInfo.attribute); - }else{ - this._setValueOrValues(parentInfo.parent, parentInfo.attribute, newItem, false); - pInfo.newValue = newItem; - } - }else{ - //Toplevel item, add to both top list as well as all list. - newItem[this._rootItemPropName]=true; - this._arrayOfTopLevelItems.push(newItem); - } - - this._pending._newItems[newIdentity] = newItem; - - //Clone over the properties to the new item - for(var key in keywordArgs){ - if(key === this._storeRefPropName || key === this._itemNumPropName){ - // Bummer, the user is trying to do something like - // newItem({_S:"foo"}). Unfortunately, our superclass, - // ItemFileReadStore, is already using _S in each of our items - // to hold private info. To avoid a naming collision, we - // need to move all our private info to some other property - // of all the items/objects. So, we need to iterate over all - // the items and do something like: - // item.__S = item._S; - // item._S = undefined; - // But first we have to make sure the new "__S" variable is - // not in use, which means we have to iterate over all the - // items checking for that. - throw new Error("encountered bug in ItemFileWriteStore.newItem"); - } - var value = keywordArgs[key]; - if(!lang.isArray(value)){ - value = [value]; - } - newItem[key] = value; - if(this.referenceIntegrity){ - for(var i = 0; i < value.length; i++){ - var val = value[i]; - if(this.isItem(val)){ - this._addReferenceToMap(val, newItem, key); - } - } - } - } - this.onNew(newItem, pInfo); // dojo/data/api/Notification call - return newItem; // item - }, - - _removeArrayElement: function(/* Array */ array, /* anything */ element){ - var index = arrayUtil.indexOf(array, element); - if(index != -1){ - array.splice(index, 1); - return true; - } - return false; - }, - - deleteItem: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Write.deleteItem() - this._assert(!this._saveInProgress); - this._assertIsItem(item); - - // Remove this item from the _arrayOfAllItems, but leave a null value in place - // of the item, so as not to change the length of the array, so that in newItem() - // we can still safely do: newIdentity = this._arrayOfAllItems.length; - var indexInArrayOfAllItems = item[this._itemNumPropName]; - var identity = this.getIdentity(item); - - //If we have reference integrity on, we need to do reference cleanup for the deleted item - if(this.referenceIntegrity){ - //First scan all the attributes of this items for references and clean them up in the map - //As this item is going away, no need to track its references anymore. - - //Get the attributes list before we generate the backup so it - //doesn't pollute the attributes list. - var attributes = this.getAttributes(item); - - //Backup the map, we'll have to restore it potentially, in a revert. - if(item[this._reverseRefMap]){ - item["backup_" + this._reverseRefMap] = lang.clone(item[this._reverseRefMap]); - } - - //TODO: This causes a reversion problem. This list won't be restored on revert since it is - //attached to the 'value'. item, not ours. Need to back tese up somehow too. - //Maybe build a map of the backup of the entries and attach it to the deleted item to be restored - //later. Or just record them and call _addReferenceToMap on them in revert. - arrayUtil.forEach(attributes, function(attribute){ - arrayUtil.forEach(this.getValues(item, attribute), function(value){ - if(this.isItem(value)){ - //We have to back up all the references we had to others so they can be restored on a revert. - if(!item["backupRefs_" + this._reverseRefMap]){ - item["backupRefs_" + this._reverseRefMap] = []; - } - item["backupRefs_" + this._reverseRefMap].push({id: this.getIdentity(value), attr: attribute}); - this._removeReferenceFromMap(value, item, attribute); - } - }, this); - }, this); - - //Next, see if we have references to this item, if we do, we have to clean them up too. - var references = item[this._reverseRefMap]; - if(references){ - //Look through all the items noted as references to clean them up. - for(var itemId in references){ - var containingItem = null; - if(this._itemsByIdentity){ - containingItem = this._itemsByIdentity[itemId]; - }else{ - containingItem = this._arrayOfAllItems[itemId]; - } - //We have a reference to a containing item, now we have to process the - //attributes and clear all references to the item being deleted. - if(containingItem){ - for(var attribute in references[itemId]){ - var oldValues = this.getValues(containingItem, attribute) || []; - var newValues = arrayUtil.filter(oldValues, function(possibleItem){ - return !(this.isItem(possibleItem) && this.getIdentity(possibleItem) == identity); - }, this); - //Remove the note of the reference to the item and set the values on the modified attribute. - this._removeReferenceFromMap(item, containingItem, attribute); - if(newValues.length < oldValues.length){ - this._setValueOrValues(containingItem, attribute, newValues, true); - } - } - } - } - } - } - - this._arrayOfAllItems[indexInArrayOfAllItems] = null; - - item[this._storeRefPropName] = null; - if(this._itemsByIdentity){ - delete this._itemsByIdentity[identity]; - } - this._pending._deletedItems[identity] = item; - - //Remove from the toplevel items, if necessary... - if(item[this._rootItemPropName]){ - this._removeArrayElement(this._arrayOfTopLevelItems, item); - } - this.onDelete(item); // dojo/data/api/Notification call - return true; - }, - - setValue: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* almost anything */ value){ - // summary: - // See dojo/data/api/Write.set() - return this._setValueOrValues(item, attribute, value, true); // boolean - }, - - setValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* array */ values){ - // summary: - // See dojo/data/api/Write.setValues() - return this._setValueOrValues(item, attribute, values, true); // boolean - }, - - unsetAttribute: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Write.unsetAttribute() - return this._setValueOrValues(item, attribute, [], true); - }, - - _setValueOrValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* anything */ newValueOrValues, /*boolean?*/ callOnSet){ - this._assert(!this._saveInProgress); - - // Check for valid arguments - this._assertIsItem(item); - this._assert(lang.isString(attribute)); - this._assert(typeof newValueOrValues !== "undefined"); - - // Make sure the user isn't trying to change the item's identity - var identifierAttribute = this._getIdentifierAttribute(); - if(attribute == identifierAttribute){ - throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier."); - } - - // To implement the Notification API, we need to make a note of what - // the old attribute value was, so that we can pass that info when - // we call the onSet method. - var oldValueOrValues = this._getValueOrValues(item, attribute); - - var identity = this.getIdentity(item); - if(!this._pending._modifiedItems[identity]){ - // Before we actually change the item, we make a copy of it to - // record the original state, so that we'll be able to revert if - // the revert method gets called. If the item has already been - // modified then there's no need to do this now, since we already - // have a record of the original state. - var copyOfItemState = {}; - for(var key in item){ - if((key === this._storeRefPropName) || (key === this._itemNumPropName) || (key === this._rootItemPropName)){ - copyOfItemState[key] = item[key]; - }else if(key === this._reverseRefMap){ - copyOfItemState[key] = lang.clone(item[key]); - }else{ - copyOfItemState[key] = item[key].slice(0, item[key].length); - } - } - // Now mark the item as dirty, and save the copy of the original state - this._pending._modifiedItems[identity] = copyOfItemState; - } - - // Okay, now we can actually change this attribute on the item - var success = false; - - if(lang.isArray(newValueOrValues) && newValueOrValues.length === 0){ - - // If we were passed an empty array as the value, that counts - // as "unsetting" the attribute, so we need to remove this - // attribute from the item. - success = delete item[attribute]; - newValueOrValues = undefined; // used in the onSet Notification call below - - if(this.referenceIntegrity && oldValueOrValues){ - var oldValues = oldValueOrValues; - if(!lang.isArray(oldValues)){ - oldValues = [oldValues]; - } - for(var i = 0; i < oldValues.length; i++){ - var value = oldValues[i]; - if(this.isItem(value)){ - this._removeReferenceFromMap(value, item, attribute); - } - } - } - }else{ - var newValueArray; - if(lang.isArray(newValueOrValues)){ - // Unfortunately, it's not safe to just do this: - // newValueArray = newValueOrValues; - // Instead, we need to copy the array, which slice() does very nicely. - // This is so that our internal data structure won't - // get corrupted if the user mucks with the values array *after* - // calling setValues(). - newValueArray = newValueOrValues.slice(0, newValueOrValues.length); - }else{ - newValueArray = [newValueOrValues]; - } - - //We need to handle reference integrity if this is on. - //In the case of set, we need to see if references were added or removed - //and update the reference tracking map accordingly. - if(this.referenceIntegrity){ - if(oldValueOrValues){ - var oldValues = oldValueOrValues; - if(!lang.isArray(oldValues)){ - oldValues = [oldValues]; - } - //Use an associative map to determine what was added/removed from the list. - //Should be O(n) performant. First look at all the old values and make a list of them - //Then for any item not in the old list, we add it. If it was already present, we remove it. - //Then we pass over the map and any references left it it need to be removed (IE, no match in - //the new values list). - var map = {}; - arrayUtil.forEach(oldValues, function(possibleItem){ - if(this.isItem(possibleItem)){ - var id = this.getIdentity(possibleItem); - map[id.toString()] = true; - } - }, this); - arrayUtil.forEach(newValueArray, function(possibleItem){ - if(this.isItem(possibleItem)){ - var id = this.getIdentity(possibleItem); - if(map[id.toString()]){ - delete map[id.toString()]; - }else{ - this._addReferenceToMap(possibleItem, item, attribute); - } - } - }, this); - for(var rId in map){ - var removedItem; - if(this._itemsByIdentity){ - removedItem = this._itemsByIdentity[rId]; - }else{ - removedItem = this._arrayOfAllItems[rId]; - } - this._removeReferenceFromMap(removedItem, item, attribute); - } - }else{ - //Everything is new (no old values) so we have to just - //insert all the references, if any. - for(var i = 0; i < newValueArray.length; i++){ - var value = newValueArray[i]; - if(this.isItem(value)){ - this._addReferenceToMap(value, item, attribute); - } - } - } - } - item[attribute] = newValueArray; - success = true; - } - - // Now we make the dojo/data/api/Notification call - if(callOnSet){ - this.onSet(item, attribute, oldValueOrValues, newValueOrValues); - } - return success; // boolean - }, - - _addReferenceToMap: function(/* dojo/data/api/Item */ refItem, /* dojo/data/api/Item */ parentItem, /* string */ attribute){ - // summary: - // Method to add an reference map entry for an item and attribute. - // description: - // Method to add an reference map entry for an item and attribute. - // refItem: - // The item that is referenced. - // parentItem: - // The item that holds the new reference to refItem. - // attribute: - // The attribute on parentItem that contains the new reference. - - var parentId = this.getIdentity(parentItem); - var references = refItem[this._reverseRefMap]; - - if(!references){ - references = refItem[this._reverseRefMap] = {}; - } - var itemRef = references[parentId]; - if(!itemRef){ - itemRef = references[parentId] = {}; - } - itemRef[attribute] = true; - }, - - _removeReferenceFromMap: function(/* dojo/data/api/Item */ refItem, /* dojo/data/api/Item */ parentItem, /* string */ attribute){ - // summary: - // Method to remove an reference map entry for an item and attribute. - // description: - // Method to remove an reference map entry for an item and attribute. This will - // also perform cleanup on the map such that if there are no more references at all to - // the item, its reference object and entry are removed. - // refItem: - // The item that is referenced. - // parentItem: - // The item holding a reference to refItem. - // attribute: - // The attribute on parentItem that contains the reference. - var identity = this.getIdentity(parentItem); - var references = refItem[this._reverseRefMap]; - var itemId; - if(references){ - for(itemId in references){ - if(itemId == identity){ - delete references[itemId][attribute]; - if(this._isEmpty(references[itemId])){ - delete references[itemId]; - } - } - } - if(this._isEmpty(references)){ - delete refItem[this._reverseRefMap]; - } - } - }, - - _dumpReferenceMap: function(){ - // summary: - // Function to dump the reverse reference map of all items in the store for debug purposes. - // description: - // Function to dump the reverse reference map of all items in the store for debug purposes. - var i; - for(i = 0; i < this._arrayOfAllItems.length; i++){ - var item = this._arrayOfAllItems[i]; - if(item && item[this._reverseRefMap]){ - console.log("Item: [" + this.getIdentity(item) + "] is referenced by: " + jsonUtil.toJson(item[this._reverseRefMap])); - } - } - }, - - _getValueOrValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute){ - var valueOrValues = undefined; - if(this.hasAttribute(item, attribute)){ - var valueArray = this.getValues(item, attribute); - if(valueArray.length == 1){ - valueOrValues = valueArray[0]; - }else{ - valueOrValues = valueArray; - } - } - return valueOrValues; - }, - - _flatten: function(/* anything */ value){ - if(this.isItem(value)){ - // Given an item, return an serializable object that provides a - // reference to the item. - // For example, given kermit: - // var kermit = store.newItem({id:2, name:"Kermit"}); - // we want to return - // {_reference:2} - return {_reference: this.getIdentity(value)}; - }else{ - if(typeof value === "object"){ - for(var type in this._datatypeMap){ - var typeMap = this._datatypeMap[type]; - if(lang.isObject(typeMap) && !lang.isFunction(typeMap)){ - if(value instanceof typeMap.type){ - if(!typeMap.serialize){ - throw new Error("ItemFileWriteStore: No serializer defined for type mapping: [" + type + "]"); - } - return {_type: type, _value: typeMap.serialize(value)}; - } - }else if(value instanceof typeMap){ - //SImple mapping, therefore, return as a toString serialization. - return {_type: type, _value: value.toString()}; - } - } - } - return value; - } - }, - - _getNewFileContentString: function(){ - // summary: - // Generate a string that can be saved to a file. - // The result should look similar to: - // http://trac.dojotoolkit.org/browser/dojo/trunk/tests/data/countries.json - var serializableStructure = {}; - - var identifierAttribute = this._getIdentifierAttribute(); - if(identifierAttribute !== Number){ - serializableStructure.identifier = identifierAttribute; - } - if(this._labelAttr){ - serializableStructure.label = this._labelAttr; - } - serializableStructure.items = []; - for(var i = 0; i < this._arrayOfAllItems.length; ++i){ - var item = this._arrayOfAllItems[i]; - if(item !== null){ - var serializableItem = {}; - for(var key in item){ - if(key !== this._storeRefPropName && key !== this._itemNumPropName && key !== this._reverseRefMap && key !== this._rootItemPropName){ - var valueArray = this.getValues(item, key); - if(valueArray.length == 1){ - serializableItem[key] = this._flatten(valueArray[0]); - }else{ - var serializableArray = []; - for(var j = 0; j < valueArray.length; ++j){ - serializableArray.push(this._flatten(valueArray[j])); - serializableItem[key] = serializableArray; - } - } - } - } - serializableStructure.items.push(serializableItem); - } - } - var prettyPrint = true; - return jsonUtil.toJson(serializableStructure, prettyPrint); - }, - - _isEmpty: function(something){ - // summary: - // Function to determine if an array or object has no properties or values. - // something: - // The array or object to examine. - var empty = true; - if(lang.isObject(something)){ - var i; - for(i in something){ - empty = false; - break; - } - }else if(lang.isArray(something)){ - if(something.length > 0){ - empty = false; - } - } - return empty; //boolean - }, - - save: function(/* object */ keywordArgs){ - // summary: - // See dojo/data/api/Write.save() - this._assert(!this._saveInProgress); - - // this._saveInProgress is set to true, briefly, from when save is first called to when it completes - this._saveInProgress = true; - - var self = this; - var saveCompleteCallback = function(){ - self._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - - self._saveInProgress = false; // must come after this._pending is cleared, but before any callbacks - if(keywordArgs && keywordArgs.onComplete){ - var scope = keywordArgs.scope || kernel.global; - keywordArgs.onComplete.call(scope); - } - }; - var saveFailedCallback = function(err){ - self._saveInProgress = false; - if(keywordArgs && keywordArgs.onError){ - var scope = keywordArgs.scope || kernel.global; - keywordArgs.onError.call(scope, err); - } - }; - - if(this._saveEverything){ - var newFileContentString = this._getNewFileContentString(); - this._saveEverything(saveCompleteCallback, saveFailedCallback, newFileContentString); - } - if(this._saveCustom){ - this._saveCustom(saveCompleteCallback, saveFailedCallback); - } - if(!this._saveEverything && !this._saveCustom){ - // Looks like there is no user-defined save-handler function. - // That's fine, it just means the datastore is acting as a "mock-write" - // store -- changes get saved in memory but don't get saved to disk. - saveCompleteCallback(); - } - }, - - revert: function(){ - // summary: - // See dojo/data/api/Write.revert() - this._assert(!this._saveInProgress); - - var identity; - for(identity in this._pending._modifiedItems){ - // find the original item and the modified item that replaced it - var copyOfItemState = this._pending._modifiedItems[identity]; - var modifiedItem = null; - if(this._itemsByIdentity){ - modifiedItem = this._itemsByIdentity[identity]; - }else{ - modifiedItem = this._arrayOfAllItems[identity]; - } - - // Restore the original item into a full-fledged item again, we want to try to - // keep the same object instance as if we don't it, causes bugs like #9022. - copyOfItemState[this._storeRefPropName] = this; - for(var key in modifiedItem){ - delete modifiedItem[key]; - } - lang.mixin(modifiedItem, copyOfItemState); - } - var deletedItem; - for(identity in this._pending._deletedItems){ - deletedItem = this._pending._deletedItems[identity]; - deletedItem[this._storeRefPropName] = this; - var index = deletedItem[this._itemNumPropName]; - - //Restore the reverse refererence map, if any. - if(deletedItem["backup_" + this._reverseRefMap]){ - deletedItem[this._reverseRefMap] = deletedItem["backup_" + this._reverseRefMap]; - delete deletedItem["backup_" + this._reverseRefMap]; - } - this._arrayOfAllItems[index] = deletedItem; - if(this._itemsByIdentity){ - this._itemsByIdentity[identity] = deletedItem; - } - if(deletedItem[this._rootItemPropName]){ - this._arrayOfTopLevelItems.push(deletedItem); - } - } - //We have to pass through it again and restore the reference maps after all the - //undeletes have occurred. - for(identity in this._pending._deletedItems){ - deletedItem = this._pending._deletedItems[identity]; - if(deletedItem["backupRefs_" + this._reverseRefMap]){ - arrayUtil.forEach(deletedItem["backupRefs_" + this._reverseRefMap], function(reference){ - var refItem; - if(this._itemsByIdentity){ - refItem = this._itemsByIdentity[reference.id]; - }else{ - refItem = this._arrayOfAllItems[reference.id]; - } - this._addReferenceToMap(refItem, deletedItem, reference.attr); - }, this); - delete deletedItem["backupRefs_" + this._reverseRefMap]; - } - } - - for(identity in this._pending._newItems){ - var newItem = this._pending._newItems[identity]; - newItem[this._storeRefPropName] = null; - // null out the new item, but don't change the array index so - // so we can keep using _arrayOfAllItems.length. - this._arrayOfAllItems[newItem[this._itemNumPropName]] = null; - if(newItem[this._rootItemPropName]){ - this._removeArrayElement(this._arrayOfTopLevelItems, newItem); - } - if(this._itemsByIdentity){ - delete this._itemsByIdentity[identity]; - } - } - - this._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - return true; // boolean - }, - - isDirty: function(/* item? */ item){ - // summary: - // See dojo/data/api/Write.isDirty() - if(item){ - // return true if the item is dirty - var identity = this.getIdentity(item); - return new Boolean(this._pending._newItems[identity] || - this._pending._modifiedItems[identity] || - this._pending._deletedItems[identity]).valueOf(); // boolean - }else{ - // return true if the store is dirty -- which means return true - // if there are any new items, dirty items, or modified items - return !this._isEmpty(this._pending._newItems) || - !this._isEmpty(this._pending._modifiedItems) || - !this._isEmpty(this._pending._deletedItems); // boolean - } - }, - -/* dojo/data/api/Notification */ - - onSet: function(/* dojo/data/api/Item */ item, - /*attribute-name-string*/ attribute, - /*object|array*/ oldValue, - /*object|array*/ newValue){ - // summary: - // See dojo/data/api/Notification.onSet() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - onNew: function(/* dojo/data/api/Item */ newItem, /*object?*/ parentInfo){ - // summary: - // See dojo/data/api/Notification.onNew() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - onDelete: function(/* dojo/data/api/Item */ deletedItem){ - // summary: - // See dojo/data/api/Notification.onDelete() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - close: function(/* object? */ request){ - // summary: - // Over-ride of base close function of ItemFileReadStore to add in check for store state. - // description: - // Over-ride of base close function of ItemFileReadStore to add in check for store state. - // If the store is still dirty (unsaved changes), then an error will be thrown instead of - // clearing the internal state for reload from the url. - - //Clear if not dirty ... or throw an error - if(this.clearOnClose){ - if(!this.isDirty()){ - this.inherited(arguments); - }else{ - //Only throw an error if the store was dirty and we were loading from a url (cannot reload from url until state is saved). - throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close."); - } - } - } -}); - -}); - -}, -'url:dijit/templates/TreeNode.html':"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow dijitInline\" role=\"presentation\"\n\t\t><div data-dojo-attach-point=\"indentNode\" class=\"dijitInline\"></div\n\t\t><img src=\"${_blankGif}\" alt=\"\" data-dojo-attach-point=\"expandoNode\" class=\"dijitTreeExpando\" role=\"presentation\"\n\t\t/><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"\n\t\t></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" data-dojo-attach-point=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" role=\"presentation\"\n\t\t\t/><span data-dojo-attach-point=\"labelNode\" class=\"dijitTreeLabel\" role=\"treeitem\" tabindex=\"-1\" aria-selected=\"false\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\" style=\"display: none;\"></div>\n</div>\n", -'dojo/dnd/TimedMoveable':function(){ -define("dojo/dnd/TimedMoveable", ["../_base/declare", "./Moveable" /*=====, "./Mover" =====*/], function(declare, Moveable /*=====, Mover =====*/){ - // module: - // dojo/dnd/TimedMoveable - - /*===== - var __TimedMoveableArgs = declare([Moveable.__MoveableArgs], { - // timeout: Number - // delay move by this number of ms, - // accumulating position changes during the timeout - timeout: 0 - }); - =====*/ - - // precalculate long expressions - var oldOnMove = Moveable.prototype.onMove; - - return declare("dojo.dnd.TimedMoveable", Moveable, { - // summary: - // A specialized version of Moveable to support an FPS throttling. - // This class puts an upper restriction on FPS, which may reduce - // the CPU load. The additional parameter "timeout" regulates - // the delay before actually moving the moveable object. - - // object attributes (for markup) - timeout: 40, // in ms, 40ms corresponds to 25 fps - - constructor: function(node, params){ - // summary: - // an object that makes a node moveable with a timer - // node: Node||String - // a node (or node's id) to be moved - // params: __TimedMoveableArgs - // object with additional parameters. - - // sanitize parameters - if(!params){ params = {}; } - if(params.timeout && typeof params.timeout == "number" && params.timeout >= 0){ - this.timeout = params.timeout; - } - }, - - onMoveStop: function(/*Mover*/ mover){ - if(mover._timer){ - // stop timer - clearTimeout(mover._timer); - // reflect the last received position - oldOnMove.call(this, mover, mover._leftTop); - } - Moveable.prototype.onMoveStop.apply(this, arguments); - }, - onMove: function(/*Mover*/ mover, /*Object*/ leftTop){ - mover._leftTop = leftTop; - if(!mover._timer){ - var _t = this; // to avoid using dojo.hitch() - mover._timer = setTimeout(function(){ - // we don't have any pending requests - mover._timer = null; - // reflect the last received position - oldOnMove.call(_t, mover, mover._leftTop); - }, this.timeout); - } - } - }); -}); - -}, -'dojo/NodeList-fx':function(){ -define("dojo/NodeList-fx", ["./query", "./_base/lang", "./_base/connect", "./_base/fx", "./fx"], -function(query, lang, connectLib, baseFx, coreFx){ - -// module: -// dojo/NodeList-fx - -/*===== -return function(){ - // summary: - // Adds dojo.fx animation support to dojo.query() by extending the NodeList class - // with additional FX functions. NodeList is the array-like object used to hold query results. -}; -=====*/ - -var NodeList = query.NodeList; - -lang.extend(NodeList, { - _anim: function(obj, method, args){ - args = args||{}; - var a = coreFx.combine( - this.map(function(item){ - var tmpArgs = { node: item }; - lang.mixin(tmpArgs, args); - return obj[method](tmpArgs); - }) - ); - return args.auto ? a.play() && this : a; // dojo/_base/fx.Animation|dojo/NodeList - }, - - wipeIn: function(args){ - // summary: - // wipe in all elements of this NodeList via `dojo/fx.wipeIn()` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // Fade in all tables with class "blah": - // | dojo.query("table.blah").wipeIn().play(); - // - // example: - // Utilizing `auto` to get the NodeList back: - // | dojo.query(".titles").wipeIn({ auto:true }).onclick(someFunction); - // - return this._anim(coreFx, "wipeIn", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - wipeOut: function(args){ - // summary: - // wipe out all elements of this NodeList via `dojo/fx.wipeOut()` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // Wipe out all tables with class "blah": - // | dojo.query("table.blah").wipeOut().play(); - return this._anim(coreFx, "wipeOut", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - slideTo: function(args){ - // summary: - // slide all elements of the node list to the specified place via `dojo/fx.slideTo()` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // | Move all tables with class "blah" to 300/300: - // | dojo.query("table.blah").slideTo({ - // | left: 40, - // | top: 50 - // | }).play(); - return this._anim(coreFx, "slideTo", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - - fadeIn: function(args){ - // summary: - // fade in all elements of this NodeList via `dojo.fadeIn` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // Fade in all tables with class "blah": - // | dojo.query("table.blah").fadeIn().play(); - return this._anim(baseFx, "fadeIn", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - fadeOut: function(args){ - // summary: - // fade out all elements of this NodeList via `dojo.fadeOut` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // Fade out all elements with class "zork": - // | dojo.query(".zork").fadeOut().play(); - // example: - // Fade them on a delay and do something at the end: - // | var fo = dojo.query(".zork").fadeOut(); - // | dojo.connect(fo, "onEnd", function(){ /*...*/ }); - // | fo.play(); - // example: - // Using `auto`: - // | dojo.query("li").fadeOut({ auto:true }).filter(filterFn).forEach(doit); - // - return this._anim(baseFx, "fadeOut", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - animateProperty: function(args){ - // summary: - // Animate all elements of this NodeList across the properties specified. - // syntax identical to `dojo.animateProperty` - // - // args: Object? - // Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of - // an `auto` parameter. - // - // returns: dojo/_base/fx.Animation|dojo/NodeList - // A special args member `auto` can be passed to automatically play the animation. - // If args.auto is present, the original dojo/NodeList will be returned for further - // chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed - // - // example: - // | dojo.query(".zork").animateProperty({ - // | duration: 500, - // | properties: { - // | color: { start: "black", end: "white" }, - // | left: { end: 300 } - // | } - // | }).play(); - // - // example: - // | dojo.query(".grue").animateProperty({ - // | auto:true, - // | properties: { - // | height:240 - // | } - // | }).onclick(handler); - return this._anim(baseFx, "animateProperty", args); // dojo/_base/fx.Animation|dojo/NodeList - }, - - anim: function( /*Object*/ properties, - /*Integer?*/ duration, - /*Function?*/ easing, - /*Function?*/ onEnd, - /*Integer?*/ delay){ - // summary: - // Animate one or more CSS properties for all nodes in this list. - // The returned animation object will already be playing when it - // is returned. See the docs for `dojo.anim` for full details. - // properties: Object - // the properties to animate. does NOT support the `auto` parameter like other - // NodeList-fx methods. - // duration: Integer? - // Optional. The time to run the animations for - // easing: Function? - // Optional. The easing function to use. - // onEnd: Function? - // A function to be called when the animation ends - // delay: - // how long to delay playing the returned animation - // example: - // Another way to fade out: - // | dojo.query(".thinger").anim({ opacity: 0 }); - // example: - // animate all elements with the "thigner" class to a width of 500 - // pixels over half a second - // | dojo.query(".thinger").anim({ width: 500 }, 700); - var canim = coreFx.combine( - this.map(function(item){ - return baseFx.animateProperty({ - node: item, - properties: properties, - duration: duration||350, - easing: easing - }); - }) - ); - if(onEnd){ - connectLib.connect(canim, "onEnd", onEnd); - } - return canim.play(delay||0); // dojo/_base/fx.Animation - } -}); - -return NodeList; -}); - -}, -'dijit/form/_ListMouseMixin':function(){ -define("dijit/form/_ListMouseMixin", [ - "dojo/_base/declare", // declare - "dojo/mouse", - "dojo/on", - "dojo/touch", - "./_ListBase" -], function(declare, mouse, on, touch, _ListBase){ - -// module: -// dijit/form/_ListMouseMixin - -return declare( "dijit.form._ListMouseMixin", _ListBase, { - // summary: - // a Mixin to handle mouse or touch events for a focus-less menu - // Abstract methods that must be defined externally: - // - // - onClick: item was chosen (mousedown somewhere on the menu and mouseup somewhere on the menu) - // tags: - // private - - postCreate: function(){ - this.inherited(arguments); - - this.own(on(this.domNode, touch.press, function(evt){ evt.preventDefault(); })); // prevent focus shift on list scrollbar press - - this._listConnect(touch.press, "_onMouseDown"); - this._listConnect(touch.release, "_onMouseUp"); - this._listConnect(mouse.enter, "_onMouseOver"); - this._listConnect(mouse.leave, "_onMouseOut"); - }, - - _onMouseDown: function(/*Event*/ evt, /*DomNode*/ target){ - if(this._hoveredNode){ - this.onUnhover(this._hoveredNode); - this._hoveredNode = null; - } - this._isDragging = true; - this._setSelectedAttr(target); - }, - - _onMouseUp: function(/*Event*/ evt, /*DomNode*/ target){ - this._isDragging = false; - var selectedNode = this.selected; - var hoveredNode = this._hoveredNode; - if(selectedNode && target == selectedNode){ - this.onClick(selectedNode); - }else if(hoveredNode && target == hoveredNode){ // drag to select - this._setSelectedAttr(hoveredNode); - this.onClick(hoveredNode); - } - }, - - _onMouseOut: function(/*Event*/ evt, /*DomNode*/ target){ - if(this._hoveredNode){ - this.onUnhover(this._hoveredNode); - this._hoveredNode = null; - } - if(this._isDragging){ - this._cancelDrag = (new Date()).getTime() + 1000; // cancel in 1 second if no _onMouseOver fires - } - }, - - _onMouseOver: function(/*Event*/ evt, /*DomNode*/ target){ - if(this._cancelDrag){ - var time = (new Date()).getTime(); - if(time > this._cancelDrag){ - this._isDragging = false; - } - this._cancelDrag = null; - } - this._hoveredNode = target; - this.onHover(target); - if(this._isDragging){ - this._setSelectedAttr(target); - } - } -}); - -}); - -}, -'url:dijit/templates/Tree.html':"<div class=\"dijitTree dijitTreeContainer\" role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n</div>\n", -'dojo/cookie':function(){ -define("dojo/cookie", ["./_base/kernel", "./regexp"], function(dojo, regexp){ - -// module: -// dojo/cookie - -/*===== -var __cookieProps = { - // expires: Date|String|Number? - // If a number, the number of days from today at which the cookie - // will expire. If a date, the date past which the cookie will expire. - // If expires is in the past, the cookie will be deleted. - // If expires is omitted or is 0, the cookie will expire when the browser closes. - // path: String? - // The path to use for the cookie. - // domain: String? - // The domain to use for the cookie. - // secure: Boolean? - // Whether to only send the cookie on secure connections -}; -=====*/ - - -dojo.cookie = function(/*String*/name, /*String?*/ value, /*__cookieProps?*/ props){ - // summary: - // Get or set a cookie. - // description: - // If one argument is passed, returns the value of the cookie - // For two or more arguments, acts as a setter. - // name: - // Name of the cookie - // value: - // Value for the cookie - // props: - // Properties for the cookie - // example: - // set a cookie with the JSON-serialized contents of an object which - // will expire 5 days from now: - // | require(["dojo/cookie", "dojo/json"], function(cookie, json){ - // | cookie("configObj", json.stringify(config, {expires: 5 })); - // | }); - // - // example: - // de-serialize a cookie back into a JavaScript object: - // | require(["dojo/cookie", "dojo/json"], function(cookie, json){ - // | config = json.parse(cookie("configObj")); - // | }); - // - // example: - // delete a cookie: - // | require(["dojo/cookie"], function(cookie){ - // | cookie("configObj", null, {expires: -1}); - // | }); - var c = document.cookie, ret; - if(arguments.length == 1){ - var matches = c.match(new RegExp("(?:^|; )" + regexp.escapeString(name) + "=([^;]*)")); - ret = matches ? decodeURIComponent(matches[1]) : undefined; - }else{ - props = props || {}; -// FIXME: expires=0 seems to disappear right away, not on close? (FF3) Change docs? - var exp = props.expires; - if(typeof exp == "number"){ - var d = new Date(); - d.setTime(d.getTime() + exp*24*60*60*1000); - exp = props.expires = d; - } - if(exp && exp.toUTCString){ props.expires = exp.toUTCString(); } - - value = encodeURIComponent(value); - var updatedCookie = name + "=" + value, propName; - for(propName in props){ - updatedCookie += "; " + propName; - var propValue = props[propName]; - if(propValue !== true){ updatedCookie += "=" + propValue; } - } - document.cookie = updatedCookie; - } - return ret; // String|undefined -}; - -dojo.cookie.isSupported = function(){ - // summary: - // Use to determine if the current browser supports cookies or not. - // - // Returns true if user allows cookies. - // Returns false if user doesn't allow cookies. - - if(!("cookieEnabled" in navigator)){ - this("__djCookieTest__", "CookiesAllowed"); - navigator.cookieEnabled = this("__djCookieTest__") == "CookiesAllowed"; - if(navigator.cookieEnabled){ - this("__djCookieTest__", "", {expires: -1}); - } - } - return navigator.cookieEnabled; -}; - -return dojo.cookie; -}); - -}, -'dojo/cache':function(){ -define("dojo/cache", ["./_base/kernel", "./text"], function(dojo){ - // module: - // dojo/cache - - // dojo.cache is defined in dojo/text - return dojo.cache; -}); - -}, -'url:dijit/form/templates/DropDownBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode, _popupStateNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"▼ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"text\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\" aria-haspopup=\"true\"\n\t/></div\n></div>\n", -'dijit/ProgressBar':function(){ -require({cache:{ -'url:dijit/templates/ProgressBar.html':"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\"> </span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><img data-dojo-attach-point=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n"}}); -define("dijit/ProgressBar", [ - "require", // require.toUrl - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.toggle - "dojo/_base/lang", // lang.mixin - "dojo/number", // number.format - "./_Widget", - "./_TemplatedMixin", - "dojo/text!./templates/ProgressBar.html" -], function(require, declare, domClass, lang, number, _Widget, _TemplatedMixin, template){ - -// module: -// dijit/ProgressBar - - -return declare("dijit.ProgressBar", [_Widget, _TemplatedMixin], { - // summary: - // A progress indication widget, showing the amount completed - // (often the percentage completed) of a task. - // - // example: - // | <div data-dojo-type="ProgressBar" - // | places="0" - // | value="..." maximum="..."> - // | </div> - - // progress: [const] String (Percentage or Number) - // Number or percentage indicating amount of task completed. - // Deprecated. Use "value" instead. - progress: "0", - - // value: String (Percentage or Number) - // Number or percentage indicating amount of task completed. - // With "%": percentage value, 0% <= progress <= 100%, or - // without "%": absolute value, 0 <= progress <= maximum. - // Infinity means that the progress bar is indeterminate. - value: "", - - // maximum: [const] Float - // Max sample number - maximum: 100, - - // places: [const] Number - // Number of places to show in values; 0 by default - places: 0, - - // indeterminate: [const] Boolean - // If false: show progress value (number or percentage). - // If true: show that a process is underway but that the amount completed is unknown. - // Deprecated. Use "value" instead. - indeterminate: false, - - // label: String? - // Label on progress bar. Defaults to percentage for determinate progress bar and - // blank for indeterminate progress bar. - label:"", - - // name: String - // this is the field name (for a form) if set. This needs to be set if you want to use - // this widget in a dijit/form/Form widget (such as dijit/Dialog) - name: '', - - templateString: template, - - // _indeterminateHighContrastImagePath: [private] URL - // URL to image to use for indeterminate progress bar when display is in high contrast mode - _indeterminateHighContrastImagePath: - require.toUrl("./themes/a11y/indeterminate_progress.gif"), - - postMixInProperties: function(){ - this.inherited(arguments); - - // Back-compat for when constructor specifies indeterminate or progress, rather than value. Remove for 2.0. - if(!(this.params && "value" in this.params)){ - this.value = this.indeterminate ? Infinity : this.progress; - } - }, - - buildRendering: function(){ - this.inherited(arguments); - this.indeterminateHighContrastImage.setAttribute("src", - this._indeterminateHighContrastImagePath.toString()); - this.update(); - }, - - update: function(/*Object?*/attributes){ - // summary: - // Internal method to change attributes of ProgressBar, similar to set(hash). Users should call - // set("value", ...) rather than calling this method directly. - // attributes: - // May provide progress and/or maximum properties on this parameter; - // see attribute specs for details. - // example: - // | myProgressBar.update({'indeterminate': true}); - // | myProgressBar.update({'progress': 80}); - // | myProgressBar.update({'indeterminate': true, label:"Loading ..." }) - // tags: - // private - - // TODO: deprecate this method and use set() instead - - lang.mixin(this, attributes || {}); - var tip = this.internalProgress, ap = this.domNode; - var percent = 1; - if(this.indeterminate){ - ap.removeAttribute("aria-valuenow"); - }else{ - if(String(this.progress).indexOf("%") != -1){ - percent = Math.min(parseFloat(this.progress)/100, 1); - this.progress = percent * this.maximum; - }else{ - this.progress = Math.min(this.progress, this.maximum); - percent = this.maximum ? this.progress / this.maximum : 0; - } - ap.setAttribute("aria-valuenow", this.progress); - } - - // Even indeterminate ProgressBars should have these attributes - ap.setAttribute("aria-describedby", this.labelNode.id); - ap.setAttribute("aria-valuemin", 0); - ap.setAttribute("aria-valuemax", this.maximum); - - this.labelNode.innerHTML = this.report(percent); - - domClass.toggle(this.domNode, "dijitProgressBarIndeterminate", this.indeterminate); - tip.style.width = (percent * 100) + "%"; - this.onChange(); - }, - - _setValueAttr: function(v){ - this._set("value", v); - if(v == Infinity){ - this.update({indeterminate:true}); - }else{ - this.update({indeterminate:false, progress:v}); - } - }, - - _setLabelAttr: function(label){ - this._set("label", label); - this.update(); - }, - - _setIndeterminateAttr: function(indeterminate){ - // Deprecated, use set("value", ...) instead - this.indeterminate = indeterminate; - this.update(); - }, - - report: function(/*float*/percent){ - // summary: - // Generates message to show inside progress bar (normally indicating amount of task completed). - // May be overridden. - // tags: - // extension - - return this.label ? this.label : - (this.indeterminate ? " " : number.format(percent, { type: "percent", places: this.places, locale: this.lang })); - }, - - onChange: function(){ - // summary: - // Callback fired when progress updates. - // tags: - // extension - } -}); - -}); - -}, -'dijit/_base/popup':function(){ -define("dijit/_base/popup", [ - "dojo/dom-class", // domClass.contains - "dojo/_base/window", - "../popup", - "../BackgroundIframe" // just loading for back-compat, in case client code is referencing it -], function(domClass, win, popup){ - -// module: -// dijit/_base/popup - -/*===== -return { - // summary: - // Deprecated. Old module for popups, new code should use dijit/popup directly. -}; -=====*/ - - -// Hack support for old API passing in node instead of a widget (to various methods) -var origCreateWrapper = popup._createWrapper; -popup._createWrapper = function(widget){ - if(!widget.declaredClass){ - // make fake widget to pass to new API - widget = { - _popupWrapper: (widget.parentNode && domClass.contains(widget.parentNode, "dijitPopup")) ? - widget.parentNode : null, - domNode: widget, - destroy: function(){}, - ownerDocument: widget.ownerDocument, - ownerDocumentBody: win.body(widget.ownerDocument) - }; - } - return origCreateWrapper.call(this, widget); -}; - -// Support old format of orient parameter -var origOpen = popup.open; -popup.open = function(/*__OpenArgs*/ args){ - // Convert old hash structure (ex: {"BL": "TL", ...}) of orient to format compatible w/new popup.open() API. - // Don't do conversion for: - // - null parameter (that means to use the default positioning) - // - "R" or "L" strings used to indicate positioning for context menus (when there is no around node) - // - new format, ex: ["below", "above"] - // - return value from deprecated dijit.getPopupAroundAlignment() method, - // ex: ["below", "above"] - if(args.orient && typeof args.orient != "string" && !("length" in args.orient)){ - var ary = []; - for(var key in args.orient){ - ary.push({aroundCorner: key, corner: args.orient[key]}); - } - args.orient = ary; - } - - return origOpen.call(this, args); -}; - -return popup; -}); - -}, -'dijit/ColorPalette':function(){ -require({cache:{ -'url:dijit/templates/ColorPalette.html':"<div class=\"dijitInline dijitColorPalette\">\n\t<table dojoAttachPoint=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"grid\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n"}}); -define("dijit/ColorPalette", [ - "require", // require.toUrl - "dojo/text!./templates/ColorPalette.html", - "./_Widget", // used also to load dijit/hccss for setting has("highcontrast") - "./_TemplatedMixin", - "./_PaletteMixin", - "./hccss", // has("highcontrast") - "dojo/i18n", // i18n.getLocalization - "dojo/_base/Color", // dojo.Color dojo.Color.named - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.place - "dojo/string", // string.substitute - "dojo/i18n!dojo/nls/colors", // translations - "dojo/colors" // extend dojo.Color w/names of other colors -], function(require, template, _Widget, _TemplatedMixin, _PaletteMixin, has, i18n, Color, - declare, domConstruct, string){ - -// module: -// dijit/ColorPalette - -var ColorPalette = declare("dijit.ColorPalette", [_Widget, _TemplatedMixin, _PaletteMixin], { - // summary: - // A keyboard accessible color-picking widget - // description: - // Grid showing various colors, so the user can pick a certain color. - // Can be used standalone, or as a popup. - // - // example: - // | <div data-dojo-type="dijit/ColorPalette"></div> - // - // example: - // | var picker = new dijit.ColorPalette({ },srcNode); - // | picker.startup(); - - - // palette: [const] String - // Size of grid, either "7x10" or "3x4". - palette: "7x10", - - // _palettes: [protected] Map - // This represents the value of the colors. - // The first level is a hashmap of the different palettes available. - // The next two dimensions represent the columns and rows of colors. - _palettes: { - "7x10": [["white", "seashell", "cornsilk", "lemonchiffon","lightyellow", "palegreen", "paleturquoise", "lightcyan", "lavender", "plum"], - ["lightgray", "pink", "bisque", "moccasin", "khaki", "lightgreen", "lightseagreen", "lightskyblue", "cornflowerblue", "violet"], - ["silver", "lightcoral", "sandybrown", "orange", "palegoldenrod", "chartreuse", "mediumturquoise", "skyblue", "mediumslateblue","orchid"], - ["gray", "red", "orangered", "darkorange", "yellow", "limegreen", "darkseagreen", "royalblue", "slateblue", "mediumorchid"], - ["dimgray", "crimson", "chocolate", "coral", "gold", "forestgreen", "seagreen", "blue", "blueviolet", "darkorchid"], - ["darkslategray","firebrick","saddlebrown", "sienna", "olive", "green", "darkcyan", "mediumblue","darkslateblue", "darkmagenta" ], - ["black", "darkred", "maroon", "brown", "darkolivegreen", "darkgreen", "midnightblue", "navy", "indigo", "purple"]], - - "3x4": [["white", "lime", "green", "blue"], - ["silver", "yellow", "fuchsia", "navy"], - ["gray", "red", "purple", "black"]] - }, - - // templateString: String - // The template of this widget. - templateString: template, - - baseClass: "dijitColorPalette", - - _dyeFactory: function(value, row, col, title){ - // Overrides _PaletteMixin._dyeFactory(). - return new this._dyeClass(value, row, col, title); - }, - - buildRendering: function(){ - // Instantiate the template, which makes a skeleton into which we'll insert a bunch of - // <img> nodes - this.inherited(arguments); - - // Creates customized constructor for dye class (color of a single cell) for - // specified palette and high-contrast vs. normal mode. Used in _getDye(). - this._dyeClass = declare(ColorPalette._Color, { - palette: this.palette - }); - - // Creates <img> nodes in each cell of the template. - this._preparePalette( - this._palettes[this.palette], - i18n.getLocalization("dojo", "colors", this.lang)); - } -}); - -ColorPalette._Color = declare("dijit._Color", Color, { - // summary: - // Object associated with each cell in a ColorPalette palette. - // Implements dijit/Dye. - - // Template for each cell in normal (non-high-contrast mode). Each cell contains a wrapper - // node for showing the border (called dijitPaletteImg for back-compat), and dijitColorPaletteSwatch - // for showing the color. - template: - "<span class='dijitInline dijitPaletteImg'>" + - "<img src='${blankGif}' alt='${alt}' title='${title}' class='dijitColorPaletteSwatch' style='background-color: ${color}'/>" + - "</span>", - - // Template for each cell in high contrast mode. Each cell contains an image with the whole palette, - // but scrolled and clipped to show the correct color only - hcTemplate: - "<span class='dijitInline dijitPaletteImg' style='position: relative; overflow: hidden; height: 12px; width: 14px;'>" + - "<img src='${image}' alt='${alt}' title='${title}' style='position: absolute; left: ${left}px; top: ${top}px; ${size}'/>" + - "</span>", - - // _imagePaths: [protected] Map - // This is stores the path to the palette images used for high-contrast mode display - _imagePaths: { - "7x10": require.toUrl("./themes/a11y/colors7x10.png"), - "3x4": require.toUrl("./themes/a11y/colors3x4.png") - }, - - constructor: function(alias, row, col, title){ - // summary: - // Constructor for ColorPalette._Color - // alias: String - // English name of the color. - // row: Number - // Vertical position in grid. - // column: Number - // Horizontal position in grid. - // title: String - // Localized name of the color. - this._title = title; - this._row = row; - this._col = col; - this.setColor(Color.named[alias]); - }, - - getValue: function(){ - // summary: - // Note that although dijit._Color is initialized with a value like "white" getValue() always - // returns a hex value - return this.toHex(); - }, - - fillCell: function(/*DOMNode*/ cell, /*String*/ blankGif){ - var html = string.substitute(has("highcontrast") ? this.hcTemplate : this.template, { - // substitution variables for normal mode - color: this.toHex(), - blankGif: blankGif, - alt: this._title, - title: this._title, - - // variables used for high contrast mode - image: this._imagePaths[this.palette].toString(), - left: this._col * -20 - 5, - top: this._row * -20 - 5, - size: this.palette == "7x10" ? "height: 145px; width: 206px" : "height: 64px; width: 86px" - }); - - domConstruct.place(html, cell); - } -}); - - -return ColorPalette; -}); - -}, -'url:dijit/form/templates/Button.html':"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:_onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">●</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\ttabIndex=\"-1\" role=\"presentation\" data-dojo-attach-point=\"valueNode\"\n/></span>\n", -'dojo/_base/url':function(){ -define("dojo/_base/url", ["./kernel"], function(dojo){ - // module: - // dojo/url - - var - ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"), - ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"), - _Url = function(){ - var n = null, - _a = arguments, - uri = [_a[0]]; - // resolve uri components relative to each other - for(var i = 1; i<_a.length; i++){ - if(!_a[i]){ continue; } - - // Safari doesn't support this.constructor so we have to be explicit - // FIXME: Tracked (and fixed) in Webkit bug 3537. - // http://bugs.webkit.org/show_bug.cgi?id=3537 - var relobj = new _Url(_a[i]+""), - uriobj = new _Url(uri[0]+""); - - if( - relobj.path == "" && - !relobj.scheme && - !relobj.authority && - !relobj.query - ){ - if(relobj.fragment != n){ - uriobj.fragment = relobj.fragment; - } - relobj = uriobj; - }else if(!relobj.scheme){ - relobj.scheme = uriobj.scheme; - - if(!relobj.authority){ - relobj.authority = uriobj.authority; - - if(relobj.path.charAt(0) != "/"){ - var path = uriobj.path.substring(0, - uriobj.path.lastIndexOf("/") + 1) + relobj.path; - - var segs = path.split("/"); - for(var j = 0; j < segs.length; j++){ - if(segs[j] == "."){ - // flatten "./" references - if(j == segs.length - 1){ - segs[j] = ""; - }else{ - segs.splice(j, 1); - j--; - } - }else if(j > 0 && !(j == 1 && segs[0] == "") && - segs[j] == ".." && segs[j-1] != ".."){ - // flatten "../" references - if(j == (segs.length - 1)){ - segs.splice(j, 1); - segs[j - 1] = ""; - }else{ - segs.splice(j - 1, 2); - j -= 2; - } - } - } - relobj.path = segs.join("/"); - } - } - } - - uri = []; - if(relobj.scheme){ - uri.push(relobj.scheme, ":"); - } - if(relobj.authority){ - uri.push("//", relobj.authority); - } - uri.push(relobj.path); - if(relobj.query){ - uri.push("?", relobj.query); - } - if(relobj.fragment){ - uri.push("#", relobj.fragment); - } - } - - this.uri = uri.join(""); - - // break the uri into its main components - var r = this.uri.match(ore); - - this.scheme = r[2] || (r[1] ? "" : n); - this.authority = r[4] || (r[3] ? "" : n); - this.path = r[5]; // can never be undefined - this.query = r[7] || (r[6] ? "" : n); - this.fragment = r[9] || (r[8] ? "" : n); - - if(this.authority != n){ - // server based naming authority - r = this.authority.match(ire); - - this.user = r[3] || n; - this.password = r[4] || n; - this.host = r[6] || r[7]; // ipv6 || ipv4 - this.port = r[9] || n; - } - }; - _Url.prototype.toString = function(){ return this.uri; }; - - return dojo._Url = _Url; -}); - -}, -'url:dijit/templates/MenuItem.html':"<tr class=\"dijitReset dijitMenuItem\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuExpand\"/>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</div>\n\t</td>\n</tr>\n", -'dojo/text':function(){ -define("dojo/text", ["./_base/kernel", "require", "./has", "./_base/xhr"], function(dojo, require, has, xhr){ - // module: - // dojo/text - - var getText; - if( 1 ){ - getText= function(url, sync, load){ - xhr("GET", {url: url, sync:!!sync, load: load, headers: dojo.config.textPluginHeaders || {}}); - }; - }else{ - // TODOC: only works for dojo AMD loader - if(require.getText){ - getText= require.getText; - }else{ - console.error("dojo/text plugin failed to load because loader does not support getText"); - } - } - - var - theCache = {}, - - strip= function(text){ - //Strips <?xml ...?> declarations so that external SVG and XML - //documents can be added to a document without worry. Also, if the string - //is an HTML document, only the part inside the body tag is returned. - if(text){ - text= text.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, ""); - var matches= text.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); - if(matches){ - text= matches[1]; - } - }else{ - text = ""; - } - return text; - }, - - notFound = {}, - - pending = {}; - - dojo.cache = function(/*String||Object*/module, /*String*/url, /*String||Object?*/value){ - // summary: - // A getter and setter for storing the string content associated with the - // module and url arguments. - // description: - // If module is a string that contains slashes, then it is interpretted as a fully - // resolved path (typically a result returned by require.toUrl), and url should not be - // provided. This is the preferred signature. If module is a string that does not - // contain slashes, then url must also be provided and module and url are used to - // call `dojo.moduleUrl()` to generate a module URL. This signature is deprecated. - // If value is specified, the cache value for the moduleUrl will be set to - // that value. Otherwise, dojo.cache will fetch the moduleUrl and store it - // in its internal cache and return that cached value for the URL. To clear - // a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the - // the URL contents, only modules on the same domain of the page can use this capability. - // The build system can inline the cache values though, to allow for xdomain hosting. - // module: String||Object - // If a String with slashes, a fully resolved path; if a String without slashes, the - // module name to use for the base part of the URL, similar to module argument - // to `dojo.moduleUrl`. If an Object, something that has a .toString() method that - // generates a valid path for the cache item. For example, a dojo._Url object. - // url: String - // The rest of the path to append to the path derived from the module argument. If - // module is an object, then this second argument should be the "value" argument instead. - // value: String||Object? - // If a String, the value to use in the cache for the module/url combination. - // If an Object, it can have two properties: value and sanitize. The value property - // should be the value to use in the cache, and sanitize can be set to true or false, - // to indicate if XML declarations should be removed from the value and if the HTML - // inside a body tag in the value should be extracted as the real value. The value argument - // or the value property on the value argument are usually only used by the build system - // as it inlines cache content. - // example: - // To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style - // of call is used to avoid an issue with the build system erroneously trying to intern - // this example. To get the build system to intern your dojo.cache calls, use the - // "dojo.cache" style of call): - // | //If template.html contains "<h1>Hello</h1>" that will be - // | //the value for the text variable. - // | var text = dojo["cache"]("my.module", "template.html"); - // example: - // To ask dojo.cache to fetch content and store it in the cache, and sanitize the input - // (the dojo["cache"] style of call is used to avoid an issue with the build system - // erroneously trying to intern this example. To get the build system to intern your - // dojo.cache calls, use the "dojo.cache" style of call): - // | //If template.html contains "<html><body><h1>Hello</h1></body></html>", the - // | //text variable will contain just "<h1>Hello</h1>". - // | var text = dojo["cache"]("my.module", "template.html", {sanitize: true}); - // example: - // Same example as previous, but demonstrates how an object can be passed in as - // the first argument, then the value argument can then be the second argument. - // | //If template.html contains "<html><body><h1>Hello</h1></body></html>", the - // | //text variable will contain just "<h1>Hello</h1>". - // | var text = dojo["cache"](new dojo._Url("my/module/template.html"), {sanitize: true}); - - // * (string string [value]) => (module, url, value) - // * (object [value]) => (module, value), url defaults to "" - // - // * if module is an object, then it must be convertable to a string - // * (module, url) module + (url ? ("/" + url) : "") must be a legal argument to require.toUrl - // * value may be a string or an object; if an object then may have the properties "value" and/or "sanitize" - var key; - if(typeof module=="string"){ - if(/\//.test(module)){ - // module is a version 1.7+ resolved path - key = module; - value = url; - }else{ - // module is a version 1.6- argument to dojo.moduleUrl - key = require.toUrl(module.replace(/\./g, "/") + (url ? ("/" + url) : "")); - } - }else{ - key = module + ""; - value = url; - } - var - val = (value != undefined && typeof value != "string") ? value.value : value, - sanitize = value && value.sanitize; - - if(typeof val == "string"){ - //We have a string, set cache value - theCache[key] = val; - return sanitize ? strip(val) : val; - }else if(val === null){ - //Remove cached value - delete theCache[key]; - return null; - }else{ - //Allow cache values to be empty strings. If key property does - //not exist, fetch it. - if(!(key in theCache)){ - getText(key, true, function(text){ - theCache[key]= text; - }); - } - return sanitize ? strip(theCache[key]) : theCache[key]; - } - }; - - return { - // summary: - // This module implements the dojo/text! plugin and the dojo.cache API. - // description: - // We choose to include our own plugin to leverage functionality already contained in dojo - // and thereby reduce the size of the plugin compared to various foreign loader implementations. - // Also, this allows foreign AMD loaders to be used without their plugins. - // - // CAUTION: this module is designed to optionally function synchronously to support the dojo v1.x synchronous - // loader. This feature is outside the scope of the CommonJS plugins specification. - - // the dojo/text caches it's own resources because of dojo.cache - dynamic: true, - - normalize: function(id, toAbsMid){ - // id is something like (path may be relative): - // - // "path/to/text.html" - // "path/to/text.html!strip" - var parts= id.split("!"), - url= parts[0]; - return (/^\./.test(url) ? toAbsMid(url) : url) + (parts[1] ? "!" + parts[1] : ""); - }, - - load: function(id, require, load){ - // id: String - // Path to the resource. - // require: Function - // Object that include the function toUrl with given id returns a valid URL from which to load the text. - // load: Function - // Callback function which will be called, when the loading finished. - - // id is something like (path is always absolute): - // - // "path/to/text.html" - // "path/to/text.html!strip" - var - parts= id.split("!"), - stripFlag= parts.length>1, - absMid= parts[0], - url = require.toUrl(parts[0]), - requireCacheUrl = "url:" + url, - text = notFound, - finish = function(text){ - load(stripFlag ? strip(text) : text); - }; - if(absMid in theCache){ - text = theCache[absMid]; - }else if(requireCacheUrl in require.cache){ - text = require.cache[requireCacheUrl]; - }else if(url in theCache){ - text = theCache[url]; - } - if(text===notFound){ - if(pending[url]){ - pending[url].push(finish); - }else{ - var pendingList = pending[url] = [finish]; - getText(url, !require.async, function(text){ - theCache[absMid]= theCache[url]= text; - for(var i = 0; i<pendingList.length;){ - pendingList[i++](text); - } - delete pending[url]; - }); - } - }else{ - finish(text); - } - } - }; - -}); - - -}, -'url:dijit/form/templates/CheckBox.html':"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"onclick:_onClick\"\n/></div>\n", -'dojo/uacss':function(){ -define("dojo/uacss", ["./dom-geometry", "./_base/lang", "./ready", "./sniff", "./_base/window"], - function(geometry, lang, ready, has, baseWindow){ - - // module: - // dojo/uacss - - /*===== - return { - // summary: - // Applies pre-set CSS classes to the top-level HTML node, based on: - // - // - browser (ex: dj_ie) - // - browser version (ex: dj_ie6) - // - box model (ex: dj_contentBox) - // - text direction (ex: dijitRtl) - // - // In addition, browser, browser version, and box model are - // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. - // - // Returns the has() method. - }; - =====*/ - - var - html = baseWindow.doc.documentElement, - ie = has("ie"), - opera = has("opera"), - maj = Math.floor, - ff = has("ff"), - boxModel = geometry.boxModel.replace(/-/,''), - - classes = { - "dj_quirks": has("quirks"), - - // NOTE: Opera not supported by dijit - "dj_opera": opera, - - "dj_khtml": has("khtml"), - - "dj_webkit": has("webkit"), - "dj_safari": has("safari"), - "dj_chrome": has("chrome"), - - "dj_gecko": has("mozilla") - }; // no dojo unsupported browsers - - if(ie){ - classes["dj_ie"] = true; - classes["dj_ie" + maj(ie)] = true; - classes["dj_iequirks"] = has("quirks"); - } - if(ff){ - classes["dj_ff" + maj(ff)] = true; - } - - classes["dj_" + boxModel] = true; - - // apply browser, browser version, and box model class names - var classStr = ""; - for(var clz in classes){ - if(classes[clz]){ - classStr += clz + " "; - } - } - html.className = lang.trim(html.className + " " + classStr); - - // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension. - // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl). - // priority is 90 to run ahead of parser priority of 100 - ready(90, function(){ - if(!geometry.isBodyLtr()){ - var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "); - html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")); - } - }); - return has; -}); - -}, -'dijit/Tooltip':function(){ -require({cache:{ -'url:dijit/templates/Tooltip.html':"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\"\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n></div>\n"}}); -define("dijit/Tooltip", [ - "dojo/_base/array", // array.forEach array.indexOf array.map - "dojo/_base/declare", // declare - "dojo/_base/fx", // fx.fadeIn fx.fadeOut - "dojo/dom", // dom.byId - "dojo/dom-class", // domClass.add - "dojo/dom-geometry", // domGeometry.position - "dojo/dom-style", // domStyle.set, domStyle.get - "dojo/_base/lang", // lang.hitch lang.isArrayLike - "dojo/mouse", - "dojo/on", - "dojo/sniff", // has("ie") - "./_base/manager", // manager.defaultDuration - "./place", - "./_Widget", - "./_TemplatedMixin", - "./BackgroundIframe", - "dojo/text!./templates/Tooltip.html", - "./main" // sets dijit.showTooltip etc. for back-compat -], function(array, declare, fx, dom, domClass, domGeometry, domStyle, lang, mouse, on, has, - manager, place, _Widget, _TemplatedMixin, BackgroundIframe, template, dijit){ - - // module: - // dijit/Tooltip - - - // TODO: Tooltip should really share more positioning code with TooltipDialog, like: - // - the orient() method - // - the connector positioning code in show() - // - the dijitTooltip[Dialog] class - // - // The problem is that Tooltip's implementation supplies it's own <iframe> and interacts directly - // with dijit/place, rather than going through dijit/popup like TooltipDialog and other popups (ex: Menu). - - var MasterTooltip = declare("dijit._MasterTooltip", [_Widget, _TemplatedMixin], { - // summary: - // Internal widget that holds the actual tooltip markup, - // which occurs once per page. - // Called by Tooltip widgets which are just containers to hold - // the markup - // tags: - // protected - - // duration: Integer - // Milliseconds to fade in/fade out - duration: manager.defaultDuration, - - templateString: template, - - postCreate: function(){ - this.ownerDocumentBody.appendChild(this.domNode); - - this.bgIframe = new BackgroundIframe(this.domNode); - - // Setup fade-in and fade-out functions. - this.fadeIn = fx.fadeIn({ node: this.domNode, duration: this.duration, onEnd: lang.hitch(this, "_onShow") }); - this.fadeOut = fx.fadeOut({ node: this.domNode, duration: this.duration, onEnd: lang.hitch(this, "_onHide") }); - }, - - show: function(innerHTML, aroundNode, position, rtl, textDir){ - // summary: - // Display tooltip w/specified contents to right of specified node - // (To left if there's no space on the right, or if rtl == true) - // innerHTML: String - // Contents of the tooltip - // aroundNode: DomNode|dijit/place.__Rectangle - // Specifies that tooltip should be next to this node / area - // position: String[]? - // List of positions to try to position tooltip (ex: ["right", "above"]) - // rtl: Boolean? - // Corresponds to `WidgetBase.dir` attribute, where false means "ltr" and true - // means "rtl"; specifies GUI direction, not text direction. - // textDir: String? - // Corresponds to `WidgetBase.textdir` attribute; specifies direction of text. - - - if(this.aroundNode && this.aroundNode === aroundNode && this.containerNode.innerHTML == innerHTML){ - return; - } - - if(this.fadeOut.status() == "playing"){ - // previous tooltip is being hidden; wait until the hide completes then show new one - this._onDeck=arguments; - return; - } - this.containerNode.innerHTML=innerHTML; - - if(textDir){ - this.set("textDir", textDir); - } - - this.containerNode.align = rtl? "right" : "left"; //fix the text alignment - - var pos = place.around(this.domNode, aroundNode, - position && position.length ? position : Tooltip.defaultPosition, !rtl, lang.hitch(this, "orient")); - - // Position the tooltip connector for middle alignment. - // This could not have been done in orient() since the tooltip wasn't positioned at that time. - var aroundNodeCoords = pos.aroundNodePos; - if(pos.corner.charAt(0) == 'M' && pos.aroundCorner.charAt(0) == 'M'){ - this.connectorNode.style.top = aroundNodeCoords.y + ((aroundNodeCoords.h - this.connectorNode.offsetHeight) >> 1) - pos.y + "px"; - this.connectorNode.style.left = ""; - }else if(pos.corner.charAt(1) == 'M' && pos.aroundCorner.charAt(1) == 'M'){ - this.connectorNode.style.left = aroundNodeCoords.x + ((aroundNodeCoords.w - this.connectorNode.offsetWidth) >> 1) - pos.x + "px"; - }else{ - // Not *-centered, but just above/below/after/before - this.connectorNode.style.left = ""; - this.connectorNode.style.top = ""; - } - - // show it - domStyle.set(this.domNode, "opacity", 0); - this.fadeIn.play(); - this.isShowingNow = true; - this.aroundNode = aroundNode; - }, - - orient: function(/*DomNode*/ node, /*String*/ aroundCorner, /*String*/ tooltipCorner, /*Object*/ spaceAvailable, /*Object*/ aroundNodeCoords){ - // summary: - // Private function to set CSS for tooltip node based on which position it's in. - // This is called by the dijit popup code. It will also reduce the tooltip's - // width to whatever width is available - // tags: - // protected - - this.connectorNode.style.top = ""; //reset to default - - var heightAvailable = spaceAvailable.h, - widthAvailable = spaceAvailable.w; - - node.className = "dijitTooltip " + - { - "MR-ML": "dijitTooltipRight", - "ML-MR": "dijitTooltipLeft", - "TM-BM": "dijitTooltipAbove", - "BM-TM": "dijitTooltipBelow", - "BL-TL": "dijitTooltipBelow dijitTooltipABLeft", - "TL-BL": "dijitTooltipAbove dijitTooltipABLeft", - "BR-TR": "dijitTooltipBelow dijitTooltipABRight", - "TR-BR": "dijitTooltipAbove dijitTooltipABRight", - "BR-BL": "dijitTooltipRight", - "BL-BR": "dijitTooltipLeft" - }[aroundCorner + "-" + tooltipCorner]; - - // reset width; it may have been set by orient() on a previous tooltip show() - this.domNode.style.width = "auto"; - - // Reduce tooltip's width to the amount of width available, so that it doesn't overflow screen. - // Note that sometimes widthAvailable is negative, but we guard against setting style.width to a - // negative number since that causes an exception on IE. - var size = domGeometry.position(this.domNode); - if(has("ie") == 9){ - // workaround strange IE9 bug where setting width to offsetWidth causes words to wrap - size.w += 2; - } - - var width = Math.min((Math.max(widthAvailable,1)), size.w); - - domGeometry.setMarginBox(this.domNode, {w: width}); - - // Reposition the tooltip connector. - if(tooltipCorner.charAt(0) == 'B' && aroundCorner.charAt(0) == 'B'){ - var bb = domGeometry.position(node); - var tooltipConnectorHeight = this.connectorNode.offsetHeight; - if(bb.h > heightAvailable){ - // The tooltip starts at the top of the page and will extend past the aroundNode - var aroundNodePlacement = heightAvailable - ((aroundNodeCoords.h + tooltipConnectorHeight) >> 1); - this.connectorNode.style.top = aroundNodePlacement + "px"; - this.connectorNode.style.bottom = ""; - }else{ - // Align center of connector with center of aroundNode, except don't let bottom - // of connector extend below bottom of tooltip content, or top of connector - // extend past top of tooltip content - this.connectorNode.style.bottom = Math.min( - Math.max(aroundNodeCoords.h/2 - tooltipConnectorHeight/2, 0), - bb.h - tooltipConnectorHeight) + "px"; - this.connectorNode.style.top = ""; - } - }else{ - // reset the tooltip back to the defaults - this.connectorNode.style.top = ""; - this.connectorNode.style.bottom = ""; - } - - return Math.max(0, size.w - widthAvailable); - }, - - _onShow: function(){ - // summary: - // Called at end of fade-in operation - // tags: - // protected - if(has("ie")){ - // the arrow won't show up on a node w/an opacity filter - this.domNode.style.filter=""; - } - }, - - hide: function(aroundNode){ - // summary: - // Hide the tooltip - - if(this._onDeck && this._onDeck[1] == aroundNode){ - // this hide request is for a show() that hasn't even started yet; - // just cancel the pending show() - this._onDeck=null; - }else if(this.aroundNode === aroundNode){ - // this hide request is for the currently displayed tooltip - this.fadeIn.stop(); - this.isShowingNow = false; - this.aroundNode = null; - this.fadeOut.play(); - }else{ - // just ignore the call, it's for a tooltip that has already been erased - } - }, - - _onHide: function(){ - // summary: - // Called at end of fade-out operation - // tags: - // protected - - this.domNode.style.cssText=""; // to position offscreen again - this.containerNode.innerHTML=""; - if(this._onDeck){ - // a show request has been queued up; do it now - this.show.apply(this, this._onDeck); - this._onDeck=null; - } - }, - - _setAutoTextDir: function(/*Object*/node){ - // summary: - // Resolve "auto" text direction for children nodes - // tags: - // private - - this.applyTextDir(node, has("ie") ? node.outerText : node.textContent); - array.forEach(node.children, function(child){this._setAutoTextDir(child); }, this); - }, - - _setTextDirAttr: function(/*String*/ textDir){ - // summary: - // Setter for textDir. - // description: - // Users shouldn't call this function; they should be calling - // set('textDir', value) - // tags: - // private - - this._set("textDir", textDir); - - if (textDir == "auto"){ - this._setAutoTextDir(this.containerNode); - }else{ - this.containerNode.dir = this.textDir; - } - } - }); - - dijit.showTooltip = function(innerHTML, aroundNode, position, rtl, textDir){ - // summary: - // Static method to display tooltip w/specified contents in specified position. - // See description of dijit/Tooltip.defaultPosition for details on position parameter. - // If position is not specified then dijit/Tooltip.defaultPosition is used. - // innerHTML: String - // Contents of the tooltip - // aroundNode: place.__Rectangle - // Specifies that tooltip should be next to this node / area - // position: String[]? - // List of positions to try to position tooltip (ex: ["right", "above"]) - // rtl: Boolean? - // Corresponds to `WidgetBase.dir` attribute, where false means "ltr" and true - // means "rtl"; specifies GUI direction, not text direction. - // textDir: String? - // Corresponds to `WidgetBase.textdir` attribute; specifies direction of text. - - // After/before don't work, but for back-compat convert them to the working after-centered, before-centered. - // Possibly remove this in 2.0. Alternately, get before/after to work. - if(position){ - position = array.map(position, function(val){ - return {after: "after-centered", before: "before-centered"}[val] || val; - }); - } - - if(!Tooltip._masterTT){ dijit._masterTT = Tooltip._masterTT = new MasterTooltip(); } - return Tooltip._masterTT.show(innerHTML, aroundNode, position, rtl, textDir); - }; - - dijit.hideTooltip = function(aroundNode){ - // summary: - // Static method to hide the tooltip displayed via showTooltip() - return Tooltip._masterTT && Tooltip._masterTT.hide(aroundNode); - }; - - var Tooltip = declare("dijit.Tooltip", _Widget, { - // summary: - // Pops up a tooltip (a help message) when you hover over a node. - // Also provides static show() and hide() methods that can be used without instantiating a dijit/Tooltip. - - // label: String - // Text to display in the tooltip. - // Specified as innerHTML when creating the widget from markup. - label: "", - - // showDelay: Integer - // Number of milliseconds to wait after hovering over/focusing on the object, before - // the tooltip is displayed. - showDelay: 400, - - // connectId: String|String[]|DomNode|DomNode[] - // Id of domNode(s) to attach the tooltip to. - // When user hovers over specified dom node(s), the tooltip will appear. - connectId: [], - - // position: String[] - // See description of `dijit/Tooltip.defaultPosition` for details on position parameter. - position: [], - - // selector: String? - // CSS expression to apply this Tooltip to descendants of connectIds, rather than to - // the nodes specified by connectIds themselves. Useful for applying a Tooltip to - // a range of rows in a table, tree, etc. Use in conjunction with getContent() parameter. - // Ex: connectId: myTable, selector: "tr", getContent: function(node){ return ...; } - // - // The application must require() an appropriate level of dojo/query to handle the selector. - selector: "", - - // TODO: in 2.0 remove support for multiple connectIds. selector gives the same effect. - // So, change connectId to a "", remove addTarget()/removeTarget(), etc. - - _setConnectIdAttr: function(/*String|String[]}DomNode|DomNode[]*/ newId){ - // summary: - // Connect to specified node(s) - - // Remove connections to old nodes (if there are any) - array.forEach(this._connections || [], function(nested){ - array.forEach(nested, function(handle){ handle.remove(); }); - }, this); - - // Make array of id's to connect to, excluding entries for nodes that don't exist yet, see startup() - this._connectIds = array.filter(lang.isArrayLike(newId) ? newId : (newId ? [newId] : []), - function(id){ return dom.byId(id, this.ownerDocument); }, this); - - // Make connections - this._connections = array.map(this._connectIds, function(id){ - var node = dom.byId(id, this.ownerDocument), - selector = this.selector, - delegatedEvent = selector ? - function(eventType){ return on.selector(selector, eventType); } : - function(eventType){ return eventType; }, - self = this; - return [ - on(node, delegatedEvent(mouse.enter), function(){ - self._onHover(this); - }), - on(node, delegatedEvent("focusin"), function(){ - self._onHover(this); - }), - on(node, delegatedEvent(mouse.leave), lang.hitch(self, "_onUnHover")), - on(node, delegatedEvent("focusout"), lang.hitch(self, "_onUnHover")) - ]; - }, this); - - this._set("connectId", newId); - }, - - addTarget: function(/*OomNode|String*/ node){ - // summary: - // Attach tooltip to specified node if it's not already connected - - // TODO: remove in 2.0 and just use set("connectId", ...) interface - - var id = node.id || node; - if(array.indexOf(this._connectIds, id) == -1){ - this.set("connectId", this._connectIds.concat(id)); - } - }, - - removeTarget: function(/*DomNode|String*/ node){ - // summary: - // Detach tooltip from specified node - - // TODO: remove in 2.0 and just use set("connectId", ...) interface - - var id = node.id || node, // map from DOMNode back to plain id string - idx = array.indexOf(this._connectIds, id); - if(idx >= 0){ - // remove id (modifies original this._connectIds but that's OK in this case) - this._connectIds.splice(idx, 1); - this.set("connectId", this._connectIds); - } - }, - - buildRendering: function(){ - this.inherited(arguments); - domClass.add(this.domNode,"dijitTooltipData"); - }, - - startup: function(){ - this.inherited(arguments); - - // If this tooltip was created in a template, or for some other reason the specified connectId[s] - // didn't exist during the widget's initialization, then connect now. - var ids = this.connectId; - array.forEach(lang.isArrayLike(ids) ? ids : [ids], this.addTarget, this); - }, - - getContent: function(/*DomNode*/ node){ - // summary: - // User overridable function that return the text to display in the tooltip. - // tags: - // extension - return this.label || this.domNode.innerHTML; - }, - - _onHover: function(/*DomNode*/ target){ - // summary: - // Despite the name of this method, it actually handles both hover and focus - // events on the target node, setting a timer to show the tooltip. - // tags: - // private - if(!this._showTimer){ - this._showTimer = this.defer(function(){ this.open(target); }, this.showDelay); - } - }, - - _onUnHover: function(){ - // summary: - // Despite the name of this method, it actually handles both mouseleave and blur - // events on the target node, hiding the tooltip. - // tags: - // private - - if(this._showTimer){ - this._showTimer.remove(); - delete this._showTimer; - } - this.close(); - }, - - open: function(/*DomNode*/ target){ - // summary: - // Display the tooltip; usually not called directly. - // tags: - // private - - if(this._showTimer){ - this._showTimer.remove(); - delete this._showTimer; - } - - var content = this.getContent(target); - if(!content){ - return; - } - Tooltip.show(content, target, this.position, !this.isLeftToRight(), this.textDir); - - this._connectNode = target; // _connectNode means "tooltip currently displayed for this node" - this.onShow(target, this.position); - }, - - close: function(){ - // summary: - // Hide the tooltip or cancel timer for show of tooltip - // tags: - // private - - if(this._connectNode){ - // if tooltip is currently shown - Tooltip.hide(this._connectNode); - delete this._connectNode; - this.onHide(); - } - if(this._showTimer){ - // if tooltip is scheduled to be shown (after a brief delay) - this._showTimer.remove(); - delete this._showTimer; - } - }, - - onShow: function(/*===== target, position =====*/){ - // summary: - // Called when the tooltip is shown - // tags: - // callback - }, - - onHide: function(){ - // summary: - // Called when the tooltip is hidden - // tags: - // callback - }, - - destroy: function(){ - this.close(); - - // Remove connections manually since they aren't registered to be removed by _WidgetBase - array.forEach(this._connections || [], function(nested){ - array.forEach(nested, function(handle){ handle.remove(); }); - }, this); - - this.inherited(arguments); - } - }); - - Tooltip._MasterTooltip = MasterTooltip; // for monkey patching - Tooltip.show = dijit.showTooltip; // export function through module return value - Tooltip.hide = dijit.hideTooltip; // export function through module return value - - Tooltip.defaultPosition = ["after-centered", "before-centered"]; - - /*===== - lang.mixin(Tooltip, { - // defaultPosition: String[] - // This variable controls the position of tooltips, if the position is not specified to - // the Tooltip widget or *TextBox widget itself. It's an array of strings with the values - // possible for `dijit/place.around()`. The recommended values are: - // - // - before-centered: centers tooltip to the left of the anchor node/widget, or to the right - // in the case of RTL scripts like Hebrew and Arabic - // - after-centered: centers tooltip to the right of the anchor node/widget, or to the left - // in the case of RTL scripts like Hebrew and Arabic - // - above-centered: tooltip is centered above anchor node - // - below-centered: tooltip is centered above anchor node - // - // The list is positions is tried, in order, until a position is found where the tooltip fits - // within the viewport. - // - // Be careful setting this parameter. A value of "above-centered" may work fine until the user scrolls - // the screen so that there's no room above the target node. Nodes with drop downs, like - // DropDownButton or FilteringSelect, are especially problematic, in that you need to be sure - // that the drop down and tooltip don't overlap, even when the viewport is scrolled so that there - // is only room below (or above) the target node, but not both. - }); - =====*/ - return Tooltip; -}); - -}, -'dojo/string':function(){ -define("dojo/string", [ - "./_base/kernel", // kernel.global - "./_base/lang" -], function(kernel, lang){ - -// module: -// dojo/string - -var string = { - // summary: - // String utilities for Dojo -}; -lang.setObject("dojo.string", string); - -string.rep = function(/*String*/str, /*Integer*/num){ - // summary: - // Efficiently replicate a string `n` times. - // str: - // the string to replicate - // num: - // number of times to replicate the string - - if(num <= 0 || !str){ return ""; } - - var buf = []; - for(;;){ - if(num & 1){ - buf.push(str); - } - if(!(num >>= 1)){ break; } - str += str; - } - return buf.join(""); // String -}; - -string.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){ - // summary: - // Pad a string to guarantee that it is at least `size` length by - // filling with the character `ch` at either the start or end of the - // string. Pads at the start, by default. - // text: - // the string to pad - // size: - // length to provide padding - // ch: - // character to pad, defaults to '0' - // end: - // adds padding at the end if true, otherwise pads at start - // example: - // | // Fill the string to length 10 with "+" characters on the right. Yields "Dojo++++++". - // | string.pad("Dojo", 10, "+", true); - - if(!ch){ - ch = '0'; - } - var out = String(text), - pad = string.rep(ch, Math.ceil((size - out.length) / ch.length)); - return end ? out + pad : pad + out; // String -}; - -string.substitute = function( /*String*/ template, - /*Object|Array*/map, - /*Function?*/ transform, - /*Object?*/ thisObject){ - // summary: - // Performs parameterized substitutions on a string. Throws an - // exception if any parameter is unmatched. - // template: - // a string with expressions in the form `${key}` to be replaced or - // `${key:format}` which specifies a format function. keys are case-sensitive. - // map: - // hash to search for substitutions - // transform: - // a function to process all parameters before substitution takes - // place, e.g. mylib.encodeXML - // thisObject: - // where to look for optional format function; default to the global - // namespace - // example: - // Substitutes two expressions in a string from an Array or Object - // | // returns "File 'foo.html' is not found in directory '/temp'." - // | // by providing substitution data in an Array - // | string.substitute( - // | "File '${0}' is not found in directory '${1}'.", - // | ["foo.html","/temp"] - // | ); - // | - // | // also returns "File 'foo.html' is not found in directory '/temp'." - // | // but provides substitution data in an Object structure. Dotted - // | // notation may be used to traverse the structure. - // | string.substitute( - // | "File '${name}' is not found in directory '${info.dir}'.", - // | { name: "foo.html", info: { dir: "/temp" } } - // | ); - // example: - // Use a transform function to modify the values: - // | // returns "file 'foo.html' is not found in directory '/temp'." - // | string.substitute( - // | "${0} is not found in ${1}.", - // | ["foo.html","/temp"], - // | function(str){ - // | // try to figure out the type - // | var prefix = (str.charAt(0) == "/") ? "directory": "file"; - // | return prefix + " '" + str + "'"; - // | } - // | ); - // example: - // Use a formatter - // | // returns "thinger -- howdy" - // | string.substitute( - // | "${0:postfix}", ["thinger"], null, { - // | postfix: function(value, key){ - // | return value + " -- howdy"; - // | } - // | } - // | ); - - thisObject = thisObject || kernel.global; - transform = transform ? - lang.hitch(thisObject, transform) : function(v){ return v; }; - - return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, - function(match, key, format){ - var value = lang.getObject(key, false, map); - if(format){ - value = lang.getObject(format, false, thisObject).call(thisObject, value, key); - } - return transform(value, key).toString(); - }); // String -}; - -string.trim = String.prototype.trim ? - lang.trim : // aliasing to the native function - function(str){ - str = str.replace(/^\s+/, ''); - for(var i = str.length - 1; i >= 0; i--){ - if(/\S/.test(str.charAt(i))){ - str = str.substring(0, i + 1); - break; - } - } - return str; - }; - -/*===== - string.trim = function(str){ - // summary: - // Trims whitespace from both sides of the string - // str: String - // String to be trimmed - // returns: String - // Returns the trimmed string - // description: - // This version of trim() was taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript). - // The short yet performant version of this function is dojo.trim(), - // which is part of Dojo base. Uses String.prototype.trim instead, if available. - return ""; // String - }; - =====*/ - - return string; -}); - -}, -'url:dijit/templates/MenuSeparator.html':"<tr class=\"dijitMenuSeparator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>", -'dijit/layout/AccordionPane':function(){ -define("dijit/layout/AccordionPane", [ - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.deprecated - "./ContentPane" -], function(declare, kernel, ContentPane){ - - // module: - // dijit/layout/AccordionPane - - return declare("dijit.layout.AccordionPane", ContentPane, { - // summary: - // Deprecated widget. Use `dijit/layout/ContentPane` instead. - // tags: - // deprecated - - constructor: function(){ - kernel.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead", "", "2.0"); - }, - - onSelected: function(){ - // summary: - // called when this pane is selected - } - }); -}); - -}, -'dijit/dijit':function(){ -define("dijit/dijit", [ - "./main", - "./_base", - "dojo/parser", - "./_Widget", - "./_TemplatedMixin", - "./_Container", - "./layout/_LayoutWidget", - "./form/_FormWidget", - "./form/_FormValueWidget" -], function(dijit){ - - // module: - // dijit/dijit - - /*===== - return { - // summary: - // A roll-up for common dijit methods - // All the stuff in _base (these are the function that are guaranteed available without an explicit dojo.require) - // And some other stuff that we tend to pull in all the time anyway - }; - =====*/ - - return dijit; -}); - -}, -'dijit/form/DropDownButton':function(){ -require({cache:{ -'url:dijit/form/templates/DropDownButton.html':"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:_onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode,_popupStateNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">▼</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-point=\"valueNode\" role=\"presentation\"\n/></span>\n"}}); -define("dijit/form/DropDownButton", [ - "dojo/_base/declare", // declare - "dojo/_base/lang", // hitch - "dojo/query", // query - "../registry", // registry.byNode - "../popup", // dijit.popup2.hide - "./Button", - "../_Container", - "../_HasDropDown", - "dojo/text!./templates/DropDownButton.html" -], function(declare, lang, query, registry, popup, Button, _Container, _HasDropDown, template){ - -// module: -// dijit/form/DropDownButton - - -return declare("dijit.form.DropDownButton", [Button, _Container, _HasDropDown], { - // summary: - // A button with a drop down - // - // example: - // | <button data-dojo-type="dijit/form/DropDownButton"> - // | Hello world - // | <div data-dojo-type="dijit/Menu">...</div> - // | </button> - // - // example: - // | var button1 = new DropDownButton({ label: "hi", dropDown: new dijit.Menu(...) }); - // | win.body().appendChild(button1); - // - - baseClass : "dijitDropDownButton", - - templateString: template, - - _fillContent: function(){ - // Overrides Button._fillContent(). - // - // My inner HTML contains both the button contents and a drop down widget, like - // <DropDownButton> <span>push me</span> <Menu> ... </Menu> </DropDownButton> - // The first node is assumed to be the button content. The widget is the popup. - - if(this.srcNodeRef){ // programatically created buttons might not define srcNodeRef - //FIXME: figure out how to filter out the widget and use all remaining nodes as button - // content, not just nodes[0] - var nodes = query("*", this.srcNodeRef); - this.inherited(arguments, [nodes[0]]); - - // save pointer to srcNode so we can grab the drop down widget after it's instantiated - this.dropDownContainer = this.srcNodeRef; - } - }, - - startup: function(){ - if(this._started){ return; } - - // the child widget from srcNodeRef is the dropdown widget. Insert it in the page DOM, - // make it invisible, and store a reference to pass to the popup code. - if(!this.dropDown && this.dropDownContainer){ - var dropDownNode = query("[widgetId]", this.dropDownContainer)[0]; - this.dropDown = registry.byNode(dropDownNode); - delete this.dropDownContainer; - } - if(this.dropDown){ - popup.hide(this.dropDown); - } - - this.inherited(arguments); - }, - - isLoaded: function(){ - // Returns whether or not we are loaded - if our dropdown has an href, - // then we want to check that. - var dropDown = this.dropDown; - return (!!dropDown && (!dropDown.href || dropDown.isLoaded)); - }, - - loadDropDown: function(/*Function*/ callback){ - // Default implementation assumes that drop down already exists, - // but hasn't loaded it's data (ex: ContentPane w/href). - // App must override if the drop down is lazy-created. - var dropDown = this.dropDown; - var handler = dropDown.on("load", lang.hitch(this, function(){ - handler.remove(); - callback(); - })); - dropDown.refresh(); // tell it to load - }, - - isFocusable: function(){ - // Overridden so that focus is handled by the _HasDropDown mixin, not by - // the _FormWidget mixin. - return this.inherited(arguments) && !this._mouseDown; - } -}); - -}); - -}, -'dijit/form/_FormValueMixin':function(){ -define("dijit/form/_FormValueMixin", [ - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/keys", // keys.ESCAPE - "dojo/sniff", // has("ie"), has("quirks") - "./_FormWidgetMixin" -], function(declare, domAttr, keys, has, _FormWidgetMixin){ - - // module: - // dijit/form/_FormValueMixin - - return declare("dijit.form._FormValueMixin", _FormWidgetMixin, { - // summary: - // Mixin for widgets corresponding to native HTML elements such as `<input>` or `<select>` - // that have user changeable values. - // description: - // Each _FormValueMixin represents a single input value, and has a (possibly hidden) `<input>` element, - // to which it serializes it's input value, so that form submission (either normal submission or via FormBind?) - // works as expected. - - // readOnly: Boolean - // Should this widget respond to user input? - // In markup, this is specified as "readOnly". - // Similar to disabled except readOnly form values are submitted. - readOnly: false, - - _setReadOnlyAttr: function(/*Boolean*/ value){ - domAttr.set(this.focusNode, 'readOnly', value); - this._set("readOnly", value); - }, - - postCreate: function(){ - this.inherited(arguments); - - if(has("ie")){ // IE won't stop the event with keypress - this.connect(this.focusNode || this.domNode, "onkeydown", this._onKeyDown); - } - // Update our reset value if it hasn't yet been set (because this.set() - // is only called when there *is* a value) - if(this._resetValue === undefined){ - this._lastValueReported = this._resetValue = this.value; - } - }, - - _setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ - // summary: - // Hook so set('value', value) works. - // description: - // Sets the value of the widget. - // If the value has changed, then fire onChange event, unless priorityChange - // is specified as null (or false?) - this._handleOnChange(newValue, priorityChange); - }, - - _handleOnChange: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ - // summary: - // Called when the value of the widget has changed. Saves the new value in this.value, - // and calls onChange() if appropriate. See _FormWidget._handleOnChange() for details. - this._set("value", newValue); - this.inherited(arguments); - }, - - undo: function(){ - // summary: - // Restore the value to the last value passed to onChange - this._setValueAttr(this._lastValueReported, false); - }, - - reset: function(){ - // summary: - // Reset the widget's value to what it was at initialization time - this._hasBeenBlurred = false; - this._setValueAttr(this._resetValue, true); - }, - - _onKeyDown: function(e){ - if(e.keyCode == keys.ESCAPE && !(e.ctrlKey || e.altKey || e.metaKey)){ - if(has("ie") < 9 || (has("ie") && has("quirks"))){ - e.preventDefault(); // default behavior needs to be stopped here since keypress is too late - var node = e.srcElement, - te = node.ownerDocument.createEventObject(); - te.keyCode = keys.ESCAPE; - te.shiftKey = e.shiftKey; - node.fireEvent('onkeypress', te); - } - } - } - }); -}); - -}, -'dijit/form/_FormWidgetMixin':function(){ -define("dijit/form/_FormWidgetMixin", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/dom-style", // domStyle.get - "dojo/_base/lang", // lang.hitch lang.isArray - "dojo/mouse", // mouse.isLeft - "dojo/sniff", // has("webkit") - "dojo/window", // winUtils.scrollIntoView - "../a11y" // a11y.hasDefaultTabStop -], function(array, declare, domAttr, domStyle, lang, mouse, has, winUtils, a11y){ - -// module: -// dijit/form/_FormWidgetMixin - -return declare("dijit.form._FormWidgetMixin", null, { - // summary: - // Mixin for widgets corresponding to native HTML elements such as `<checkbox>` or `<button>`, - // which can be children of a `<form>` node or a `dijit/form/Form` widget. - // - // description: - // Represents a single HTML element. - // All these widgets should have these attributes just like native HTML input elements. - // You can set them during widget construction or afterwards, via `dijit/_WidgetBase.set()`. - // - // They also share some common methods. - - // name: [const] String - // Name used when submitting form; same as "name" attribute or plain HTML elements - name: "", - - // alt: String - // Corresponds to the native HTML `<input>` element's attribute. - alt: "", - - // value: String - // Corresponds to the native HTML `<input>` element's attribute. - value: "", - - // type: [const] String - // Corresponds to the native HTML `<input>` element's attribute. - type: "text", - - // type: String - // Apply aria-label in markup to the widget's focusNode - "aria-label": "focusNode", - - // tabIndex: String - // Order fields are traversed when user hits the tab key - tabIndex: "0", - _setTabIndexAttr: "focusNode", // force copy even when tabIndex default value, needed since Button is <span> - - // disabled: Boolean - // Should this widget respond to user input? - // In markup, this is specified as "disabled='disabled'", or just "disabled". - disabled: false, - - // intermediateChanges: Boolean - // Fires onChange for each value change or only on demand - intermediateChanges: false, - - // scrollOnFocus: Boolean - // On focus, should this widget scroll into view? - scrollOnFocus: true, - - // Override _WidgetBase mapping id to this.domNode, needs to be on focusNode so <label> etc. - // works with screen reader - _setIdAttr: "focusNode", - - _setDisabledAttr: function(/*Boolean*/ value){ - this._set("disabled", value); - domAttr.set(this.focusNode, 'disabled', value); - if(this.valueNode){ - domAttr.set(this.valueNode, 'disabled', value); - } - this.focusNode.setAttribute("aria-disabled", value ? "true" : "false"); - - if(value){ - // reset these, because after the domNode is disabled, we can no longer receive - // mouse related events, see #4200 - this._set("hovering", false); - this._set("active", false); - - // clear tab stop(s) on this widget's focusable node(s) (ComboBox has two focusable nodes) - var attachPointNames = "tabIndex" in this.attributeMap ? this.attributeMap.tabIndex : - ("_setTabIndexAttr" in this) ? this._setTabIndexAttr : "focusNode"; - array.forEach(lang.isArray(attachPointNames) ? attachPointNames : [attachPointNames], function(attachPointName){ - var node = this[attachPointName]; - // complex code because tabIndex=-1 on a <div> doesn't work on FF - if(has("webkit") || a11y.hasDefaultTabStop(node)){ // see #11064 about webkit bug - node.setAttribute('tabIndex', "-1"); - }else{ - node.removeAttribute('tabIndex'); - } - }, this); - }else{ - if(this.tabIndex != ""){ - this.set('tabIndex', this.tabIndex); - } - } - }, - - _onFocus: function(/*String*/ by){ - // If user clicks on the widget, even if the mouse is released outside of it, - // this widget's focusNode should get focus (to mimic native browser hehavior). - // Browsers often need help to make sure the focus via mouse actually gets to the focusNode. - if(by == "mouse" && this.isFocusable()){ - // IE exhibits strange scrolling behavior when refocusing a node so only do it when !focused. - var focusConnector = this.connect(this.focusNode, "onfocus", function(){ - this.disconnect(mouseUpConnector); - this.disconnect(focusConnector); - }); - // Set a global event to handle mouseup, so it fires properly - // even if the cursor leaves this.domNode before the mouse up event. - var mouseUpConnector = this.connect(this.ownerDocumentBody, "onmouseup", function(){ - this.disconnect(mouseUpConnector); - this.disconnect(focusConnector); - // if here, then the mousedown did not focus the focusNode as the default action - if(this.focused){ - this.focus(); - } - }); - } - if(this.scrollOnFocus){ - this.defer(function(){ winUtils.scrollIntoView(this.domNode); }); // without defer, the input caret position can change on mouse click - } - this.inherited(arguments); - }, - - isFocusable: function(){ - // summary: - // Tells if this widget is focusable or not. Used internally by dijit. - // tags: - // protected - return !this.disabled && this.focusNode && (domStyle.get(this.domNode, "display") != "none"); - }, - - focus: function(){ - // summary: - // Put focus on this widget - if(!this.disabled && this.focusNode.focus){ - try{ this.focusNode.focus(); }catch(e){}/*squelch errors from hidden nodes*/ - } - }, - - compare: function(/*anything*/ val1, /*anything*/ val2){ - // summary: - // Compare 2 values (as returned by get('value') for this widget). - // tags: - // protected - if(typeof val1 == "number" && typeof val2 == "number"){ - return (isNaN(val1) && isNaN(val2)) ? 0 : val1 - val2; - }else if(val1 > val2){ - return 1; - }else if(val1 < val2){ - return -1; - }else{ - return 0; - } - }, - - onChange: function(/*===== newValue =====*/){ - // summary: - // Callback when this widget's value is changed. - // tags: - // callback - }, - - // _onChangeActive: [private] Boolean - // Indicates that changes to the value should call onChange() callback. - // This is false during widget initialization, to avoid calling onChange() - // when the initial value is set. - _onChangeActive: false, - - _handleOnChange: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ - // summary: - // Called when the value of the widget is set. Calls onChange() if appropriate - // newValue: - // the new value - // priorityChange: - // For a slider, for example, dragging the slider is priorityChange==false, - // but on mouse up, it's priorityChange==true. If intermediateChanges==false, - // onChange is only called form priorityChange=true events. - // tags: - // private - if(this._lastValueReported == undefined && (priorityChange === null || !this._onChangeActive)){ - // this block executes not for a change, but during initialization, - // and is used to store away the original value (or for ToggleButton, the original checked state) - this._resetValue = this._lastValueReported = newValue; - } - this._pendingOnChange = this._pendingOnChange - || (typeof newValue != typeof this._lastValueReported) - || (this.compare(newValue, this._lastValueReported) != 0); - if((this.intermediateChanges || priorityChange || priorityChange === undefined) && this._pendingOnChange){ - this._lastValueReported = newValue; - this._pendingOnChange = false; - if(this._onChangeActive){ - if(this._onChangeHandle){ - this._onChangeHandle.remove(); - } - // defer allows hidden value processing to run and - // also the onChange handler can safely adjust focus, etc - this._onChangeHandle = this.defer( - function(){ - this._onChangeHandle = null; - this.onChange(newValue); - }); // try to collapse multiple onChange's fired faster than can be processed - } - } - }, - - create: function(){ - // Overrides _Widget.create() - this.inherited(arguments); - this._onChangeActive = true; - }, - - destroy: function(){ - if(this._onChangeHandle){ // destroy called before last onChange has fired - this._onChangeHandle.remove(); - this.onChange(this._lastValueReported); - } - this.inherited(arguments); - } -}); - -}); - -}, -'dijit/a11yclick':function(){ -define("dijit/a11yclick", [ - "dojo/on", - "dojo/_base/array", // array.forEach - "dojo/keys", // keys.ENTER keys.SPACE - "dojo/_base/declare", // declare - "dojo/has", // has("dom-addeventlistener") - "dojo/_base/unload", // unload.addOnWindowUnload - "dojo/_base/window" // win.doc.addEventListener win.doc.attachEvent win.doc.detachEvent -], function(on, array, keys, declare, has, unload, win){ - - // module: - // dijit/a11yclick - - // Keep track of where the last keydown event was, to help avoid generating - // spurious ondijitclick events when: - // 1. focus is on a <button> or <a> - // 2. user presses then releases the ENTER key - // 3. onclick handler fires and shifts focus to another node, with an ondijitclick handler - // 4. onkeyup event fires, causing the ondijitclick handler to fire - var lastKeyDownNode = null; - if(has("dom-addeventlistener")){ - win.doc.addEventListener('keydown', function(evt){ - lastKeyDownNode = evt.target; - }, true); - }else{ - // Fallback path for IE6-8 - (function(){ - var keydownCallback = function(evt){ - lastKeyDownNode = evt.srcElement; - }; - win.doc.attachEvent('onkeydown', keydownCallback); - unload.addOnWindowUnload(function(){ - win.doc.detachEvent('onkeydown', keydownCallback); - }); - })(); - } - - function clickKey(/*Event*/ e){ - return (e.keyCode === keys.ENTER || e.keyCode === keys.SPACE) && - !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey; - } - - return function(node, listener){ - // summary: - // Custom a11yclick (a.k.a. ondijitclick) event - // which triggers on a mouse click, touch, or space/enter keyup. - - if(/input|button/i.test(node.nodeName)){ - // pass through, the browser already generates click event on SPACE/ENTER key - return on(node, "click", listener); - }else{ - // Don't fire the click event unless both the keydown and keyup occur on this node. - // Avoids problems where focus shifted to this node or away from the node on keydown, - // either causing this node to process a stray keyup event, or causing another node - // to get a stray keyup event. - - var handles = [ - on(node, "keydown", function(e){ - //console.log(this.id + ": onkeydown, e.target = ", e.target, ", lastKeyDownNode was ", lastKeyDownNode, ", equality is ", (e.target === lastKeyDownNode)); - if(clickKey(e)){ - // needed on IE for when focus changes between keydown and keyup - otherwise dropdown menus do not work - lastKeyDownNode = e.target; - - // Prevent viewport scrolling on space key in IE<9. - // (Reproducible on test_Button.html on any of the first dijit/form/Button examples) - e.preventDefault(); - } - }), - - on(node, "keyup", function(e){ - //console.log(this.id + ": onkeyup, e.target = ", e.target, ", lastKeyDownNode was ", lastKeyDownNode, ", equality is ", (e.target === lastKeyDownNode)); - if(clickKey(e) && e.target == lastKeyDownNode){ // === breaks greasemonkey - //need reset here or have problems in FF when focus returns to trigger element after closing popup/alert - lastKeyDownNode = null; - on.emit(e.target, "click", { - cancelable: true, - bubbles: true - }); - } - }), - - on(node, "click", function(e){ - // catch mouse clicks, plus the on.emit() calls from above and below - listener.call(this, e); - }) - ]; - - if(has("touch")){ - // touchstart-->touchend will automatically generate a click event, but there are problems - // on iOS after focus has been programatically shifted (#14604, #14918), so setup a failsafe - // if click doesn't fire naturally. - - var clickTimer; - handles.push( - on(node, "touchend", function(e){ - var target = e.target; - clickTimer = setTimeout(function(){ - clickTimer = null; - on.emit(target, "click", { - cancelable: true, - bubbles: true - }); - }, 600); - }), - on(node, "click", function(e){ - // If browser generates a click naturally, clear the timer to fire a synthetic click event - if(clickTimer){ - clearTimeout(clickTimer); - } - }) - // TODO: if the touchstart and touchend were <100ms apart, and then there's another touchstart - // event <300ms after the touchend event, then clear the synthetic click timer, because user - // is doing a zoom. Alternately monitor screen.deviceXDPI (or something similar) to see if - // zoom level has changed. - ); - } - - return { - remove: function(){ - array.forEach(handles, function(h){ h.remove(); }); - if(clickTimer){ - clearTimeout(clickTimer); - clickTimer = null; - } - } - }; - } - }; - - return ret; -}); - -}, -'url:dijit/templates/ProgressBar.html':"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\"> </span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><img data-dojo-attach-point=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n", -'dijit/Destroyable':function(){ -define("dijit/Destroyable", [ - "dojo/_base/array", // array.forEach array.map - "dojo/aspect", - "dojo/_base/declare" -], function(array, aspect, declare){ - -// module: -// dijit/Destroyable - -return declare("dijit.Destroyable", null, { - // summary: - // Mixin to track handles and release them when instance is destroyed. - // description: - // Call this.own(...) on list of handles (returned from dojo/aspect, dojo/on, - // dojo/Stateful::watch, or any class (including widgets) with a destroyRecursive() or destroy() method. - // Then call destroy() later to destroy this instance and release the resources. - - destroy: function(/*Boolean*/ preserveDom){ - // summary: - // Destroy this class, releasing any resources registered via own(). - this._destroyed = true; - }, - - own: function(){ - // summary: - // Track specified handles and remove/destroy them when this instance is destroyed, unless they were - // already removed/destroyed manually. - // tags: - // protected - // returns: - // The array of specified handles, so you can do for example: - // | var handle = this.own(on(...))[0]; - - array.forEach(arguments, function(handle){ - var destroyMethodName = - "destroyRecursive" in handle ? "destroyRecursive" : // remove "destroyRecursive" for 2.0 - "destroy" in handle ? "destroy" : - "remove"; - - // When this.destroy() is called, destroy handle. Since I'm using aspect.before(), - // the handle will be destroyed before a subclass's destroy() method starts running, before it calls - // this.inherited() or even if it doesn't call this.inherited() at all. If that's an issue, make an - // onDestroy() method and connect to that instead. - var odh = aspect.before(this, "destroy", function(preserveDom){ - handle[destroyMethodName](preserveDom); - }); - - // If handle is destroyed manually before this.destroy() is called, remove the listener set directly above. - var hdh = aspect.after(handle, destroyMethodName, function(){ - odh.remove(); - hdh.remove(); - }, true); - }, this); - - return arguments; // handle - } -}); - -}); - -}, -'dijit/layout/_ContentPaneResizeMixin':function(){ -define("dijit/layout/_ContentPaneResizeMixin", [ - "dojo/_base/array", // array.filter array.forEach - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.contains domClass.toggle - "dojo/dom-geometry",// domGeometry.contentBox domGeometry.marginBox - "dojo/dom-style", - "dojo/_base/lang", // lang.mixin - "dojo/query", // query - "dojo/sniff", // has("ie") - "../registry", // registry.byId - "../Viewport", - "./utils" // marginBox2contextBox -], function(array, declare, domClass, domGeometry, domStyle, lang, query, has, - registry, Viewport, layoutUtils){ - -// module: -// dijit/layout/_ContentPaneResizeMixin - - -return declare("dijit.layout._ContentPaneResizeMixin", null, { - // summary: - // Resize() functionality of ContentPane. If there's a single layout widget - // child then it will call resize() with the same dimensions as the ContentPane. - // Otherwise just calls resize on each child. - // - // Also implements basic startup() functionality, where starting the parent - // will start the children - - // doLayout: Boolean - // - false - don't adjust size of children - // - true - if there is a single visible child widget, set it's size to however big the ContentPane is - doLayout: true, - - // isLayoutContainer: [protected] Boolean - // Indicates that this widget will call resize() on it's child widgets - // when they become visible. - isLayoutContainer: true, - - startup: function(){ - // summary: - // See `dijit/layout/_LayoutWidget.startup()` for description. - // Although ContentPane doesn't extend _LayoutWidget, it does implement - // the same API. - - if(this._started){ return; } - - var parent = this.getParent(); - this._childOfLayoutWidget = parent && parent.isLayoutContainer; - - // I need to call resize() on my child/children (when I become visible), unless - // I'm the child of a layout widget in which case my parent will call resize() on me and I'll do it then. - this._needLayout = !this._childOfLayoutWidget; - - this.inherited(arguments); - - if(this._isShown()){ - this._onShow(); - } - - if(!this._childOfLayoutWidget){ - // Since my parent isn't a layout container, and my style *may be* width=height=100% - // or something similar (either set directly or via a CSS class), - // monitor when viewport size changes so that I can re-layout. - // This is more for subclasses of ContentPane than ContentPane itself, although it - // could be useful for a ContentPane if it has a single child widget inheriting ContentPane's size. - this.own(Viewport.on("resize", lang.hitch(this, "resize"))); - } - }, - - _checkIfSingleChild: function(){ - // summary: - // Test if we have exactly one visible widget as a child, - // and if so assume that we are a container for that widget, - // and should propagate startup() and resize() calls to it. - // Skips over things like data stores since they aren't visible. - - var candidateWidgets = [], - otherVisibleNodes = false; - - query("> *", this.containerNode).some(function(node){ - var widget = registry.byNode(node); - if(widget && widget.resize){ - candidateWidgets.push(widget); - }else if(node.offsetHeight){ - otherVisibleNodes = true; - } - }); - - this._singleChild = candidateWidgets.length == 1 && !otherVisibleNodes ? - candidateWidgets[0] : null; - - // So we can set overflow: hidden to avoid a safari bug w/scrollbars showing up (#9449) - domClass.toggle(this.containerNode, this.baseClass + "SingleChild", !!this._singleChild); - }, - - resize: function(changeSize, resultSize){ - // summary: - // See `dijit/layout/_LayoutWidget.resize()` for description. - // Although ContentPane doesn't extend _LayoutWidget, it does implement - // the same API. - - this._resizeCalled = true; - - this._scheduleLayout(changeSize, resultSize); - }, - - _scheduleLayout: function(changeSize, resultSize){ - // summary: - // Resize myself, and call resize() on each of my child layout widgets, either now - // (if I'm currently visible) or when I become visible - if(this._isShown()){ - this._layout(changeSize, resultSize); - }else{ - this._needLayout = true; - this._changeSize = changeSize; - this._resultSize = resultSize; - } - }, - - _layout: function(changeSize, resultSize){ - // summary: - // Resize myself according to optional changeSize/resultSize parameters, like a layout widget. - // Also, since I am an isLayoutContainer widget, each of my children expects me to - // call resize() or layout() on it. - // - // Should be called on initialization and also whenever we get new content - // (from an href, or from set('content', ...))... but deferred until - // the ContentPane is visible - - delete this._needLayout; - - // For the TabContainer --> BorderContainer --> ContentPane case, _onShow() is - // never called directly, so resize() is our trigger to do the initial href download (see [20099]). - // However, don't load href for closed TitlePanes. - if(!this._wasShown && this.open !== false){ - this._onShow(); - } - - // Set margin box size, unless it wasn't specified, in which case use current size. - if(changeSize){ - domGeometry.setMarginBox(this.domNode, changeSize); - } - - // Compute content box size of containerNode in case we [later] need to size our single child. - var cn = this.containerNode; - if(cn === this.domNode){ - // If changeSize or resultSize was passed to this method and this.containerNode == - // this.domNode then we can compute the content-box size without querying the node, - // which is more reliable (similar to LayoutWidget.resize) (see for example #9449). - var mb = resultSize || {}; - lang.mixin(mb, changeSize || {}); // changeSize overrides resultSize - if(!("h" in mb) || !("w" in mb)){ - mb = lang.mixin(domGeometry.getMarginBox(cn), mb); // just use domGeometry.setMarginBox() to fill in missing values - } - this._contentBox = layoutUtils.marginBox2contentBox(cn, mb); - }else{ - this._contentBox = domGeometry.getContentBox(cn); - } - - this._layoutChildren(); - }, - - _layoutChildren: function(){ - // Call _checkIfSingleChild() again in case app has manually mucked w/the content - // of the ContentPane (rather than changing it through the set("content", ...) API. - if(this.doLayout){ - this._checkIfSingleChild(); - } - - if(this._singleChild && this._singleChild.resize){ - var cb = this._contentBox || domGeometry.getContentBox(this.containerNode); - - // note: if widget has padding this._contentBox will have l and t set, - // but don't pass them to resize() or it will doubly-offset the child - this._singleChild.resize({w: cb.w, h: cb.h}); - }else{ - // All my child widgets are independently sized (rather than matching my size), - // but I still need to call resize() on each child to make it layout. - array.forEach(this.getChildren(), function(widget){ - if(widget.resize){ - widget.resize(); - } - }); - } - }, - - _isShown: function(){ - // summary: - // Returns true if the content is currently shown. - // description: - // If I am a child of a layout widget then it actually returns true if I've ever been visible, - // not whether I'm currently visible, since that's much faster than tracing up the DOM/widget - // tree every call, and at least solves the performance problem on page load by deferring loading - // hidden ContentPanes until they are first shown - - if(this._childOfLayoutWidget){ - // If we are TitlePane, etc - we return that only *IF* we've been resized - if(this._resizeCalled && "open" in this){ - return this.open; - } - return this._resizeCalled; - }else if("open" in this){ - return this.open; // for TitlePane, etc. - }else{ - var node = this.domNode, parent = this.domNode.parentNode; - return (node.style.display != 'none') && (node.style.visibility != 'hidden') && !domClass.contains(node, "dijitHidden") && - parent && parent.style && (parent.style.display != 'none'); - } - }, - - _onShow: function(){ - // summary: - // Called when the ContentPane is made visible - // description: - // For a plain ContentPane, this is called on initialization, from startup(). - // If the ContentPane is a hidden pane of a TabContainer etc., then it's - // called whenever the pane is made visible. - // - // Does layout/resize of child widget(s) - - // Need to keep track of whether ContentPane has been shown (which is different than - // whether or not it's currently visible). - this._wasShown = true; - - if(this._needLayout){ - // If a layout has been scheduled for when we become visible, do it now - this._layout(this._changeSize, this._resultSize); - } - - this.inherited(arguments); - } -}); - -}); - -}, -'dijit/WidgetSet':function(){ -define("dijit/WidgetSet", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.global - "./registry" // to add functions to dijit.registry -], function(array, declare, kernel, registry){ - - // module: - // dijit/WidgetSet - - var WidgetSet = declare("dijit.WidgetSet", null, { - // summary: - // A set of widgets indexed by id. - // Deprecated, will be removed in 2.0. - // - // example: - // Create a small list of widgets: - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | var ws = new WidgetSet(); - // | ws.add(registry.byId("one")); - // | ws.add(registry.byId("two")); - // | // destroy both: - // | ws.forEach(function(w){ w.destroy(); }); - // | }); - - constructor: function(){ - this._hash = {}; - this.length = 0; - }, - - add: function(/*dijit/_WidgetBase*/ widget){ - // summary: - // Add a widget to this list. If a duplicate ID is detected, a error is thrown. - // - // widget: dijit/_WidgetBase - // Any dijit/_WidgetBase subclass. - if(this._hash[widget.id]){ - throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered"); - } - this._hash[widget.id] = widget; - this.length++; - }, - - remove: function(/*String*/ id){ - // summary: - // Remove a widget from this WidgetSet. Does not destroy the widget; simply - // removes the reference. - if(this._hash[id]){ - delete this._hash[id]; - this.length--; - } - }, - - forEach: function(/*Function*/ func, /* Object? */thisObj){ - // summary: - // Call specified function for each widget in this set. - // - // func: - // A callback function to run for each item. Is passed the widget, the index - // in the iteration, and the full hash, similar to `array.forEach`. - // - // thisObj: - // An optional scope parameter - // - // example: - // Using the default `dijit.registry` instance: - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | registry.forEach(function(widget){ - // | console.log(widget.declaredClass); - // | }); - // | }); - // - // returns: - // Returns self, in order to allow for further chaining. - - thisObj = thisObj || kernel.global; - var i = 0, id; - for(id in this._hash){ - func.call(thisObj, this._hash[id], i++, this._hash); - } - return this; // dijit/WidgetSet - }, - - filter: function(/*Function*/ filter, /* Object? */thisObj){ - // summary: - // Filter down this WidgetSet to a smaller new WidgetSet - // Works the same as `array.filter` and `NodeList.filter` - // - // filter: - // Callback function to test truthiness. Is passed the widget - // reference and the pseudo-index in the object. - // - // thisObj: Object? - // Option scope to use for the filter function. - // - // example: - // Arbitrary: select the odd widgets in this list - // | - // | - // | - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | registry.filter(function(w, i){ - // | return i % 2 == 0; - // | }).forEach(function(w){ /* odd ones */ }); - // | }); - - thisObj = thisObj || kernel.global; - var res = new WidgetSet(), i = 0, id; - for(id in this._hash){ - var w = this._hash[id]; - if(filter.call(thisObj, w, i++, this._hash)){ - res.add(w); - } - } - return res; // dijit/WidgetSet - }, - - byId: function(/*String*/ id){ - // summary: - // Find a widget in this list by it's id. - // example: - // Test if an id is in a particular WidgetSet - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | var ws = new WidgetSet(); - // | ws.add(registry.byId("bar")); - // | var t = ws.byId("bar") // returns a widget - // | var x = ws.byId("foo"); // returns undefined - // | }); - - return this._hash[id]; // dijit/_WidgetBase - }, - - byClass: function(/*String*/ cls){ - // summary: - // Reduce this widgetset to a new WidgetSet of a particular `declaredClass` - // - // cls: String - // The Class to scan for. Full dot-notated string. - // - // example: - // Find all `dijit.TitlePane`s in a page: - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | registry.byClass("dijit.TitlePane").forEach(function(tp){ tp.close(); }); - // | }); - - var res = new WidgetSet(), id, widget; - for(id in this._hash){ - widget = this._hash[id]; - if(widget.declaredClass == cls){ - res.add(widget); - } - } - return res; // dijit/WidgetSet - }, - - toArray: function(){ - // summary: - // Convert this WidgetSet into a true Array - // - // example: - // Work with the widget .domNodes in a real Array - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | array.map(registry.toArray(), function(w){ return w.domNode; }); - // | }); - - - var ar = []; - for(var id in this._hash){ - ar.push(this._hash[id]); - } - return ar; // dijit/_WidgetBase[] - }, - - map: function(/* Function */func, /* Object? */thisObj){ - // summary: - // Create a new Array from this WidgetSet, following the same rules as `array.map` - // example: - // | require(["dijit/WidgetSet", "dijit/registry"], - // | function(WidgetSet, registry){ - // | var nodes = registry.map(function(w){ return w.domNode; }); - // | }); - // - // returns: - // A new array of the returned values. - return array.map(this.toArray(), func, thisObj); // Array - }, - - every: function(func, thisObj){ - // summary: - // A synthetic clone of `array.every` acting explicitly on this WidgetSet - // - // func: Function - // A callback function run for every widget in this list. Exits loop - // when the first false return is encountered. - // - // thisObj: Object? - // Optional scope parameter to use for the callback - - thisObj = thisObj || kernel.global; - var x = 0, i; - for(i in this._hash){ - if(!func.call(thisObj, this._hash[i], x++, this._hash)){ - return false; // Boolean - } - } - return true; // Boolean - }, - - some: function(func, thisObj){ - // summary: - // A synthetic clone of `array.some` acting explicitly on this WidgetSet - // - // func: Function - // A callback function run for every widget in this list. Exits loop - // when the first true return is encountered. - // - // thisObj: Object? - // Optional scope parameter to use for the callback - - thisObj = thisObj || kernel.global; - var x = 0, i; - for(i in this._hash){ - if(func.call(thisObj, this._hash[i], x++, this._hash)){ - return true; // Boolean - } - } - return false; // Boolean - } - - }); - - // Add in 1.x compatibility methods to dijit/registry. - // These functions won't show up in the API doc but since they are deprecated anyway, - // that's probably for the best. - array.forEach(["forEach", "filter", "byClass", "map", "every", "some"], function(func){ - registry[func] = WidgetSet.prototype[func]; - }); - - - return WidgetSet; -}); - -}, -'dojo/dnd/Moveable':function(){ -define("dojo/dnd/Moveable", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", - "../dom", "../dom-class", "../Evented", "../on", "../topic", "../touch", "./common", "./Mover", "../_base/window" -], function(array, declare, event, lang, dom, domClass, Evented, on, topic, touch, dnd, Mover, win){ - -// module: -// dojo/dnd/Moveable - - -var Moveable = declare("dojo.dnd.Moveable", [Evented], { - // summary: - // an object, which makes a node movable - - // object attributes (for markup) - handle: "", - delay: 0, - skip: false, - - constructor: function(node, params){ - // node: Node - // a node (or node's id) to be moved - // params: Moveable.__MoveableArgs? - // optional parameters - this.node = dom.byId(node); - if(!params){ params = {}; } - this.handle = params.handle ? dom.byId(params.handle) : null; - if(!this.handle){ this.handle = this.node; } - this.delay = params.delay > 0 ? params.delay : 0; - this.skip = params.skip; - this.mover = params.mover ? params.mover : Mover; - this.events = [ - on(this.handle, touch.press, lang.hitch(this, "onMouseDown")), - // cancel text selection and text dragging - on(this.handle, "dragstart", lang.hitch(this, "onSelectStart")), - on(this.handle, "selectstart", lang.hitch(this, "onSelectStart")) - ]; - }, - - // markup methods - markupFactory: function(params, node, Ctor){ - return new Ctor(node, params); - }, - - // methods - destroy: function(){ - // summary: - // stops watching for possible move, deletes all references, so the object can be garbage-collected - array.forEach(this.events, function(handle){ handle.remove(); }); - this.events = this.node = this.handle = null; - }, - - // mouse event processors - onMouseDown: function(e){ - // summary: - // event processor for onmousedown/ontouchstart, creates a Mover for the node - // e: Event - // mouse/touch event - if(this.skip && dnd.isFormElement(e)){ return; } - if(this.delay){ - this.events.push( - on(this.handle, touch.move, lang.hitch(this, "onMouseMove")), - on(this.handle, touch.release, lang.hitch(this, "onMouseUp")) - ); - this._lastX = e.pageX; - this._lastY = e.pageY; - }else{ - this.onDragDetected(e); - } - event.stop(e); - }, - onMouseMove: function(e){ - // summary: - // event processor for onmousemove/ontouchmove, used only for delayed drags - // e: Event - // mouse/touch event - if(Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay){ - this.onMouseUp(e); - this.onDragDetected(e); - } - event.stop(e); - }, - onMouseUp: function(e){ - // summary: - // event processor for onmouseup, used only for delayed drags - // e: Event - // mouse event - for(var i = 0; i < 2; ++i){ - this.events.pop().remove(); - } - event.stop(e); - }, - onSelectStart: function(e){ - // summary: - // event processor for onselectevent and ondragevent - // e: Event - // mouse event - if(!this.skip || !dnd.isFormElement(e)){ - event.stop(e); - } - }, - - // local events - onDragDetected: function(/*Event*/ e){ - // summary: - // called when the drag is detected; - // responsible for creation of the mover - new this.mover(this.node, e, this); - }, - onMoveStart: function(/*Mover*/ mover){ - // summary: - // called before every move operation - topic.publish("/dnd/move/start", mover); - domClass.add(win.body(), "dojoMove"); - domClass.add(this.node, "dojoMoveItem"); - }, - onMoveStop: function(/*Mover*/ mover){ - // summary: - // called after every move operation - topic.publish("/dnd/move/stop", mover); - domClass.remove(win.body(), "dojoMove"); - domClass.remove(this.node, "dojoMoveItem"); - }, - onFirstMove: function(/*===== mover, e =====*/){ - // summary: - // called during the very first move notification; - // can be used to initialize coordinates, can be overwritten. - // mover: Mover - // e: Event - - // default implementation does nothing - }, - onMove: function(mover, leftTop /*=====, e =====*/){ - // summary: - // called during every move notification; - // should actually move the node; can be overwritten. - // mover: Mover - // leftTop: Object - // e: Event - this.onMoving(mover, leftTop); - var s = mover.node.style; - s.left = leftTop.l + "px"; - s.top = leftTop.t + "px"; - this.onMoved(mover, leftTop); - }, - onMoving: function(/*===== mover, leftTop =====*/){ - // summary: - // called before every incremental move; can be overwritten. - // mover: Mover - // leftTop: Object - - // default implementation does nothing - }, - onMoved: function(/*===== mover, leftTop =====*/){ - // summary: - // called after every incremental move; can be overwritten. - // mover: Mover - // leftTop: Object - - // default implementation does nothing - } -}); - -/*===== -Moveable.__MoveableArgs = declare([], { - // handle: Node||String - // A node (or node's id), which is used as a mouse handle. - // If omitted, the node itself is used as a handle. - handle: null, - - // delay: Number - // delay move by this number of pixels - delay: 0, - - // skip: Boolean - // skip move of form elements - skip: false, - - // mover: Object - // a constructor of custom Mover - mover: dnd.Mover -}); -=====*/ - -return Moveable; -}); - -}, -'dijit/TooltipDialog':function(){ -require({cache:{ -'url:dijit/templates/TooltipDialog.html':"<div role=\"presentation\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" data-dojo-attach-point=\"containerNode\" role=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n"}}); -define("dijit/TooltipDialog", [ - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.replace - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "dojo/_base/lang", // lang.hitch - "./focus", - "./layout/ContentPane", - "./_DialogMixin", - "./form/_FormMixin", - "./_TemplatedMixin", - "dojo/text!./templates/TooltipDialog.html", - "./main" // exports methods to dijit global -], function(declare, domClass, event, keys, lang, - focus, ContentPane, _DialogMixin, _FormMixin, _TemplatedMixin, template, dijit){ - - // module: - // dijit/TooltipDialog - - - return declare("dijit.TooltipDialog", - [ContentPane, _TemplatedMixin, _FormMixin, _DialogMixin], { - // summary: - // Pops up a dialog that appears like a Tooltip - - // title: String - // Description of tooltip dialog (required for a11y) - title: "", - - // doLayout: [protected] Boolean - // Don't change this parameter from the default value. - // This ContentPane parameter doesn't make sense for TooltipDialog, since TooltipDialog - // is never a child of a layout container, nor can you specify the size of - // TooltipDialog in order to control the size of an inner widget. - doLayout: false, - - // autofocus: Boolean - // A Toggle to modify the default focus behavior of a Dialog, which - // is to focus on the first dialog element after opening the dialog. - // False will disable autofocusing. Default: true. - autofocus: true, - - // baseClass: [protected] String - // The root className to use for the various states of this widget - baseClass: "dijitTooltipDialog", - - // _firstFocusItem: [private readonly] DomNode - // The pointer to the first focusable node in the dialog. - // Set by `dijit/_DialogMixin._getFocusItems()`. - _firstFocusItem: null, - - // _lastFocusItem: [private readonly] DomNode - // The pointer to which node has focus prior to our dialog. - // Set by `dijit/_DialogMixin._getFocusItems()`. - _lastFocusItem: null, - - templateString: template, - - _setTitleAttr: function(/*String*/ title){ - this.containerNode.title = title; - this._set("title", title); - }, - - postCreate: function(){ - this.inherited(arguments); - this.connect(this.containerNode, "onkeypress", "_onKey"); - }, - - orient: function(/*DomNode*/ node, /*String*/ aroundCorner, /*String*/ tooltipCorner){ - // summary: - // Configure widget to be displayed in given position relative to the button. - // This is called from the dijit.popup code, and should not be called - // directly. - // tags: - // protected - - // Note: intentionally not using dijitTooltip class since that sets position:absolute, which - // confuses dijit/popup trying to get the size of the tooltip. - var newC = { - "MR-ML": "dijitTooltipRight", - "ML-MR": "dijitTooltipLeft", - "TM-BM": "dijitTooltipAbove", - "BM-TM": "dijitTooltipBelow", - "BL-TL": "dijitTooltipBelow dijitTooltipABLeft", - "TL-BL": "dijitTooltipAbove dijitTooltipABLeft", - "BR-TR": "dijitTooltipBelow dijitTooltipABRight", - "TR-BR": "dijitTooltipAbove dijitTooltipABRight", - "BR-BL": "dijitTooltipRight", - "BL-BR": "dijitTooltipLeft" - }[aroundCorner + "-" + tooltipCorner]; - - domClass.replace(this.domNode, newC, this._currentOrientClass || ""); - this._currentOrientClass = newC; - - // Tooltip.orient() has code to reposition connector for when Tooltip is before/after anchor. - // Not putting here to avoid code bloat, and since TooltipDialogs are generally above/below. - // Should combine code from Tooltip and TooltipDialog. - }, - - focus: function(){ - // summary: - // Focus on first field - this._getFocusItems(this.containerNode); - focus.focus(this._firstFocusItem); - }, - - onOpen: function(/*Object*/ pos){ - // summary: - // Called when dialog is displayed. - // This is called from the dijit.popup code, and should not be called directly. - // tags: - // protected - - this.orient(this.domNode,pos.aroundCorner, pos.corner); - - // Position the tooltip connector for middle alignment. - // This could not have been done in orient() since the tooltip wasn't positioned at that time. - var aroundNodeCoords = pos.aroundNodePos; - if(pos.corner.charAt(0) == 'M' && pos.aroundCorner.charAt(0) == 'M'){ - this.connectorNode.style.top = aroundNodeCoords.y + ((aroundNodeCoords.h - this.connectorNode.offsetHeight) >> 1) - pos.y + "px"; - this.connectorNode.style.left = ""; - }else if(pos.corner.charAt(1) == 'M' && pos.aroundCorner.charAt(1) == 'M'){ - this.connectorNode.style.left = aroundNodeCoords.x + ((aroundNodeCoords.w - this.connectorNode.offsetWidth) >> 1) - pos.x + "px"; - } - - this._onShow(); // lazy load trigger (TODO: shouldn't we load before positioning?) - }, - - onClose: function(){ - // summary: - // Called when dialog is hidden. - // This is called from the dijit.popup code, and should not be called directly. - // tags: - // protected - this.onHide(); - }, - - _onKey: function(/*Event*/ evt){ - // summary: - // Handler for keyboard events - // description: - // Keep keyboard focus in dialog; close dialog on escape key - // tags: - // private - - var node = evt.target; - if(evt.charOrCode === keys.TAB){ - this._getFocusItems(this.containerNode); - } - var singleFocusItem = (this._firstFocusItem == this._lastFocusItem); - if(evt.charOrCode == keys.ESCAPE){ - // Use defer to avoid crash on IE, see #10396. - this.defer("onCancel"); - event.stop(evt); - }else if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === keys.TAB){ - if(!singleFocusItem){ - focus.focus(this._lastFocusItem); // send focus to last item in dialog - } - event.stop(evt); - }else if(node == this._lastFocusItem && evt.charOrCode === keys.TAB && !evt.shiftKey){ - if(!singleFocusItem){ - focus.focus(this._firstFocusItem); // send focus to first item in dialog - } - event.stop(evt); - }else if(evt.charOrCode === keys.TAB){ - // we want the browser's default tab handling to move focus - // but we don't want the tab to propagate upwards - evt.stopPropagation(); - } - } - }); -}); - -}, -'dojo/store/util/SimpleQueryEngine':function(){ -define("dojo/store/util/SimpleQueryEngine", ["../../_base/array" /*=====, "../api/Store" =====*/], function(arrayUtil /*=====, Store =====*/){ - -// module: -// dojo/store/util/SimpleQueryEngine - -return function(query, options){ - // summary: - // Simple query engine that matches using filter functions, named filter - // functions or objects by name-value on a query object hash - // - // description: - // The SimpleQueryEngine provides a way of getting a QueryResults through - // the use of a simple object hash as a filter. The hash will be used to - // match properties on data objects with the corresponding value given. In - // other words, only exact matches will be returned. - // - // This function can be used as a template for more complex query engines; - // for example, an engine can be created that accepts an object hash that - // contains filtering functions, or a string that gets evaluated, etc. - // - // When creating a new dojo.store, simply set the store's queryEngine - // field as a reference to this function. - // - // query: Object - // An object hash with fields that may match fields of items in the store. - // Values in the hash will be compared by normal == operator, but regular expressions - // or any object that provides a test() method are also supported and can be - // used to match strings by more complex expressions - // (and then the regex's or object's test() method will be used to match values). - // - // options: dojo/store/api/Store.QueryOptions? - // An object that contains optional information such as sort, start, and count. - // - // returns: Function - // A function that caches the passed query under the field "matches". See any - // of the "query" methods on dojo.stores. - // - // example: - // Define a store with a reference to this engine, and set up a query method. - // - // | var myStore = function(options){ - // | // ...more properties here - // | this.queryEngine = SimpleQueryEngine; - // | // define our query method - // | this.query = function(query, options){ - // | return QueryResults(this.queryEngine(query, options)(this.data)); - // | }; - // | }; - - // create our matching query function - switch(typeof query){ - default: - throw new Error("Can not query with a " + typeof query); - case "object": case "undefined": - var queryObject = query; - query = function(object){ - for(var key in queryObject){ - var required = queryObject[key]; - if(required && required.test){ - // an object can provide a test method, which makes it work with regex - if(!required.test(object[key], object)){ - return false; - } - }else if(required != object[key]){ - return false; - } - } - return true; - }; - break; - case "string": - // named query - if(!this[query]){ - throw new Error("No filter function " + query + " was found in store"); - } - query = this[query]; - // fall through - case "function": - // fall through - } - function execute(array){ - // execute the whole query, first we filter - var results = arrayUtil.filter(array, query); - // next we sort - var sortSet = options && options.sort; - if(sortSet){ - results.sort(typeof sortSet == "function" ? sortSet : function(a, b){ - for(var sort, i=0; sort = sortSet[i]; i++){ - var aValue = a[sort.attribute]; - var bValue = b[sort.attribute]; - if (aValue != bValue){ - return !!sort.descending == (aValue == null || aValue > bValue) ? -1 : 1; - } - } - return 0; - }); - } - // now we paginate - if(options && (options.start || options.count)){ - var total = results.length; - results = results.slice(options.start || 0, (options.start || 0) + (options.count || Infinity)); - results.total = total; - } - return results; - } - execute.matches = query; - return execute; -}; - -}); - -}, -'dijit/typematic':function(){ -define("dijit/typematic", [ - "dojo/_base/array", // array.forEach - "dojo/_base/connect", // connect.connect - "dojo/_base/event", // event.stop - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.mixin, lang.hitch - "dojo/on", - "dojo/sniff", // has("ie") - "./main" // setting dijit.typematic global -], function(array, connect, event, kernel, lang, on, has, dijit){ - -// module: -// dijit/typematic - -var typematic = (dijit.typematic = { - // summary: - // These functions are used to repetitively call a user specified callback - // method when a specific key or mouse click over a specific DOM node is - // held down for a specific amount of time. - // Only 1 such event is allowed to occur on the browser page at 1 time. - - _fireEventAndReload: function(){ - this._timer = null; - this._callback(++this._count, this._node, this._evt); - - // Schedule next event, timer is at most minDelay (default 10ms) to avoid - // browser overload (particularly avoiding starving DOH robot so it never gets to send a mouseup) - this._currentTimeout = Math.max( - this._currentTimeout < 0 ? this._initialDelay : - (this._subsequentDelay > 1 ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay)), - this._minDelay); - this._timer = setTimeout(lang.hitch(this, "_fireEventAndReload"), this._currentTimeout); - }, - - trigger: function(/*Event*/ evt, /*Object*/ _this, /*DOMNode*/ node, /*Function*/ callback, /*Object*/ obj, /*Number?*/ subsequentDelay, /*Number?*/ initialDelay, /*Number?*/ minDelay){ - // summary: - // Start a timed, repeating callback sequence. - // If already started, the function call is ignored. - // This method is not normally called by the user but can be - // when the normal listener code is insufficient. - // evt: - // key or mouse event object to pass to the user callback - // _this: - // pointer to the user's widget space. - // node: - // the DOM node object to pass the the callback function - // callback: - // function to call until the sequence is stopped called with 3 parameters: - // count: - // integer representing number of repeated calls (0..n) with -1 indicating the iteration has stopped - // node: - // the DOM node object passed in - // evt: - // key or mouse event object - // obj: - // user space object used to uniquely identify each typematic sequence - // subsequentDelay: - // if > 1, the number of milliseconds until the 3->n events occur - // or else the fractional time multiplier for the next event's delay, default=0.9 - // initialDelay: - // the number of milliseconds until the 2nd event occurs, default=500ms - // minDelay: - // the maximum delay in milliseconds for event to fire, default=10ms - if(obj != this._obj){ - this.stop(); - this._initialDelay = initialDelay || 500; - this._subsequentDelay = subsequentDelay || 0.90; - this._minDelay = minDelay || 10; - this._obj = obj; - this._node = node; - this._currentTimeout = -1; - this._count = -1; - this._callback = lang.hitch(_this, callback); - this._evt = { faux: true }; - for(var attr in evt){ - if(attr != "layerX" && attr != "layerY"){ // prevent WebKit warnings - var v = evt[attr]; - if(typeof v != "function" && typeof v != "undefined"){ this._evt[attr] = v } - } - } - this._fireEventAndReload(); - } - }, - - stop: function(){ - // summary: - // Stop an ongoing timed, repeating callback sequence. - if(this._timer){ - clearTimeout(this._timer); - this._timer = null; - } - if(this._obj){ - this._callback(-1, this._node, this._evt); - this._obj = null; - } - }, - - addKeyListener: function(/*DOMNode*/ node, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ - // summary: - // Start listening for a specific typematic key. - // See also the trigger method for other parameters. - // keyObject: - // an object defining the key to listen for: - // - // - charOrCode: the printable character (string) or keyCode (number) to listen for. - // - keyCode: (deprecated - use charOrCode) the keyCode (number) to listen for (implies charCode = 0). - // - charCode: (deprecated - use charOrCode) the charCode (number) to listen for. - // - ctrlKey: desired ctrl key state to initiate the callback sequence: - // - pressed (true) - // - released (false) - // - either (unspecified) - // - altKey: same as ctrlKey but for the alt key - // - shiftKey: same as ctrlKey but for the shift key - // returns: - // a connection handle - - if(keyObject.keyCode){ - keyObject.charOrCode = keyObject.keyCode; - kernel.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0"); - }else if(keyObject.charCode){ - keyObject.charOrCode = String.fromCharCode(keyObject.charCode); - kernel.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0"); - } - var handles = [ - on(node, connect._keypress, lang.hitch(this, function(evt){ - if(evt.charOrCode == keyObject.charOrCode && - (keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) && - (keyObject.altKey === undefined || keyObject.altKey == evt.altKey) && - (keyObject.metaKey === undefined || keyObject.metaKey == (evt.metaKey || false)) && // IE doesn't even set metaKey - (keyObject.shiftKey === undefined || keyObject.shiftKey == evt.shiftKey)){ - event.stop(evt); - typematic.trigger(evt, _this, node, callback, keyObject, subsequentDelay, initialDelay, minDelay); - }else if(typematic._obj == keyObject){ - typematic.stop(); - } - })), - on(node, "keyup", lang.hitch(this, function(){ - if(typematic._obj == keyObject){ - typematic.stop(); - } - })) - ]; - return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; - }, - - addMouseListener: function(/*DOMNode*/ node, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ - // summary: - // Start listening for a typematic mouse click. - // See the trigger method for other parameters. - // returns: - // a connection handle - var handles = [ - on(node, "mousedown", lang.hitch(this, function(evt){ - evt.preventDefault(); - typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); - })), - on(node, "mouseup", lang.hitch(this, function(evt){ - if(this._obj){ - evt.preventDefault(); - } - typematic.stop(); - })), - on(node, "mouseout", lang.hitch(this, function(evt){ - if(this._obj){ - evt.preventDefault(); - } - typematic.stop(); - })), - on(node, "dblclick", lang.hitch(this, function(evt){ - evt.preventDefault(); - if(has("ie") < 9){ - typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); - setTimeout(lang.hitch(this, typematic.stop), 50); - } - })) - ]; - return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; - }, - - addListener: function(/*Node*/ mouseNode, /*Node*/ keyNode, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ - // summary: - // Start listening for a specific typematic key and mouseclick. - // This is a thin wrapper to addKeyListener and addMouseListener. - // See the addMouseListener and addKeyListener methods for other parameters. - // mouseNode: - // the DOM node object to listen on for mouse events. - // keyNode: - // the DOM node object to listen on for key events. - // returns: - // a connection handle - var handles = [ - this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay, minDelay), - this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay, minDelay) - ]; - return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; - } -}); - -return typematic; - -}); - -}, -'dijit/MenuItem':function(){ -require({cache:{ -'url:dijit/templates/MenuItem.html':"<tr class=\"dijitReset dijitMenuItem\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuExpand\"/>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</div>\n\t</td>\n</tr>\n"}}); -define("dijit/MenuItem", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "dojo/dom-attr", // domAttr.set - "dojo/dom-class", // domClass.toggle - "dojo/_base/kernel", // kernel.deprecated - "dojo/sniff", // has("ie") - "./_Widget", - "./_TemplatedMixin", - "./_Contained", - "./_CssStateMixin", - "dojo/text!./templates/MenuItem.html" -], function(declare, dom, domAttr, domClass, kernel, has, - _Widget, _TemplatedMixin, _Contained, _CssStateMixin, template){ - - // module: - // dijit/MenuItem - - return declare("dijit.MenuItem", - [_Widget, _TemplatedMixin, _Contained, _CssStateMixin], - { - // summary: - // A line item in a Menu Widget - - // Make 3 columns - // icon, label, and expand arrow (BiDi-dependent) indicating sub-menu - templateString: template, - - baseClass: "dijitMenuItem", - - // label: String - // Menu text - label: "", - _setLabelAttr: function(val){ - this.containerNode.innerHTML = val; - this._set("label", val); - if(this.textDir === "auto"){ - this.applyTextDir(this.focusNode, this.label); - } - }, - - // iconClass: String - // Class to apply to DOMNode to make it display an icon. - iconClass: "dijitNoIcon", - _setIconClassAttr: { node: "iconNode", type: "class" }, - - // accelKey: String - // Text for the accelerator (shortcut) key combination. - // Note that although Menu can display accelerator keys there - // is no infrastructure to actually catch and execute these - // accelerators. - accelKey: "", - - // disabled: Boolean - // If true, the menu item is disabled. - // If false, the menu item is enabled. - disabled: false, - - _fillContent: function(/*DomNode*/ source){ - // If button label is specified as srcNodeRef.innerHTML rather than - // this.params.label, handle it here. - if(source && !("label" in this.params)){ - this.set('label', source.innerHTML); - } - }, - - buildRendering: function(){ - this.inherited(arguments); - var label = this.id+"_text"; - domAttr.set(this.containerNode, "id", label); - if(this.accelKeyNode){ - domAttr.set(this.accelKeyNode, "id", this.id + "_accel"); - label += " " + this.id + "_accel"; - } - this.domNode.setAttribute("aria-labelledby", label); - dom.setSelectable(this.domNode, false); - }, - - onClick: function(/*Event*/){ - // summary: - // User defined function to handle clicks - // tags: - // callback - }, - - focus: function(){ - // summary: - // Focus on this MenuItem - try{ - if(has("ie") == 8){ - // needed for IE8 which won't scroll TR tags into view on focus yet calling scrollIntoView creates flicker (#10275) - this.containerNode.focus(); - } - this.focusNode.focus(); - }catch(e){ - // this throws on IE (at least) in some scenarios - } - }, - - _onFocus: function(){ - // summary: - // This is called by the focus manager when focus - // goes to this MenuItem or a child menu. - // tags: - // protected - this._setSelected(true); - this.getParent()._onItemFocus(this); - - this.inherited(arguments); - }, - - _setSelected: function(selected){ - // summary: - // Indicate that this node is the currently selected one - // tags: - // private - - /*** - * TODO: remove this method and calls to it, when _onBlur() is working for MenuItem. - * Currently _onBlur() gets called when focus is moved from the MenuItem to a child menu. - * That's not supposed to happen, but the problem is: - * In order to allow dijit.popup's getTopPopup() to work,a sub menu's popupParent - * points to the parent Menu, bypassing the parent MenuItem... thus the - * MenuItem is not in the chain of active widgets and gets a premature call to - * _onBlur() - */ - - domClass.toggle(this.domNode, "dijitMenuItemSelected", selected); - }, - - setLabel: function(/*String*/ content){ - // summary: - // Deprecated. Use set('label', ...) instead. - // tags: - // deprecated - kernel.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.", "", "2.0"); - this.set("label", content); - }, - - setDisabled: function(/*Boolean*/ disabled){ - // summary: - // Deprecated. Use set('disabled', bool) instead. - // tags: - // deprecated - kernel.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.", "", "2.0"); - this.set('disabled', disabled); - }, - _setDisabledAttr: function(/*Boolean*/ value){ - // summary: - // Hook for attr('disabled', ...) to work. - // Enable or disable this menu item. - - this.focusNode.setAttribute('aria-disabled', value ? 'true' : 'false'); - this._set("disabled", value); - }, - _setAccelKeyAttr: function(/*String*/ value){ - // summary: - // Hook for attr('accelKey', ...) to work. - // Set accelKey on this menu item. - - this.accelKeyNode.style.display=value?"":"none"; - this.accelKeyNode.innerHTML=value; - //have to use colSpan to make it work in IE - domAttr.set(this.containerNode,'colSpan',value?"1":"2"); - - this._set("accelKey", value); - }, - _setTextDirAttr: function(/*String*/ textDir){ - // summary: - // Setter for textDir. - // description: - // Users shouldn't call this function; they should be calling - // set('textDir', value) - // tags: - // private - - // only if new textDir is different from the old one - // and on widgets creation. - if(!this._created || this.textDir != textDir){ - this._set("textDir", textDir); - this.applyTextDir(this.focusNode, this.label); - } - } - }); -}); - -}, -'dijit/layout/TabController':function(){ -require({cache:{ -'url:dijit/layout/templates/_TabButton.html':"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon dijitTabButtonIcon\" data-dojo-attach-point='iconNode'/>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n"}}); -define("dijit/layout/TabController", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "dojo/dom-attr", // domAttr.attr - "dojo/dom-class", // domClass.toggle - "dojo/i18n", // i18n.getLocalization - "dojo/_base/lang", // lang.hitch lang.trim - "./StackController", - "../registry", - "../Menu", - "../MenuItem", - "dojo/text!./templates/_TabButton.html", - "dojo/i18n!../nls/common" -], function(declare, dom, domAttr, domClass, i18n, lang, StackController, registry, Menu, MenuItem, template){ - - // module: - // dijit/layout/TabController - - var TabButton = declare("dijit.layout._TabButton", StackController.StackButton, { - // summary: - // A tab (the thing you click to select a pane). - // description: - // Contains the title of the pane, and optionally a close-button to destroy the pane. - // This is an internal widget and should not be instantiated directly. - // tags: - // private - - // baseClass: String - // The CSS class applied to the domNode. - baseClass: "dijitTab", - - // Apply dijitTabCloseButtonHover when close button is hovered - cssStateNodes: { - closeNode: "dijitTabCloseButton" - }, - - templateString: template, - - // Override _FormWidget.scrollOnFocus. - // Don't scroll the whole tab container into view when the button is focused. - scrollOnFocus: false, - - buildRendering: function(){ - this.inherited(arguments); - - dom.setSelectable(this.containerNode, false); - }, - - startup: function(){ - this.inherited(arguments); - var n = this.domNode; - - // Required to give IE6 a kick, as it initially hides the - // tabs until they are focused on. - this.defer(function(){ - n.className = n.className; - }, 1); - }, - - _setCloseButtonAttr: function(/*Boolean*/ disp){ - // summary: - // Hide/show close button - this._set("closeButton", disp); - domClass.toggle(this.domNode, "dijitClosable", disp); - this.closeNode.style.display = disp ? "" : "none"; - if(disp){ - var _nlsResources = i18n.getLocalization("dijit", "common"); - if(this.closeNode){ - domAttr.set(this.closeNode, "title", _nlsResources.itemClose); - } - } - }, - - _setDisabledAttr: function(/*Boolean*/ disabled){ - // summary: - // Make tab selected/unselectable - - this.inherited(arguments); - - // Don't show tooltip for close button when tab is disabled - if(this.closeNode){ - if(disabled){ - domAttr.remove(this.closeNode, "title"); - }else{ - var _nlsResources = i18n.getLocalization("dijit", "common"); - domAttr.set(this.closeNode, "title", _nlsResources.itemClose); - } - } - }, - - _setLabelAttr: function(/*String*/ content){ - // summary: - // Hook for set('label', ...) to work. - // description: - // takes an HTML string. - // Inherited ToggleButton implementation will Set the label (text) of the button; - // Need to set the alt attribute of icon on tab buttons if no label displayed - this.inherited(arguments); - if(!this.showLabel && !this.params.title){ - this.iconNode.alt = lang.trim(this.containerNode.innerText || this.containerNode.textContent || ''); - } - } - }); - - var TabController = declare("dijit.layout.TabController", StackController, { - // summary: - // Set of tabs (the things with titles and a close button, that you click to show a tab panel). - // Used internally by `dijit/layout/TabContainer`. - // description: - // Lets the user select the currently shown pane in a TabContainer or StackContainer. - // TabController also monitors the TabContainer, and whenever a pane is - // added or deleted updates itself accordingly. - // tags: - // private - - baseClass: "dijitTabController", - - templateString: "<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'></div>", - - // tabPosition: String - // Defines where tabs go relative to the content. - // "top", "bottom", "left-h", "right-h" - tabPosition: "top", - - // buttonWidget: Constructor - // The tab widget to create to correspond to each page - buttonWidget: TabButton, - - // buttonWidgetCloseClass: String - // Class of [x] close icon, used by event delegation code to tell when close button was clicked - buttonWidgetCloseClass: "dijitTabCloseButton", - - postCreate: function(){ - this.inherited(arguments); - - // Setup a close menu to be shared between all the closable tabs (excluding disabled tabs) - var closeMenu = new Menu({ - id: this.id+"_Menu", - ownerDocument: this.ownerDocument, - dir: this.dir, - lang: this.lang, - textDir: this.textDir, - targetNodeIds: [this.domNode], - selector: function(node){ - return domClass.contains(node, "dijitClosable") && !domClass.contains(node, "dijitTabDisabled"); - } - }); - this.own(closeMenu); - - var _nlsResources = i18n.getLocalization("dijit", "common"), - controller = this; - closeMenu.addChild(new MenuItem({ - label: _nlsResources.itemClose, - ownerDocument: this.ownerDocument, - dir: this.dir, - lang: this.lang, - textDir: this.textDir, - onClick: function(evt){ - var button = registry.byNode(this.getParent().currentTarget); - controller.onCloseButtonClick(button.page); - } - })); - } - }); - - TabController.TabButton = TabButton; // for monkey patching - - return TabController; -}); - -}, -'dijit/ToolbarSeparator':function(){ -define("dijit/ToolbarSeparator", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "./_Widget", - "./_TemplatedMixin" -], function(declare, dom, _Widget, _TemplatedMixin){ - - // module: - // dijit/ToolbarSeparator - - - return declare("dijit.ToolbarSeparator", [_Widget, _TemplatedMixin], { - // summary: - // A spacer between two `dijit.Toolbar` items - - templateString: '<div class="dijitToolbarSeparator dijitInline" role="presentation"></div>', - - buildRendering: function(){ - this.inherited(arguments); - dom.setSelectable(this.domNode, false); - }, - - isFocusable: function(){ - // summary: - // This widget isn't focusable, so pass along that fact. - // tags: - // protected - return false; - } - }); -}); - -}, -'dijit/layout/_LayoutWidget':function(){ -define("dijit/layout/_LayoutWidget", [ - "dojo/_base/lang", // lang.mixin - "../_Widget", - "../_Container", - "../_Contained", - "../Viewport", - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.remove - "dojo/dom-geometry", // domGeometry.marginBox - "dojo/dom-style" // domStyle.getComputedStyle -], function(lang, _Widget, _Container, _Contained, Viewport, - declare, domClass, domGeometry, domStyle){ - - // module: - // dijit/layout/_LayoutWidget - - - return declare("dijit.layout._LayoutWidget", [_Widget, _Container, _Contained], { - // summary: - // Base class for a _Container widget which is responsible for laying out its children. - // Widgets which mixin this code must define layout() to manage placement and sizing of the children. - - // baseClass: [protected extension] String - // This class name is applied to the widget's domNode - // and also may be used to generate names for sub nodes, - // for example dijitTabContainer-content. - baseClass: "dijitLayoutContainer", - - // isLayoutContainer: [protected] Boolean - // Indicates that this widget is going to call resize() on its - // children widgets, setting their size, when they become visible. - isLayoutContainer: true, - - buildRendering: function(){ - this.inherited(arguments); - domClass.add(this.domNode, "dijitContainer"); - }, - - startup: function(){ - // summary: - // Called after all the widgets have been instantiated and their - // dom nodes have been inserted somewhere under win.doc.body. - // - // Widgets should override this method to do any initialization - // dependent on other widgets existing, and then call - // this superclass method to finish things off. - // - // startup() in subclasses shouldn't do anything - // size related because the size of the widget hasn't been set yet. - - if(this._started){ return; } - - // Need to call inherited first - so that child widgets get started - // up correctly - this.inherited(arguments); - - // If I am a not being controlled by a parent layout widget... - var parent = this.getParent && this.getParent(); - if(!(parent && parent.isLayoutContainer)){ - // Do recursive sizing and layout of all my descendants - // (passing in no argument to resize means that it has to glean the size itself) - this.resize(); - - // Since my parent isn't a layout container, and my style *may be* width=height=100% - // or something similar (either set directly or via a CSS class), - // monitor when viewport size changes so that I can re-layout. - this.own(Viewport.on("resize", lang.hitch(this, "resize"))); - } - }, - - resize: function(changeSize, resultSize){ - // summary: - // Call this to resize a widget, or after its size has changed. - // description: - // ####Change size mode: - // - // When changeSize is specified, changes the marginBox of this widget - // and forces it to re-layout its contents accordingly. - // changeSize may specify height, width, or both. - // - // If resultSize is specified it indicates the size the widget will - // become after changeSize has been applied. - // - // ####Notification mode: - // - // When changeSize is null, indicates that the caller has already changed - // the size of the widget, or perhaps it changed because the browser - // window was resized. Tells widget to re-layout its contents accordingly. - // - // If resultSize is also specified it indicates the size the widget has - // become. - // - // In either mode, this method also: - // - // 1. Sets this._borderBox and this._contentBox to the new size of - // the widget. Queries the current domNode size if necessary. - // 2. Calls layout() to resize contents (and maybe adjust child widgets). - // changeSize: Object? - // Sets the widget to this margin-box size and position. - // May include any/all of the following properties: - // | {w: int, h: int, l: int, t: int} - // resultSize: Object? - // The margin-box size of this widget after applying changeSize (if - // changeSize is specified). If caller knows this size and - // passes it in, we don't need to query the browser to get the size. - // | {w: int, h: int} - - var node = this.domNode; - - // set margin box size, unless it wasn't specified, in which case use current size - if(changeSize){ - domGeometry.setMarginBox(node, changeSize); - } - - // If either height or width wasn't specified by the user, then query node for it. - // But note that setting the margin box and then immediately querying dimensions may return - // inaccurate results, so try not to depend on it. - var mb = resultSize || {}; - lang.mixin(mb, changeSize || {}); // changeSize overrides resultSize - if( !("h" in mb) || !("w" in mb) ){ - mb = lang.mixin(domGeometry.getMarginBox(node), mb); // just use domGeometry.marginBox() to fill in missing values - } - - // Compute and save the size of my border box and content box - // (w/out calling domGeometry.getContentBox() since that may fail if size was recently set) - var cs = domStyle.getComputedStyle(node); - var me = domGeometry.getMarginExtents(node, cs); - var be = domGeometry.getBorderExtents(node, cs); - var bb = (this._borderBox = { - w: mb.w - (me.w + be.w), - h: mb.h - (me.h + be.h) - }); - var pe = domGeometry.getPadExtents(node, cs); - this._contentBox = { - l: domStyle.toPixelValue(node, cs.paddingLeft), - t: domStyle.toPixelValue(node, cs.paddingTop), - w: bb.w - pe.w, - h: bb.h - pe.h - }; - - // Callback for widget to adjust size of its children - this.layout(); - }, - - layout: function(){ - // summary: - // Widgets override this method to size and position their contents/children. - // When this is called this._contentBox is guaranteed to be set (see resize()). - // - // This is called after startup(), and also when the widget's size has been - // changed. - // tags: - // protected extension - }, - - _setupChild: function(/*dijit/_WidgetBase*/child){ - // summary: - // Common setup for initial children and children which are added after startup - // tags: - // protected extension - - var cls = this.baseClass + "-child " - + (child.baseClass ? this.baseClass + "-" + child.baseClass : ""); - domClass.add(child.domNode, cls); - }, - - addChild: function(/*dijit/_WidgetBase*/ child, /*Integer?*/ insertIndex){ - // Overrides _Container.addChild() to call _setupChild() - this.inherited(arguments); - if(this._started){ - this._setupChild(child); - } - }, - - removeChild: function(/*dijit/_WidgetBase*/ child){ - // Overrides _Container.removeChild() to remove class added by _setupChild() - var cls = this.baseClass + "-child" - + (child.baseClass ? - " " + this.baseClass + "-" + child.baseClass : ""); - domClass.remove(child.domNode, cls); - - this.inherited(arguments); - } - }); -}); - -}, -'dijit/popup':function(){ -define("dijit/popup", [ - "dojo/_base/array", // array.forEach array.some - "dojo/aspect", - "dojo/_base/connect", // connect._keypress - "dojo/_base/declare", // declare - "dojo/dom", // dom.isDescendant - "dojo/dom-attr", // domAttr.set - "dojo/dom-construct", // domConstruct.create domConstruct.destroy - "dojo/dom-geometry", // domGeometry.isBodyLtr - "dojo/dom-style", // domStyle.set - "dojo/_base/event", // event.stop - "dojo/keys", - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/sniff", // has("ie") has("mozilla") - "./place", - "./BackgroundIframe", - "./main" // dijit (defining dijit.popup to match API doc) -], function(array, aspect, connect, declare, dom, domAttr, domConstruct, domGeometry, domStyle, event, keys, lang, on, has, - place, BackgroundIframe, dijit){ - - // module: - // dijit/popup - - /*===== - var __OpenArgs = { - // popup: Widget - // widget to display - // parent: Widget - // the button etc. that is displaying this popup - // around: DomNode - // DOM node (typically a button); place popup relative to this node. (Specify this *or* "x" and "y" parameters.) - // x: Integer - // Absolute horizontal position (in pixels) to place node at. (Specify this *or* "around" parameter.) - // y: Integer - // Absolute vertical position (in pixels) to place node at. (Specify this *or* "around" parameter.) - // orient: Object|String - // When the around parameter is specified, orient should be a list of positions to try, ex: - // | [ "below", "above" ] - // For backwards compatibility it can also be an (ordered) hash of tuples of the form - // (around-node-corner, popup-node-corner), ex: - // | { "BL": "TL", "TL": "BL" } - // where BL means "bottom left" and "TL" means "top left", etc. - // - // dijit/popup.open() tries to position the popup according to each specified position, in order, - // until the popup appears fully within the viewport. - // - // The default value is ["below", "above"] - // - // When an (x,y) position is specified rather than an around node, orient is either - // "R" or "L". R (for right) means that it tries to put the popup to the right of the mouse, - // specifically positioning the popup's top-right corner at the mouse position, and if that doesn't - // fit in the viewport, then it tries, in order, the bottom-right corner, the top left corner, - // and the top-right corner. - // onCancel: Function - // callback when user has canceled the popup by: - // - // 1. hitting ESC or - // 2. by using the popup widget's proprietary cancel mechanism (like a cancel button in a dialog); - // i.e. whenever popupWidget.onCancel() is called, args.onCancel is called - // onClose: Function - // callback whenever this popup is closed - // onExecute: Function - // callback when user "executed" on the popup/sub-popup by selecting a menu choice, etc. (top menu only) - // padding: place.__Position - // adding a buffer around the opening position. This is only useful when around is not set. - }; - =====*/ - - function destroyWrapper(){ - // summary: - // Function to destroy wrapper when popup widget is destroyed. - // Left in this scope to avoid memory leak on IE8 on refresh page, see #15206. - if(this._popupWrapper){ - domConstruct.destroy(this._popupWrapper); - delete this._popupWrapper; - } - } - - var PopupManager = declare(null, { - // summary: - // Used to show drop downs (ex: the select list of a ComboBox) - // or popups (ex: right-click context menus). - - // _stack: dijit/_WidgetBase[] - // Stack of currently popped up widgets. - // (someone opened _stack[0], and then it opened _stack[1], etc.) - _stack: [], - - // _beginZIndex: Number - // Z-index of the first popup. (If first popup opens other - // popups they get a higher z-index.) - _beginZIndex: 1000, - - _idGen: 1, - - _createWrapper: function(/*Widget*/ widget){ - // summary: - // Initialization for widgets that will be used as popups. - // Puts widget inside a wrapper DIV (if not already in one), - // and returns pointer to that wrapper DIV. - - var wrapper = widget._popupWrapper, - node = widget.domNode; - - if(!wrapper){ - // Create wrapper <div> for when this widget [in the future] will be used as a popup. - // This is done early because of IE bugs where creating/moving DOM nodes causes focus - // to go wonky, see tests/robot/Toolbar.html to reproduce - wrapper = domConstruct.create("div", { - "class":"dijitPopup", - style:{ display: "none"}, - role: "presentation" - }, widget.ownerDocumentBody); - wrapper.appendChild(node); - - var s = node.style; - s.display = ""; - s.visibility = ""; - s.position = ""; - s.top = "0px"; - - widget._popupWrapper = wrapper; - aspect.after(widget, "destroy", destroyWrapper, true); - } - - return wrapper; - }, - - moveOffScreen: function(/*Widget*/ widget){ - // summary: - // Moves the popup widget off-screen. - // Do not use this method to hide popups when not in use, because - // that will create an accessibility issue: the offscreen popup is - // still in the tabbing order. - - // Create wrapper if not already there - var wrapper = this._createWrapper(widget); - - domStyle.set(wrapper, { - visibility: "hidden", - top: "-9999px", // prevent transient scrollbar causing misalign (#5776), and initial flash in upper left (#10111) - display: "" - }); - }, - - hide: function(/*Widget*/ widget){ - // summary: - // Hide this popup widget (until it is ready to be shown). - // Initialization for widgets that will be used as popups - // - // Also puts widget inside a wrapper DIV (if not already in one) - // - // If popup widget needs to layout it should - // do so when it is made visible, and popup._onShow() is called. - - // Create wrapper if not already there - var wrapper = this._createWrapper(widget); - - domStyle.set(wrapper, "display", "none"); - }, - - getTopPopup: function(){ - // summary: - // Compute the closest ancestor popup that's *not* a child of another popup. - // Ex: For a TooltipDialog with a button that spawns a tree of menus, find the popup of the button. - var stack = this._stack; - for(var pi=stack.length-1; pi > 0 && stack[pi].parent === stack[pi-1].widget; pi--){ - /* do nothing, just trying to get right value for pi */ - } - return stack[pi]; - }, - - open: function(/*__OpenArgs*/ args){ - // summary: - // Popup the widget at the specified position - // - // example: - // opening at the mouse position - // | popup.open({popup: menuWidget, x: evt.pageX, y: evt.pageY}); - // - // example: - // opening the widget as a dropdown - // | popup.open({parent: this, popup: menuWidget, around: this.domNode, onClose: function(){...}}); - // - // Note that whatever widget called dijit/popup.open() should also listen to its own _onBlur callback - // (fired from _base/focus.js) to know that focus has moved somewhere else and thus the popup should be closed. - - var stack = this._stack, - widget = args.popup, - orient = args.orient || ["below", "below-alt", "above", "above-alt"], - ltr = args.parent ? args.parent.isLeftToRight() : domGeometry.isBodyLtr(widget.ownerDocument), - around = args.around, - id = (args.around && args.around.id) ? (args.around.id+"_dropdown") : ("popup_"+this._idGen++); - - // If we are opening a new popup that isn't a child of a currently opened popup, then - // close currently opened popup(s). This should happen automatically when the old popups - // gets the _onBlur() event, except that the _onBlur() event isn't reliable on IE, see [22198]. - while(stack.length && (!args.parent || !dom.isDescendant(args.parent.domNode, stack[stack.length-1].widget.domNode))){ - this.close(stack[stack.length-1].widget); - } - - // Get pointer to popup wrapper, and create wrapper if it doesn't exist - var wrapper = this._createWrapper(widget); - - - domAttr.set(wrapper, { - id: id, - style: { - zIndex: this._beginZIndex + stack.length - }, - "class": "dijitPopup " + (widget.baseClass || widget["class"] || "").split(" ")[0] +"Popup", - dijitPopupParent: args.parent ? args.parent.id : "" - }); - - if(has("ie") || has("mozilla")){ - if(!widget.bgIframe){ - // setting widget.bgIframe triggers cleanup in _Widget.destroy() - widget.bgIframe = new BackgroundIframe(wrapper); - } - } - - // position the wrapper node and make it visible - var best = around ? - place.around(wrapper, around, orient, ltr, widget.orient ? lang.hitch(widget, "orient") : null) : - place.at(wrapper, args, orient == 'R' ? ['TR','BR','TL','BL'] : ['TL','BL','TR','BR'], args.padding); - - wrapper.style.display = ""; - wrapper.style.visibility = "visible"; - widget.domNode.style.visibility = "visible"; // counteract effects from _HasDropDown - - var handlers = []; - - // provide default escape and tab key handling - // (this will work for any widget, not just menu) - handlers.push(on(wrapper, connect._keypress, lang.hitch(this, function(evt){ - if(evt.charOrCode == keys.ESCAPE && args.onCancel){ - event.stop(evt); - args.onCancel(); - }else if(evt.charOrCode === keys.TAB){ - event.stop(evt); - var topPopup = this.getTopPopup(); - if(topPopup && topPopup.onCancel){ - topPopup.onCancel(); - } - } - }))); - - // watch for cancel/execute events on the popup and notify the caller - // (for a menu, "execute" means clicking an item) - if(widget.onCancel && args.onCancel){ - handlers.push(widget.on("cancel", args.onCancel)); - } - - handlers.push(widget.on(widget.onExecute ? "execute" : "change", lang.hitch(this, function(){ - var topPopup = this.getTopPopup(); - if(topPopup && topPopup.onExecute){ - topPopup.onExecute(); - } - }))); - - stack.push({ - widget: widget, - parent: args.parent, - onExecute: args.onExecute, - onCancel: args.onCancel, - onClose: args.onClose, - handlers: handlers - }); - - if(widget.onOpen){ - // TODO: in 2.0 standardize onShow() (used by StackContainer) and onOpen() (used here) - widget.onOpen(best); - } - - return best; - }, - - close: function(/*Widget?*/ popup){ - // summary: - // Close specified popup and any popups that it parented. - // If no popup is specified, closes all popups. - - var stack = this._stack; - - // Basically work backwards from the top of the stack closing popups - // until we hit the specified popup, but IIRC there was some issue where closing - // a popup would cause others to close too. Thus if we are trying to close B in [A,B,C] - // closing C might close B indirectly and then the while() condition will run where stack==[A]... - // so the while condition is constructed defensively. - while((popup && array.some(stack, function(elem){return elem.widget == popup;})) || - (!popup && stack.length)){ - var top = stack.pop(), - widget = top.widget, - onClose = top.onClose; - - if(widget.onClose){ - // TODO: in 2.0 standardize onHide() (used by StackContainer) and onClose() (used here) - widget.onClose(); - } - - var h; - while(h = top.handlers.pop()){ h.remove(); } - - // Hide the widget and it's wrapper unless it has already been destroyed in above onClose() etc. - if(widget && widget.domNode){ - this.hide(widget); - } - - if(onClose){ - onClose(); - } - } - } - }); - - return (dijit.popup = new PopupManager()); -}); - -}, -'dijit/_base/manager':function(){ -define("dijit/_base/manager", [ - "dojo/_base/array", - "dojo/_base/config", // defaultDuration - "dojo/_base/lang", - "../registry", - "../main" // for setting exports to dijit namespace -], function(array, config, lang, registry, dijit){ - - // module: - // dijit/_base/manager - - var exports = { - // summary: - // Deprecated. Shim to methods on registry, plus a few other declarations. - // New code should access dijit/registry directly when possible. - }; - - array.forEach(["byId", "getUniqueId", "findWidgets", "_destroyAll", "byNode", "getEnclosingWidget"], function(name){ - exports[name] = registry[name]; - }); - - lang.mixin(exports, { - // defaultDuration: Integer - // The default fx.animation speed (in ms) to use for all Dijit - // transitional fx.animations, unless otherwise specified - // on a per-instance basis. Defaults to 200, overrided by - // `djConfig.defaultDuration` - defaultDuration: config["defaultDuration"] || 200 - }); - - lang.mixin(dijit, exports); - - /*===== return exports; =====*/ - return dijit; // for back compat :-( -}); - -}, -'dijit/layout/StackController':function(){ -define("dijit/layout/StackController", [ - "dojo/_base/array", // array.forEach array.indexOf array.map - "dojo/_base/declare", // declare - "dojo/dom-class", - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "dojo/_base/lang", // lang.getObject - "dojo/on", - "../focus", // focus.focus() - "../registry", // registry.byId - "../_Widget", - "../_TemplatedMixin", - "../_Container", - "../form/ToggleButton", - "dojo/i18n!../nls/common" -], function(array, declare, domClass, event, keys, lang, on, - focus, registry, _Widget, _TemplatedMixin, _Container, ToggleButton){ - - // module: - // dijit/layout/StackController - - var StackButton = declare("dijit.layout._StackButton", ToggleButton, { - // summary: - // Internal widget used by StackContainer. - // description: - // The button-like or tab-like object you click to select or delete a page - // tags: - // private - - // Override _FormWidget.tabIndex. - // StackContainer buttons are not in the tab order by default. - // Probably we should be calling this.startupKeyNavChildren() instead. - tabIndex: "-1", - - // closeButton: Boolean - // When true, display close button for this tab - closeButton: false, - - _aria_attr: "aria-selected", - - buildRendering: function(/*Event*/ evt){ - this.inherited(arguments); - (this.focusNode || this.domNode).setAttribute("role", "tab"); - } - }); - - - var StackController = declare("dijit.layout.StackController", [_Widget, _TemplatedMixin, _Container], { - // summary: - // Set of buttons to select a page in a `dijit/layout/StackContainer` - // description: - // Monitors the specified StackContainer, and whenever a page is - // added, deleted, or selected, updates itself accordingly. - - baseClass: "dijitStackController", - - templateString: "<span role='tablist' data-dojo-attach-event='onkeypress'></span>", - - // containerId: [const] String - // The id of the page container that I point to - containerId: "", - - // buttonWidget: [const] Constructor - // The button widget to create to correspond to each page - buttonWidget: StackButton, - - // buttonWidgetCloseClass: String - // CSS class of [x] close icon, used by event delegation code to tell when close button was clicked - buttonWidgetCloseClass: "dijitStackCloseButton", - - constructor: function(params /*===== , srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree - - this.pane2button = {}; // mapping from pane id to buttons - }, - - postCreate: function(){ - this.inherited(arguments); - - // Listen to notifications from StackContainer. - // TODO: do this through bubbled events instead of topics - this.subscribe(this.containerId+"-startup", "onStartup"); - this.subscribe(this.containerId+"-addChild", "onAddChild"); - this.subscribe(this.containerId+"-removeChild", "onRemoveChild"); - this.subscribe(this.containerId+"-selectChild", "onSelectChild"); - this.subscribe(this.containerId+"-containerKeyPress", "onContainerKeyPress"); - - // Listen for click events to select or close tabs. - // No need to worry about ENTER/SPACE key handling: tabs are selected via left/right arrow keys, - // and closed via shift-F10 (to show the close menu). - this.connect(this.containerNode, 'click', function(evt){ - var button = registry.getEnclosingWidget(evt.target); - if(button != this.containerNode && !button.disabled && button.page){ - for(var target = evt.target; target !== this.containerNode; target = target.parentNode){ - if(domClass.contains(target, this.buttonWidgetCloseClass)){ - this.onCloseButtonClick(button.page); - break; - }else if(target == button.domNode){ - this.onButtonClick(button.page); - break; - } - } - } - }); - }, - - onStartup: function(/*Object*/ info){ - // summary: - // Called after StackContainer has finished initializing - // tags: - // private - array.forEach(info.children, this.onAddChild, this); - if(info.selected){ - // Show button corresponding to selected pane (unless selected - // is null because there are no panes) - this.onSelectChild(info.selected); - } - - // Reflect events like page title changes to tab buttons - var containerNode = registry.byId(this.containerId).containerNode, - pane2button = this.pane2button, - paneToButtonAttr = { - "title": "label", - "showtitle": "showLabel", - "iconclass": "iconClass", - "closable": "closeButton", - "tooltip": "title", - "disabled": "disabled" - }, - connectFunc = function(attr, buttonAttr){ - return on(containerNode, "attrmodified-" + attr, function(evt){ - var button = pane2button[evt.detail && evt.detail.widget && evt.detail.widget.id]; - if(button){ - button.set(buttonAttr, evt.detail.newValue); - } - }); - }; - for(var attr in paneToButtonAttr){ - this.own(connectFunc(attr, paneToButtonAttr[attr])); - } - }, - - destroy: function(){ - // Since the buttons are internal to the StackController widget, destroy() should remove them, which is - // done by calling onRemoveChild(). - for(var pane in this.pane2button){ - this.onRemoveChild(registry.byId(pane)); - } - - // TODO: destroyRecursive() will call destroy() on each child button twice. Once from the above code, - // and once because _WidgetBase.destroyDescendants() deletes anything inside of this.containerNode. - // Probably shouldn't attach that DOMNode as this.containerNode. - - this.inherited(arguments); - }, - - onAddChild: function(/*dijit/_WidgetBase*/ page, /*Integer?*/ insertIndex){ - // summary: - // Called whenever a page is added to the container. - // Create button corresponding to the page. - // tags: - // private - - // create an instance of the button widget - // (remove typeof buttonWidget == string support in 2.0) - var Cls = lang.isString(this.buttonWidget) ? lang.getObject(this.buttonWidget) : this.buttonWidget; - var button = new Cls({ - id: this.id + "_" + page.id, - name: this.id + "_" + page.id, - label: page.title, - disabled: page.disabled, - ownerDocument: this.ownerDocument, - dir: page.dir, - lang: page.lang, - textDir: page.textDir, - showLabel: page.showTitle, - iconClass: page.iconClass, - closeButton: page.closable, - title: page.tooltip, - page: page - }); - - this.addChild(button, insertIndex); - this.pane2button[page.id] = button; - page.controlButton = button; // this value might be overwritten if two tabs point to same container - if(!this._currentChild){ - // If this is the first child then StackContainer will soon publish that it's selected, - // but before that StackContainer calls layout(), and before layout() is called the - // StackController needs to have the proper height... which means that the button needs - // to be marked as selected now. See test_TabContainer_CSS.html for test. - this.onSelectChild(page); - } - }, - - onRemoveChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Called whenever a page is removed from the container. - // Remove the button corresponding to the page. - // tags: - // private - - if(this._currentChild === page){ this._currentChild = null; } - - var button = this.pane2button[page.id]; - if(button){ - this.removeChild(button); - delete this.pane2button[page.id]; - button.destroy(); - } - delete page.controlButton; - }, - - onSelectChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Called when a page has been selected in the StackContainer, either by me or by another StackController - // tags: - // private - - if(!page){ return; } - - if(this._currentChild){ - var oldButton=this.pane2button[this._currentChild.id]; - oldButton.set('checked', false); - oldButton.focusNode.setAttribute("tabIndex", "-1"); - } - - var newButton=this.pane2button[page.id]; - newButton.set('checked', true); - this._currentChild = page; - newButton.focusNode.setAttribute("tabIndex", "0"); - var container = registry.byId(this.containerId); - container.containerNode.setAttribute("aria-labelledby", newButton.id); - }, - - onButtonClick: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Called whenever one of my child buttons is pressed in an attempt to select a page - // tags: - // private - - var button = this.pane2button[page.id]; - - // For TabContainer where the tabs are <span>, need to set focus explicitly when left/right arrow - focus.focus(button.focusNode); - - if(this._currentChild && this._currentChild.id === page.id) { - //In case the user clicked the checked button, keep it in the checked state because it remains to be the selected stack page. - button.set('checked', true); - } - var container = registry.byId(this.containerId); - container.selectChild(page); - }, - - onCloseButtonClick: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Called whenever one of my child buttons [X] is pressed in an attempt to close a page - // tags: - // private - - var container = registry.byId(this.containerId); - container.closeChild(page); - if(this._currentChild){ - var b = this.pane2button[this._currentChild.id]; - if(b){ - focus.focus(b.focusNode || b.domNode); - } - } - }, - - // TODO: this is a bit redundant with forward, back api in StackContainer - adjacent: function(/*Boolean*/ forward){ - // summary: - // Helper for onkeypress to find next/previous button - // tags: - // private - - if(!this.isLeftToRight() && (!this.tabPosition || /top|bottom/.test(this.tabPosition))){ forward = !forward; } - // find currently focused button in children array - var children = this.getChildren(); - var idx = array.indexOf(children, this.pane2button[this._currentChild.id]), - current = children[idx]; - - // Pick next/previous non-disabled button to focus on. If we get back to the original button it means - // that all buttons must be disabled, so return current child to avoid an infinite loop. - var child; - do{ - idx = (idx + (forward ? 1 : children.length - 1)) % children.length; - child = children[idx]; - }while(child.disabled && child != current); - - return child; // dijit/_WidgetBase - }, - - onkeypress: function(/*Event*/ e){ - // summary: - // Handle keystrokes on the page list, for advancing to next/previous button - // and closing the current page if the page is closable. - // tags: - // private - - if(this.disabled || e.altKey ){ return; } - var forward = null; - if(e.ctrlKey || !e._djpage){ - switch(e.charOrCode){ - case keys.LEFT_ARROW: - case keys.UP_ARROW: - if(!e._djpage){ forward = false; } - break; - case keys.PAGE_UP: - if(e.ctrlKey){ forward = false; } - break; - case keys.RIGHT_ARROW: - case keys.DOWN_ARROW: - if(!e._djpage){ forward = true; } - break; - case keys.PAGE_DOWN: - if(e.ctrlKey){ forward = true; } - break; - case keys.HOME: - // Navigate to first non-disabled child - var children = this.getChildren(); - for(var idx = 0; idx < children.length; idx++){ - var child = children[idx]; - if(!child.disabled){ - this.onButtonClick(child.page); - break; - } - } - event.stop(e); - break; - case keys.END: - // Navigate to last non-disabled child - var children = this.getChildren(); - for(var idx = children.length-1; idx >= 0; idx--){ - var child = children[idx]; - if(!child.disabled){ - this.onButtonClick(child.page); - break; - } - } - event.stop(e); - break; - case keys.DELETE: - if(this._currentChild.closable){ - this.onCloseButtonClick(this._currentChild); - } - event.stop(e); - break; - default: - if(e.ctrlKey){ - if(e.charOrCode === keys.TAB){ - this.onButtonClick(this.adjacent(!e.shiftKey).page); - event.stop(e); - }else if(e.charOrCode == "w"){ - if(this._currentChild.closable){ - this.onCloseButtonClick(this._currentChild); - } - event.stop(e); // avoid browser tab closing. - } - } - } - // handle next/previous page navigation (left/right arrow, etc.) - if(forward !== null){ - this.onButtonClick(this.adjacent(forward).page); - event.stop(e); - } - } - }, - - onContainerKeyPress: function(/*Object*/ info){ - // summary: - // Called when there was a keypress on the container - // tags: - // private - info.e._djpage = info.page; - this.onkeypress(info.e); - } - }); - - StackController.StackButton = StackButton; // for monkey patching - - return StackController; -}); - -}, -'url:dijit/templates/TooltipDialog.html':"<div role=\"presentation\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" data-dojo-attach-point=\"containerNode\" role=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n", -'dojo/dnd/Mover':function(){ -define("dojo/dnd/Mover", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", "../sniff", "../_base/window", - "../dom", "../dom-geometry", "../dom-style", "../Evented", "../on", "../touch", "./common", "./autoscroll" -], function(array, declare, event, lang, has, win, dom, domGeom, domStyle, Evented, on, touch, dnd, autoscroll){ - -// module: -// dojo/dnd/Mover - -return declare("dojo.dnd.Mover", [Evented], { - // summary: - // an object which makes a node follow the mouse, or touch-drag on touch devices. - // Used as a default mover, and as a base class for custom movers. - - constructor: function(node, e, host){ - // node: Node - // a node (or node's id) to be moved - // e: Event - // a mouse event, which started the move; - // only pageX and pageY properties are used - // host: Object? - // object which implements the functionality of the move, - // and defines proper events (onMoveStart and onMoveStop) - this.node = dom.byId(node); - this.marginBox = {l: e.pageX, t: e.pageY}; - this.mouseButton = e.button; - var h = (this.host = host), d = node.ownerDocument; - this.events = [ - // At the start of a drag, onFirstMove is called, and then the following - // listener is disconnected. - on(d, touch.move, lang.hitch(this, "onFirstMove")), - - // These are called continually during the drag - on(d, touch.move, lang.hitch(this, "onMouseMove")), - - // And these are called at the end of the drag - on(d, touch.release, lang.hitch(this, "onMouseUp")), - - // cancel text selection and text dragging - on(d, "dragstart", event.stop), - on(d.body, "selectstart", event.stop) - ]; - - // Tell autoscroll that a drag is starting - autoscroll.autoScrollStart(d); - - // notify that the move has started - if(h && h.onMoveStart){ - h.onMoveStart(this); - } - }, - // mouse event processors - onMouseMove: function(e){ - // summary: - // event processor for onmousemove/ontouchmove - // e: Event - // mouse/touch event - autoscroll.autoScroll(e); - var m = this.marginBox; - this.host.onMove(this, {l: m.l + e.pageX, t: m.t + e.pageY}, e); - event.stop(e); - }, - onMouseUp: function(e){ - if(has("webkit") && has("mac") && this.mouseButton == 2 ? - e.button == 0 : this.mouseButton == e.button){ // TODO Should condition be met for touch devices, too? - this.destroy(); - } - event.stop(e); - }, - // utilities - onFirstMove: function(e){ - // summary: - // makes the node absolute; it is meant to be called only once. - // relative and absolutely positioned nodes are assumed to use pixel units - var s = this.node.style, l, t, h = this.host; - switch(s.position){ - case "relative": - case "absolute": - // assume that left and top values are in pixels already - l = Math.round(parseFloat(s.left)) || 0; - t = Math.round(parseFloat(s.top)) || 0; - break; - default: - s.position = "absolute"; // enforcing the absolute mode - var m = domGeom.getMarginBox(this.node); - // event.pageX/pageY (which we used to generate the initial - // margin box) includes padding and margin set on the body. - // However, setting the node's position to absolute and then - // doing domGeom.marginBox on it *doesn't* take that additional - // space into account - so we need to subtract the combined - // padding and margin. We use getComputedStyle and - // _getMarginBox/_getContentBox to avoid the extra lookup of - // the computed style. - var b = win.doc.body; - var bs = domStyle.getComputedStyle(b); - var bm = domGeom.getMarginBox(b, bs); - var bc = domGeom.getContentBox(b, bs); - l = m.l - (bc.l - bm.l); - t = m.t - (bc.t - bm.t); - break; - } - this.marginBox.l = l - this.marginBox.l; - this.marginBox.t = t - this.marginBox.t; - if(h && h.onFirstMove){ - h.onFirstMove(this, e); - } - - // Disconnect touch.move that call this function - this.events.shift().remove(); - }, - destroy: function(){ - // summary: - // stops the move, deletes all references, so the object can be garbage-collected - array.forEach(this.events, function(handle){ handle.remove(); }); - // undo global settings - var h = this.host; - if(h && h.onMoveStop){ - h.onMoveStop(this); - } - // destroy objects - this.events = this.node = this.host = null; - } -}); - -}); - -}, -'dijit/layout/TabContainer':function(){ -define("dijit/layout/TabContainer", [ - "dojo/_base/lang", // lang.getObject - "dojo/_base/declare", // declare - "./_TabContainerBase", - "./TabController", - "./ScrollingTabController" -], function(lang, declare, _TabContainerBase, TabController, ScrollingTabController){ - - // module: - // dijit/layout/TabContainer - - - return declare("dijit.layout.TabContainer", _TabContainerBase, { - // summary: - // A Container with tabs to select each child (only one of which is displayed at a time). - // description: - // A TabContainer is a container that has multiple panes, but shows only - // one pane at a time. There are a set of tabs corresponding to each pane, - // where each tab has the name (aka title) of the pane, and optionally a close button. - // - // See `StackContainer.ChildWidgetProperties` for details on the properties that can be set on - // children of a `TabContainer`. - - // useMenu: [const] Boolean - // True if a menu should be used to select tabs when they are too - // wide to fit the TabContainer, false otherwise. - useMenu: true, - - // useSlider: [const] Boolean - // True if a slider should be used to select tabs when they are too - // wide to fit the TabContainer, false otherwise. - useSlider: true, - - // controllerWidget: Class - // An optional parameter to override the widget used to display the tab labels - controllerWidget: "", - - _makeController: function(/*DomNode*/ srcNode){ - // summary: - // Instantiate tablist controller widget and return reference to it. - // Callback from _TabContainerBase.postCreate(). - // tags: - // protected extension - - // "string" branch for back-compat, remove for 2.0 - var cls = this.baseClass + "-tabs" + (this.doLayout ? "" : " dijitTabNoLayout"), - TabController = typeof this.controllerWidget == "string" ? lang.getObject(this.controllerWidget) : - this.controllerWidget; - - return new TabController({ - id: this.id + "_tablist", - ownerDocument: this.ownerDocument, - dir: this.dir, - lang: this.lang, - textDir: this.textDir, - tabPosition: this.tabPosition, - doLayout: this.doLayout, - containerId: this.id, - "class": cls, - nested: this.nested, - useMenu: this.useMenu, - useSlider: this.useSlider, - tabStripClass: this.tabStrip ? this.baseClass + (this.tabStrip ? "":"No") + "Strip": null - }, srcNode); - }, - - postMixInProperties: function(){ - this.inherited(arguments); - - // Scrolling controller only works for horizontal non-nested tabs - if(!this.controllerWidget){ - this.controllerWidget = (this.tabPosition == "top" || this.tabPosition == "bottom") && !this.nested ? - ScrollingTabController : TabController; - } - } - }); -}); - -}, -'dijit/BackgroundIframe':function(){ -define("dijit/BackgroundIframe", [ - "require", // require.toUrl - "./main", // to export dijit.BackgroundIframe - "dojo/_base/config", - "dojo/dom-construct", // domConstruct.create - "dojo/dom-style", // domStyle.set - "dojo/_base/lang", // lang.extend lang.hitch - "dojo/on", - "dojo/sniff", // has("ie"), has("mozilla"), has("quirks") - "dojo/_base/window" // win.doc.createElement -], function(require, dijit, config, domConstruct, domStyle, lang, on, has, win){ - - // module: - // dijit/BackgroundIFrame - - // TODO: remove _frames, it isn't being used much, since popups never release their - // iframes (see [22236]) - var _frames = new function(){ - // summary: - // cache of iframes - - var queue = []; - - this.pop = function(){ - var iframe; - if(queue.length){ - iframe = queue.pop(); - iframe.style.display=""; - }else{ - if(has("ie") < 9){ - var burl = config["dojoBlankHtmlUrl"] || require.toUrl("dojo/resources/blank.html") || "javascript:\"\""; - var html="<iframe src='" + burl + "' role='presentation'" - + " style='position: absolute; left: 0px; top: 0px;" - + "z-index: -1; filter:Alpha(Opacity=\"0\");'>"; - iframe = win.doc.createElement(html); - }else{ - iframe = domConstruct.create("iframe"); - iframe.src = 'javascript:""'; - iframe.className = "dijitBackgroundIframe"; - iframe.setAttribute("role", "presentation"); - domStyle.set(iframe, "opacity", 0.1); - } - iframe.tabIndex = -1; // Magic to prevent iframe from getting focus on tab keypress - as style didn't work. - } - return iframe; - }; - - this.push = function(iframe){ - iframe.style.display="none"; - queue.push(iframe); - } - }(); - - - dijit.BackgroundIframe = function(/*DomNode*/ node){ - // summary: - // For IE/FF z-index schenanigans. id attribute is required. - // - // description: - // new dijit.BackgroundIframe(node). - // - // Makes a background iframe as a child of node, that fills - // area (and position) of node - - if(!node.id){ throw new Error("no id"); } - if(has("ie") || has("mozilla")){ - var iframe = (this.iframe = _frames.pop()); - node.appendChild(iframe); - if(has("ie")<7 || has("quirks")){ - this.resize(node); - this._conn = on(node, 'resize', lang.hitch(this, function(){ - this.resize(node); - })); - }else{ - domStyle.set(iframe, { - width: '100%', - height: '100%' - }); - } - } - }; - - lang.extend(dijit.BackgroundIframe, { - resize: function(node){ - // summary: - // Resize the iframe so it's the same size as node. - // Needed on IE6 and IE/quirks because height:100% doesn't work right. - if(this.iframe){ - domStyle.set(this.iframe, { - width: node.offsetWidth + 'px', - height: node.offsetHeight + 'px' - }); - } - }, - destroy: function(){ - // summary: - // destroy the iframe - if(this._conn){ - this._conn.remove(); - this._conn = null; - } - if(this.iframe){ - _frames.push(this.iframe); - delete this.iframe; - } - } - }); - - return dijit.BackgroundIframe; -}); - -}, -'url:dijit/templates/Menu.html':"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t data-dojo-attach-event=\"onkeypress:_onKeyPress\" cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n", -'dojo/dnd/Avatar':function(){ -define("dojo/dnd/Avatar", [ - "../_base/declare", - "../_base/window", - "../dom", - "../dom-attr", - "../dom-class", - "../dom-construct", - "../hccss", - "../query" -], function(declare, win, dom, domAttr, domClass, domConstruct, has, query){ - -// module: -// dojo/dnd/Avatar - -return declare("dojo.dnd.Avatar", null, { - // summary: - // Object that represents transferred DnD items visually - // manager: Object - // a DnD manager object - - constructor: function(manager){ - this.manager = manager; - this.construct(); - }, - - // methods - construct: function(){ - // summary: - // constructor function; - // it is separate so it can be (dynamically) overwritten in case of need - - var a = domConstruct.create("table", { - "class": "dojoDndAvatar", - style: { - position: "absolute", - zIndex: "1999", - margin: "0px" - } - }), - source = this.manager.source, node, - b = domConstruct.create("tbody", null, a), - tr = domConstruct.create("tr", null, b), - td = domConstruct.create("td", null, tr), - k = Math.min(5, this.manager.nodes.length), i = 0; - - if(has("highcontrast")){ - domConstruct.create("span", { - id : "a11yIcon", - innerHTML : this.manager.copy ? '+' : "<" - }, td) - } - domConstruct.create("span", { - innerHTML: source.generateText ? this._generateText() : "" - }, td); - - // we have to set the opacity on IE only after the node is live - domAttr.set(tr, { - "class": "dojoDndAvatarHeader", - style: {opacity: 0.9} - }); - for(; i < k; ++i){ - if(source.creator){ - // create an avatar representation of the node - node = source._normalizedCreator(source.getItem(this.manager.nodes[i].id).data, "avatar").node; - }else{ - // or just clone the node and hope it works - node = this.manager.nodes[i].cloneNode(true); - if(node.tagName.toLowerCase() == "tr"){ - // insert extra table nodes - var table = domConstruct.create("table"), - tbody = domConstruct.create("tbody", null, table); - tbody.appendChild(node); - node = table; - } - } - node.id = ""; - tr = domConstruct.create("tr", null, b); - td = domConstruct.create("td", null, tr); - td.appendChild(node); - domAttr.set(tr, { - "class": "dojoDndAvatarItem", - style: {opacity: (9 - i) / 10} - }); - } - this.node = a; - }, - destroy: function(){ - // summary: - // destructor for the avatar; called to remove all references so it can be garbage-collected - domConstruct.destroy(this.node); - this.node = false; - }, - update: function(){ - // summary: - // updates the avatar to reflect the current DnD state - domClass.toggle(this.node, "dojoDndAvatarCanDrop", this.manager.canDropFlag); - if(has("highcontrast")){ - var icon = dom.byId("a11yIcon"); - var text = '+'; // assume canDrop && copy - if (this.manager.canDropFlag && !this.manager.copy){ - text = '< '; // canDrop && move - }else if (!this.manager.canDropFlag && !this.manager.copy){ - text = "o"; //!canDrop && move - }else if(!this.manager.canDropFlag){ - text = 'x'; // !canDrop && copy - } - icon.innerHTML=text; - } - // replace text - query(("tr.dojoDndAvatarHeader td span" +(has("highcontrast") ? " span" : "")), this.node).forEach( - function(node){ - node.innerHTML = this.manager.source.generateText ? this._generateText() : ""; - }, this); - }, - _generateText: function(){ - // summary: - // generates a proper text to reflect copying or moving of items - return this.manager.nodes.length.toString(); - } -}); - -}); - -}, -'dijit/form/Button':function(){ -require({cache:{ -'url:dijit/form/templates/Button.html':"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:_onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">●</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\ttabIndex=\"-1\" role=\"presentation\" data-dojo-attach-point=\"valueNode\"\n/></span>\n"}}); -define("dijit/form/Button", [ - "require", - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.toggle - "dojo/has", // has("dijit-legacy-requires") - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.trim - "dojo/ready", - "./_FormWidget", - "./_ButtonMixin", - "dojo/text!./templates/Button.html" -], function(require, declare, domClass, has, kernel, lang, ready, _FormWidget, _ButtonMixin, template){ - -// module: -// dijit/form/Button - -// Back compat w/1.6, remove for 2.0 -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/form/DropDownButton", "dijit/form/ComboButton", "dijit/form/ToggleButton"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -return declare("dijit.form.Button", [_FormWidget, _ButtonMixin], { - // summary: - // Basically the same thing as a normal HTML button, but with special styling. - // description: - // Buttons can display a label, an icon, or both. - // A label should always be specified (through innerHTML) or the label - // attribute. It can be hidden via showLabel=false. - // example: - // | <button data-dojo-type="dijit/form/Button" onClick="...">Hello world</button> - // - // example: - // | var button1 = new Button({label: "hello world", onClick: foo}); - // | dojo.body().appendChild(button1.domNode); - - // showLabel: Boolean - // Set this to true to hide the label text and display only the icon. - // (If showLabel=false then iconClass must be specified.) - // Especially useful for toolbars. - // If showLabel=true, the label will become the title (a.k.a. tooltip/hint) of the icon. - // - // The exception case is for computers in high-contrast mode, where the label - // will still be displayed, since the icon doesn't appear. - showLabel: true, - - // iconClass: String - // Class to apply to DOMNode in button to make it display an icon - iconClass: "dijitNoIcon", - _setIconClassAttr: { node: "iconNode", type: "class" }, - - baseClass: "dijitButton", - - templateString: template, - - // Map widget attributes to DOMNode attributes. - _setValueAttr: "valueNode", - - _onClick: function(/*Event*/ e){ - // summary: - // Internal function to handle click actions - var ok = this.inherited(arguments); - if(ok){ - if(this.valueNode){ - this.valueNode.click(); - e.preventDefault(); // cancel BUTTON click and continue with hidden INPUT click - e.stopPropagation(); // avoid two events bubbling from Button widget - // leave ok = true so that subclasses can do what they need to do - } - } - return ok; - }, - - _fillContent: function(/*DomNode*/ source){ - // Overrides _Templated._fillContent(). - // If button label is specified as srcNodeRef.innerHTML rather than - // this.params.label, handle it here. - // TODO: remove the method in 2.0, parser will do it all for me - if(source && (!this.params || !("label" in this.params))){ - var sourceLabel = lang.trim(source.innerHTML); - if(sourceLabel){ - this.label = sourceLabel; // _applyAttributes will be called after buildRendering completes to update the DOM - } - } - }, - - _setShowLabelAttr: function(val){ - if(this.containerNode){ - domClass.toggle(this.containerNode, "dijitDisplayNone", !val); - } - this._set("showLabel", val); - }, - - setLabel: function(/*String*/ content){ - // summary: - // Deprecated. Use set('label', ...) instead. - kernel.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.", "", "2.0"); - this.set("label", content); - }, - - _setLabelAttr: function(/*String*/ content){ - // summary: - // Hook for set('label', ...) to work. - // description: - // Set the label (text) of the button; takes an HTML string. - // If the label is hidden (showLabel=false) then and no title has - // been specified, then label is also set as title attribute of icon. - this.inherited(arguments); - if(!this.showLabel && !("title" in this.params)){ - this.titleNode.title = lang.trim(this.containerNode.innerText || this.containerNode.textContent || ''); - } - } -}); - - -}); - - -}, -'url:dijit/layout/templates/TabContainer.html':"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n", -'dojo/dnd/move':function(){ -define("dojo/dnd/move", [ - "../_base/declare", - "../dom-geometry", "../dom-style", - "./common", "./Mover", "./Moveable" -], function(declare, domGeom, domStyle, dnd, Mover, Moveable){ - -// module: -// dojo/dnd/move - -/*===== -var __constrainedMoveableArgs = declare([Moveable.__MoveableArgs], { - // constraints: Function - // Calculates a constraint box. - // It is called in a context of the moveable object. - constraints: function(){}, - - // within: Boolean - // restrict move within boundaries. - within: false -}); -=====*/ - -var constrainedMoveable = declare("dojo.dnd.move.constrainedMoveable", Moveable, { - // object attributes (for markup) - constraints: function(){}, - within: false, - - constructor: function(node, params){ - // summary: - // an object that makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __constrainedMoveableArgs? - // an optional object with additional parameters; - // the rest is passed to the base class - if(!params){ params = {}; } - this.constraints = params.constraints; - this.within = params.within; - }, - onFirstMove: function(/*Mover*/ mover){ - // summary: - // called during the very first move notification; - // can be used to initialize coordinates, can be overwritten. - var c = this.constraintBox = this.constraints.call(this, mover); - c.r = c.l + c.w; - c.b = c.t + c.h; - if(this.within){ - var mb = domGeom.getMarginSize(mover.node); - c.r -= mb.w; - c.b -= mb.h; - } - }, - onMove: function(/*Mover*/ mover, /*Object*/ leftTop){ - // summary: - // called during every move notification; - // should actually move the node; can be overwritten. - var c = this.constraintBox, s = mover.node.style; - this.onMoving(mover, leftTop); - leftTop.l = leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l; - leftTop.t = leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t; - s.left = leftTop.l + "px"; - s.top = leftTop.t + "px"; - this.onMoved(mover, leftTop); - } -}); - -/*===== -var __boxConstrainedMoveableArgs = declare([__constrainedMoveableArgs], { - // box: Object - // a constraint box - box: {} -}); -=====*/ - -var boxConstrainedMoveable = declare("dojo.dnd.move.boxConstrainedMoveable", constrainedMoveable, { - // box: - // object attributes (for markup) - box: {}, - - constructor: function(node, params){ - // summary: - // an object, which makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __boxConstrainedMoveableArgs? - // an optional object with parameters - var box = params && params.box; - this.constraints = function(){ return box; }; - } -}); - -/*===== -var __parentConstrainedMoveableArgs = declare( [__constrainedMoveableArgs], { - // area: String - // A parent's area to restrict the move. - // Can be "margin", "border", "padding", or "content". - area: "" -}); -=====*/ - -var parentConstrainedMoveable = declare("dojo.dnd.move.parentConstrainedMoveable", constrainedMoveable, { - // area: - // object attributes (for markup) - area: "content", - - constructor: function(node, params){ - // summary: - // an object, which makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __parentConstrainedMoveableArgs? - // an optional object with parameters - var area = params && params.area; - this.constraints = function(){ - var n = this.node.parentNode, - s = domStyle.getComputedStyle(n), - mb = domGeom.getMarginBox(n, s); - if(area == "margin"){ - return mb; // Object - } - var t = domGeom.getMarginExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - if(area == "border"){ - return mb; // Object - } - t = domGeom.getBorderExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - if(area == "padding"){ - return mb; // Object - } - t = domGeom.getPadExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - return mb; // Object - }; - } -}); - - -return { - // summary: - // TODOC - constrainedMoveable: constrainedMoveable, - boxConstrainedMoveable: boxConstrainedMoveable, - parentConstrainedMoveable: parentConstrainedMoveable -}; - -}); - -}, -'dijit/_WidgetBase':function(){ -define("dijit/_WidgetBase", [ - "require", // require.toUrl - "dojo/_base/array", // array.forEach array.map - "dojo/aspect", - "dojo/_base/config", // config.blankGif - "dojo/_base/connect", // connect.connect - "dojo/_base/declare", // declare - "dojo/dom", // dom.byId - "dojo/dom-attr", // domAttr.set domAttr.remove - "dojo/dom-class", // domClass.add domClass.replace - "dojo/dom-construct", // domConstruct.destroy domConstruct.place - "dojo/dom-geometry", // isBodyLtr - "dojo/dom-style", // domStyle.set, domStyle.get - "dojo/has", - "dojo/_base/kernel", - "dojo/_base/lang", // mixin(), isArray(), etc. - "dojo/on", - "dojo/ready", - "dojo/Stateful", // Stateful - "dojo/topic", - "dojo/_base/window", // win.doc, win.body() - "./Destroyable", - "./registry" // registry.getUniqueId(), registry.findWidgets() -], function(require, array, aspect, config, connect, declare, - dom, domAttr, domClass, domConstruct, domGeometry, domStyle, has, kernel, - lang, on, ready, Stateful, topic, win, Destroyable, registry){ - -// module: -// dijit/_WidgetBase - -// Flag to make dijit load modules the app didn't explicitly request, for backwards compatibility -has.add("dijit-legacy-requires", !kernel.isAsync); - -// For back-compat, remove in 2.0. -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/_base/manager"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -// Nested hash listing attributes for each tag, all strings in lowercase. -// ex: {"div": {"style": true, "tabindex" true}, "form": { ... -var tagAttrs = {}; -function getAttrs(obj){ - var ret = {}; - for(var attr in obj){ - ret[attr.toLowerCase()] = true; - } - return ret; -} - -function nonEmptyAttrToDom(attr){ - // summary: - // Returns a setter function that copies the attribute to this.domNode, - // or removes the attribute from this.domNode, depending on whether the - // value is defined or not. - return function(val){ - domAttr[val ? "set" : "remove"](this.domNode, attr, val); - this._set(attr, val); - }; -} - -return declare("dijit._WidgetBase", [Stateful, Destroyable], { - // summary: - // Future base class for all Dijit widgets. - // description: - // Future base class for all Dijit widgets. - // _Widget extends this class adding support for various features needed by desktop. - // - // Provides stubs for widget lifecycle methods for subclasses to extend, like postMixInProperties(), buildRendering(), - // postCreate(), startup(), and destroy(), and also public API methods like set(), get(), and watch(). - // - // Widgets can provide custom setters/getters for widget attributes, which are called automatically by set(name, value). - // For an attribute XXX, define methods _setXXXAttr() and/or _getXXXAttr(). - // - // _setXXXAttr can also be a string/hash/array mapping from a widget attribute XXX to the widget's DOMNodes: - // - // - DOM node attribute - // | _setFocusAttr: {node: "focusNode", type: "attribute"} - // | _setFocusAttr: "focusNode" (shorthand) - // | _setFocusAttr: "" (shorthand, maps to this.domNode) - // Maps this.focus to this.focusNode.focus, or (last example) this.domNode.focus - // - // - DOM node innerHTML - // | _setTitleAttr: { node: "titleNode", type: "innerHTML" } - // Maps this.title to this.titleNode.innerHTML - // - // - DOM node innerText - // | _setTitleAttr: { node: "titleNode", type: "innerText" } - // Maps this.title to this.titleNode.innerText - // - // - DOM node CSS class - // | _setMyClassAttr: { node: "domNode", type: "class" } - // Maps this.myClass to this.domNode.className - // - // If the value of _setXXXAttr is an array, then each element in the array matches one of the - // formats of the above list. - // - // If the custom setter is null, no action is performed other than saving the new value - // in the widget (in this). - // - // If no custom setter is defined for an attribute, then it will be copied - // to this.focusNode (if the widget defines a focusNode), or this.domNode otherwise. - // That's only done though for attributes that match DOMNode attributes (title, - // alt, aria-labelledby, etc.) - - // id: [const] String - // A unique, opaque ID string that can be assigned by users or by the - // system. If the developer passes an ID which is known not to be - // unique, the specified ID is ignored and the system-generated ID is - // used instead. - id: "", - _setIdAttr: "domNode", // to copy to this.domNode even for auto-generated id's - - // lang: [const] String - // Rarely used. Overrides the default Dojo locale used to render this widget, - // as defined by the [HTML LANG](http://www.w3.org/TR/html401/struct/dirlang.html#adef-lang) attribute. - // Value must be among the list of locales specified during by the Dojo bootstrap, - // formatted according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt) (like en-us). - lang: "", - // set on domNode even when there's a focus node. but don't set lang="", since that's invalid. - _setLangAttr: nonEmptyAttrToDom("lang"), - - // dir: [const] String - // Bi-directional support, as defined by the [HTML DIR](http://www.w3.org/TR/html401/struct/dirlang.html#adef-dir) - // attribute. Either left-to-right "ltr" or right-to-left "rtl". If undefined, widgets renders in page's - // default direction. - dir: "", - // set on domNode even when there's a focus node. but don't set dir="", since that's invalid. - _setDirAttr: nonEmptyAttrToDom("dir"), // to set on domNode even when there's a focus node - - // textDir: String - // Bi-directional support, the main variable which is responsible for the direction of the text. - // The text direction can be different than the GUI direction by using this parameter in creation - // of a widget. - // - // Allowed values: - // - // 1. "ltr" - // 2. "rtl" - // 3. "auto" - contextual the direction of a text defined by first strong letter. - // - // By default is as the page direction. - textDir: "", - - // class: String - // HTML class attribute - "class": "", - _setClassAttr: { node: "domNode", type: "class" }, - - // style: String||Object - // HTML style attributes as cssText string or name/value hash - style: "", - - // title: String - // HTML title attribute. - // - // For form widgets this specifies a tooltip to display when hovering over - // the widget (just like the native HTML title attribute). - // - // For TitlePane or for when this widget is a child of a TabContainer, AccordionContainer, - // etc., it's used to specify the tab label, accordion pane title, etc. - title: "", - - // tooltip: String - // When this widget's title attribute is used to for a tab label, accordion pane title, etc., - // this specifies the tooltip to appear when the mouse is hovered over that text. - tooltip: "", - - // baseClass: [protected] String - // Root CSS class of the widget (ex: dijitTextBox), used to construct CSS classes to indicate - // widget state. - baseClass: "", - - // srcNodeRef: [readonly] DomNode - // pointer to original DOM node - srcNodeRef: null, - - // domNode: [readonly] DomNode - // This is our visible representation of the widget! Other DOM - // Nodes may by assigned to other properties, usually through the - // template system's data-dojo-attach-point syntax, but the domNode - // property is the canonical "top level" node in widget UI. - domNode: null, - - // containerNode: [readonly] DomNode - // Designates where children of the source DOM node will be placed. - // "Children" in this case refers to both DOM nodes and widgets. - // For example, for myWidget: - // - // | <div data-dojo-type=myWidget> - // | <b> here's a plain DOM node - // | <span data-dojo-type=subWidget>and a widget</span> - // | <i> and another plain DOM node </i> - // | </div> - // - // containerNode would point to: - // - // | <b> here's a plain DOM node - // | <span data-dojo-type=subWidget>and a widget</span> - // | <i> and another plain DOM node </i> - // - // In templated widgets, "containerNode" is set via a - // data-dojo-attach-point assignment. - // - // containerNode must be defined for any widget that accepts innerHTML - // (like ContentPane or BorderContainer or even Button), and conversely - // is null for widgets that don't, like TextBox. - containerNode: null, - - // ownerDocument: [const] Document? - // The document this widget belongs to. If not specified to constructor, will default to - // srcNodeRef.ownerDocument, or if no sourceRef specified, then to dojo/_base/window::doc - ownerDocument: null, - _setOwnerDocumentAttr: function(val){ - // this setter is merely to avoid automatically trying to set this.domNode.ownerDocument - this._set("ownerDocument", val); - }, - -/*===== - // _started: [readonly] Boolean - // startup() has completed. - _started: false, -=====*/ - - // attributeMap: [protected] Object - // Deprecated. Instead of attributeMap, widget should have a _setXXXAttr attribute - // for each XXX attribute to be mapped to the DOM. - // - // attributeMap sets up a "binding" between attributes (aka properties) - // of the widget and the widget's DOM. - // Changes to widget attributes listed in attributeMap will be - // reflected into the DOM. - // - // For example, calling set('title', 'hello') - // on a TitlePane will automatically cause the TitlePane's DOM to update - // with the new title. - // - // attributeMap is a hash where the key is an attribute of the widget, - // and the value reflects a binding to a: - // - // - DOM node attribute - // | focus: {node: "focusNode", type: "attribute"} - // Maps this.focus to this.focusNode.focus - // - // - DOM node innerHTML - // | title: { node: "titleNode", type: "innerHTML" } - // Maps this.title to this.titleNode.innerHTML - // - // - DOM node innerText - // | title: { node: "titleNode", type: "innerText" } - // Maps this.title to this.titleNode.innerText - // - // - DOM node CSS class - // | myClass: { node: "domNode", type: "class" } - // Maps this.myClass to this.domNode.className - // - // If the value is an array, then each element in the array matches one of the - // formats of the above list. - // - // There are also some shorthands for backwards compatibility: - // - // - string --> { node: string, type: "attribute" }, for example: - // - // | "focusNode" ---> { node: "focusNode", type: "attribute" } - // - // - "" --> { node: "domNode", type: "attribute" } - attributeMap: {}, - - // _blankGif: [protected] String - // Path to a blank 1x1 image. - // Used by `<img>` nodes in templates that really get their image via CSS background-image. - _blankGif: config.blankGif || require.toUrl("dojo/resources/blank.gif"), - - //////////// INITIALIZATION METHODS /////////////////////////////////////// - - /*===== - constructor: function(params, srcNodeRef){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified: - // - // - use srcNodeRef.innerHTML as my contents - // - if this is a behavioral widget then apply behavior to that srcNodeRef - // - otherwise, replace srcNodeRef with my generated DOM tree - }, - =====*/ - - postscript: function(/*Object?*/params, /*DomNode|String*/srcNodeRef){ - // summary: - // Kicks off widget instantiation. See create() for details. - // tags: - // private - this.create(params, srcNodeRef); - }, - - create: function(params, srcNodeRef){ - // summary: - // Kick off the life-cycle of a widget - // description: - // Create calls a number of widget methods (postMixInProperties, buildRendering, postCreate, - // etc.), some of which of you'll want to override. See http://dojotoolkit.org/reference-guide/dijit/_WidgetBase.html - // for a discussion of the widget creation lifecycle. - // - // Of course, adventurous developers could override create entirely, but this should - // only be done as a last resort. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified: - // - // - use srcNodeRef.innerHTML as my contents - // - if this is a behavioral widget then apply behavior to that srcNodeRef - // - otherwise, replace srcNodeRef with my generated DOM tree - // tags: - // private - - // store pointer to original DOM tree - this.srcNodeRef = dom.byId(srcNodeRef); - - // No longer used, remove for 2.0. - this._connects = []; - this._supportingWidgets = []; - - // this is here for back-compat, remove in 2.0 (but check NodeList-instantiate.html test) - if(this.srcNodeRef && (typeof this.srcNodeRef.id == "string")){ this.id = this.srcNodeRef.id; } - - // mix in our passed parameters - if(params){ - this.params = params; - lang.mixin(this, params); - } - this.postMixInProperties(); - - // Generate an id for the widget if one wasn't specified, or it was specified as id: undefined. - // Do this before buildRendering() because it might expect the id to be there. - if(!this.id){ - this.id = registry.getUniqueId(this.declaredClass.replace(/\./g,"_")); - if(this.params){ - // if params contains {id: undefined}, prevent _applyAttributes() from processing it - delete this.params.id; - } - } - - // The document and <body> node this widget is associated with - this.ownerDocument = this.ownerDocument || (this.srcNodeRef ? this.srcNodeRef.ownerDocument : win.doc); - this.ownerDocumentBody = win.body(this.ownerDocument); - - registry.add(this); - - this.buildRendering(); - - var deleteSrcNodeRef; - - if(this.domNode){ - // Copy attributes listed in attributeMap into the [newly created] DOM for the widget. - // Also calls custom setters for all attributes with custom setters. - this._applyAttributes(); - - // If srcNodeRef was specified, then swap out original srcNode for this widget's DOM tree. - // For 2.0, move this after postCreate(). postCreate() shouldn't depend on the - // widget being attached to the DOM since it isn't when a widget is created programmatically like - // new MyWidget({}). See #11635. - var source = this.srcNodeRef; - if(source && source.parentNode && this.domNode !== source){ - source.parentNode.replaceChild(this.domNode, source); - deleteSrcNodeRef = true; - } - - // Note: for 2.0 may want to rename widgetId to dojo._scopeName + "_widgetId", - // assuming that dojo._scopeName even exists in 2.0 - this.domNode.setAttribute("widgetId", this.id); - } - this.postCreate(); - - // If srcNodeRef has been processed and removed from the DOM (e.g. TemplatedWidget) then delete it to allow GC. - // I think for back-compatibility it isn't deleting srcNodeRef until after postCreate() has run. - if(deleteSrcNodeRef){ - delete this.srcNodeRef; - } - - this._created = true; - }, - - _applyAttributes: function(){ - // summary: - // Step during widget creation to copy widget attributes to the - // DOM according to attributeMap and _setXXXAttr objects, and also to call - // custom _setXXXAttr() methods. - // - // Skips over blank/false attribute values, unless they were explicitly specified - // as parameters to the widget, since those are the default anyway, - // and setting tabIndex="" is different than not setting tabIndex at all. - // - // For backwards-compatibility reasons attributeMap overrides _setXXXAttr when - // _setXXXAttr is a hash/string/array, but _setXXXAttr as a functions override attributeMap. - // tags: - // private - - // Get list of attributes where this.set(name, value) will do something beyond - // setting this[name] = value. Specifically, attributes that have: - // - associated _setXXXAttr() method/hash/string/array - // - entries in attributeMap (remove this for 2.0); - var ctor = this.constructor, - list = ctor._setterAttrs; - if(!list){ - list = (ctor._setterAttrs = []); - for(var attr in this.attributeMap){ - list.push(attr); - } - - var proto = ctor.prototype; - for(var fxName in proto){ - if(fxName in this.attributeMap){ continue; } - var setterName = "_set" + fxName.replace(/^[a-z]|-[a-zA-Z]/g, function(c){ return c.charAt(c.length-1).toUpperCase(); }) + "Attr"; - if(setterName in proto){ - list.push(fxName); - } - } - } - - // Call this.set() for each property that was either specified as parameter to constructor, - // or is in the list found above. For correlated properties like value and displayedValue, the one - // specified as a parameter should take precedence. - // Particularly important for new DateTextBox({displayedValue: ...}) since DateTextBox's default value is - // NaN and thus is not ignored like a default value of "". - - // Step 1: Save the current values of the widget properties that were specified as parameters to the constructor. - // Generally this.foo == this.params.foo, except if postMixInProperties() changed the value of this.foo. - var params = {}; - for(var key in this.params || {}){ - params[key] = this[key]; - } - - // Step 2: Call set() for each property that wasn't passed as a parameter to the constructor - array.forEach(list, function(attr){ - if(attr in params){ - // skip this one, do it below - }else if(this[attr]){ - this.set(attr, this[attr]); - } - }, this); - - // Step 3: Call set() for each property that was specified as parameter to constructor. - // Use params hash created above to ignore side effects from step #2 above. - for(key in params){ - this.set(key, params[key]); - } - }, - - postMixInProperties: function(){ - // summary: - // Called after the parameters to the widget have been read-in, - // but before the widget template is instantiated. Especially - // useful to set properties that are referenced in the widget - // template. - // tags: - // protected - }, - - buildRendering: function(){ - // summary: - // Construct the UI for this widget, setting this.domNode. - // Most widgets will mixin `dijit._TemplatedMixin`, which implements this method. - // tags: - // protected - - if(!this.domNode){ - // Create root node if it wasn't created by _Templated - this.domNode = this.srcNodeRef || this.ownerDocument.createElement("div"); - } - - // baseClass is a single class name or occasionally a space-separated list of names. - // Add those classes to the DOMNode. If RTL mode then also add with Rtl suffix. - // TODO: make baseClass custom setter - if(this.baseClass){ - var classes = this.baseClass.split(" "); - if(!this.isLeftToRight()){ - classes = classes.concat( array.map(classes, function(name){ return name+"Rtl"; })); - } - domClass.add(this.domNode, classes); - } - }, - - postCreate: function(){ - // summary: - // Processing after the DOM fragment is created - // description: - // Called after the DOM fragment has been created, but not necessarily - // added to the document. Do not include any operations which rely on - // node dimensions or placement. - // tags: - // protected - }, - - startup: function(){ - // summary: - // Processing after the DOM fragment is added to the document - // description: - // Called after a widget and its children have been created and added to the page, - // and all related widgets have finished their create() cycle, up through postCreate(). - // This is useful for composite widgets that need to control or layout sub-widgets. - // Many layout widgets can use this as a wiring phase. - if(this._started){ return; } - this._started = true; - array.forEach(this.getChildren(), function(obj){ - if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ - obj.startup(); - obj._started = true; - } - }); - }, - - //////////// DESTROY FUNCTIONS //////////////////////////////// - - destroyRecursive: function(/*Boolean?*/ preserveDom){ - // summary: - // Destroy this widget and its descendants - // description: - // This is the generic "destructor" function that all widget users - // should call to cleanly discard with a widget. Once a widget is - // destroyed, it is removed from the manager object. - // preserveDom: - // If true, this method will leave the original DOM structure - // alone of descendant Widgets. Note: This will NOT work with - // dijit._Templated widgets. - - this._beingDestroyed = true; - this.destroyDescendants(preserveDom); - this.destroy(preserveDom); - }, - - destroy: function(/*Boolean*/ preserveDom){ - // summary: - // Destroy this widget, but not its descendants. - // This method will, however, destroy internal widgets such as those used within a template. - // preserveDom: Boolean - // If true, this method will leave the original DOM structure alone. - // Note: This will not yet work with _Templated widgets - - this._beingDestroyed = true; - this.uninitialize(); - - function destroy(w){ - if(w.destroyRecursive){ - w.destroyRecursive(preserveDom); - }else if(w.destroy){ - w.destroy(preserveDom); - } - } - - // Back-compat, remove for 2.0 - array.forEach(this._connects, lang.hitch(this, "disconnect")); - array.forEach(this._supportingWidgets, destroy); - - // Destroy supporting widgets, but not child widgets under this.containerNode (for 2.0, destroy child widgets - // here too). if() statement is to guard against exception if destroy() called multiple times (see #15815). - if(this.domNode){ - array.forEach(registry.findWidgets(this.domNode, this.containerNode), destroy); - } - - this.destroyRendering(preserveDom); - registry.remove(this.id); - this._destroyed = true; - }, - - destroyRendering: function(/*Boolean?*/ preserveDom){ - // summary: - // Destroys the DOM nodes associated with this widget - // preserveDom: - // If true, this method will leave the original DOM structure alone - // during tear-down. Note: this will not work with _Templated - // widgets yet. - // tags: - // protected - - if(this.bgIframe){ - this.bgIframe.destroy(preserveDom); - delete this.bgIframe; - } - - if(this.domNode){ - if(preserveDom){ - domAttr.remove(this.domNode, "widgetId"); - }else{ - domConstruct.destroy(this.domNode); - } - delete this.domNode; - } - - if(this.srcNodeRef){ - if(!preserveDom){ - domConstruct.destroy(this.srcNodeRef); - } - delete this.srcNodeRef; - } - }, - - destroyDescendants: function(/*Boolean?*/ preserveDom){ - // summary: - // Recursively destroy the children of this widget and their - // descendants. - // preserveDom: - // If true, the preserveDom attribute is passed to all descendant - // widget's .destroy() method. Not for use with _Templated - // widgets. - - // get all direct descendants and destroy them recursively - array.forEach(this.getChildren(), function(widget){ - if(widget.destroyRecursive){ - widget.destroyRecursive(preserveDom); - } - }); - }, - - uninitialize: function(){ - // summary: - // Deprecated. Override destroy() instead to implement custom widget tear-down - // behavior. - // tags: - // protected - return false; - }, - - ////////////////// GET/SET, CUSTOM SETTERS, ETC. /////////////////// - - _setStyleAttr: function(/*String||Object*/ value){ - // summary: - // Sets the style attribute of the widget according to value, - // which is either a hash like {height: "5px", width: "3px"} - // or a plain string - // description: - // Determines which node to set the style on based on style setting - // in attributeMap. - // tags: - // protected - - var mapNode = this.domNode; - - // Note: technically we should revert any style setting made in a previous call - // to his method, but that's difficult to keep track of. - - if(lang.isObject(value)){ - domStyle.set(mapNode, value); - }else{ - if(mapNode.style.cssText){ - mapNode.style.cssText += "; " + value; - }else{ - mapNode.style.cssText = value; - } - } - - this._set("style", value); - }, - - _attrToDom: function(/*String*/ attr, /*String*/ value, /*Object?*/ commands){ - // summary: - // Reflect a widget attribute (title, tabIndex, duration etc.) to - // the widget DOM, as specified by commands parameter. - // If commands isn't specified then it's looked up from attributeMap. - // Note some attributes like "type" - // cannot be processed this way as they are not mutable. - // attr: - // Name of member variable (ex: "focusNode" maps to this.focusNode) pointing - // to DOMNode inside the widget, or alternately pointing to a subwidget - // tags: - // private - - commands = arguments.length >= 3 ? commands : this.attributeMap[attr]; - - array.forEach(lang.isArray(commands) ? commands : [commands], function(command){ - - // Get target node and what we are doing to that node - var mapNode = this[command.node || command || "domNode"]; // DOM node - var type = command.type || "attribute"; // class, innerHTML, innerText, or attribute - - switch(type){ - case "attribute": - if(lang.isFunction(value)){ // functions execute in the context of the widget - value = lang.hitch(this, value); - } - - // Get the name of the DOM node attribute; usually it's the same - // as the name of the attribute in the widget (attr), but can be overridden. - // Also maps handler names to lowercase, like onSubmit --> onsubmit - var attrName = command.attribute ? command.attribute : - (/^on[A-Z][a-zA-Z]*$/.test(attr) ? attr.toLowerCase() : attr); - - if(mapNode.tagName){ - // Normal case, mapping to a DOMNode. Note that modern browsers will have a mapNode.set() - // method, but for consistency we still call domAttr - domAttr.set(mapNode, attrName, value); - }else{ - // mapping to a sub-widget - mapNode.set(attrName, value); - } - break; - case "innerText": - mapNode.innerHTML = ""; - mapNode.appendChild(this.ownerDocument.createTextNode(value)); - break; - case "innerHTML": - mapNode.innerHTML = value; - break; - case "class": - domClass.replace(mapNode, value, this[attr]); - break; - } - }, this); - }, - - get: function(name){ - // summary: - // Get a property from a widget. - // name: - // The property to get. - // description: - // Get a named property from a widget. The property may - // potentially be retrieved via a getter method. If no getter is defined, this - // just retrieves the object's property. - // - // For example, if the widget has properties `foo` and `bar` - // and a method named `_getFooAttr()`, calling: - // `myWidget.get("foo")` would be equivalent to calling - // `widget._getFooAttr()` and `myWidget.get("bar")` - // would be equivalent to the expression - // `widget.bar2` - var names = this._getAttrNames(name); - return this[names.g] ? this[names.g]() : this[name]; - }, - - set: function(name, value){ - // summary: - // Set a property on a widget - // name: - // The property to set. - // value: - // The value to set in the property. - // description: - // Sets named properties on a widget which may potentially be handled by a - // setter in the widget. - // - // For example, if the widget has properties `foo` and `bar` - // and a method named `_setFooAttr()`, calling - // `myWidget.set("foo", "Howdy!")` would be equivalent to calling - // `widget._setFooAttr("Howdy!")` and `myWidget.set("bar", 3)` - // would be equivalent to the statement `widget.bar = 3;` - // - // set() may also be called with a hash of name/value pairs, ex: - // - // | myWidget.set({ - // | foo: "Howdy", - // | bar: 3 - // | }); - // - // This is equivalent to calling `set(foo, "Howdy")` and `set(bar, 3)` - - if(typeof name === "object"){ - for(var x in name){ - this.set(x, name[x]); - } - return this; - } - var names = this._getAttrNames(name), - setter = this[names.s]; - if(lang.isFunction(setter)){ - // use the explicit setter - var result = setter.apply(this, Array.prototype.slice.call(arguments, 1)); - }else{ - // Mapping from widget attribute to DOMNode/subwidget attribute/value/etc. - // Map according to: - // 1. attributeMap setting, if one exists (TODO: attributeMap deprecated, remove in 2.0) - // 2. _setFooAttr: {...} type attribute in the widget (if one exists) - // 3. apply to focusNode or domNode if standard attribute name, excluding funcs like onClick. - // Checks if an attribute is a "standard attribute" by whether the DOMNode JS object has a similar - // attribute name (ex: accept-charset attribute matches jsObject.acceptCharset). - // Note also that Tree.focusNode() is a function not a DOMNode, so test for that. - var defaultNode = this.focusNode && !lang.isFunction(this.focusNode) ? "focusNode" : "domNode", - tag = this[defaultNode].tagName, - attrsForTag = tagAttrs[tag] || (tagAttrs[tag] = getAttrs(this[defaultNode])), - map = name in this.attributeMap ? this.attributeMap[name] : - names.s in this ? this[names.s] : - ((names.l in attrsForTag && typeof value != "function") || - /^aria-|^data-|^role$/.test(name)) ? defaultNode : null; - if(map != null){ - this._attrToDom(name, value, map); - } - this._set(name, value); - } - return result || this; - }, - - _attrPairNames: {}, // shared between all widgets - _getAttrNames: function(name){ - // summary: - // Helper function for get() and set(). - // Caches attribute name values so we don't do the string ops every time. - // tags: - // private - - var apn = this._attrPairNames; - if(apn[name]){ return apn[name]; } - var uc = name.replace(/^[a-z]|-[a-zA-Z]/g, function(c){ return c.charAt(c.length-1).toUpperCase(); }); - return (apn[name] = { - n: name+"Node", - s: "_set"+uc+"Attr", // converts dashes to camel case, ex: accept-charset --> _setAcceptCharsetAttr - g: "_get"+uc+"Attr", - l: uc.toLowerCase() // lowercase name w/out dashes, ex: acceptcharset - }); - }, - - _set: function(/*String*/ name, /*anything*/ value){ - // summary: - // Helper function to set new value for specified attribute, and call handlers - // registered with watch() if the value has changed. - var oldValue = this[name]; - this[name] = value; - if(this._created && value !== oldValue){ - if(this._watchCallbacks){ - this._watchCallbacks(name, oldValue, value); - } - this.emit("attrmodified-" + name, { - detail: { - prevValue: oldValue, - newValue: value - } - }); - } - }, - - emit: function(/*String*/ type, /*Object?*/ eventObj, /*Array?*/ callbackArgs){ - // summary: - // Used by widgets to signal that a synthetic event occurred, ex: - // | myWidget.emit("attrmodified-selectedChildWidget", {}). - // - // Emits an event on this.domNode named type.toLowerCase(), based on eventObj. - // Also calls onType() method, if present, and returns value from that method. - // By default passes eventObj to callback, but will pass callbackArgs instead, if specified. - // Modifies eventObj by adding missing parameters (bubbles, cancelable, widget). - // tags: - // protected - - // Specify fallback values for bubbles, cancelable in case they are not set in eventObj. - // Also set pointer to widget, although since we can't add a pointer to the widget for native events - // (see #14729), maybe we shouldn't do it here? - eventObj = eventObj || {}; - if(eventObj.bubbles === undefined){ eventObj.bubbles = true; } - if(eventObj.cancelable === undefined){ eventObj.cancelable = true; } - if(!eventObj.detail){ eventObj.detail = {}; } - eventObj.detail.widget = this; - - var ret, callback = this["on"+type]; - if(callback){ - ret = callback.apply(this, callbackArgs ? callbackArgs : [eventObj]); - } - - // Emit event, but avoid spurious emit()'s as parent sets properties on child during startup/destroy - if(this._started && !this._beingDestroyed){ - on.emit(this.domNode, type.toLowerCase(), eventObj); - } - - return ret; - }, - - on: function(/*String|Function*/ type, /*Function*/ func){ - // summary: - // Call specified function when event occurs, ex: myWidget.on("click", function(){ ... }). - // type: - // Name of event (ex: "click") or extension event like touch.press. - // description: - // Call specified function when event `type` occurs, ex: `myWidget.on("click", function(){ ... })`. - // Note that the function is not run in any particular scope, so if (for example) you want it to run in the - // widget's scope you must do `myWidget.on("click", lang.hitch(myWidget, func))`. - - // For backwards compatibility, if there's an onType() method in the widget then connect to that. - // Remove in 2.0. - var widgetMethod = this._onMap(type); - if(widgetMethod){ - return aspect.after(this, widgetMethod, func, true); - } - - // Otherwise, just listen for the event on this.domNode. - return this.own(on(this.domNode, type, func))[0]; - }, - - _onMap: function(/*String|Function*/ type){ - // summary: - // Maps on() type parameter (ex: "mousemove") to method name (ex: "onMouseMove"). - // If type is a synthetic event like touch.press then returns undefined. - var ctor = this.constructor, map = ctor._onMap; - if(!map){ - map = (ctor._onMap = {}); - for(var attr in ctor.prototype){ - if(/^on/.test(attr)){ - map[attr.replace(/^on/, "").toLowerCase()] = attr; - } - } - } - return map[typeof type == "string" && type.toLowerCase()]; // String - }, - - toString: function(){ - // summary: - // Returns a string that represents the widget - // description: - // When a widget is cast to a string, this method will be used to generate the - // output. Currently, it does not implement any sort of reversible - // serialization. - return '[Widget ' + this.declaredClass + ', ' + (this.id || 'NO ID') + ']'; // String - }, - - getChildren: function(){ - // summary: - // Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode. - // Does not return nested widgets, nor widgets that are part of this widget's template. - return this.containerNode ? registry.findWidgets(this.containerNode) : []; // dijit/_WidgetBase[] - }, - - getParent: function(){ - // summary: - // Returns the parent widget of this widget - return registry.getEnclosingWidget(this.domNode.parentNode); - }, - - connect: function( - /*Object|null*/ obj, - /*String|Function*/ event, - /*String|Function*/ method){ - // summary: - // Deprecated, will be removed in 2.0, use this.own(on(...)) or this.own(aspect.after(...)) instead. - // - // Connects specified obj/event to specified method of this object - // and registers for disconnect() on widget destroy. - // - // Provide widget-specific analog to dojo.connect, except with the - // implicit use of this widget as the target object. - // Events connected with `this.connect` are disconnected upon - // destruction. - // returns: - // A handle that can be passed to `disconnect` in order to disconnect before - // the widget is destroyed. - // example: - // | var btn = new Button(); - // | // when foo.bar() is called, call the listener we're going to - // | // provide in the scope of btn - // | btn.connect(foo, "bar", function(){ - // | console.debug(this.toString()); - // | }); - // tags: - // protected - - return this.own(connect.connect(obj, event, this, method))[0]; // handle - }, - - disconnect: function(handle){ - // summary: - // Deprecated, will be removed in 2.0, use handle.remove() instead. - // - // Disconnects handle created by `connect`. - // tags: - // protected - - handle.remove(); - }, - - subscribe: function(t, method){ - // summary: - // Deprecated, will be removed in 2.0, use this.own(topic.subscribe()) instead. - // - // Subscribes to the specified topic and calls the specified method - // of this object and registers for unsubscribe() on widget destroy. - // - // Provide widget-specific analog to dojo.subscribe, except with the - // implicit use of this widget as the target object. - // t: String - // The topic - // method: Function - // The callback - // example: - // | var btn = new Button(); - // | // when /my/topic is published, this button changes its label to - // | // be the parameter of the topic. - // | btn.subscribe("/my/topic", function(v){ - // | this.set("label", v); - // | }); - // tags: - // protected - return this.own(topic.subscribe(t, lang.hitch(this, method)))[0]; // handle - }, - - unsubscribe: function(/*Object*/ handle){ - // summary: - // Deprecated, will be removed in 2.0, use handle.remove() instead. - // - // Unsubscribes handle created by this.subscribe. - // Also removes handle from this widget's list of subscriptions - // tags: - // protected - - handle.remove(); - }, - - isLeftToRight: function(){ - // summary: - // Return this widget's explicit or implicit orientation (true for LTR, false for RTL) - // tags: - // protected - return this.dir ? (this.dir == "ltr") : domGeometry.isBodyLtr(this.ownerDocument); //Boolean - }, - - isFocusable: function(){ - // summary: - // Return true if this widget can currently be focused - // and false if not - return this.focus && (domStyle.get(this.domNode, "display") != "none"); - }, - - placeAt: function(/* String|DomNode|_Widget */ reference, /* String|Int? */ position){ - // summary: - // Place this widget somewhere in the DOM based - // on standard domConstruct.place() conventions. - // description: - // A convenience function provided in all _Widgets, providing a simple - // shorthand mechanism to put an existing (or newly created) Widget - // somewhere in the dom, and allow chaining. - // reference: - // Widget, DOMNode, or id of widget or DOMNode - // position: - // If reference is a widget (or id of widget), and that widget has an ".addChild" method, - // it will be called passing this widget instance into that method, supplying the optional - // position index passed. In this case position (if specified) should be an integer. - // - // If reference is a DOMNode (or id matching a DOMNode but not a widget), - // the position argument can be a numeric index or a string - // "first", "last", "before", or "after", same as dojo/dom-construct::place(). - // returns: dijit/_WidgetBase - // Provides a useful return of the newly created dijit._Widget instance so you - // can "chain" this function by instantiating, placing, then saving the return value - // to a variable. - // example: - // | // create a Button with no srcNodeRef, and place it in the body: - // | var button = new Button({ label:"click" }).placeAt(win.body()); - // | // now, 'button' is still the widget reference to the newly created button - // | button.on("click", function(e){ console.log('click'); })); - // example: - // | // create a button out of a node with id="src" and append it to id="wrapper": - // | var button = new Button({},"src").placeAt("wrapper"); - // example: - // | // place a new button as the first element of some div - // | var button = new Button({ label:"click" }).placeAt("wrapper","first"); - // example: - // | // create a contentpane and add it to a TabContainer - // | var tc = dijit.byId("myTabs"); - // | new ContentPane({ href:"foo.html", title:"Wow!" }).placeAt(tc) - - var refWidget = !reference.tagName && registry.byId(reference); - if(refWidget && refWidget.addChild && (!position || typeof position === "number")){ - // Adding this to refWidget and can use refWidget.addChild() to handle everything. - refWidget.addChild(this, position); - }else{ - // "reference" is a plain DOMNode, or we can't use refWidget.addChild(). Use domConstruct.place() and - // target refWidget.containerNode for nested placement (position==number, "first", "last", "only"), and - // refWidget.domNode otherwise ("after"/"before"/"replace"). (But not supported officially, see #14946.) - var ref = refWidget ? - (refWidget.containerNode && !/after|before|replace/.test(position||"") ? - refWidget.containerNode : refWidget.domNode) : dom.byId(reference, this.ownerDocument); - domConstruct.place(this.domNode, ref, position); - - // Start this iff it has a parent widget that's already started. - if(!this._started && (this.getParent() || {})._started){ - this.startup(); - } - } - return this; - }, - - getTextDir: function(/*String*/ text,/*String*/ originalDir){ - // summary: - // Return direction of the text. - // The function overridden in the _BidiSupport module, - // its main purpose is to calculate the direction of the - // text, if was defined by the programmer through textDir. - // tags: - // protected. - return originalDir; - }, - - applyTextDir: function(/*===== element, text =====*/){ - // summary: - // The function overridden in the _BidiSupport module, - // originally used for setting element.dir according to this.textDir. - // In this case does nothing. - // element: DOMNode - // text: String - // tags: - // protected. - }, - - defer: function(fcn, delay){ - // summary: - // Wrapper to setTimeout to avoid deferred functions executing - // after the originating widget has been destroyed. - // Returns an object handle with a remove method (that returns null) (replaces clearTimeout). - // fcn: function reference - // delay: Optional number (defaults to 0) - // tags: - // protected. - var timer = setTimeout(lang.hitch(this, - function(){ - timer = null; - if(!this._destroyed){ - lang.hitch(this, fcn)(); - } - }), - delay || 0 - ); - return { - remove: function(){ - if(timer){ - clearTimeout(timer); - timer = null; - } - return null; // so this works well: handle = handle.remove(); - } - }; - } -}); - -}); - -}, -'dijit/layout/_TabContainerBase':function(){ -require({cache:{ -'url:dijit/layout/templates/TabContainer.html':"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n"}}); -define("dijit/layout/_TabContainerBase", [ - "dojo/text!./templates/TabContainer.html", - "./StackContainer", - "./utils", // marginBox2contextBox, layoutChildren - "../_TemplatedMixin", - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add - "dojo/dom-geometry", // domGeometry.contentBox - "dojo/dom-style" // domStyle.style -], function(template, StackContainer, layoutUtils, _TemplatedMixin, declare, domClass, domGeometry, domStyle){ - -// module: -// dijit/layout/_TabContainerBase - - -return declare("dijit.layout._TabContainerBase", [StackContainer, _TemplatedMixin], { - // summary: - // Abstract base class for TabContainer. Must define _makeController() to instantiate - // and return the widget that displays the tab labels - // description: - // A TabContainer is a container that has multiple panes, but shows only - // one pane at a time. There are a set of tabs corresponding to each pane, - // where each tab has the name (aka title) of the pane, and optionally a close button. - - // tabPosition: String - // Defines where tabs go relative to tab content. - // "top", "bottom", "left-h", "right-h" - tabPosition: "top", - - baseClass: "dijitTabContainer", - - // tabStrip: [const] Boolean - // Defines whether the tablist gets an extra class for layouting, putting a border/shading - // around the set of tabs. Not supported by claro theme. - tabStrip: false, - - // nested: [const] Boolean - // If true, use styling for a TabContainer nested inside another TabContainer. - // For tundra etc., makes tabs look like links, and hides the outer - // border since the outer TabContainer already has a border. - nested: false, - - templateString: template, - - postMixInProperties: function(){ - // set class name according to tab position, ex: dijitTabContainerTop - this.baseClass += this.tabPosition.charAt(0).toUpperCase() + this.tabPosition.substr(1).replace(/-.*/, ""); - - this.srcNodeRef && domStyle.set(this.srcNodeRef, "visibility", "hidden"); - - this.inherited(arguments); - }, - - buildRendering: function(){ - this.inherited(arguments); - - // Create the tab list that will have a tab (a.k.a. tab button) for each tab panel - this.tablist = this._makeController(this.tablistNode); - - if(!this.doLayout){ domClass.add(this.domNode, "dijitTabContainerNoLayout"); } - - if(this.nested){ - /* workaround IE's lack of support for "a > b" selectors by - * tagging each node in the template. - */ - domClass.add(this.domNode, "dijitTabContainerNested"); - domClass.add(this.tablist.containerNode, "dijitTabContainerTabListNested"); - domClass.add(this.tablistSpacer, "dijitTabContainerSpacerNested"); - domClass.add(this.containerNode, "dijitTabPaneWrapperNested"); - }else{ - domClass.add(this.domNode, "tabStrip-" + (this.tabStrip ? "enabled" : "disabled")); - } - }, - - _setupChild: function(/*dijit/_WidgetBase*/ tab){ - // Overrides StackContainer._setupChild(). - domClass.add(tab.domNode, "dijitTabPane"); - this.inherited(arguments); - }, - - startup: function(){ - if(this._started){ return; } - - // wire up the tablist and its tabs - this.tablist.startup(); - - this.inherited(arguments); - }, - - layout: function(){ - // Overrides StackContainer.layout(). - // Configure the content pane to take up all the space except for where the tabs are - - if(!this._contentBox || typeof(this._contentBox.l) == "undefined"){return;} - - var sc = this.selectedChildWidget; - - if(this.doLayout){ - // position and size the titles and the container node - var titleAlign = this.tabPosition.replace(/-h/, ""); - this.tablist.layoutAlign = titleAlign; - var children = [this.tablist, { - domNode: this.tablistSpacer, - layoutAlign: titleAlign - }, { - domNode: this.containerNode, - layoutAlign: "client" - }]; - layoutUtils.layoutChildren(this.domNode, this._contentBox, children); - - // Compute size to make each of my children. - // children[2] is the margin-box size of this.containerNode, set by layoutChildren() call above - this._containerContentBox = layoutUtils.marginBox2contentBox(this.containerNode, children[2]); - - if(sc && sc.resize){ - sc.resize(this._containerContentBox); - } - }else{ - // just layout the tab controller, so it can position left/right buttons etc. - if(this.tablist.resize){ - //make the tabs zero width so that they don't interfere with width calc, then reset - var s = this.tablist.domNode.style; - s.width="0"; - var width = domGeometry.getContentBox(this.domNode).w; - s.width=""; - this.tablist.resize({w: width}); - } - - // and call resize() on the selected pane just to tell it that it's been made visible - if(sc && sc.resize){ - sc.resize(); - } - } - }, - - destroy: function(){ - if(this.tablist){ - this.tablist.destroy(); - } - this.inherited(arguments); - } -}); - -}); - -}, -'dijit/form/Form':function(){ -define("dijit/form/Form", [ - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/_base/event", // event.stop - "dojo/_base/kernel", // kernel.deprecated - "dojo/sniff", // has("ie") - "../_Widget", - "../_TemplatedMixin", - "./_FormMixin", - "../layout/_ContentPaneResizeMixin" -], function(declare, domAttr, event, kernel, has, _Widget, _TemplatedMixin, _FormMixin, _ContentPaneResizeMixin){ - - // module: - // dijit/form/Form - - - return declare("dijit.form.Form", [_Widget, _TemplatedMixin, _FormMixin, _ContentPaneResizeMixin], { - // summary: - // Widget corresponding to HTML form tag, for validation and serialization - // - // example: - // | <form data-dojo-type="dijit/form/Form" id="myForm"> - // | Name: <input type="text" name="name" /> - // | </form> - // | myObj = {name: "John Doe"}; - // | dijit.byId('myForm').set('value', myObj); - // | - // | myObj=dijit.byId('myForm').get('value'); - - // HTML <FORM> attributes - - // name: String? - // Name of form for scripting. - name: "", - - // action: String? - // Server-side form handler. - action: "", - - // method: String? - // HTTP method used to submit the form, either "GET" or "POST". - method: "", - - // encType: String? - // Encoding type for the form, ex: application/x-www-form-urlencoded. - encType: "", - - // accept-charset: String? - // List of supported charsets. - "accept-charset": "", - - // accept: String? - // List of MIME types for file upload. - accept: "", - - // target: String? - // Target frame for the document to be opened in. - target: "", - - templateString: "<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>", - - postMixInProperties: function(){ - // Setup name=foo string to be referenced from the template (but only if a name has been specified) - // Unfortunately we can't use _setNameAttr to set the name due to IE limitations, see #8660 - this.nameAttrSetting = this.name ? ("name='" + this.name + "'") : ""; - this.inherited(arguments); - }, - - execute: function(/*Object*/ /*===== formContents =====*/){ - // summary: - // Deprecated: use submit() - // tags: - // deprecated - }, - - onExecute: function(){ - // summary: - // Deprecated: use onSubmit() - // tags: - // deprecated - }, - - _setEncTypeAttr: function(/*String*/ value){ - this.encType = value; - domAttr.set(this.domNode, "encType", value); - if(has("ie")){ this.domNode.encoding = value; } - }, - - reset: function(/*Event?*/ e){ - // summary: - // restores all widget values back to their init values, - // calls onReset() which can cancel the reset by returning false - - // create fake event so we can know if preventDefault() is called - var faux = { - returnValue: true, // the IE way - preventDefault: function(){ // not IE - this.returnValue = false; - }, - stopPropagation: function(){}, - currentTarget: e ? e.target : this.domNode, - target: e ? e.target : this.domNode - }; - // if return value is not exactly false, and haven't called preventDefault(), then reset - if(!(this.onReset(faux) === false) && faux.returnValue){ - this.inherited(arguments, []); - } - }, - - onReset: function(/*Event?*/ /*===== e =====*/){ - // summary: - // Callback when user resets the form. This method is intended - // to be over-ridden. When the `reset` method is called - // programmatically, the return value from `onReset` is used - // to compute whether or not resetting should proceed - // tags: - // callback - return true; // Boolean - }, - - _onReset: function(e){ - this.reset(e); - event.stop(e); - return false; - }, - - _onSubmit: function(e){ - var fp = this.constructor.prototype; - // TODO: remove this if statement beginning with 2.0 - if(this.execute != fp.execute || this.onExecute != fp.onExecute){ - kernel.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0"); - this.onExecute(); - this.execute(this.getValues()); - } - if(this.onSubmit(e) === false){ // only exactly false stops submit - event.stop(e); - } - }, - - onSubmit: function(/*Event?*/ /*===== e =====*/){ - // summary: - // Callback when user submits the form. - // description: - // This method is intended to be over-ridden, but by default it checks and - // returns the validity of form elements. When the `submit` - // method is called programmatically, the return value from - // `onSubmit` is used to compute whether or not submission - // should proceed - // tags: - // extension - - return this.isValid(); // Boolean - }, - - submit: function(){ - // summary: - // programmatically submit form if and only if the `onSubmit` returns true - if(!(this.onSubmit() === false)){ - this.containerNode.submit(); - } - } - }); -}); - -}, -'dojo/store/Memory':function(){ -define("dojo/store/Memory", ["../_base/declare", "./util/QueryResults", "./util/SimpleQueryEngine" /*=====, "./api/Store" =====*/], -function(declare, QueryResults, SimpleQueryEngine /*=====, Store =====*/){ - -// module: -// dojo/store/Memory - -// No base class, but for purposes of documentation, the base class is dojo/store/api/Store -var base = null; -/*===== base = Store; =====*/ - -return declare("dojo.store.Memory", base, { - // summary: - // This is a basic in-memory object store. It implements dojo/store/api/Store. - constructor: function(options){ - // summary: - // Creates a memory object store. - // options: dojo/store/Memory - // This provides any configuration information that will be mixed into the store. - // This should generally include the data property to provide the starting set of data. - for(var i in options){ - this[i] = options[i]; - } - this.setData(this.data || []); - }, - // data: Array - // The array of all the objects in the memory store - data:null, - - // idProperty: String - // Indicates the property to use as the identity property. The values of this - // property should be unique. - idProperty: "id", - - // index: Object - // An index of data indices into the data array by id - index:null, - - // queryEngine: Function - // Defines the query engine to use for querying the data store - queryEngine: SimpleQueryEngine, - get: function(id){ - // summary: - // Retrieves an object by its identity - // id: Number - // The identity to use to lookup the object - // returns: Object - // The object in the store that matches the given id. - return this.data[this.index[id]]; - }, - getIdentity: function(object){ - // summary: - // Returns an object's identity - // object: Object - // The object to get the identity from - // returns: Number - return object[this.idProperty]; - }, - put: function(object, options){ - // summary: - // Stores an object - // object: Object - // The object to store. - // options: dojo/store/api/Store.PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - // returns: Number - var data = this.data, - index = this.index, - idProperty = this.idProperty; - var id = object[idProperty] = (options && "id" in options) ? options.id : idProperty in object ? object[idProperty] : Math.random(); - if(id in index){ - // object exists - if(options && options.overwrite === false){ - throw new Error("Object already exists"); - } - // replace the entry in data - data[index[id]] = object; - }else{ - // add the new object - index[id] = data.push(object) - 1; - } - return id; - }, - add: function(object, options){ - // summary: - // Creates an object, throws an error if the object already exists - // object: Object - // The object to store. - // options: dojo/store/api/Store.PutDirectives? - // Additional metadata for storing the data. Includes an "id" - // property if a specific id is to be used. - // returns: Number - (options = options || {}).overwrite = false; - // call put with overwrite being false - return this.put(object, options); - }, - remove: function(id){ - // summary: - // Deletes an object by its identity - // id: Number - // The identity to use to delete the object - // returns: Boolean - // Returns true if an object was removed, falsy (undefined) if no object matched the id - var index = this.index; - var data = this.data; - if(id in index){ - data.splice(index[id], 1); - // now we have to reindex - this.setData(data); - return true; - } - }, - query: function(query, options){ - // summary: - // Queries the store for objects. - // query: Object - // The query to use for retrieving objects from the store. - // options: dojo/store/api/Store.QueryOptions? - // The optional arguments to apply to the resultset. - // returns: dojo/store/api/Store.QueryResults - // The results of the query, extended with iterative methods. - // - // example: - // Given the following store: - // - // | var store = new Memory({ - // | data: [ - // | {id: 1, name: "one", prime: false }, - // | {id: 2, name: "two", even: true, prime: true}, - // | {id: 3, name: "three", prime: true}, - // | {id: 4, name: "four", even: true, prime: false}, - // | {id: 5, name: "five", prime: true} - // | ] - // | }); - // - // ...find all items where "prime" is true: - // - // | var results = store.query({ prime: true }); - // - // ...or find all items where "even" is true: - // - // | var results = store.query({ even: true }); - return QueryResults(this.queryEngine(query, options)(this.data)); - }, - setData: function(data){ - // summary: - // Sets the given data as the source for this store, and indexes it - // data: Object[] - // An array of objects to use as the source of data. - if(data.items){ - // just for convenience with the data format IFRS expects - this.idProperty = data.identifier; - data = this.data = data.items; - }else{ - this.data = data; - } - this.index = {}; - for(var i = 0, l = data.length; i < l; i++){ - this.index[data[i][this.idProperty]] = i; - } - } -}); - -}); - -}, -'url:dijit/templates/Tooltip.html':"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\"\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n></div>\n", -'dijit/_base/sniff':function(){ -define("dijit/_base/sniff", [ "dojo/uacss" ], function(){ - - // module: - // dijit/_base/sniff - - /*===== - return { - // summary: - // Deprecated, back compatibility module, new code should require dojo/uacss directly instead of this module. - }; - =====*/ -}); - -}, -'dijit/Toolbar':function(){ -define("dijit/Toolbar", [ - "require", - "dojo/_base/declare", // declare - "dojo/has", - "dojo/keys", // keys.LEFT_ARROW keys.RIGHT_ARROW - "dojo/ready", - "./_Widget", - "./_KeyNavContainer", - "./_TemplatedMixin" -], function(require, declare, has, keys, ready, _Widget, _KeyNavContainer, _TemplatedMixin){ - - // module: - // dijit/Toolbar - - - // Back compat w/1.6, remove for 2.0 - if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/ToolbarSeparator"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - return declare("dijit.Toolbar", [_Widget, _TemplatedMixin, _KeyNavContainer], { - // summary: - // A Toolbar widget, used to hold things like `dijit.Editor` buttons - - templateString: - '<div class="dijit" role="toolbar" tabIndex="${tabIndex}" data-dojo-attach-point="containerNode">' + - '</div>', - - baseClass: "dijitToolbar", - - postCreate: function(){ - this.inherited(arguments); - - this.connectKeyNavHandlers( - this.isLeftToRight() ? [keys.LEFT_ARROW] : [keys.RIGHT_ARROW], - this.isLeftToRight() ? [keys.RIGHT_ARROW] : [keys.LEFT_ARROW] - ); - } - }); -}); - -}, -'dijit/layout/StackContainer':function(){ -define("dijit/layout/StackContainer", [ - "dojo/_base/array", // array.forEach array.indexOf array.some - "dojo/cookie", // cookie - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.replace - "dojo/has", // has("dijit-legacy-requires") - "dojo/_base/lang", // lang.extend - "dojo/ready", - "dojo/topic", // publish - "../registry", // registry.byId - "../_WidgetBase", - "./_LayoutWidget", - "dojo/i18n!../nls/common" -], function(array, cookie, declare, domClass, has, lang, ready, topic, - registry, _WidgetBase, _LayoutWidget){ - -// module: -// dijit/layout/StackContainer - -// Back compat w/1.6, remove for 2.0 -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/layout/StackController"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -var StackContainer = declare("dijit.layout.StackContainer", _LayoutWidget, { - // summary: - // A container that has multiple children, but shows only - // one child at a time - // - // description: - // A container for widgets (ContentPanes, for example) That displays - // only one Widget at a time. - // - // Publishes topics [widgetId]-addChild, [widgetId]-removeChild, and [widgetId]-selectChild - // - // Can be base class for container, Wizard, Show, etc. - // - // See `StackContainer.ChildWidgetProperties` for details on the properties that can be set on - // children of a `StackContainer`. - - // doLayout: Boolean - // If true, change the size of my currently displayed child to match my size - doLayout: true, - - // persist: Boolean - // Remembers the selected child across sessions - persist: false, - - baseClass: "dijitStackContainer", - -/*===== - // selectedChildWidget: [readonly] dijit._Widget - // References the currently selected child widget, if any. - // Adjust selected child with selectChild() method. - selectedChildWidget: null, -=====*/ - - buildRendering: function(){ - this.inherited(arguments); - domClass.add(this.domNode, "dijitLayoutContainer"); - this.containerNode.setAttribute("role", "tabpanel"); - }, - - postCreate: function(){ - this.inherited(arguments); - this.connect(this.domNode, "onkeypress", this._onKeyPress); - }, - - startup: function(){ - if(this._started){ return; } - - var children = this.getChildren(); - - // Setup each page panel to be initially hidden - array.forEach(children, this._setupChild, this); - - // Figure out which child to initially display, defaulting to first one - if(this.persist){ - this.selectedChildWidget = registry.byId(cookie(this.id + "_selectedChild")); - }else{ - array.some(children, function(child){ - if(child.selected){ - this.selectedChildWidget = child; - } - return child.selected; - }, this); - } - var selected = this.selectedChildWidget; - if(!selected && children[0]){ - selected = this.selectedChildWidget = children[0]; - selected.selected = true; - } - - // Publish information about myself so any StackControllers can initialize. - // This needs to happen before this.inherited(arguments) so that for - // TabContainer, this._contentBox doesn't include the space for the tab labels. - topic.publish(this.id+"-startup", {children: children, selected: selected}); - - // Startup each child widget, and do initial layout like setting this._contentBox, - // then calls this.resize() which does the initial sizing on the selected child. - this.inherited(arguments); - }, - - resize: function(){ - // Overrides _LayoutWidget.resize() - // Resize is called when we are first made visible (it's called from startup() - // if we are initially visible). If this is the first time we've been made - // visible then show our first child. - if(!this._hasBeenShown){ - this._hasBeenShown = true; - var selected = this.selectedChildWidget; - if(selected){ - this._showChild(selected); - } - } - this.inherited(arguments); - }, - - _setupChild: function(/*dijit/_WidgetBase*/ child){ - // Overrides _LayoutWidget._setupChild() - - this.inherited(arguments); - - domClass.replace(child.domNode, "dijitHidden", "dijitVisible"); - - // remove the title attribute so it doesn't show up when i hover - // over a node - child.domNode.title = ""; - }, - - addChild: function(/*dijit/_WidgetBase*/ child, /*Integer?*/ insertIndex){ - // Overrides _Container.addChild() to do layout and publish events - - this.inherited(arguments); - - if(this._started){ - topic.publish(this.id+"-addChild", child, insertIndex); // publish - - // in case the tab titles have overflowed from one line to two lines - // (or, if this if first child, from zero lines to one line) - // TODO: w/ScrollingTabController this is no longer necessary, although - // ScrollTabController.resize() does need to get called to show/hide - // the navigation buttons as appropriate, but that's handled in ScrollingTabController.onAddChild(). - // If this is updated to not layout [except for initial child added / last child removed], update - // "childless startup" test in StackContainer.html to check for no resize event after second addChild() - this.layout(); - - // if this is the first child, then select it - if(!this.selectedChildWidget){ - this.selectChild(child); - } - } - }, - - removeChild: function(/*dijit/_WidgetBase*/ page){ - // Overrides _Container.removeChild() to do layout and publish events - - this.inherited(arguments); - - if(this._started){ - // this will notify any tablists to remove a button; do this first because it may affect sizing - topic.publish(this.id + "-removeChild", page); // publish - } - - // If all our children are being destroyed than don't run the code below (to select another page), - // because we are deleting every page one by one - if(this._descendantsBeingDestroyed){ return; } - - // Select new page to display, also updating TabController to show the respective tab. - // Do this before layout call because it can affect the height of the TabController. - if(this.selectedChildWidget === page){ - this.selectedChildWidget = undefined; - if(this._started){ - var children = this.getChildren(); - if(children.length){ - this.selectChild(children[0]); - } - } - } - - if(this._started){ - // In case the tab titles now take up one line instead of two lines - // (note though that ScrollingTabController never overflows to multiple lines), - // or the height has changed slightly because of addition/removal of tab which close icon - this.layout(); - } - }, - - selectChild: function(/*dijit/_WidgetBase|String*/ page, /*Boolean*/ animate){ - // summary: - // Show the given widget (which must be one of my children) - // page: - // Reference to child widget or id of child widget - - page = registry.byId(page); - - if(this.selectedChildWidget != page){ - // Deselect old page and select new one - var d = this._transition(page, this.selectedChildWidget, animate); - this._set("selectedChildWidget", page); - topic.publish(this.id+"-selectChild", page); // publish - - if(this.persist){ - cookie(this.id + "_selectedChild", this.selectedChildWidget.id); - } - } - - return d; // If child has an href, promise that fires when the child's href finishes loading - }, - - _transition: function(newWidget, oldWidget /*===== , animate =====*/){ - // summary: - // Hide the old widget and display the new widget. - // Subclasses should override this. - // newWidget: dijit/_WidgetBase - // The newly selected widget. - // oldWidget: dijit/_WidgetBase - // The previously selected widget. - // animate: Boolean - // Used by AccordionContainer to turn on/off slide effect. - // tags: - // protected extension - if(oldWidget){ - this._hideChild(oldWidget); - } - var d = this._showChild(newWidget); - - // Size the new widget, in case this is the first time it's being shown, - // or I have been resized since the last time it was shown. - // Note that page must be visible for resizing to work. - if(newWidget.resize){ - if(this.doLayout){ - newWidget.resize(this._containerContentBox || this._contentBox); - }else{ - // the child should pick it's own size but we still need to call resize() - // (with no arguments) to let the widget lay itself out - newWidget.resize(); - } - } - - return d; // If child has an href, promise that fires when the child's href finishes loading - }, - - _adjacent: function(/*Boolean*/ forward){ - // summary: - // Gets the next/previous child widget in this container from the current selection. - - // TODO: remove for 2.0 if this isn't being used. Otherwise, fix to skip disabled tabs. - - var children = this.getChildren(); - var index = array.indexOf(children, this.selectedChildWidget); - index += forward ? 1 : children.length - 1; - return children[ index % children.length ]; // dijit/_WidgetBase - }, - - forward: function(){ - // summary: - // Advance to next page. - return this.selectChild(this._adjacent(true), true); - }, - - back: function(){ - // summary: - // Go back to previous page. - return this.selectChild(this._adjacent(false), true); - }, - - _onKeyPress: function(e){ - topic.publish(this.id+"-containerKeyPress", { e: e, page: this}); // publish - }, - - layout: function(){ - // Implement _LayoutWidget.layout() virtual method. - var child = this.selectedChildWidget; - if(child && child.resize){ - if(this.doLayout){ - child.resize(this._containerContentBox || this._contentBox); - }else{ - child.resize(); - } - } - }, - - _showChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Show the specified child by changing it's CSS, and call _onShow()/onShow() so - // it can do any updates it needs regarding loading href's etc. - // returns: - // Promise that fires when page has finished showing, or true if there's no href - var children = this.getChildren(); - page.isFirstChild = (page == children[0]); - page.isLastChild = (page == children[children.length-1]); - page._set("selected", true); - - domClass.replace(page.domNode, "dijitVisible", "dijitHidden"); - - return (page._onShow && page._onShow()) || true; - }, - - _hideChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Hide the specified child by changing it's CSS, and call _onHide() so - // it's notified. - page._set("selected", false); - domClass.replace(page.domNode, "dijitHidden", "dijitVisible"); - - page.onHide && page.onHide(); - }, - - closeChild: function(/*dijit/_WidgetBase*/ page){ - // summary: - // Callback when user clicks the [X] to remove a page. - // If onClose() returns true then remove and destroy the child. - // tags: - // private - var remove = page.onClose(this, page); - if(remove){ - this.removeChild(page); - // makes sure we can clean up executeScripts in ContentPane onUnLoad - page.destroyRecursive(); - } - }, - - destroyDescendants: function(/*Boolean*/ preserveDom){ - this._descendantsBeingDestroyed = true; - this.selectedChildWidget = undefined; - array.forEach(this.getChildren(), function(child){ - if(!preserveDom){ - this.removeChild(child); - } - child.destroyRecursive(preserveDom); - }, this); - this._descendantsBeingDestroyed = false; - } -}); - -StackContainer.ChildWidgetProperties = { - // summary: - // These properties can be specified for the children of a StackContainer. - - // selected: Boolean - // Specifies that this widget should be the initially displayed pane. - // Note: to change the selected child use `dijit/layout/StackContainer.selectChild` - selected: false, - - // disabled: Boolean - // Specifies that the button to select this pane should be disabled. - // Doesn't affect programmatic selection of the pane, nor does it deselect the pane if it is currently selected. - disabled: false, - - // closable: Boolean - // True if user can close (destroy) this child, such as (for example) clicking the X on the tab. - closable: false, - - // iconClass: String - // CSS Class specifying icon to use in label associated with this pane. - iconClass: "dijitNoIcon", - - // showTitle: Boolean - // When true, display title of this widget as tab label etc., rather than just using - // icon specified in iconClass - showTitle: true -}; - -// Since any widget can be specified as a StackContainer child, mix them -// into the base widget class. (This is a hack, but it's effective.) -// This is for the benefit of the parser. Remove for 2.0. Also, hide from doc viewer. -lang.extend(_WidgetBase, /*===== {} || =====*/ StackContainer.ChildWidgetProperties); - -return StackContainer; -}); - -}, -'dojo/regexp':function(){ -define("dojo/regexp", ["./_base/kernel", "./_base/lang"], function(dojo, lang){ - -// module: -// dojo/regexp - -var regexp = { - // summary: - // Regular expressions and Builder resources -}; -lang.setObject("dojo.regexp", regexp); - -regexp.escapeString = function(/*String*/str, /*String?*/except){ - // summary: - // Adds escape sequences for special characters in regular expressions - // except: - // a String with special characters to be left unescaped - - return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function(ch){ - if(except && except.indexOf(ch) != -1){ - return ch; - } - return "\\" + ch; - }); // String -}; - -regexp.buildGroupRE = function(/*Object|Array*/arr, /*Function*/re, /*Boolean?*/nonCapture){ - // summary: - // Builds a regular expression that groups subexpressions - // description: - // A utility function used by some of the RE generators. The - // subexpressions are constructed by the function, re, in the second - // parameter. re builds one subexpression for each elem in the array - // a, in the first parameter. Returns a string for a regular - // expression that groups all the subexpressions. - // arr: - // A single value or an array of values. - // re: - // A function. Takes one parameter and converts it to a regular - // expression. - // nonCapture: - // If true, uses non-capturing match, otherwise matches are retained - // by regular expression. Defaults to false - - // case 1: a is a single value. - if(!(arr instanceof Array)){ - return re(arr); // String - } - - // case 2: a is an array - var b = []; - for(var i = 0; i < arr.length; i++){ - // convert each elem to a RE - b.push(re(arr[i])); - } - - // join the REs as alternatives in a RE group. - return regexp.group(b.join("|"), nonCapture); // String -}; - -regexp.group = function(/*String*/expression, /*Boolean?*/nonCapture){ - // summary: - // adds group match to expression - // nonCapture: - // If true, uses non-capturing match, otherwise matches are retained - // by regular expression. - return "(" + (nonCapture ? "?:":"") + expression + ")"; // String -}; - -return regexp; -}); - -}, -'dijit/DropDownMenu':function(){ -require({cache:{ -'url:dijit/templates/Menu.html':"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t data-dojo-attach-event=\"onkeypress:_onKeyPress\" cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n"}}); -define("dijit/DropDownMenu", [ - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "dojo/text!./templates/Menu.html", - "./_OnDijitClickMixin", - "./_MenuBase" -], function(declare, event, keys, template, _OnDijitClickMixin, _MenuBase){ - - // module: - // dijit/DropDownMenu - - return declare("dijit.DropDownMenu", [_MenuBase, _OnDijitClickMixin], { - // summary: - // A menu, without features for context menu (Meaning, drop down menu) - - templateString: template, - - baseClass: "dijitMenu", - - postCreate: function(){ - this.inherited(arguments); - var l = this.isLeftToRight(); - this._openSubMenuKey = l ? keys.RIGHT_ARROW : keys.LEFT_ARROW; - this._closeSubMenuKey = l ? keys.LEFT_ARROW : keys.RIGHT_ARROW; - this.connectKeyNavHandlers([keys.UP_ARROW], [keys.DOWN_ARROW]); - }, - - _onKeyPress: function(/*Event*/ evt){ - // summary: - // Handle keyboard based menu navigation. - // tags: - // protected - - if(evt.ctrlKey || evt.altKey){ return; } - - switch(evt.charOrCode){ - case this._openSubMenuKey: - this._moveToPopup(evt); - event.stop(evt); - break; - case this._closeSubMenuKey: - if(this.parentMenu){ - if(this.parentMenu._isMenuBar){ - this.parentMenu.focusPrev(); - }else{ - this.onCancel(false); - } - }else{ - event.stop(evt); - } - break; - } - } - }); -}); - -}, -'dijit/form/_FormMixin':function(){ -define("dijit/form/_FormMixin", [ - "dojo/_base/array", // array.every array.filter array.forEach array.indexOf array.map - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.hitch lang.isArray - "dojo/on", - "dojo/window" // winUtils.scrollIntoView -], function(array, declare, kernel, lang, on, winUtils){ - - // module: - // dijit/form/_FormMixin - - return declare("dijit.form._FormMixin", null, { - // summary: - // Mixin for containers of form widgets (i.e. widgets that represent a single value - // and can be children of a `<form>` node or `dijit/form/Form` widget) - // description: - // Can extract all the form widgets - // values and combine them into a single javascript object, or alternately - // take such an object and set the values for all the contained - // form widgets - - /*===== - // value: Object - // Name/value hash for each child widget with a name and value. - // Child widgets without names are not part of the hash. - // - // If there are multiple child widgets w/the same name, value is an array, - // unless they are radio buttons in which case value is a scalar (since only - // one radio button can be checked at a time). - // - // If a child widget's name is a dot separated list (like a.b.c.d), it's a nested structure. - // - // Example: - // | { name: "John Smith", interests: ["sports", "movies"] } - =====*/ - - // state: [readonly] String - // Will be "Error" if one or more of the child widgets has an invalid value, - // "Incomplete" if not all of the required child widgets are filled in. Otherwise, "", - // which indicates that the form is ready to be submitted. - state: "", - - // TODO: - // * Repeater - // * better handling for arrays. Often form elements have names with [] like - // * people[3].sex (for a list of people [{name: Bill, sex: M}, ...]) - - - _getDescendantFormWidgets: function(/*dijit/_WidgetBase[]?*/ children){ - // summary: - // Returns all form widget descendants, searching through non-form child widgets like BorderContainer - var res = []; - array.forEach(children || this.getChildren(), function(child){ - if("value" in child){ - res.push(child); - }else{ - res = res.concat(this._getDescendantFormWidgets(child.getChildren())); - } - }, this); - return res; - }, - - reset: function(){ - array.forEach(this._getDescendantFormWidgets(), function(widget){ - if(widget.reset){ - widget.reset(); - } - }); - }, - - validate: function(){ - // summary: - // returns if the form is valid - same as isValid - but - // provides a few additional (ui-specific) features: - // - // 1. it will highlight any sub-widgets that are not valid - // 2. it will call focus() on the first invalid sub-widget - var didFocus = false; - return array.every(array.map(this._getDescendantFormWidgets(), function(widget){ - // Need to set this so that "required" widgets get their - // state set. - widget._hasBeenBlurred = true; - var valid = widget.disabled || !widget.validate || widget.validate(); - if(!valid && !didFocus){ - // Set focus of the first non-valid widget - winUtils.scrollIntoView(widget.containerNode || widget.domNode); - widget.focus(); - didFocus = true; - } - return valid; - }), function(item){ return item; }); - }, - - setValues: function(val){ - kernel.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.", "", "2.0"); - return this.set('value', val); - }, - _setValueAttr: function(/*Object*/ obj){ - // summary: - // Fill in form values from according to an Object (in the format returned by get('value')) - - // generate map from name --> [list of widgets with that name] - var map = { }; - array.forEach(this._getDescendantFormWidgets(), function(widget){ - if(!widget.name){ return; } - var entry = map[widget.name] || (map[widget.name] = [] ); - entry.push(widget); - }); - - for(var name in map){ - if(!map.hasOwnProperty(name)){ - continue; - } - var widgets = map[name], // array of widgets w/this name - values = lang.getObject(name, false, obj); // list of values for those widgets - - if(values === undefined){ - continue; - } - if(!lang.isArray(values)){ - values = [ values ]; - } - if(typeof widgets[0].checked == 'boolean'){ - // for checkbox/radio, values is a list of which widgets should be checked - array.forEach(widgets, function(w){ - w.set('value', array.indexOf(values, w.value) != -1); - }); - }else if(widgets[0].multiple){ - // it takes an array (e.g. multi-select) - widgets[0].set('value', values); - }else{ - // otherwise, values is a list of values to be assigned sequentially to each widget - array.forEach(widgets, function(w, i){ - w.set('value', values[i]); - }); - } - } - - /*** - * TODO: code for plain input boxes (this shouldn't run for inputs that are part of widgets) - - array.forEach(this.containerNode.elements, function(element){ - if(element.name == ''){return}; // like "continue" - var namePath = element.name.split("."); - var myObj=obj; - var name=namePath[namePath.length-1]; - for(var j=1,len2=namePath.length;j<len2;++j){ - var p=namePath[j - 1]; - // repeater support block - var nameA=p.split("["); - if(nameA.length > 1){ - if(typeof(myObj[nameA[0]]) == "undefined"){ - myObj[nameA[0]]=[ ]; - } // if - - nameIndex=parseInt(nameA[1]); - if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){ - myObj[nameA[0]][nameIndex] = { }; - } - myObj=myObj[nameA[0]][nameIndex]; - continue; - } // repeater support ends - - if(typeof(myObj[p]) == "undefined"){ - myObj=undefined; - break; - }; - myObj=myObj[p]; - } - - if(typeof(myObj) == "undefined"){ - return; // like "continue" - } - if(typeof(myObj[name]) == "undefined" && this.ignoreNullValues){ - return; // like "continue" - } - - // TODO: widget values (just call set('value', ...) on the widget) - - // TODO: maybe should call dojo.getNodeProp() instead - switch(element.type){ - case "checkbox": - element.checked = (name in myObj) && - array.some(myObj[name], function(val){ return val == element.value; }); - break; - case "radio": - element.checked = (name in myObj) && myObj[name] == element.value; - break; - case "select-multiple": - element.selectedIndex=-1; - array.forEach(element.options, function(option){ - option.selected = array.some(myObj[name], function(val){ return option.value == val; }); - }); - break; - case "select-one": - element.selectedIndex="0"; - array.forEach(element.options, function(option){ - option.selected = option.value == myObj[name]; - }); - break; - case "hidden": - case "text": - case "textarea": - case "password": - element.value = myObj[name] || ""; - break; - } - }); - */ - - // Note: no need to call this._set("value", ...) as the child updates will trigger onChange events - // which I am monitoring. - }, - - getValues: function(){ - kernel.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.", "", "2.0"); - return this.get('value'); - }, - _getValueAttr: function(){ - // summary: - // Returns Object representing form values. See description of `value` for details. - // description: - - // The value is updated into this.value every time a child has an onChange event, - // so in the common case this function could just return this.value. However, - // that wouldn't work when: - // - // 1. User presses return key to submit a form. That doesn't fire an onchange event, - // and even if it did it would come too late due to the defer(...) in _handleOnChange() - // - // 2. app for some reason calls this.get("value") while the user is typing into a - // form field. Not sure if that case needs to be supported or not. - - // get widget values - var obj = { }; - array.forEach(this._getDescendantFormWidgets(), function(widget){ - var name = widget.name; - if(!name || widget.disabled){ return; } - - // Single value widget (checkbox, radio, or plain <input> type widget) - var value = widget.get('value'); - - // Store widget's value(s) as a scalar, except for checkboxes which are automatically arrays - if(typeof widget.checked == 'boolean'){ - if(/Radio/.test(widget.declaredClass)){ - // radio button - if(value !== false){ - lang.setObject(name, value, obj); - }else{ - // give radio widgets a default of null - value = lang.getObject(name, false, obj); - if(value === undefined){ - lang.setObject(name, null, obj); - } - } - }else{ - // checkbox/toggle button - var ary=lang.getObject(name, false, obj); - if(!ary){ - ary=[]; - lang.setObject(name, ary, obj); - } - if(value !== false){ - ary.push(value); - } - } - }else{ - var prev=lang.getObject(name, false, obj); - if(typeof prev != "undefined"){ - if(lang.isArray(prev)){ - prev.push(value); - }else{ - lang.setObject(name, [prev, value], obj); - } - }else{ - // unique name - lang.setObject(name, value, obj); - } - } - }); - - /*** - * code for plain input boxes (see also domForm.formToObject, can we use that instead of this code? - * but it doesn't understand [] notation, presumably) - var obj = { }; - array.forEach(this.containerNode.elements, function(elm){ - if(!elm.name) { - return; // like "continue" - } - var namePath = elm.name.split("."); - var myObj=obj; - var name=namePath[namePath.length-1]; - for(var j=1,len2=namePath.length;j<len2;++j){ - var nameIndex = null; - var p=namePath[j - 1]; - var nameA=p.split("["); - if(nameA.length > 1){ - if(typeof(myObj[nameA[0]]) == "undefined"){ - myObj[nameA[0]]=[ ]; - } // if - nameIndex=parseInt(nameA[1]); - if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){ - myObj[nameA[0]][nameIndex] = { }; - } - }else if(typeof(myObj[nameA[0]]) == "undefined"){ - myObj[nameA[0]] = { } - } // if - - if(nameA.length == 1){ - myObj=myObj[nameA[0]]; - }else{ - myObj=myObj[nameA[0]][nameIndex]; - } // if - } // for - - if((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type == "radio" && elm.checked)){ - if(name == name.split("[")[0]){ - myObj[name]=elm.value; - }else{ - // can not set value when there is no name - } - }else if(elm.type == "checkbox" && elm.checked){ - if(typeof(myObj[name]) == 'undefined'){ - myObj[name]=[ ]; - } - myObj[name].push(elm.value); - }else if(elm.type == "select-multiple"){ - if(typeof(myObj[name]) == 'undefined'){ - myObj[name]=[ ]; - } - for(var jdx=0,len3=elm.options.length; jdx<len3; ++jdx){ - if(elm.options[jdx].selected){ - myObj[name].push(elm.options[jdx].value); - } - } - } // if - name=undefined; - }); // forEach - ***/ - return obj; - }, - - isValid: function(){ - // summary: - // Returns true if all of the widgets are valid. - // Deprecated, will be removed in 2.0. Use get("state") instead. - - return this.state == ""; - }, - - onValidStateChange: function(/*Boolean*/ /*===== isValid =====*/){ - // summary: - // Stub function to connect to if you want to do something - // (like disable/enable a submit button) when the valid - // state changes on the form as a whole. - // - // Deprecated. Will be removed in 2.0. Use watch("state", ...) instead. - }, - - _getState: function(){ - // summary: - // Compute what this.state should be based on state of children - var states = array.map(this._descendants, function(w){ - return w.get("state") || ""; - }); - - return array.indexOf(states, "Error") >= 0 ? "Error" : - array.indexOf(states, "Incomplete") >= 0 ? "Incomplete" : ""; - }, - - disconnectChildren: function(){ - // summary: - // Deprecated method. Applications no longer need to call this. Remove for 2.0. - }, - - connectChildren: function(/*Boolean*/ inStartup){ - // summary: - // You can call this function directly, ex. in the event that you - // programmatically add a widget to the form *after* the form has been - // initialized. - - // TODO: rename for 2.0 - - this._descendants = this._getDescendantFormWidgets(); - - // To get notifications from children they need to be started. Children didn't used to need to be started, - // so for back-compat, start them here - array.forEach(this._descendants, function(child){ - if(!child._started){ child.startup(); } - }); - - if(!inStartup){ - this._onChildChange(); - } - }, - - _onChildChange: function(/*String*/ attr){ - // summary: - // Called when child's value or disabled state changes - - // The unit tests expect state update to be synchronous, so update it immediately. - if(!attr || attr == "state" || attr == "disabled"){ - this._set("state", this._getState()); - } - - // Use defer() to collapse value changes in multiple children into a single - // update to my value. Multiple updates will occur on: - // 1. Form.set() - // 2. Form.reset() - // 3. user selecting a radio button (which will de-select another radio button, - // causing two onChange events) - if(!attr || attr == "value" || attr == "disabled" || attr == "checked"){ - if(this._onChangeDelayTimer){ - this._onChangeDelayTimer.remove(); - } - this._onChangeDelayTimer = this.defer(function(){ - delete this._onChangeDelayTimer; - this._set("value", this.get("value")); - }, 10); - } - }, - - startup: function(){ - this.inherited(arguments); - - // Set initial this.value and this.state. Don't emit watch() notifications. - this._descendants = this._getDescendantFormWidgets(); - this.value = this.get("value"); - this.state = this._getState(); - - // Initialize value and valid/invalid state tracking. - var self = this; - this.own( - on( - this.containerNode, - "attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked", - function(evt){ - if(evt.target == self.domNode){ - return; // ignore events that I fire on myself because my children changed - } - self._onChildChange(evt.type.replace("attrmodified-", "")); - } - ) - ); - - // Make state change call onValidStateChange(), will be removed in 2.0 - this.watch("state", function(attr, oldVal, newVal){ this.onValidStateChange(newVal == ""); }); - }, - - destroy: function(){ - this.inherited(arguments); - } - - }); -}); - -}, -'dojo/data/util/simpleFetch':function(){ -define("dojo/data/util/simpleFetch", ["../../_base/lang", "../../_base/kernel", "./sorter"], - function(lang, kernel, sorter){ - // module: - // dojo/data/util/simpleFetch - // summary: - // The simpleFetch mixin is designed to serve as a set of function(s) that can - // be mixed into other datastore implementations to accelerate their development. - -var simpleFetch = {}; -lang.setObject("dojo.data.util.simpleFetch", simpleFetch); - -simpleFetch.errorHandler = function(/*Object*/ errorData, /*Object*/ requestObject){ - // summary: - // The error handler when there is an error fetching items. This function should not be called - // directly and is used by simpleFetch.fetch(). - if(requestObject.onError){ - var scope = requestObject.scope || kernel.global; - requestObject.onError.call(scope, errorData, requestObject); - } -}; - -simpleFetch.fetchHandler = function(/*Array*/ items, /*Object*/ requestObject){ - // summary: - // The handler when items are sucessfully fetched. This function should not be called directly - // and is used by simpleFetch.fetch(). - var oldAbortFunction = requestObject.abort || null, - aborted = false, - - startIndex = requestObject.start?requestObject.start: 0, - endIndex = (requestObject.count && (requestObject.count !== Infinity))?(startIndex + requestObject.count):items.length; - - requestObject.abort = function(){ - aborted = true; - if(oldAbortFunction){ - oldAbortFunction.call(requestObject); - } - }; - - var scope = requestObject.scope || kernel.global; - if(!requestObject.store){ - requestObject.store = this; - } - if(requestObject.onBegin){ - requestObject.onBegin.call(scope, items.length, requestObject); - } - if(requestObject.sort){ - items.sort(sorter.createSortFunction(requestObject.sort, this)); - } - if(requestObject.onItem){ - for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){ - var item = items[i]; - if(!aborted){ - requestObject.onItem.call(scope, item, requestObject); - } - } - } - if(requestObject.onComplete && !aborted){ - var subset = null; - if(!requestObject.onItem){ - subset = items.slice(startIndex, endIndex); - } - requestObject.onComplete.call(scope, subset, requestObject); - } -}; - -simpleFetch.fetch = function(/* Object? */ request){ - // summary: - // The simpleFetch mixin is designed to serve as a set of function(s) that can - // be mixed into other datastore implementations to accelerate their development. - // description: - // The simpleFetch mixin should work well for any datastore that can respond to a _fetchItems() - // call by returning an array of all the found items that matched the query. The simpleFetch mixin - // is not designed to work for datastores that respond to a fetch() call by incrementally - // loading items, or sequentially loading partial batches of the result - // set. For datastores that mixin simpleFetch, simpleFetch - // implements a fetch method that automatically handles eight of the fetch() - // arguments -- onBegin, onItem, onComplete, onError, start, count, sort and scope - // The class mixing in simpleFetch should not implement fetch(), - // but should instead implement a _fetchItems() method. The _fetchItems() - // method takes three arguments, the keywordArgs object that was passed - // to fetch(), a callback function to be called when the result array is - // available, and an error callback to be called if something goes wrong. - // The _fetchItems() method should ignore any keywordArgs parameters for - // start, count, onBegin, onItem, onComplete, onError, sort, and scope. - // The _fetchItems() method needs to correctly handle any other keywordArgs - // parameters, including the query parameter and any optional parameters - // (such as includeChildren). The _fetchItems() method should create an array of - // result items and pass it to the fetchHandler along with the original request object -- - // or, the _fetchItems() method may, if it wants to, create an new request object - // with other specifics about the request that are specific to the datastore and pass - // that as the request object to the handler. - // - // For more information on this specific function, see dojo/data/api/Read.fetch() - // - // request: - // The keywordArgs parameter may either be an instance of - // conforming to dojo/data/api/Request or may be a simple anonymous object - // that may contain any of the following: - // | { - // | query: query-object or query-string, - // | queryOptions: object, - // | onBegin: Function, - // | onItem: Function, - // | onComplete: Function, - // | onError: Function, - // | scope: object, - // | start: int - // | count: int - // | sort: array - // | } - // All implementations should accept keywordArgs objects with any of - // the 9 standard properties: query, onBegin, onItem, onComplete, onError - // scope, sort, start, and count. Some implementations may accept additional - // properties in the keywordArgs object as valid parameters, such as - // {includeOutliers:true}. - // - // ####The *query* parameter - // - // The query may be optional in some data store implementations. - // The dojo/data/api/Read API does not specify the syntax or semantics - // of the query itself -- each different data store implementation - // may have its own notion of what a query should look like. - // However, as of dojo 0.9, 1.0, and 1.1, all the provided datastores in dojo.data - // and dojox.data support an object structure query, where the object is a set of - // name/value parameters such as { attrFoo: valueBar, attrFoo1: valueBar1}. Most of the - // dijit widgets, such as ComboBox assume this to be the case when working with a datastore - // when they dynamically update the query. Therefore, for maximum compatibility with dijit - // widgets the recommended query parameter is a key/value object. That does not mean that the - // the datastore may not take alternative query forms, such as a simple string, a Date, a number, - // or a mix of such. Ultimately, The dojo/data/api/Read API is agnostic about what the query - // format. - // - // Further note: In general for query objects that accept strings as attribute - // value matches, the store should also support basic filtering capability, such as * - // (match any character) and ? (match single character). An example query that is a query object - // would be like: { attrFoo: "value*"}. Which generally means match all items where they have - // an attribute named attrFoo, with a value that starts with 'value'. - // - // ####The *queryOptions* parameter - // - // The queryOptions parameter is an optional parameter used to specify options that may modify - // the query in some fashion, such as doing a case insensitive search, or doing a deep search - // where all items in a hierarchical representation of data are scanned instead of just the root - // items. It currently defines two options that all datastores should attempt to honor if possible: - // | { - // | ignoreCase: boolean, // Whether or not the query should match case sensitively or not. Default behaviour is false. - // | deep: boolean // Whether or not a fetch should do a deep search of items and all child - // | // items instead of just root-level items in a datastore. Default is false. - // | } - // - // ####The *onBegin* parameter. - // - // function(size, request); - // If an onBegin callback function is provided, the callback function - // will be called just once, before the first onItem callback is called. - // The onBegin callback function will be passed two arguments, the - // the total number of items identified and the Request object. If the total number is - // unknown, then size will be -1. Note that size is not necessarily the size of the - // collection of items returned from the query, as the request may have specified to return only a - // subset of the total set of items through the use of the start and count parameters. - // - // ####The *onItem* parameter. - // - // function(item, request); - // - // If an onItem callback function is provided, the callback function - // will be called as each item in the result is received. The callback - // function will be passed two arguments: the item itself, and the - // Request object. - // - // ####The *onComplete* parameter. - // - // function(items, request); - // - // If an onComplete callback function is provided, the callback function - // will be called just once, after the last onItem callback is called. - // Note that if the onItem callback is not present, then onComplete will be passed - // an array containing all items which matched the query and the request object. - // If the onItem callback is present, then onComplete is called as: - // onComplete(null, request). - // - // ####The *onError* parameter. - // - // function(errorData, request); - // - // If an onError callback function is provided, the callback function - // will be called if there is any sort of error while attempting to - // execute the query. - // The onError callback function will be passed two arguments: - // an Error object and the Request object. - // - // ####The *scope* parameter. - // - // If a scope object is provided, all of the callback functions (onItem, - // onComplete, onError, etc) will be invoked in the context of the scope - // object. In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global(). - // For example, onItem.call(scope, item, request) vs. - // onItem.call(dojo.global(), item, request) - // - // ####The *start* parameter. - // - // If a start parameter is specified, this is a indication to the datastore to - // only start returning items once the start number of items have been located and - // skipped. When this parameter is paired with 'count', the store should be able - // to page across queries with millions of hits by only returning subsets of the - // hits for each query - // - // ####The *count* parameter. - // - // If a count parameter is specified, this is a indication to the datastore to - // only return up to that many items. This allows a fetch call that may have - // millions of item matches to be paired down to something reasonable. - // - // ####The *sort* parameter. - // - // If a sort parameter is specified, this is a indication to the datastore to - // sort the items in some manner before returning the items. The array is an array of - // javascript objects that must conform to the following format to be applied to the - // fetching of items: - // | { - // | attribute: attribute || attribute-name-string, - // | descending: true|false; // Optional. Default is false. - // | } - // Note that when comparing attributes, if an item contains no value for the attribute - // (undefined), then it the default ascending sort logic should push it to the bottom - // of the list. In the descending order case, it such items should appear at the top of the list. - - request = request || {}; - if(!request.store){ - request.store = this; - } - - this._fetchItems(request, lang.hitch(this, "fetchHandler"), lang.hitch(this, "errorHandler")); - return request; // Object -}; - -return simpleFetch; -}); - -}, -'dijit/Menu':function(){ -define("dijit/Menu", [ - "require", - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/dom", // dom.byId dom.isDescendant - "dojo/dom-attr", // domAttr.get domAttr.set domAttr.has domAttr.remove - "dojo/dom-geometry", // domStyle.getComputedStyle domGeometry.position - "dojo/dom-style", // domStyle.getComputedStyle - "dojo/keys", // keys.F10 - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/sniff", // has("ie"), has("quirks") - "dojo/_base/window", // win.body win.doc.documentElement win.doc.frames - "dojo/window", // winUtils.get - "./popup", - "./DropDownMenu", - "dojo/ready" -], function(require, array, declare, event, dom, domAttr, domGeometry, domStyle, keys, lang, on, - has, win, winUtils, pm, DropDownMenu, ready){ - -// module: -// dijit/Menu - -// Back compat w/1.6, remove for 2.0 -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/MenuItem", "dijit/PopupMenuItem", "dijit/CheckedMenuItem", "dijit/MenuSeparator"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -return declare("dijit.Menu", DropDownMenu, { - // summary: - // A context menu you can assign to multiple elements - - constructor: function(/*===== params, srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified: - // - // - use srcNodeRef.innerHTML as my contents - // - replace srcNodeRef with my generated DOM tree - - this._bindings = []; - }, - - // targetNodeIds: [const] String[] - // Array of dom node ids of nodes to attach to. - // Fill this with nodeIds upon widget creation and it becomes context menu for those nodes. - targetNodeIds: [], - - // selector: String? - // CSS expression to apply this Menu to descendants of targetNodeIds, rather than to - // the nodes specified by targetNodeIds themselves. Useful for applying a Menu to - // a range of rows in a table, tree, etc. - // - // The application must require() an appropriate level of dojo/query to handle the selector. - selector: "", - - // TODO: in 2.0 remove support for multiple targetNodeIds. selector gives the same effect. - // So, change targetNodeIds to a targetNodeId: "", remove bindDomNode()/unBindDomNode(), etc. - -/*===== - // currentTarget: [readonly] DOMNode - // For context menus, set to the current node that the Menu is being displayed for. - // Useful so that the menu actions can be tailored according to the node - currentTarget: null, -=====*/ - - // contextMenuForWindow: [const] Boolean - // If true, right clicking anywhere on the window will cause this context menu to open. - // If false, must specify targetNodeIds. - contextMenuForWindow: false, - - // leftClickToOpen: [const] Boolean - // If true, menu will open on left click instead of right click, similar to a file menu. - leftClickToOpen: false, - - // refocus: Boolean - // When this menu closes, re-focus the element which had focus before it was opened. - refocus: true, - - postCreate: function(){ - if(this.contextMenuForWindow){ - this.bindDomNode(this.ownerDocumentBody); - }else{ - // TODO: should have _setTargetNodeIds() method to handle initialization and a possible - // later set('targetNodeIds', ...) call. There's also a problem that targetNodeIds[] - // gets stale after calls to bindDomNode()/unBindDomNode() as it still is just the original list (see #9610) - array.forEach(this.targetNodeIds, this.bindDomNode, this); - } - this.inherited(arguments); - }, - - // thanks burstlib! - _iframeContentWindow: function(/* HTMLIFrameElement */iframe_el){ - // summary: - // Returns the window reference of the passed iframe - // tags: - // private - return winUtils.get(this._iframeContentDocument(iframe_el)) || - // Moz. TODO: is this available when defaultView isn't? - this._iframeContentDocument(iframe_el)['__parent__'] || - (iframe_el.name && win.doc.frames[iframe_el.name]) || null; // Window - }, - - _iframeContentDocument: function(/* HTMLIFrameElement */iframe_el){ - // summary: - // Returns a reference to the document object inside iframe_el - // tags: - // protected - return iframe_el.contentDocument // W3 - || (iframe_el.contentWindow && iframe_el.contentWindow.document) // IE - || (iframe_el.name && win.doc.frames[iframe_el.name] && win.doc.frames[iframe_el.name].document) - || null; // HTMLDocument - }, - - bindDomNode: function(/*String|DomNode*/ node){ - // summary: - // Attach menu to given node - node = dom.byId(node, this.ownerDocument); - - var cn; // Connect node - - // Support context menus on iframes. Rather than binding to the iframe itself we need - // to bind to the <body> node inside the iframe. - if(node.tagName.toLowerCase() == "iframe"){ - var iframe = node, - window = this._iframeContentWindow(iframe); - cn = win.body(window.document); - }else{ - // To capture these events at the top level, attach to <html>, not <body>. - // Otherwise right-click context menu just doesn't work. - cn = (node == win.body(this.ownerDocument) ? this.ownerDocument.documentElement : node); - } - - - // "binding" is the object to track our connection to the node (ie, the parameter to bindDomNode()) - var binding = { - node: node, - iframe: iframe - }; - - // Save info about binding in _bindings[], and make node itself record index(+1) into - // _bindings[] array. Prefix w/_dijitMenu to avoid setting an attribute that may - // start with a number, which fails on FF/safari. - domAttr.set(node, "_dijitMenu" + this.id, this._bindings.push(binding)); - - // Setup the connections to monitor click etc., unless we are connecting to an iframe which hasn't finished - // loading yet, in which case we need to wait for the onload event first, and then connect - // On linux Shift-F10 produces the oncontextmenu event, but on Windows it doesn't, so - // we need to monitor keyboard events in addition to the oncontextmenu event. - var doConnects = lang.hitch(this, function(cn){ - var selector = this.selector, - delegatedEvent = selector ? - function(eventType){ return on.selector(selector, eventType); } : - function(eventType){ return eventType; }, - self = this; - return [ - // TODO: when leftClickToOpen is true then shouldn't space/enter key trigger the menu, - // rather than shift-F10? - on(cn, delegatedEvent(this.leftClickToOpen ? "click" : "contextmenu"), function(evt){ - // Schedule context menu to be opened unless it's already been scheduled from onkeydown handler - event.stop(evt); - self._scheduleOpen(this, iframe, {x: evt.pageX, y: evt.pageY}); - }), - on(cn, delegatedEvent("keydown"), function(evt){ - if(evt.shiftKey && evt.keyCode == keys.F10){ - event.stop(evt); - self._scheduleOpen(this, iframe); // no coords - open near target node - } - }) - ]; - }); - binding.connects = cn ? doConnects(cn) : []; - - if(iframe){ - // Setup handler to [re]bind to the iframe when the contents are initially loaded, - // and every time the contents change. - // Need to do this b/c we are actually binding to the iframe's <body> node. - // Note: can't use connect.connect(), see #9609. - - binding.onloadHandler = lang.hitch(this, function(){ - // want to remove old connections, but IE throws exceptions when trying to - // access the <body> node because it's already gone, or at least in a state of limbo - - var window = this._iframeContentWindow(iframe); - cn = win.body(window.document) - binding.connects = doConnects(cn); - }); - if(iframe.addEventListener){ - iframe.addEventListener("load", binding.onloadHandler, false); - }else{ - iframe.attachEvent("onload", binding.onloadHandler); - } - } - }, - - unBindDomNode: function(/*String|DomNode*/ nodeName){ - // summary: - // Detach menu from given node - - var node; - try{ - node = dom.byId(nodeName, this.ownerDocument); - }catch(e){ - // On IE the dom.byId() call will get an exception if the attach point was - // the <body> node of an <iframe> that has since been reloaded (and thus the - // <body> node is in a limbo state of destruction. - return; - } - - // node["_dijitMenu" + this.id] contains index(+1) into my _bindings[] array - var attrName = "_dijitMenu" + this.id; - if(node && domAttr.has(node, attrName)){ - var bid = domAttr.get(node, attrName)-1, b = this._bindings[bid], h; - while((h = b.connects.pop())){ - h.remove(); - } - - // Remove listener for iframe onload events - var iframe = b.iframe; - if(iframe){ - if(iframe.removeEventListener){ - iframe.removeEventListener("load", b.onloadHandler, false); - }else{ - iframe.detachEvent("onload", b.onloadHandler); - } - } - - domAttr.remove(node, attrName); - delete this._bindings[bid]; - } - }, - - _scheduleOpen: function(/*DomNode?*/ target, /*DomNode?*/ iframe, /*Object?*/ coords){ - // summary: - // Set timer to display myself. Using a timer rather than displaying immediately solves - // two problems: - // - // 1. IE: without the delay, focus work in "open" causes the system - // context menu to appear in spite of stopEvent. - // - // 2. Avoid double-shows on linux, where shift-F10 generates an oncontextmenu event - // even after a event.stop(e). (Shift-F10 on windows doesn't generate the - // oncontextmenu event.) - - if(!this._openTimer){ - this._openTimer = this.defer(function(){ - delete this._openTimer; - this._openMyself({ - target: target, - iframe: iframe, - coords: coords - }); - }, 1); - } - }, - - _openMyself: function(args){ - // summary: - // Internal function for opening myself when the user does a right-click or something similar. - // args: - // This is an Object containing: - // - // - target: The node that is being clicked - // - iframe: If an `<iframe>` is being clicked, iframe points to that iframe - // - coords: Put menu at specified x/y position in viewport, or if iframe is - // specified, then relative to iframe. - // - // _openMyself() formerly took the event object, and since various code references - // evt.target (after connecting to _openMyself()), using an Object for parameters - // (so that old code still works). - - var target = args.target, - iframe = args.iframe, - coords = args.coords; - - // To be used by MenuItem event handlers to tell which node the menu was opened on - this.currentTarget = target; - - // Get coordinates to open menu, either at specified (mouse) position or (if triggered via keyboard) - // then near the node the menu is assigned to. - if(coords){ - if(iframe){ - // Specified coordinates are on <body> node of an <iframe>, convert to match main document - var ifc = domGeometry.position(iframe, true), - window = this._iframeContentWindow(iframe), - scroll = domGeometry.docScroll(window.document); - - var cs = domStyle.getComputedStyle(iframe), - tp = domStyle.toPixelValue, - left = (has("ie") && has("quirks") ? 0 : tp(iframe, cs.paddingLeft)) + (has("ie") && has("quirks") ? tp(iframe, cs.borderLeftWidth) : 0), - top = (has("ie") && has("quirks") ? 0 : tp(iframe, cs.paddingTop)) + (has("ie") && has("quirks") ? tp(iframe, cs.borderTopWidth) : 0); - - coords.x += ifc.x + left - scroll.x; - coords.y += ifc.y + top - scroll.y; - } - }else{ - coords = domGeometry.position(target, true); - coords.x += 10; - coords.y += 10; - } - - var self=this; - var prevFocusNode = this._focusManager.get("prevNode"); - var curFocusNode = this._focusManager.get("curNode"); - var savedFocusNode = !curFocusNode || (dom.isDescendant(curFocusNode, this.domNode)) ? prevFocusNode : curFocusNode; - - function closeAndRestoreFocus(){ - // user has clicked on a menu or popup - if(self.refocus && savedFocusNode){ - savedFocusNode.focus(); - } - pm.close(self); - } - pm.open({ - popup: this, - x: coords.x, - y: coords.y, - onExecute: closeAndRestoreFocus, - onCancel: closeAndRestoreFocus, - orient: this.isLeftToRight() ? 'L' : 'R' - }); - this.focus(); - - this._onBlur = function(){ - this.inherited('_onBlur', arguments); - // Usually the parent closes the child widget but if this is a context - // menu then there is no parent - pm.close(this); - // don't try to restore focus; user has clicked another part of the screen - // and set focus there - }; - }, - - destroy: function(){ - array.forEach(this._bindings, function(b){ if(b){ this.unBindDomNode(b.node); } }, this); - this.inherited(arguments); - } -}); - -}); - -}, -'dijit/form/_CheckBoxMixin':function(){ -define("dijit/form/_CheckBoxMixin", [ - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/_base/event" // event.stop -], function(declare, domAttr, event){ - - // module: - // dijit/form/_CheckBoxMixin - - return declare("dijit.form._CheckBoxMixin", null, { - // summary: - // Mixin to provide widget functionality corresponding to an HTML checkbox - // - // description: - // User interacts with real html inputs. - // On onclick (which occurs by mouse click, space-bar, or - // using the arrow keys to switch the selected radio button), - // we update the state of the checkbox/radio. - // - - // type: [private] String - // type attribute on `<input>` node. - // Overrides `dijit/form/Button.type`. Users should not change this value. - type: "checkbox", - - // value: String - // As an initialization parameter, equivalent to value field on normal checkbox - // (if checked, the value is passed as the value when form is submitted). - value: "on", - - // readOnly: Boolean - // Should this widget respond to user input? - // In markup, this is specified as "readOnly". - // Similar to disabled except readOnly form values are submitted. - readOnly: false, - - // aria-pressed for toggle buttons, and aria-checked for checkboxes - _aria_attr: "aria-checked", - - _setReadOnlyAttr: function(/*Boolean*/ value){ - this._set("readOnly", value); - domAttr.set(this.focusNode, 'readOnly', value); - }, - - // Override dijit/form/Button._setLabelAttr() since we don't even have a containerNode. - // Normally users won't try to set label, except when CheckBox or RadioButton is the child of a dojox/layout/TabContainer - _setLabelAttr: undefined, - - _getSubmitValue: function(/*String*/ value){ - return !value && value !== 0 ? "on" : value; - }, - - _setValueAttr: function(newValue){ - newValue = this._getSubmitValue(newValue); // "on" to match browser native behavior when value unspecified - this._set("value", newValue); - domAttr.set(this.focusNode, "value", newValue); - }, - - reset: function(){ - this.inherited(arguments); - // Handle unlikely event that the <input type=checkbox> value attribute has changed - this._set("value", this.params.value || "on"); - domAttr.set(this.focusNode, 'value', this.value); - }, - - _onClick: function(/*Event*/ e){ - // summary: - // Internal function to handle click actions - need to check - // readOnly, since button no longer does that check. - if(this.readOnly){ - event.stop(e); - return false; - } - return this.inherited(arguments); - } - }); -}); - -}, -'dijit/layout/ContentPane':function(){ -define("dijit/layout/ContentPane", [ - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.mixin lang.delegate lang.hitch lang.isFunction lang.isObject - "../_Widget", - "../_Container", - "./_ContentPaneResizeMixin", - "dojo/string", // string.substitute - "dojo/html", // html._ContentSetter - "dojo/i18n!../nls/loading", - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/_base/Deferred", // Deferred - "dojo/dom", // dom.byId - "dojo/dom-attr", // domAttr.attr - "dojo/dom-construct", // empty() - "dojo/_base/xhr", // xhr.get - "dojo/i18n", // i18n.getLocalization - "dojo/when" -], function(kernel, lang, _Widget, _Container, _ContentPaneResizeMixin, string, html, nlsLoading, - array, declare, Deferred, dom, domAttr, domConstruct, xhr, i18n, when){ - -// module: -// dijit/layout/ContentPane - - -return declare("dijit.layout.ContentPane", [_Widget, _Container, _ContentPaneResizeMixin], { - // summary: - // A widget containing an HTML fragment, specified inline - // or by uri. Fragment may include widgets. - // - // description: - // This widget embeds a document fragment in the page, specified - // either by uri, javascript generated markup or DOM reference. - // Any widgets within this content are instantiated and managed, - // but laid out according to the HTML structure. Unlike IFRAME, - // ContentPane embeds a document fragment as would be found - // inside the BODY tag of a full HTML document. It should not - // contain the HTML, HEAD, or BODY tags. - // For more advanced functionality with scripts and - // stylesheets, see dojox/layout/ContentPane. This widget may be - // used stand alone or as a base class for other widgets. - // ContentPane is useful as a child of other layout containers - // such as BorderContainer or TabContainer, but note that those - // widgets can contain any widget as a child. - // - // example: - // Some quick samples: - // To change the innerHTML: - // | cp.set('content', '<b>new content</b>')` - // Or you can send it a NodeList: - // | cp.set('content', dojo.query('div [class=selected]', userSelection)) - // To do an ajax update: - // | cp.set('href', url) - - // href: String - // The href of the content that displays now. - // Set this at construction if you want to load data externally when the - // pane is shown. (Set preload=true to load it immediately.) - // Changing href after creation doesn't have any effect; Use set('href', ...); - href: "", - - // content: String|DomNode|NodeList|dijit/_Widget - // The innerHTML of the ContentPane. - // Note that the initialization parameter / argument to set("content", ...) - // can be a String, DomNode, Nodelist, or _Widget. - content: "", - - // extractContent: Boolean - // Extract visible content from inside of `<body> .... </body>`. - // I.e., strip `<html>` and `<head>` (and it's contents) from the href - extractContent: false, - - // parseOnLoad: Boolean - // Parse content and create the widgets, if any. - parseOnLoad: true, - - // parserScope: String - // Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, - // will search for data-dojo-type (or dojoType). For backwards compatibility - // reasons defaults to dojo._scopeName (which is "dojo" except when - // multi-version support is used, when it will be something like dojo16, dojo20, etc.) - parserScope: kernel._scopeName, - - // preventCache: Boolean - // Prevent caching of data from href's by appending a timestamp to the href. - preventCache: false, - - // preload: Boolean - // Force load of data on initialization even if pane is hidden. - preload: false, - - // refreshOnShow: Boolean - // Refresh (re-download) content when pane goes from hidden to shown - refreshOnShow: false, - - // loadingMessage: String - // Message that shows while downloading - loadingMessage: "<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>", - - // errorMessage: String - // Message that shows if an error occurs - errorMessage: "<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>", - - // isLoaded: [readonly] Boolean - // True if the ContentPane has data in it, either specified - // during initialization (via href or inline content), or set - // via set('content', ...) / set('href', ...) - // - // False if it doesn't have any content, or if ContentPane is - // still in the process of downloading href. - isLoaded: false, - - baseClass: "dijitContentPane", - - /*====== - // ioMethod: dojo/_base/xhr.get|dojo._base/xhr.post - // Function that should grab the content specified via href. - ioMethod: dojo.xhrGet, - ======*/ - - // ioArgs: Object - // Parameters to pass to xhrGet() request, for example: - // | <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="href: './bar', ioArgs: {timeout: 500}"> - ioArgs: {}, - - // onLoadDeferred: [readonly] dojo.Deferred - // This is the `dojo.Deferred` returned by set('href', ...) and refresh(). - // Calling onLoadDeferred.then() registers your - // callback to be called only once, when the prior set('href', ...) call or - // the initial href parameter to the constructor finishes loading. - // - // This is different than an onLoad() handler which gets called any time any href - // or content is loaded. - onLoadDeferred: null, - - // Cancel _WidgetBase's _setTitleAttr because we don't want the title attribute (used to specify - // tab labels) to be copied to ContentPane.domNode... otherwise a tooltip shows up over the - // entire pane. - _setTitleAttr: null, - - // Flag to parser that I'll parse my contents, so it shouldn't. - stopParser: true, - - // template: [private] Boolean - // Flag from the parser that this ContentPane is inside a template - // so the contents are pre-parsed. - // TODO: this declaration can be commented out in 2.0 - template: false, - - create: function(params, srcNodeRef){ - // Convert a srcNodeRef argument into a content parameter, so that the original contents are - // processed in the same way as contents set via set("content", ...), calling the parser etc. - // Avoid modifying original params object since that breaks NodeList instantiation, see #11906. - if((!params || !params.template) && srcNodeRef && !("href" in params) && !("content" in params)){ - srcNodeRef = dom.byId(srcNodeRef); - var df = srcNodeRef.ownerDocument.createDocumentFragment(); - while(srcNodeRef.firstChild){ - df.appendChild(srcNodeRef.firstChild); - } - params = lang.delegate(params, {content: df}); - } - this.inherited(arguments, [params, srcNodeRef]); - }, - - postMixInProperties: function(){ - this.inherited(arguments); - var messages = i18n.getLocalization("dijit", "loading", this.lang); - this.loadingMessage = string.substitute(this.loadingMessage, messages); - this.errorMessage = string.substitute(this.errorMessage, messages); - }, - - buildRendering: function(){ - this.inherited(arguments); - - // Since we have no template we need to set this.containerNode ourselves, to make getChildren() work. - // For subclasses of ContentPane that do have a template, does nothing. - if(!this.containerNode){ - this.containerNode = this.domNode; - } - - // remove the title attribute so it doesn't show up when hovering - // over a node (TODO: remove in 2.0, no longer needed after #11490) - this.domNode.title = ""; - - if(!domAttr.get(this.domNode,"role")){ - this.domNode.setAttribute("role", "group"); - } - }, - - startup: function(){ - // summary: - // Call startup() on all children including non _Widget ones like dojo/dnd/Source objects - - // This starts all the widgets - this.inherited(arguments); - - // And this catches stuff like dojo/dnd/Source - if(this._contentSetter){ - array.forEach(this._contentSetter.parseResults, function(obj){ - if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ - obj.startup(); - obj._started = true; - } - }, this); - } - }, - - _startChildren: function(){ - // summary: - // Called when content is loaded. Calls startup on each child widget. Similar to ContentPane.startup() - // itself, but avoids marking the ContentPane itself as "restarted" (see #15581). - - // This starts all the widgets - array.forEach(this.getChildren(), function(obj){ - if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ - obj.startup(); - obj._started = true; - } - }); - - // And this catches stuff like dojo/dnd/Source - if(this._contentSetter){ - array.forEach(this._contentSetter.parseResults, function(obj){ - if(!obj._started && !obj._destroyed && lang.isFunction(obj.startup)){ - obj.startup(); - obj._started = true; - } - }, this); - } - }, - - setHref: function(/*String|Uri*/ href){ - // summary: - // Deprecated. Use set('href', ...) instead. - kernel.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.", "", "2.0"); - return this.set("href", href); - }, - _setHrefAttr: function(/*String|Uri*/ href){ - // summary: - // Hook so set("href", ...) works. - // description: - // Reset the (external defined) content of this pane and replace with new url - // Note: It delays the download until widget is shown if preload is false. - // href: - // url to the page you want to get, must be within the same domain as your mainpage - - // Cancel any in-flight requests (a set('href', ...) will cancel any in-flight set('href', ...)) - this.cancel(); - - this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); - this.onLoadDeferred.then(lang.hitch(this, "onLoad")); - - this._set("href", href); - - // _setHrefAttr() is called during creation and by the user, after creation. - // Assuming preload == false, only in the second case do we actually load the URL; - // otherwise it's done in startup(), and only if this widget is shown. - if(this.preload || (this._created && this._isShown())){ - this._load(); - }else{ - // Set flag to indicate that href needs to be loaded the next time the - // ContentPane is made visible - this._hrefChanged = true; - } - - return this.onLoadDeferred; // Deferred - }, - - setContent: function(/*String|DomNode|Nodelist*/data){ - // summary: - // Deprecated. Use set('content', ...) instead. - kernel.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.", "", "2.0"); - this.set("content", data); - }, - _setContentAttr: function(/*String|DomNode|Nodelist*/data){ - // summary: - // Hook to make set("content", ...) work. - // Replaces old content with data content, include style classes from old content - // data: - // the new Content may be String, DomNode or NodeList - // - // if data is a NodeList (or an array of nodes) nodes are copied - // so you can import nodes from another document implicitly - - // clear href so we can't run refresh and clear content - // refresh should only work if we downloaded the content - this._set("href", ""); - - // Cancel any in-flight requests (a set('content', ...) will cancel any in-flight set('href', ...)) - this.cancel(); - - // Even though user is just setting content directly, still need to define an onLoadDeferred - // because the _onLoadHandler() handler is still getting called from setContent() - this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); - if(this._created){ - // For back-compat reasons, call onLoad() for set('content', ...) - // calls but not for content specified in srcNodeRef (ie: <div data-dojo-type=ContentPane>...</div>) - // or as initialization parameter (ie: new ContentPane({content: ...}) - this.onLoadDeferred.then(lang.hitch(this, "onLoad")); - } - - this._setContent(data || ""); - - this._isDownloaded = false; // mark that content is from a set('content') not a set('href') - - return this.onLoadDeferred; // Deferred - }, - _getContentAttr: function(){ - // summary: - // Hook to make get("content") work - return this.containerNode.innerHTML; - }, - - cancel: function(){ - // summary: - // Cancels an in-flight download of content - if(this._xhrDfd && (this._xhrDfd.fired == -1)){ - this._xhrDfd.cancel(); - } - delete this._xhrDfd; // garbage collect - - this.onLoadDeferred = null; - }, - - destroy: function(){ - this.cancel(); - this.inherited(arguments); - }, - - destroyRecursive: function(/*Boolean*/ preserveDom){ - // summary: - // Destroy the ContentPane and its contents - - // if we have multiple controllers destroying us, bail after the first - if(this._beingDestroyed){ - return; - } - this.inherited(arguments); - }, - - _onShow: function(){ - // summary: - // Called when the ContentPane is made visible - // description: - // For a plain ContentPane, this is called on initialization, from startup(). - // If the ContentPane is a hidden pane of a TabContainer etc., then it's - // called whenever the pane is made visible. - // - // Does necessary processing, including href download and layout/resize of - // child widget(s) - - this.inherited(arguments); - - if(this.href){ - if(!this._xhrDfd && // if there's an href that isn't already being loaded - (!this.isLoaded || this._hrefChanged || this.refreshOnShow) - ){ - return this.refresh(); // If child has an href, promise that fires when the load is complete - } - } - }, - - refresh: function(){ - // summary: - // [Re]download contents of href and display - // description: - // 1. cancels any currently in-flight requests - // 2. posts "loading..." message - // 3. sends XHR to download new data - - // Cancel possible prior in-flight request - this.cancel(); - - this.onLoadDeferred = new Deferred(lang.hitch(this, "cancel")); - this.onLoadDeferred.then(lang.hitch(this, "onLoad")); - this._load(); - return this.onLoadDeferred; // If child has an href, promise that fires when refresh is complete - }, - - _load: function(){ - // summary: - // Load/reload the href specified in this.href - - // display loading message - this._setContent(this.onDownloadStart(), true); - - var self = this; - var getArgs = { - preventCache: (this.preventCache || this.refreshOnShow), - url: this.href, - handleAs: "text" - }; - if(lang.isObject(this.ioArgs)){ - lang.mixin(getArgs, this.ioArgs); - } - - var hand = (this._xhrDfd = (this.ioMethod || xhr.get)(getArgs)), - returnedHtml; - - hand.then( - function(html){ - returnedHtml = html; - try{ - self._isDownloaded = true; - return self._setContent(html, false); - }catch(err){ - self._onError('Content', err); // onContentError - } - }, - function(err){ - if(!hand.canceled){ - // show error message in the pane - self._onError('Download', err); // onDownloadError - } - delete self._xhrDfd; - return err; - } - ).then(function(){ - self.onDownloadEnd(); - delete self._xhrDfd; - return returnedHtml; - }); - - // Remove flag saying that a load is needed - delete this._hrefChanged; - }, - - _onLoadHandler: function(data){ - // summary: - // This is called whenever new content is being loaded - this._set("isLoaded", true); - try{ - this.onLoadDeferred.resolve(data); - }catch(e){ - console.error('Error '+this.widgetId+' running custom onLoad code: ' + e.message); - } - }, - - _onUnloadHandler: function(){ - // summary: - // This is called whenever the content is being unloaded - this._set("isLoaded", false); - try{ - this.onUnload(); - }catch(e){ - console.error('Error '+this.widgetId+' running custom onUnload code: ' + e.message); - } - }, - - destroyDescendants: function(/*Boolean*/ preserveDom){ - // summary: - // Destroy all the widgets inside the ContentPane and empty containerNode - - // Make sure we call onUnload (but only when the ContentPane has real content) - if(this.isLoaded){ - this._onUnloadHandler(); - } - - // Even if this.isLoaded == false there might still be a "Loading..." message - // to erase, so continue... - - // For historical reasons we need to delete all widgets under this.containerNode, - // even ones that the user has created manually. - var setter = this._contentSetter; - array.forEach(this.getChildren(), function(widget){ - if(widget.destroyRecursive){ - // All widgets will hit this branch - widget.destroyRecursive(preserveDom); - }else if(widget.destroy){ - // Things like dojo/dnd/Source have destroy(), not destroyRecursive() - widget.destroy(preserveDom); - } - widget._destroyed = true; - }); - if(setter){ - // Most of the widgets in setter.parseResults have already been destroyed, but - // things like Menu that have been moved to <body> haven't yet - array.forEach(setter.parseResults, function(widget){ - if(!widget._destroyed){ - if(widget.destroyRecursive){ - // All widgets will hit this branch - widget.destroyRecursive(preserveDom); - }else if(widget.destroy){ - // Things like dojo/dnd/Source have destroy(), not destroyRecursive() - widget.destroy(preserveDom); - } - widget._destroyed = true; - } - }); - delete setter.parseResults; - } - - // And then clear away all the DOM nodes - if(!preserveDom){ - domConstruct.empty(this.containerNode); - } - - // Delete any state information we have about current contents - delete this._singleChild; - }, - - _setContent: function(/*String|DocumentFragment*/ cont, /*Boolean*/ isFakeContent){ - // summary: - // Insert the content into the container node - // returns: - // Returns a Deferred promise that is resolved when the content is parsed. - - // first get rid of child widgets - this.destroyDescendants(); - - // html.set will take care of the rest of the details - // we provide an override for the error handling to ensure the widget gets the errors - // configure the setter instance with only the relevant widget instance properties - // NOTE: unless we hook into attr, or provide property setters for each property, - // we need to re-configure the ContentSetter with each use - var setter = this._contentSetter; - if(! (setter && setter instanceof html._ContentSetter)){ - setter = this._contentSetter = new html._ContentSetter({ - node: this.containerNode, - _onError: lang.hitch(this, this._onError), - onContentError: lang.hitch(this, function(e){ - // fires if a domfault occurs when we are appending this.errorMessage - // like for instance if domNode is a UL and we try append a DIV - var errMess = this.onContentError(e); - try{ - this.containerNode.innerHTML = errMess; - }catch(e){ - console.error('Fatal '+this.id+' could not change content due to '+e.message, e); - } - })/*, - _onError */ - }); - } - - var setterParams = lang.mixin({ - cleanContent: this.cleanContent, - extractContent: this.extractContent, - parseContent: !cont.domNode && this.parseOnLoad, - parserScope: this.parserScope, - startup: false, - dir: this.dir, - lang: this.lang, - textDir: this.textDir - }, this._contentSetterParams || {}); - - var p = setter.set( (lang.isObject(cont) && cont.domNode) ? cont.domNode : cont, setterParams ); - - // dojox/layout/html/_base::_ContentSetter.set() returns a Promise that indicates when everything is completed. - // dojo/html::_ContentSetter.set() currently returns the DOMNode, but that will be changed for 2.0. - // So, if set() returns a promise then use it, otherwise fallback to waiting on setter.parseDeferred - var self = this; - return when(p && p.then ? p : setter.parseDeferred, function(){ - // setter params must be pulled afresh from the ContentPane each time - delete self._contentSetterParams; - - if(!isFakeContent){ - if(self._started){ - // Startup each top level child widget (and they will start their children, recursively) - self._startChildren(); - - // Call resize() on each of my child layout widgets, - // or resize() on my single child layout widget... - // either now (if I'm currently visible) or when I become visible - self._scheduleLayout(); - } - self._onLoadHandler(cont); - } - }); - }, - - _onError: function(type, err, consoleText){ - this.onLoadDeferred.reject(err); - - // shows user the string that is returned by on[type]Error - // override on[type]Error and return your own string to customize - var errText = this['on' + type + 'Error'].call(this, err); - if(consoleText){ - console.error(consoleText, err); - }else if(errText){// a empty string won't change current content - this._setContent(errText, true); - } - }, - - // EVENT's, should be overide-able - onLoad: function(/*===== data =====*/){ - // summary: - // Event hook, is called after everything is loaded and widgetified - // tags: - // callback - }, - - onUnload: function(){ - // summary: - // Event hook, is called before old content is cleared - // tags: - // callback - }, - - onDownloadStart: function(){ - // summary: - // Called before download starts. - // description: - // The string returned by this function will be the html - // that tells the user we are loading something. - // Override with your own function if you want to change text. - // tags: - // extension - return this.loadingMessage; - }, - - onContentError: function(/*Error*/ /*===== error =====*/){ - // summary: - // Called on DOM faults, require faults etc. in content. - // - // In order to display an error message in the pane, return - // the error message from this method, as an HTML string. - // - // By default (if this method is not overriden), it returns - // nothing, so the error message is just printed to the console. - // tags: - // extension - }, - - onDownloadError: function(/*Error*/ /*===== error =====*/){ - // summary: - // Called when download error occurs. - // - // In order to display an error message in the pane, return - // the error message from this method, as an HTML string. - // - // Default behavior (if this method is not overriden) is to display - // the error message inside the pane. - // tags: - // extension - return this.errorMessage; - }, - - onDownloadEnd: function(){ - // summary: - // Called when download is finished. - // tags: - // callback - } -}); - -}); - -}, -'url:dijit/form/templates/ValidationTextBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n", -'url:dijit/form/templates/TextBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n", -'dijit/_KeyNavContainer':function(){ -define("dijit/_KeyNavContainer", [ - "dojo/_base/kernel", // kernel.deprecated - "./_Container", - "./_FocusMixin", - "dojo/_base/array", // array.forEach - "dojo/keys", // keys.END keys.HOME - "dojo/_base/declare", // declare - "dojo/_base/event", // event.stop - "dojo/dom-attr", // domAttr.set - "dojo/_base/lang" // lang.hitch -], function(kernel, _Container, _FocusMixin, array, keys, declare, event, domAttr, lang){ - - - // module: - // dijit/_KeyNavContainer - - return declare("dijit._KeyNavContainer", [_FocusMixin, _Container], { - // summary: - // A _Container with keyboard navigation of its children. - // description: - // To use this mixin, call connectKeyNavHandlers() in - // postCreate(). - // It provides normalized keyboard and focusing code for Container - // widgets. - -/*===== - // focusedChild: [protected] Widget - // The currently focused child widget, or null if there isn't one - focusedChild: null, -=====*/ - - // tabIndex: String - // Tab index of the container; same as HTML tabIndex attribute. - // Note then when user tabs into the container, focus is immediately - // moved to the first item in the container. - tabIndex: "0", - - connectKeyNavHandlers: function(/*keys[]*/ prevKeyCodes, /*keys[]*/ nextKeyCodes){ - // summary: - // Call in postCreate() to attach the keyboard handlers - // to the container. - // preKeyCodes: keys[] - // Key codes for navigating to the previous child. - // nextKeyCodes: keys[] - // Key codes for navigating to the next child. - // tags: - // protected - - // TODO: call this automatically from my own postCreate() - - var keyCodes = (this._keyNavCodes = {}); - var prev = lang.hitch(this, "focusPrev"); - var next = lang.hitch(this, "focusNext"); - array.forEach(prevKeyCodes, function(code){ keyCodes[code] = prev; }); - array.forEach(nextKeyCodes, function(code){ keyCodes[code] = next; }); - keyCodes[keys.HOME] = lang.hitch(this, "focusFirstChild"); - keyCodes[keys.END] = lang.hitch(this, "focusLastChild"); - this.connect(this.domNode, "onkeypress", "_onContainerKeypress"); - this.connect(this.domNode, "onfocus", "_onContainerFocus"); - }, - - startupKeyNavChildren: function(){ - kernel.deprecated("startupKeyNavChildren() call no longer needed", "", "2.0"); - }, - - startup: function(){ - this.inherited(arguments); - array.forEach(this.getChildren(), lang.hitch(this, "_startupChild")); - }, - - addChild: function(/*dijit/_WidgetBase*/ widget, /*int?*/ insertIndex){ - this.inherited(arguments); - this._startupChild(widget); - }, - - focus: function(){ - // summary: - // Default focus() implementation: focus the first child. - this.focusFirstChild(); - }, - - focusFirstChild: function(){ - // summary: - // Focus the first focusable child in the container. - // tags: - // protected - this.focusChild(this._getFirstFocusableChild()); - }, - - focusLastChild: function(){ - // summary: - // Focus the last focusable child in the container. - // tags: - // protected - this.focusChild(this._getLastFocusableChild()); - }, - - focusNext: function(){ - // summary: - // Focus the next widget - // tags: - // protected - this.focusChild(this._getNextFocusableChild(this.focusedChild, 1)); - }, - - focusPrev: function(){ - // summary: - // Focus the last focusable node in the previous widget - // (ex: go to the ComboButton icon section rather than button section) - // tags: - // protected - this.focusChild(this._getNextFocusableChild(this.focusedChild, -1), true); - }, - - focusChild: function(/*dijit/_WidgetBase*/ widget, /*Boolean*/ last){ - // summary: - // Focus specified child widget. - // widget: - // Reference to container's child widget - // last: - // If true and if widget has multiple focusable nodes, focus the - // last one instead of the first one - // tags: - // protected - - if(!widget){ return; } - - if(this.focusedChild && widget !== this.focusedChild){ - this._onChildBlur(this.focusedChild); // used by _MenuBase - } - widget.set("tabIndex", this.tabIndex); // for IE focus outline to appear, must set tabIndex before focs - widget.focus(last ? "end" : "start"); - this._set("focusedChild", widget); - }, - - _startupChild: function(/*dijit/_WidgetBase*/ widget){ - // summary: - // Setup for each child widget - // description: - // Sets tabIndex=-1 on each child, so that the tab key will - // leave the container rather than visiting each child. - // tags: - // private - - widget.set("tabIndex", "-1"); - - this.connect(widget, "_onFocus", function(){ - // Set valid tabIndex so tabbing away from widget goes to right place, see #10272 - widget.set("tabIndex", this.tabIndex); - }); - this.connect(widget, "_onBlur", function(){ - widget.set("tabIndex", "-1"); - }); - }, - - _onContainerFocus: function(evt){ - // summary: - // Handler for when the container gets focus - // description: - // Initially the container itself has a tabIndex, but when it gets - // focus, switch focus to first child... - // tags: - // private - - // Note that we can't use _onFocus() because switching focus from the - // _onFocus() handler confuses the focus.js code - // (because it causes _onFocusNode() to be called recursively) - // Also, _onFocus() would fire when focus went directly to a child widget due to mouse click. - - // Ignore spurious focus events: - // 1. focus on a child widget bubbles on FF - // 2. on IE, clicking the scrollbar of a select dropdown moves focus from the focused child item to me - if(evt.target !== this.domNode || this.focusedChild){ return; } - - this.focusFirstChild(); - - // and then set the container's tabIndex to -1, - // (don't remove as that breaks Safari 4) - // so that tab or shift-tab will go to the fields after/before - // the container, rather than the container itself - domAttr.set(this.domNode, "tabIndex", "-1"); - }, - - _onBlur: function(evt){ - // When focus is moved away the container, and its descendant (popup) widgets, - // then restore the container's tabIndex so that user can tab to it again. - // Note that using _onBlur() so that this doesn't happen when focus is shifted - // to one of my child widgets (typically a popup) - if(this.tabIndex){ - domAttr.set(this.domNode, "tabIndex", this.tabIndex); - } - this.focusedChild = null; - this.inherited(arguments); - }, - - _onContainerKeypress: function(evt){ - // summary: - // When a key is pressed, if it's an arrow key etc. then - // it's handled here. - // tags: - // private - if(evt.ctrlKey || evt.altKey){ return; } - var func = this._keyNavCodes[evt.charOrCode]; - if(func){ - func(); - event.stop(evt); - } - }, - - _onChildBlur: function(/*dijit/_WidgetBase*/ /*===== widget =====*/){ - // summary: - // Called when focus leaves a child widget to go - // to a sibling widget. - // Used by MenuBase.js (TODO: move code there) - // tags: - // protected - }, - - _getFirstFocusableChild: function(){ - // summary: - // Returns first child that can be focused - return this._getNextFocusableChild(null, 1); // dijit/_WidgetBase - }, - - _getLastFocusableChild: function(){ - // summary: - // Returns last child that can be focused - return this._getNextFocusableChild(null, -1); // dijit/_WidgetBase - }, - - _getNextFocusableChild: function(child, dir){ - // summary: - // Returns the next or previous focusable child, compared - // to "child" - // child: Widget - // The current widget - // dir: Integer - // - 1 = after - // - -1 = before - if(child){ - child = this._getSiblingOfChild(child, dir); - } - var children = this.getChildren(); - for(var i=0; i < children.length; i++){ - if(!child){ - child = children[(dir>0) ? 0 : (children.length-1)]; - } - if(child.isFocusable()){ - return child; // dijit/_WidgetBase - } - child = this._getSiblingOfChild(child, dir); - } - // no focusable child found - return null; // dijit/_WidgetBase - } - }); -}); - -}, -'dijit/layout/utils':function(){ -define("dijit/layout/utils", [ - "dojo/_base/array", // array.filter array.forEach - "dojo/dom-class", // domClass.add domClass.remove - "dojo/dom-geometry", // domGeometry.marginBox - "dojo/dom-style", // domStyle.getComputedStyle - "dojo/_base/lang", // lang.mixin - "../main" // for exporting symbols to dijit, remove in 2.0 -], function(array, domClass, domGeometry, domStyle, lang, dijit){ - - // module: - // dijit/layout/utils - - var layout = lang.getObject("layout", true, dijit); - /*===== - layout = { - // summary: - // marginBox2contentBox() and layoutChildren() - }; - =====*/ - - layout.marginBox2contentBox = function(/*DomNode*/ node, /*Object*/ mb){ - // summary: - // Given the margin-box size of a node, return its content box size. - // Functions like domGeometry.contentBox() but is more reliable since it doesn't have - // to wait for the browser to compute sizes. - var cs = domStyle.getComputedStyle(node); - var me = domGeometry.getMarginExtents(node, cs); - var pb = domGeometry.getPadBorderExtents(node, cs); - return { - l: domStyle.toPixelValue(node, cs.paddingLeft), - t: domStyle.toPixelValue(node, cs.paddingTop), - w: mb.w - (me.w + pb.w), - h: mb.h - (me.h + pb.h) - }; - }; - - function capitalize(word){ - return word.substring(0,1).toUpperCase() + word.substring(1); - } - - function size(widget, dim){ - // size the child - var newSize = widget.resize ? widget.resize(dim) : domGeometry.setMarginBox(widget.domNode, dim); - - // record child's size - if(newSize){ - // if the child returned it's new size then use that - lang.mixin(widget, newSize); - }else{ - // otherwise, call getMarginBox(), but favor our own numbers when we have them. - // the browser lies sometimes - lang.mixin(widget, domGeometry.getMarginBox(widget.domNode)); - lang.mixin(widget, dim); - } - } - - layout.layoutChildren = function(/*DomNode*/ container, /*Object*/ dim, /*Widget[]*/ children, - /*String?*/ changedRegionId, /*Number?*/ changedRegionSize){ - // summary: - // Layout a bunch of child dom nodes within a parent dom node - // container: - // parent node - // dim: - // {l, t, w, h} object specifying dimensions of container into which to place children - // children: - // An array of Widgets or at least objects containing: - // - // - domNode: pointer to DOM node to position - // - region or layoutAlign: position to place DOM node - // - resize(): (optional) method to set size of node - // - id: (optional) Id of widgets, referenced from resize object, below. - // changedRegionId: - // If specified, the slider for the region with the specified id has been dragged, and thus - // the region's height or width should be adjusted according to changedRegionSize - // changedRegionSize: - // See changedRegionId. - - // copy dim because we are going to modify it - dim = lang.mixin({}, dim); - - domClass.add(container, "dijitLayoutContainer"); - - // Move "client" elements to the end of the array for layout. a11y dictates that the author - // needs to be able to put them in the document in tab-order, but this algorithm requires that - // client be last. TODO: move these lines to LayoutContainer? Unneeded other places I think. - children = array.filter(children, function(item){ return item.region != "center" && item.layoutAlign != "client"; }) - .concat(array.filter(children, function(item){ return item.region == "center" || item.layoutAlign == "client"; })); - - // set positions/sizes - array.forEach(children, function(child){ - var elm = child.domNode, - pos = (child.region || child.layoutAlign); - if(!pos){ - throw new Error("No region setting for " + child.id) - } - - // set elem to upper left corner of unused space; may move it later - var elmStyle = elm.style; - elmStyle.left = dim.l+"px"; - elmStyle.top = dim.t+"px"; - elmStyle.position = "absolute"; - - domClass.add(elm, "dijitAlign" + capitalize(pos)); - - // Size adjustments to make to this child widget - var sizeSetting = {}; - - // Check for optional size adjustment due to splitter drag (height adjustment for top/bottom align - // panes and width adjustment for left/right align panes. - if(changedRegionId && changedRegionId == child.id){ - sizeSetting[child.region == "top" || child.region == "bottom" ? "h" : "w"] = changedRegionSize; - } - - // set size && adjust record of remaining space. - // note that setting the width of a <div> may affect its height. - if(pos == "top" || pos == "bottom"){ - sizeSetting.w = dim.w; - size(child, sizeSetting); - dim.h -= child.h; - if(pos == "top"){ - dim.t += child.h; - }else{ - elmStyle.top = dim.t + dim.h + "px"; - } - }else if(pos == "left" || pos == "right"){ - sizeSetting.h = dim.h; - size(child, sizeSetting); - dim.w -= child.w; - if(pos == "left"){ - dim.l += child.w; - }else{ - elmStyle.left = dim.l + dim.w + "px"; - } - }else if(pos == "client" || pos == "center"){ - size(child, dim); - } - }); - }; - - - return { - marginBox2contentBox: layout.marginBox2contentBox, - layoutChildren: layout.layoutChildren - }; -}); - -}, -'dijit/_Contained':function(){ -define("dijit/_Contained", [ - "dojo/_base/declare", // declare - "./registry" // registry.getEnclosingWidget(), registry.byNode() -], function(declare, registry){ - - // module: - // dijit/_Contained - - return declare("dijit._Contained", null, { - // summary: - // Mixin for widgets that are children of a container widget - // - // example: - // | // make a basic custom widget that knows about it's parents - // | declare("my.customClass",[dijit._Widget,dijit._Contained],{}); - - _getSibling: function(/*String*/ which){ - // summary: - // Returns next or previous sibling - // which: - // Either "next" or "previous" - // tags: - // private - var node = this.domNode; - do{ - node = node[which+"Sibling"]; - }while(node && node.nodeType != 1); - return node && registry.byNode(node); // dijit/_WidgetBase - }, - - getPreviousSibling: function(){ - // summary: - // Returns null if this is the first child of the parent, - // otherwise returns the next element sibling to the "left". - - return this._getSibling("previous"); // dijit/_WidgetBase - }, - - getNextSibling: function(){ - // summary: - // Returns null if this is the last child of the parent, - // otherwise returns the next element sibling to the "right". - - return this._getSibling("next"); // dijit/_WidgetBase - }, - - getIndexInParent: function(){ - // summary: - // Returns the index of this widget within its container parent. - // It returns -1 if the parent does not exist, or if the parent - // is not a dijit._Container - - var p = this.getParent(); - if(!p || !p.getIndexOfChild){ - return -1; // int - } - return p.getIndexOfChild(this); // int - } - }); -}); - -}, -'dijit/form/DataList':function(){ -define("dijit/form/DataList", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.byId - "dojo/_base/lang", // lang.trim - "dojo/query", // query - "dojo/store/Memory", - "../registry" // registry.add registry.remove -], function(declare, dom, lang, query, MemoryStore, registry){ - - // module: - // dijit/form/DataList - - function toItem(/*DOMNode*/ option){ - // summary: - // Convert `<option>` node to hash - return { - id: option.value, - value: option.value, - name: lang.trim(option.innerText || option.textContent || '') - }; - } - - return declare("dijit.form.DataList", MemoryStore, { - // summary: - // Inefficient but small data store specialized for inlined data via OPTION tags - // - // description: - // Provides a store for inlined data like: - // - // | <datalist> - // | <option value="AL">Alabama</option> - // | ... - - constructor: function(params, srcNodeRef){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String - // Attach widget to this DOM node. - - // store pointer to original DOM tree - this.domNode = dom.byId(srcNodeRef); - - lang.mixin(this, params); - if(this.id){ - registry.add(this); // add to registry so it can be easily found by id - } - this.domNode.style.display = "none"; - - this.inherited(arguments, [{ - data: query("option", this.domNode).map(toItem) - }]); - }, - - destroy: function(){ - registry.remove(this.id); - }, - - fetchSelectedItem: function(){ - // summary: - // Get the option marked as selected, like `<option selected>`. - // Not part of dojo.data API. - var option = query("> option[selected]", this.domNode)[0] || query("> option", this.domNode)[0]; - return option && toItem(option); - } - }); -}); - -}, -'url:dijit/templates/Dialog.html':"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabIndex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n</div>\n", -'dijit/form/CheckBox':function(){ -require({cache:{ -'url:dijit/form/templates/CheckBox.html':"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"onclick:_onClick\"\n/></div>\n"}}); -define("dijit/form/CheckBox", [ - "require", - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/has", // has("dijit-legacy-requires") - "dojo/query", // query - "dojo/ready", - "./ToggleButton", - "./_CheckBoxMixin", - "dojo/text!./templates/CheckBox.html", - "dojo/NodeList-dom" // NodeList.addClass/removeClass -], function(require, declare, domAttr, has, query, ready, ToggleButton, _CheckBoxMixin, template){ - - // module: - // dijit/form/CheckBox - - // Back compat w/1.6, remove for 2.0 - if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/form/RadioButton"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - return declare("dijit.form.CheckBox", [ToggleButton, _CheckBoxMixin], { - // summary: - // Same as an HTML checkbox, but with fancy styling. - // - // description: - // User interacts with real html inputs. - // On onclick (which occurs by mouse click, space-bar, or - // using the arrow keys to switch the selected radio button), - // we update the state of the checkbox/radio. - // - // There are two modes: - // - // 1. High contrast mode - // 2. Normal mode - // - // In case 1, the regular html inputs are shown and used by the user. - // In case 2, the regular html inputs are invisible but still used by - // the user. They are turned quasi-invisible and overlay the background-image. - - templateString: template, - - baseClass: "dijitCheckBox", - - _setValueAttr: function(/*String|Boolean*/ newValue, /*Boolean*/ priorityChange){ - // summary: - // Handler for value= attribute to constructor, and also calls to - // set('value', val). - // description: - // During initialization, just saves as attribute to the `<input type=checkbox>`. - // - // After initialization, - // when passed a boolean, controls whether or not the CheckBox is checked. - // If passed a string, changes the value attribute of the CheckBox (the one - // specified as "value" when the CheckBox was constructed - // (ex: `<input data-dojo-type="dijit/CheckBox" value="chicken">`). - // - // `widget.set('value', string)` will check the checkbox and change the value to the - // specified string. - // - // `widget.set('value', boolean)` will change the checked state. - - if(typeof newValue == "string"){ - this.inherited(arguments); - newValue = true; - } - if(this._created){ - this.set('checked', newValue, priorityChange); - } - }, - _getValueAttr: function(){ - // summary: - // Hook so get('value') works. - // description: - // If the CheckBox is checked, returns the value attribute. - // Otherwise returns false. - return (this.checked ? this.value : false); - }, - - // Override behavior from Button, since we don't have an iconNode - _setIconClassAttr: null, - - postMixInProperties: function(){ - this.inherited(arguments); - - // Need to set initial checked state as part of template, so that form submit works. - // domAttr.set(node, "checked", bool) doesn't work on IE until node has been attached - // to <body>, see #8666 - this.checkedAttrSetting = this.checked ? "checked" : ""; - }, - - _fillContent: function(){ - // Override Button::_fillContent() since it doesn't make sense for CheckBox, - // since CheckBox doesn't even have a container - }, - - _onFocus: function(){ - if(this.id){ - query("label[for='"+this.id+"']").addClass("dijitFocusedLabel"); - } - this.inherited(arguments); - }, - - _onBlur: function(){ - if(this.id){ - query("label[for='"+this.id+"']").removeClass("dijitFocusedLabel"); - } - this.inherited(arguments); - } - }); -}); - -}, -'dijit/tree/_dndSelector':function(){ -define("dijit/tree/_dndSelector", [ - "dojo/_base/array", // array.filter array.forEach array.map - "dojo/_base/connect", // connect.isCopyKey - "dojo/_base/declare", // declare - "dojo/_base/Deferred", // Deferred - "dojo/_base/kernel", // global - "dojo/_base/lang", // lang.hitch - "dojo/cookie", // cookie - "dojo/mouse", // mouse.isLeft - "dojo/on", - "dojo/touch", - "./_dndContainer" -], function(array, connect, declare, Deferred, kernel, lang, cookie, mouse, on, touch, _dndContainer){ - - // module: - // dijit/tree/_dndSelector - - - return declare("dijit.tree._dndSelector", _dndContainer, { - // summary: - // This is a base class for `dijit/tree/dndSource` , and isn't meant to be used directly. - // It's based on `dojo/dnd/Selector`. - // tags: - // protected - - /*===== - // selection: Object - // (id to DomNode) map for every TreeNode that's currently selected. - // The DOMNode is the TreeNode.rowNode. - selection: {}, - =====*/ - - constructor: function(){ - // summary: - // Initialization - // tags: - // private - - this.selection={}; - this.anchor = null; - - if(!this.cookieName && this.tree.id){ - this.cookieName = this.tree.id + "SaveSelectedCookie"; - } - - this.events.push( - on(this.tree.domNode, touch.press, lang.hitch(this,"onMouseDown")), - on(this.tree.domNode, touch.release, lang.hitch(this,"onMouseUp")), - on(this.tree.domNode, touch.move, lang.hitch(this,"onMouseMove")) - ); - }, - - // singular: Boolean - // Allows selection of only one element, if true. - // Tree hasn't been tested in singular=true mode, unclear if it works. - singular: false, - - // methods - getSelectedTreeNodes: function(){ - // summary: - // Returns a list of selected node(s). - // Used by dndSource on the start of a drag. - // tags: - // protected - var nodes=[], sel = this.selection; - for(var i in sel){ - nodes.push(sel[i]); - } - return nodes; - }, - - selectNone: function(){ - // summary: - // Unselects all items - // tags: - // private - - this.setSelection([]); - return this; // self - }, - - destroy: function(){ - // summary: - // Prepares the object to be garbage-collected - this.inherited(arguments); - this.selection = this.anchor = null; - }, - addTreeNode: function(/*dijit/Tree._TreeNode*/ node, /*Boolean?*/isAnchor){ - // summary: - // add node to current selection - // node: Node - // node to add - // isAnchor: Boolean - // Whether the node should become anchor. - - this.setSelection(this.getSelectedTreeNodes().concat( [node] )); - if(isAnchor){ this.anchor = node; } - return node; - }, - removeTreeNode: function(/*dijit/Tree._TreeNode*/ node){ - // summary: - // remove node from current selection - // node: Node - // node to remove - this.setSelection(this._setDifference(this.getSelectedTreeNodes(), [node])); - return node; - }, - isTreeNodeSelected: function(/*dijit/Tree._TreeNode*/ node){ - // summary: - // return true if node is currently selected - // node: Node - // the node to check whether it's in the current selection - - return node.id && !!this.selection[node.id]; - }, - setSelection: function(/*dijit/Tree._TreeNode[]*/ newSelection){ - // summary: - // set the list of selected nodes to be exactly newSelection. All changes to the - // selection should be passed through this function, which ensures that derived - // attributes are kept up to date. Anchor will be deleted if it has been removed - // from the selection, but no new anchor will be added by this function. - // newSelection: Node[] - // list of tree nodes to make selected - var oldSelection = this.getSelectedTreeNodes(); - array.forEach(this._setDifference(oldSelection, newSelection), lang.hitch(this, function(node){ - node.setSelected(false); - if(this.anchor == node){ - delete this.anchor; - } - delete this.selection[node.id]; - })); - array.forEach(this._setDifference(newSelection, oldSelection), lang.hitch(this, function(node){ - node.setSelected(true); - this.selection[node.id] = node; - })); - this._updateSelectionProperties(); - }, - _setDifference: function(xs,ys){ - // summary: - // Returns a copy of xs which lacks any objects - // occurring in ys. Checks for membership by - // modifying and then reading the object, so it will - // not properly handle sets of numbers or strings. - - array.forEach(ys, function(y){ y.__exclude__ = true; }); - var ret = array.filter(xs, function(x){ return !x.__exclude__; }); - - // clean up after ourselves. - array.forEach(ys, function(y){ delete y['__exclude__'] }); - return ret; - }, - _updateSelectionProperties: function(){ - // summary: - // Update the following tree properties from the current selection: - // path[s], selectedItem[s], selectedNode[s] - - var selected = this.getSelectedTreeNodes(); - var paths = [], nodes = [], selects = []; - array.forEach(selected, function(node){ - var ary = node.getTreePath(), model = this.tree.model; - nodes.push(node); - paths.push(ary); - ary = array.map(ary, function(item){ - return model.getIdentity(item); - }, this); - selects.push(ary.join("/")) - }, this); - var items = array.map(nodes,function(node){ return node.item; }); - this.tree._set("paths", paths); - this.tree._set("path", paths[0] || []); - this.tree._set("selectedNodes", nodes); - this.tree._set("selectedNode", nodes[0] || null); - this.tree._set("selectedItems", items); - this.tree._set("selectedItem", items[0] || null); - if (this.tree.persist && selects.length > 0) { - cookie(this.cookieName, selects.join(","), {expires:365}); - } - }, - _getSavedPaths: function(){ - // summary: - // Returns paths of nodes that were selected previously and saved in the cookie. - - var tree = this.tree; - if(tree.persist && tree.dndController.cookieName){ - var oreo, paths = []; - oreo = cookie(tree.dndController.cookieName); - if(oreo){ - paths = array.map(oreo.split(","), function(path){ - return path.split("/"); - }) - } - return paths; - } - }, - // mouse events - onMouseDown: function(e){ - // summary: - // Event processor for onmousedown/ontouchstart - // e: Event - // onmousedown/ontouchstart event - // tags: - // protected - - // ignore click on expando node - if(!this.current || this.tree.isExpandoNode(e.target, this.current)){ return; } - - if(mouse.isLeft(e)){ - // Prevent text selection while dragging on desktop, see #16328. But don't call preventDefault() - // for mobile because it will break things completely, see #15838. - e.preventDefault(); - }else if(e.type != "touchstart"){ - // Ignore right click - return; - } - - var treeNode = this.current, - copy = connect.isCopyKey(e), id = treeNode.id; - - // if shift key is not pressed, and the node is already in the selection, - // delay deselection until onmouseup so in the case of DND, deselection - // will be canceled by onmousemove. - if(!this.singular && !e.shiftKey && this.selection[id]){ - this._doDeselect = true; - return; - }else{ - this._doDeselect = false; - } - this.userSelect(treeNode, copy, e.shiftKey); - }, - - onMouseUp: function(e){ - // summary: - // Event processor for onmouseup/ontouchend - // e: Event - // onmouseup/ontouchend event - // tags: - // protected - - // _doDeselect is the flag to indicate that the user wants to either ctrl+click on - // a already selected item (to deselect the item), or click on a not-yet selected item - // (which should remove all current selection, and add the clicked item). This can not - // be done in onMouseDown, because the user may start a drag after mousedown. By moving - // the deselection logic here, the user can drags an already selected item. - if(!this._doDeselect){ return; } - this._doDeselect = false; - this.userSelect(this.current, connect.isCopyKey(e), e.shiftKey); - }, - onMouseMove: function(/*===== e =====*/){ - // summary: - // event processor for onmousemove/ontouchmove - // e: Event - // onmousemove/ontouchmove event - this._doDeselect = false; - }, - - _compareNodes: function(n1, n2){ - if(n1 === n2){ - return 0; - } - - if('sourceIndex' in document.documentElement){ //IE - //TODO: does not yet work if n1 and/or n2 is a text node - return n1.sourceIndex - n2.sourceIndex; - }else if('compareDocumentPosition' in document.documentElement){ //FF, Opera - return n1.compareDocumentPosition(n2) & 2 ? 1: -1; - }else if(document.createRange){ //Webkit - var r1 = doc.createRange(); - r1.setStartBefore(n1); - - var r2 = doc.createRange(); - r2.setStartBefore(n2); - - return r1.compareBoundaryPoints(r1.END_TO_END, r2); - }else{ - throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser"); - } - }, - - userSelect: function(node, multi, range){ - // summary: - // Add or remove the given node from selection, responding - // to a user action such as a click or keypress. - // multi: Boolean - // Indicates whether this is meant to be a multi-select action (e.g. ctrl-click) - // range: Boolean - // Indicates whether this is meant to be a ranged action (e.g. shift-click) - // tags: - // protected - - if(this.singular){ - if(this.anchor == node && multi){ - this.selectNone(); - }else{ - this.setSelection([node]); - this.anchor = node; - } - }else{ - if(range && this.anchor){ - var cr = this._compareNodes(this.anchor.rowNode, node.rowNode), - begin, end, anchor = this.anchor; - - if(cr < 0){ //current is after anchor - begin = anchor; - end = node; - }else{ //current is before anchor - begin = node; - end = anchor; - } - var nodes = []; - //add everything betweeen begin and end inclusively - while(begin != end){ - nodes.push(begin); - begin = this.tree._getNextNode(begin); - } - nodes.push(end); - - this.setSelection(nodes); - }else{ - if( this.selection[ node.id ] && multi ){ - this.removeTreeNode( node ); - }else if(multi){ - this.addTreeNode(node, true); - }else{ - this.setSelection([node]); - this.anchor = node; - } - } - } - }, - - getItem: function(/*String*/ key){ - // summary: - // Returns the dojo/dnd/Container._Item (representing a dragged node) by it's key (id). - // Called by dojo/dnd/Source.checkAcceptance(). - // tags: - // protected - - var widget = this.selection[key]; - return { - data: widget, - type: ["treeNode"] - }; // dojo/dnd/Container._Item - }, - - forInSelectedItems: function(/*Function*/ f, /*Object?*/ o){ - // summary: - // Iterates over selected items; - // see `dojo/dnd/Container.forInItems()` for details - o = o || kernel.global; - for(var id in this.selection){ - // console.log("selected item id: " + id); - f.call(o, this.getItem(id), id, this); - } - } - }); -}); - -}, -'dijit/_Container':function(){ -define("dijit/_Container", [ - "dojo/_base/array", // array.forEach array.indexOf - "dojo/_base/declare", // declare - "dojo/dom-construct" // domConstruct.place -], function(array, declare, domConstruct){ - - // module: - // dijit/_Container - - return declare("dijit._Container", null, { - // summary: - // Mixin for widgets that contain HTML and/or a set of widget children. - - buildRendering: function(){ - this.inherited(arguments); - if(!this.containerNode){ - // all widgets with descendants must set containerNode - this.containerNode = this.domNode; - } - }, - - addChild: function(/*dijit/_WidgetBase*/ widget, /*int?*/ insertIndex){ - // summary: - // Makes the given widget a child of this widget. - // description: - // Inserts specified child widget's dom node as a child of this widget's - // container node, and possibly does other processing (such as layout). - // - // Functionality is undefined if this widget contains anything besides - // a list of child widgets (ie, if it contains arbitrary non-widget HTML). - - var refNode = this.containerNode; - if(insertIndex && typeof insertIndex == "number"){ - var children = this.getChildren(); - if(children && children.length >= insertIndex){ - refNode = children[insertIndex-1].domNode; - insertIndex = "after"; - } - } - domConstruct.place(widget.domNode, refNode, insertIndex); - - // If I've been started but the child widget hasn't been started, - // start it now. Make sure to do this after widget has been - // inserted into the DOM tree, so it can see that it's being controlled by me, - // so it doesn't try to size itself. - if(this._started && !widget._started){ - widget.startup(); - } - }, - - removeChild: function(/*Widget|int*/ widget){ - // summary: - // Removes the passed widget instance from this widget but does - // not destroy it. You can also pass in an integer indicating - // the index within the container to remove (ie, removeChild(5) removes the sixth widget). - - if(typeof widget == "number"){ - widget = this.getChildren()[widget]; - } - - if(widget){ - var node = widget.domNode; - if(node && node.parentNode){ - node.parentNode.removeChild(node); // detach but don't destroy - } - } - }, - - hasChildren: function(){ - // summary: - // Returns true if widget has child widgets, i.e. if this.containerNode contains widgets. - return this.getChildren().length > 0; // Boolean - }, - - _getSiblingOfChild: function(/*dijit/_WidgetBase*/ child, /*int*/ dir){ - // summary: - // Get the next or previous widget sibling of child - // dir: - // if 1, get the next sibling - // if -1, get the previous sibling - // tags: - // private - var children = this.getChildren(), - idx = array.indexOf(this.getChildren(), child); // int - return children[idx + dir]; - }, - - getIndexOfChild: function(/*dijit/_WidgetBase*/ child){ - // summary: - // Gets the index of the child in this container or -1 if not found - return array.indexOf(this.getChildren(), child); // int - } - }); -}); - -}, -'dojo/data/ItemFileReadStore':function(){ -define("dojo/data/ItemFileReadStore", ["../_base/kernel", "../_base/lang", "../_base/declare", "../_base/array", "../_base/xhr", - "../Evented", "./util/filter", "./util/simpleFetch", "../date/stamp" -], function(kernel, lang, declare, array, xhr, Evented, filterUtil, simpleFetch, dateStamp){ - -// module: -// dojo/data/ItemFileReadStore - -var ItemFileReadStore = declare("dojo.data.ItemFileReadStore", [Evented],{ - // summary: - // The ItemFileReadStore implements the dojo/data/api/Read API and reads - // data from JSON files that have contents in this format -- - // | { items: [ - // | { name:'Kermit', color:'green', age:12, friends:['Gonzo', {_reference:{name:'Fozzie Bear'}}]}, - // | { name:'Fozzie Bear', wears:['hat', 'tie']}, - // | { name:'Miss Piggy', pets:'Foo-Foo'} - // | ]} - // Note that it can also contain an 'identifier' property that specified which attribute on the items - // in the array of items that acts as the unique identifier for that item. - - constructor: function(/* Object */ keywordParameters){ - // summary: - // constructor - // keywordParameters: - // {url: String} {data: jsonObject} {typeMap: object} - // The structure of the typeMap object is as follows: - // | { - // | type0: function || object, - // | type1: function || object, - // | ... - // | typeN: function || object - // | } - // Where if it is a function, it is assumed to be an object constructor that takes the - // value of _value as the initialization parameters. If it is an object, then it is assumed - // to be an object of general form: - // | { - // | type: function, //constructor. - // | deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. - // | } - - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = []; - this._loadFinished = false; - this._jsonFileUrl = keywordParameters.url; - this._ccUrl = keywordParameters.url; - this.url = keywordParameters.url; - this._jsonData = keywordParameters.data; - this.data = null; - this._datatypeMap = keywordParameters.typeMap || {}; - if(!this._datatypeMap['Date']){ - //If no default mapping for dates, then set this as default. - //We use the dojo/date/stamp here because the ISO format is the 'dojo way' - //of generically representing dates. - this._datatypeMap['Date'] = { - type: Date, - deserialize: function(value){ - return dateStamp.fromISOString(value); - } - }; - } - this._features = {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true}; - this._itemsByIdentity = null; - this._storeRefPropName = "_S"; // Default name for the store reference to attach to every item. - this._itemNumPropName = "_0"; // Default Item Id for isItem to attach to every item. - this._rootItemPropName = "_RI"; // Default Item Id for isItem to attach to every item. - this._reverseRefMap = "_RRM"; // Default attribute for constructing a reverse reference map for use with reference integrity - this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. - this._queuedFetches = []; - if(keywordParameters.urlPreventCache !== undefined){ - this.urlPreventCache = keywordParameters.urlPreventCache?true:false; - } - if(keywordParameters.hierarchical !== undefined){ - this.hierarchical = keywordParameters.hierarchical?true:false; - } - if(keywordParameters.clearOnClose){ - this.clearOnClose = true; - } - if("failOk" in keywordParameters){ - this.failOk = keywordParameters.failOk?true:false; - } - }, - - url: "", // use "" rather than undefined for the benefit of the parser (#3539) - - //Internal var, crossCheckUrl. Used so that setting either url or _jsonFileUrl, can still trigger a reload - //when clearOnClose and close is used. - _ccUrl: "", - - data: null, // define this so that the parser can populate it - - typeMap: null, //Define so parser can populate. - - // clearOnClose: Boolean - // Parameter to allow users to specify if a close call should force a reload or not. - // By default, it retains the old behavior of not clearing if close is called. But - // if set true, the store will be reset to default state. Note that by doing this, - // all item handles will become invalid and a new fetch must be issued. - clearOnClose: false, - - // urlPreventCache: Boolean - // Parameter to allow specifying if preventCache should be passed to the xhrGet call or not when loading data from a url. - // Note this does not mean the store calls the server on each fetch, only that the data load has preventCache set as an option. - // Added for tracker: #6072 - urlPreventCache: false, - - // failOk: Boolean - // Parameter for specifying that it is OK for the xhrGet call to fail silently. - failOk: false, - - // hierarchical: Boolean - // Parameter to indicate to process data from the url as hierarchical - // (data items can contain other data items in js form). Default is true - // for backwards compatibility. False means only root items are processed - // as items, all child objects outside of type-mapped objects and those in - // specific reference format, are left straight JS data objects. - hierarchical: true, - - _assertIsItem: function(/* dojo/data/api/Item */ item){ - // summary: - // This function tests whether the item passed in is indeed an item in the store. - // item: - // The item to test for being contained by the store. - if(!this.isItem(item)){ - throw new Error(this.declaredClass + ": Invalid item argument."); - } - }, - - _assertIsAttribute: function(/* attribute-name-string */ attribute){ - // summary: - // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. - // attribute: - // The attribute to test for being contained by the store. - if(typeof attribute !== "string"){ - throw new Error(this.declaredClass + ": Invalid attribute argument."); - } - }, - - getValue: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* value? */ defaultValue){ - // summary: - // See dojo/data/api/Read.getValue() - var values = this.getValues(item, attribute); - return (values.length > 0)?values[0]:defaultValue; // mixed - }, - - getValues: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Read.getValues() - - this._assertIsItem(item); - this._assertIsAttribute(attribute); - // Clone it before returning. refs: #10474 - return (item[attribute] || []).slice(0); // Array - }, - - getAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getAttributes() - this._assertIsItem(item); - var attributes = []; - for(var key in item){ - // Save off only the real item attributes, not the special id marks for O(1) isItem. - if((key !== this._storeRefPropName) && (key !== this._itemNumPropName) && (key !== this._rootItemPropName) && (key !== this._reverseRefMap)){ - attributes.push(key); - } - } - return attributes; // Array - }, - - hasAttribute: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Read.hasAttribute() - this._assertIsItem(item); - this._assertIsAttribute(attribute); - return (attribute in item); - }, - - containsValue: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* anything */ value){ - // summary: - // See dojo/data/api/Read.containsValue() - var regexp = undefined; - if(typeof value === "string"){ - regexp = filterUtil.patternToRegExp(value, false); - } - return this._containsValue(item, attribute, value, regexp); //boolean. - }, - - _containsValue: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* anything */ value, - /* RegExp?*/ regexp){ - // summary: - // Internal function for looking at the values contained by the item. - // description: - // Internal function for looking at the values contained by the item. This - // function allows for denoting if the comparison should be case sensitive for - // strings or not (for handling filtering cases where string case should not matter) - // item: - // The data item to examine for attribute values. - // attribute: - // The attribute to inspect. - // value: - // The value to match. - // regexp: - // Optional regular expression generated off value if value was of string type to handle wildcarding. - // If present and attribute values are string, then it can be used for comparison instead of 'value' - return array.some(this.getValues(item, attribute), function(possibleValue){ - if(possibleValue !== null && !lang.isObject(possibleValue) && regexp){ - if(possibleValue.toString().match(regexp)){ - return true; // Boolean - } - }else if(value === possibleValue){ - return true; // Boolean - } - }); - }, - - isItem: function(/* anything */ something){ - // summary: - // See dojo/data/api/Read.isItem() - if(something && something[this._storeRefPropName] === this){ - if(this._arrayOfAllItems[something[this._itemNumPropName]] === something){ - return true; - } - } - return false; // Boolean - }, - - isItemLoaded: function(/* anything */ something){ - // summary: - // See dojo/data/api/Read.isItemLoaded() - return this.isItem(something); //boolean - }, - - loadItem: function(/* object */ keywordArgs){ - // summary: - // See dojo/data/api/Read.loadItem() - this._assertIsItem(keywordArgs.item); - }, - - getFeatures: function(){ - // summary: - // See dojo/data/api/Read.getFeatures() - return this._features; //Object - }, - - getLabel: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getLabel() - if(this._labelAttr && this.isItem(item)){ - return this.getValue(item,this._labelAttr); //String - } - return undefined; //undefined - }, - - getLabelAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getLabelAttributes() - if(this._labelAttr){ - return [this._labelAttr]; //array - } - return null; //null - }, - - filter: function(/* Object */ requestArgs, /* item[] */ arrayOfItems, /* Function */ findCallback){ - // summary: - // This method handles the basic filtering needs for ItemFile* based stores. - var items = [], - i, key; - - if(requestArgs.query){ - var value, - ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; - - //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the - //same value for each item examined. Much more efficient. - var regexpList = {}; - for(key in requestArgs.query){ - value = requestArgs.query[key]; - if(typeof value === "string"){ - regexpList[key] = filterUtil.patternToRegExp(value, ignoreCase); - }else if(value instanceof RegExp){ - regexpList[key] = value; - } - } - for(i = 0; i < arrayOfItems.length; ++i){ - var match = true; - var candidateItem = arrayOfItems[i]; - if(candidateItem === null){ - match = false; - }else{ - for(key in requestArgs.query){ - value = requestArgs.query[key]; - if(!this._containsValue(candidateItem, key, value, regexpList[key])){ - match = false; - } - } - } - if(match){ - items.push(candidateItem); - } - } - findCallback(items, requestArgs); - }else{ - // We want a copy to pass back in case the parent wishes to sort the array. - // We shouldn't allow resort of the internal list, so that multiple callers - // can get lists and sort without affecting each other. We also need to - // filter out any null values that have been left as a result of deleteItem() - // calls in ItemFileWriteStore. - for(i = 0; i < arrayOfItems.length; ++i){ - var item = arrayOfItems[i]; - if(item !== null){ - items.push(item); - } - } - findCallback(items, requestArgs); - } - }, - - _fetchItems: function( /* Object */ keywordArgs, - /* Function */ findCallback, - /* Function */ errorCallback){ - // summary: - // See dojo/data/util.simpleFetch.fetch() - var self = this; - - if(this._loadFinished){ - this.filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions), findCallback); - }else{ - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - //If fetches come in before the loading has finished, but while - //a load is in progress, we have to defer the fetching to be - //invoked in the callback. - if(this._loadInProgress){ - this._queuedFetches.push({args: keywordArgs, filter: lang.hitch(self, "filter"), findCallback: lang.hitch(self, findCallback)}); - }else{ - this._loadInProgress = true; - var getArgs = { - url: self._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - try{ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - self._loadInProgress = false; - - self.filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions), findCallback); - self._handleQueuedFetches(); - }catch(e){ - self._loadFinished = true; - self._loadInProgress = false; - errorCallback(e, keywordArgs); - } - }); - getHandler.addErrback(function(error){ - self._loadInProgress = false; - errorCallback(error, keywordArgs); - }); - - //Wire up the cancel to abort of the request - //This call cancel on the deferred if it hasn't been called - //yet and then will chain to the simple abort of the - //simpleFetch keywordArgs - var oldAbort = null; - if(keywordArgs.abort){ - oldAbort = keywordArgs.abort; - } - keywordArgs.abort = function(){ - var df = getHandler; - if(df && df.fired === -1){ - df.cancel(); - df = null; - } - if(oldAbort){ - oldAbort.call(keywordArgs); - } - }; - } - }else if(this._jsonData){ - try{ - this._loadFinished = true; - this._getItemsFromLoadedData(this._jsonData); - this._jsonData = null; - self.filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions), findCallback); - }catch(e){ - errorCallback(e, keywordArgs); - } - }else{ - errorCallback(new Error(this.declaredClass + ": No JSON source data was provided as either URL or a nested Javascript object."), keywordArgs); - } - } - }, - - _handleQueuedFetches: function(){ - // summary: - // Internal function to execute delayed request in the store. - - //Execute any deferred fetches now. - if(this._queuedFetches.length > 0){ - for(var i = 0; i < this._queuedFetches.length; i++){ - var fData = this._queuedFetches[i], - delayedQuery = fData.args, - delayedFilter = fData.filter, - delayedFindCallback = fData.findCallback; - if(delayedFilter){ - delayedFilter(delayedQuery, this._getItemsArray(delayedQuery.queryOptions), delayedFindCallback); - }else{ - this.fetchItemByIdentity(delayedQuery); - } - } - this._queuedFetches = []; - } - }, - - _getItemsArray: function(/*object?*/queryOptions){ - // summary: - // Internal function to determine which list of items to search over. - // queryOptions: The query options parameter, if any. - if(queryOptions && queryOptions.deep){ - return this._arrayOfAllItems; - } - return this._arrayOfTopLevelItems; - }, - - close: function(/*dojo/data/api/Request|Object?*/ request){ - // summary: - // See dojo/data/api/Read.close() - if(this.clearOnClose && - this._loadFinished && - !this._loadInProgress){ - //Reset all internalsback to default state. This will force a reload - //on next fetch. This also checks that the data or url param was set - //so that the store knows it can get data. Without one of those being set, - //the next fetch will trigger an error. - - if(((this._jsonFileUrl == "" || this._jsonFileUrl == null) && - (this.url == "" || this.url == null) - ) && this.data == null){ - console.debug(this.declaredClass + ": WARNING! Data reload " + - " information has not been provided." + - " Please set 'url' or 'data' to the appropriate value before" + - " the next fetch"); - } - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = []; - this._loadFinished = false; - this._itemsByIdentity = null; - this._loadInProgress = false; - this._queuedFetches = []; - } - }, - - _getItemsFromLoadedData: function(/* Object */ dataObject){ - // summary: - // Function to parse the loaded data into item format and build the internal items array. - // description: - // Function to parse the loaded data into item format and build the internal items array. - // dataObject: - // The JS data object containing the raw data to convery into item format. - // returns: Array - // Array of items in store item format. - - // First, we define a couple little utility functions... - var addingArrays = false, - self = this; - - function valueIsAnItem(/* anything */ aValue){ - // summary: - // Given any sort of value that could be in the raw json data, - // return true if we should interpret the value as being an - // item itself, rather than a literal value or a reference. - // example: - // | false == valueIsAnItem("Kermit"); - // | false == valueIsAnItem(42); - // | false == valueIsAnItem(new Date()); - // | false == valueIsAnItem({_type:'Date', _value:'1802-05-14'}); - // | false == valueIsAnItem({_reference:'Kermit'}); - // | true == valueIsAnItem({name:'Kermit', color:'green'}); - // | true == valueIsAnItem({iggy:'pop'}); - // | true == valueIsAnItem({foo:42}); - return (aValue !== null) && - (typeof aValue === "object") && - (!lang.isArray(aValue) || addingArrays) && - (!lang.isFunction(aValue)) && - (aValue.constructor == Object || lang.isArray(aValue)) && - (typeof aValue._reference === "undefined") && - (typeof aValue._type === "undefined") && - (typeof aValue._value === "undefined") && - self.hierarchical; - } - - function addItemAndSubItemsToArrayOfAllItems(/* dojo/data/api/Item */ anItem){ - self._arrayOfAllItems.push(anItem); - for(var attribute in anItem){ - var valueForAttribute = anItem[attribute]; - if(valueForAttribute){ - if(lang.isArray(valueForAttribute)){ - var valueArray = valueForAttribute; - for(var k = 0; k < valueArray.length; ++k){ - var singleValue = valueArray[k]; - if(valueIsAnItem(singleValue)){ - addItemAndSubItemsToArrayOfAllItems(singleValue); - } - } - }else{ - if(valueIsAnItem(valueForAttribute)){ - addItemAndSubItemsToArrayOfAllItems(valueForAttribute); - } - } - } - } - } - - this._labelAttr = dataObject.label; - - // We need to do some transformations to convert the data structure - // that we read from the file into a format that will be convenient - // to work with in memory. - - // Step 1: Walk through the object hierarchy and build a list of all items - var i, - item; - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = dataObject.items; - - for(i = 0; i < this._arrayOfTopLevelItems.length; ++i){ - item = this._arrayOfTopLevelItems[i]; - if(lang.isArray(item)){ - addingArrays = true; - } - addItemAndSubItemsToArrayOfAllItems(item); - item[this._rootItemPropName]=true; - } - - // Step 2: Walk through all the attribute values of all the items, - // and replace single values with arrays. For example, we change this: - // { name:'Miss Piggy', pets:'Foo-Foo'} - // into this: - // { name:['Miss Piggy'], pets:['Foo-Foo']} - // - // We also store the attribute names so we can validate our store - // reference and item id special properties for the O(1) isItem - var allAttributeNames = {}, - key; - - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - for(key in item){ - if(key !== this._rootItemPropName){ - var value = item[key]; - if(value !== null){ - if(!lang.isArray(value)){ - item[key] = [value]; - } - }else{ - item[key] = [null]; - } - } - allAttributeNames[key]=key; - } - } - - // Step 3: Build unique property names to use for the _storeRefPropName and _itemNumPropName - // This should go really fast, it will generally never even run the loop. - while(allAttributeNames[this._storeRefPropName]){ - this._storeRefPropName += "_"; - } - while(allAttributeNames[this._itemNumPropName]){ - this._itemNumPropName += "_"; - } - while(allAttributeNames[this._reverseRefMap]){ - this._reverseRefMap += "_"; - } - - // Step 4: Some data files specify an optional 'identifier', which is - // the name of an attribute that holds the identity of each item. - // If this data file specified an identifier attribute, then build a - // hash table of items keyed by the identity of the items. - var arrayOfValues; - - var identifier = dataObject.identifier; - if(identifier){ - this._itemsByIdentity = {}; - this._features['dojo.data.api.Identity'] = identifier; - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - arrayOfValues = item[identifier]; - var identity = arrayOfValues[0]; - if(!Object.hasOwnProperty.call(this._itemsByIdentity, identity)){ - this._itemsByIdentity[identity] = item; - }else{ - if(this._jsonFileUrl){ - throw new Error(this.declaredClass + ": The json data as specified by: [" + this._jsonFileUrl + "] is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); - }else if(this._jsonData){ - throw new Error(this.declaredClass + ": The json data provided by the creation arguments is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); - } - } - } - }else{ - this._features['dojo.data.api.Identity'] = Number; - } - - // Step 5: Walk through all the items, and set each item's properties - // for _storeRefPropName and _itemNumPropName, so that store.isItem() will return true. - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - item[this._storeRefPropName] = this; - item[this._itemNumPropName] = i; - } - - // Step 6: We walk through all the attribute values of all the items, - // looking for type/value literals and item-references. - // - // We replace item-references with pointers to items. For example, we change: - // { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - // into this: - // { name:['Kermit'], friends:[miss_piggy] } - // (where miss_piggy is the object representing the 'Miss Piggy' item). - // - // We replace type/value pairs with typed-literals. For example, we change: - // { name:['Nelson Mandela'], born:[{_type:'Date', _value:'1918-07-18'}] } - // into this: - // { name:['Kermit'], born:(new Date(1918, 6, 18)) } - // - // We also generate the associate map for all items for the O(1) isItem function. - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; // example: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - for(key in item){ - arrayOfValues = item[key]; // example: [{_reference:{name:'Miss Piggy'}}] - for(var j = 0; j < arrayOfValues.length; ++j){ - value = arrayOfValues[j]; // example: {_reference:{name:'Miss Piggy'}} - if(value !== null && typeof value == "object"){ - if(("_type" in value) && ("_value" in value)){ - var type = value._type; // examples: 'Date', 'Color', or 'ComplexNumber' - var mappingObj = this._datatypeMap[type]; // examples: Date, dojo.Color, foo.math.ComplexNumber, {type: dojo.Color, deserialize(value){ return new dojo.Color(value)}} - if(!mappingObj){ - throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '" + type + "'"); - }else if(lang.isFunction(mappingObj)){ - arrayOfValues[j] = new mappingObj(value._value); - }else if(lang.isFunction(mappingObj.deserialize)){ - arrayOfValues[j] = mappingObj.deserialize(value._value); - }else{ - throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function"); - } - } - if(value._reference){ - var referenceDescription = value._reference; // example: {name:'Miss Piggy'} - if(!lang.isObject(referenceDescription)){ - // example: 'Miss Piggy' - // from an item like: { name:['Kermit'], friends:[{_reference:'Miss Piggy'}]} - arrayOfValues[j] = this._getItemByIdentity(referenceDescription); - }else{ - // example: {name:'Miss Piggy'} - // from an item like: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - for(var k = 0; k < this._arrayOfAllItems.length; ++k){ - var candidateItem = this._arrayOfAllItems[k], - found = true; - for(var refKey in referenceDescription){ - if(candidateItem[refKey] != referenceDescription[refKey]){ - found = false; - } - } - if(found){ - arrayOfValues[j] = candidateItem; - } - } - } - if(this.referenceIntegrity){ - var refItem = arrayOfValues[j]; - if(this.isItem(refItem)){ - this._addReferenceToMap(refItem, item, key); - } - } - }else if(this.isItem(value)){ - //It's a child item (not one referenced through _reference). - //We need to treat this as a referenced item, so it can be cleaned up - //in a write store easily. - if(this.referenceIntegrity){ - this._addReferenceToMap(value, item, key); - } - } - } - } - } - } - }, - - _addReferenceToMap: function(/*item*/ refItem, /*item*/ parentItem, /*string*/ attribute){ - // summary: - // Method to add an reference map entry for an item and attribute. - // description: - // Method to add an reference map entry for an item and attribute. - // refItem: - // The item that is referenced. - // parentItem: - // The item that holds the new reference to refItem. - // attribute: - // The attribute on parentItem that contains the new reference. - - //Stub function, does nothing. Real processing is in ItemFileWriteStore. - }, - - getIdentity: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Identity.getIdentity() - var identifier = this._features['dojo.data.api.Identity']; - if(identifier === Number){ - return item[this._itemNumPropName]; // Number - }else{ - var arrayOfValues = item[identifier]; - if(arrayOfValues){ - return arrayOfValues[0]; // Object|String - } - } - return null; // null - }, - - fetchItemByIdentity: function(/* Object */ keywordArgs){ - // summary: - // See dojo/data/api/Identity.fetchItemByIdentity() - - // Hasn't loaded yet, we have to trigger the load. - var item, - scope; - if(!this._loadFinished){ - var self = this; - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null && this._jsonData == null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - - if(this._loadInProgress){ - this._queuedFetches.push({args: keywordArgs}); - }else{ - this._loadInProgress = true; - var getArgs = { - url: self._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - var scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - try{ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - self._loadInProgress = false; - item = self._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - keywordArgs.onItem.call(scope, item); - } - self._handleQueuedFetches(); - }catch(error){ - self._loadInProgress = false; - if(keywordArgs.onError){ - keywordArgs.onError.call(scope, error); - } - } - }); - getHandler.addErrback(function(error){ - self._loadInProgress = false; - if(keywordArgs.onError){ - var scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onError.call(scope, error); - } - }); - } - - }else if(this._jsonData){ - // Passed in data, no need to xhr. - self._getItemsFromLoadedData(self._jsonData); - self._jsonData = null; - self._loadFinished = true; - item = self._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onItem.call(scope, item); - } - } - }else{ - // Already loaded. We can just look it up and call back. - item = this._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onItem.call(scope, item); - } - } - }, - - _getItemByIdentity: function(/* Object */ identity){ - // summary: - // Internal function to look an item up by its identity map. - var item = null; - if(this._itemsByIdentity){ - // If this map is defined, we need to just try to get it. If it fails - // the item does not exist. - if(Object.hasOwnProperty.call(this._itemsByIdentity, identity)){ - item = this._itemsByIdentity[identity]; - } - }else if (Object.hasOwnProperty.call(this._arrayOfAllItems, identity)){ - item = this._arrayOfAllItems[identity]; - } - if(item === undefined){ - item = null; - } - return item; // Object - }, - - getIdentityAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Identity.getIdentityAttributes() - - var identifier = this._features['dojo.data.api.Identity']; - if(identifier === Number){ - // If (identifier === Number) it means getIdentity() just returns - // an integer item-number for each item. The dojo/data/api/Identity - // spec says we need to return null if the identity is not composed - // of attributes - return null; // null - }else{ - return [identifier]; // Array - } - }, - - _forceLoad: function(){ - // summary: - // Internal function to force a load of the store if it hasn't occurred yet. This is required - // for specific functions to work properly. - var self = this; - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - var getArgs = { - url: this._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk, - sync: true - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - try{ - //Check to be sure there wasn't another load going on concurrently - //So we don't clobber data that comes in on it. If there is a load going on - //then do not save this data. It will potentially clobber current data. - //We mainly wanted to sync/wait here. - //TODO: Revisit the loading scheme of this store to improve multi-initial - //request handling. - if(self._loadInProgress !== true && !self._loadFinished){ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - }else if(self._loadInProgress){ - //Okay, we hit an error state we can't recover from. A forced load occurred - //while an async load was occurring. Since we cannot block at this point, the best - //that can be managed is to throw an error. - throw new Error(this.declaredClass + ": Unable to perform a synchronous load, an async load is in progress."); - } - }catch(e){ - console.log(e); - throw e; - } - }); - getHandler.addErrback(function(error){ - throw error; - }); - }else if(this._jsonData){ - self._getItemsFromLoadedData(self._jsonData); - self._jsonData = null; - self._loadFinished = true; - } - } -}); -//Mix in the simple fetch implementation to this class. -lang.extend(ItemFileReadStore,simpleFetch); - -return ItemFileReadStore; - -}); - -}, -'dojo/html':function(){ -define("dojo/html", ["./_base/kernel", "./_base/lang", "./_base/array", "./_base/declare", "./dom", "./dom-construct", "./parser"], - function(kernel, lang, darray, declare, dom, domConstruct, parser){ - // module: - // dojo/html - - var html = { - // summary: - // TODOC - }; - lang.setObject("dojo.html", html); - - // the parser might be needed.. - - // idCounter is incremented with each instantiation to allow assignment of a unique id for tracking, logging purposes - var idCounter = 0; - - html._secureForInnerHtml = function(/*String*/ cont){ - // summary: - // removes !DOCTYPE and title elements from the html string. - // - // khtml is picky about dom faults, you can't attach a style or `<title>` node as child of body - // must go into head, so we need to cut out those tags - // cont: - // An html string for insertion into the dom - // - return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig, ""); // String - }; - - html._emptyNode = domConstruct.empty; - /*===== - dojo.html._emptyNode = function(node){ - // summary: - // Removes all child nodes from the given node. Deprecated, should use dojo/dom-constuct.empty() directly - // instead. - // node: DOMNode - // the parent element - }; - =====*/ - - html._setNodeContent = function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont){ - // summary: - // inserts the given content into the given node - // node: - // the parent element - // content: - // the content to be set on the parent element. - // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes - - // always empty - domConstruct.empty(node); - - if(cont){ - if(typeof cont == "string"){ - cont = domConstruct.toDom(cont, node.ownerDocument); - } - if(!cont.nodeType && lang.isArrayLike(cont)){ - // handle as enumerable, but it may shrink as we enumerate it - for(var startlen=cont.length, i=0; i<cont.length; i=startlen==cont.length ? i+1 : 0){ - domConstruct.place( cont[i], node, "last"); - } - }else{ - // pass nodes, documentFragments and unknowns through to dojo.place - domConstruct.place(cont, node, "last"); - } - } - - // return DomNode - return node; - }; - - // we wrap up the content-setting operation in a object - html._ContentSetter = declare("dojo.html._ContentSetter", null, - { - // node: DomNode|String - // An node which will be the parent element that we set content into - node: "", - - // content: String|DomNode|DomNode[] - // The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes - content: "", - - // id: String? - // Usually only used internally, and auto-generated with each instance - id: "", - - // cleanContent: Boolean - // Should the content be treated as a full html document, - // and the real content stripped of <html>, <body> wrapper before injection - cleanContent: false, - - // extractContent: Boolean - // Should the content be treated as a full html document, - // and the real content stripped of `<html> <body>` wrapper before injection - extractContent: false, - - // parseContent: Boolean - // Should the node by passed to the parser after the new content is set - parseContent: false, - - // parserScope: String - // Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, - // will search for data-dojo-type (or dojoType). For backwards compatibility - // reasons defaults to dojo._scopeName (which is "dojo" except when - // multi-version support is used, when it will be something like dojo16, dojo20, etc.) - parserScope: kernel._scopeName, - - // startup: Boolean - // Start the child widgets after parsing them. Only obeyed if parseContent is true. - startup: true, - - // lifecycle methods - constructor: function(/*Object*/ params, /*String|DomNode*/ node){ - // summary: - // Provides a configurable, extensible object to wrap the setting on content on a node - // call the set() method to actually set the content.. - - // the original params are mixed directly into the instance "this" - lang.mixin(this, params || {}); - - // give precedence to params.node vs. the node argument - // and ensure its a node, not an id string - node = this.node = dom.byId( this.node || node ); - - if(!this.id){ - this.id = [ - "Setter", - (node) ? node.id || node.tagName : "", - idCounter++ - ].join("_"); - } - }, - set: function(/* String|DomNode|NodeList? */ cont, /*Object?*/ params){ - // summary: - // front-end to the set-content sequence - // cont: - // An html string, node or enumerable list of nodes for insertion into the dom - // If not provided, the object's content property will be used - if(undefined !== cont){ - this.content = cont; - } - // in the re-use scenario, set needs to be able to mixin new configuration - if(params){ - this._mixin(params); - } - - this.onBegin(); - this.setContent(); - - var ret = this.onEnd(); - - if(ret && ret.then){ - // Make dojox/html/_ContentSetter.set() return a Promise that resolves when load and parse complete. - return ret; - }else{ - // Vanilla dojo/html._ContentSetter.set() returns a DOMNode for back compat. For 2.0, switch it to - // return a Deferred like above. - return this.node; - } - }, - - setContent: function(){ - // summary: - // sets the content on the node - - var node = this.node; - if(!node){ - // can't proceed - throw new Error(this.declaredClass + ": setContent given no node"); - } - try{ - node = html._setNodeContent(node, this.content); - }catch(e){ - // check if a domfault occurs when we are appending this.errorMessage - // like for instance if domNode is a UL and we try append a DIV - - // FIXME: need to allow the user to provide a content error message string - var errMess = this.onContentError(e); - try{ - node.innerHTML = errMess; - }catch(e){ - console.error('Fatal ' + this.declaredClass + '.setContent could not change content due to '+e.message, e); - } - } - // always put back the node for the next method - this.node = node; // DomNode - }, - - empty: function(){ - // summary: - // cleanly empty out existing content - - // If there is a parse in progress, cancel it. - if(this.parseDeferred){ - if(!this.parseDeferred.isResolved()){ - this.parseDeferred.cancel(); - } - delete this.parseDeferred; - } - - // destroy any widgets from a previous run - // NOTE: if you don't want this you'll need to empty - // the parseResults array property yourself to avoid bad things happening - if(this.parseResults && this.parseResults.length){ - darray.forEach(this.parseResults, function(w){ - if(w.destroy){ - w.destroy(); - } - }); - delete this.parseResults; - } - // this is fast, but if you know its already empty or safe, you could - // override empty to skip this step - domConstruct.empty(this.node); - }, - - onBegin: function(){ - // summary: - // Called after instantiation, but before set(); - // It allows modification of any of the object properties - - // including the node and content provided - before the set operation actually takes place - // This default implementation checks for cleanContent and extractContent flags to - // optionally pre-process html string content - var cont = this.content; - - if(lang.isString(cont)){ - if(this.cleanContent){ - cont = html._secureForInnerHtml(cont); - } - - if(this.extractContent){ - var match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); - if(match){ cont = match[1]; } - } - } - - // clean out the node and any cruft associated with it - like widgets - this.empty(); - - this.content = cont; - return this.node; // DomNode - }, - - onEnd: function(){ - // summary: - // Called after set(), when the new content has been pushed into the node - // It provides an opportunity for post-processing before handing back the node to the caller - // This default implementation checks a parseContent flag to optionally run the dojo parser over the new content - if(this.parseContent){ - // populates this.parseResults and this.parseDeferred if you need those.. - this._parse(); - } - return this.node; // DomNode - // TODO: for 2.0 return a Promise indicating that the parse completed. - }, - - tearDown: function(){ - // summary: - // manually reset the Setter instance if its being re-used for example for another set() - // description: - // tearDown() is not called automatically. - // In normal use, the Setter instance properties are simply allowed to fall out of scope - // but the tearDown method can be called to explicitly reset this instance. - delete this.parseResults; - delete this.parseDeferred; - delete this.node; - delete this.content; - }, - - onContentError: function(err){ - return "Error occurred setting content: " + err; - }, - - onExecError: function(err){ - return "Error occurred executing scripts: " + err; - }, - - _mixin: function(params){ - // mix properties/methods into the instance - // TODO: the intention with tearDown is to put the Setter's state - // back to that of the original constructor (vs. deleting/resetting everything regardless of ctor params) - // so we could do something here to move the original properties aside for later restoration - var empty = {}, key; - for(key in params){ - if(key in empty){ continue; } - // TODO: here's our opportunity to mask the properties we don't consider configurable/overridable - // .. but history shows we'll almost always guess wrong - this[key] = params[key]; - } - }, - _parse: function(){ - // summary: - // runs the dojo parser over the node contents, storing any results in this.parseResults - // and the parse promise in this.parseDeferred - // Any errors resulting from parsing are passed to _onError for handling - - var rootNode = this.node; - try{ - // store the results (widgets, whatever) for potential retrieval - var inherited = {}; - darray.forEach(["dir", "lang", "textDir"], function(name){ - if(this[name]){ - inherited[name] = this[name]; - } - }, this); - var self = this; - this.parseDeferred = parser.parse({ - rootNode: rootNode, - noStart: !this.startup, - inherited: inherited, - scope: this.parserScope - }).then(function(results){ - return self.parseResults = results; - }); - }catch(e){ - this._onError('Content', e, "Error parsing in _ContentSetter#"+this.id); - } - }, - - _onError: function(type, err, consoleText){ - // summary: - // shows user the string that is returned by on[type]Error - // override/implement on[type]Error and return your own string to customize - var errText = this['on' + type + 'Error'].call(this, err); - if(consoleText){ - console.error(consoleText, err); - }else if(errText){ // a empty string won't change current content - html._setNodeContent(this.node, errText, true); - } - } - }); // end declare() - - html.set = function(/*DomNode*/ node, /*String|DomNode|NodeList*/ cont, /*Object?*/ params){ - // summary: - // inserts (replaces) the given content into the given node. dojo.place(cont, node, "only") - // may be a better choice for simple HTML insertion. - // description: - // Unless you need to use the params capabilities of this method, you should use - // dojo.place(cont, node, "only"). dojo.place() has more robust support for injecting - // an HTML string into the DOM, but it only handles inserting an HTML string as DOM - // elements, or inserting a DOM node. dojo.place does not handle NodeList insertions - // or the other capabilities as defined by the params object for this method. - // node: - // the parent element that will receive the content - // cont: - // the content to be set on the parent element. - // This can be an html string, a node reference or a NodeList, dojo/NodeList, Array or other enumerable list of nodes - // params: - // Optional flags/properties to configure the content-setting. See dojo/html/_ContentSetter - // example: - // A safe string/node/nodelist content replacement/injection with hooks for extension - // Example Usage: - // | html.set(node, "some string"); - // | html.set(node, contentNode, {options}); - // | html.set(node, myNode.childNodes, {options}); - if(undefined == cont){ - console.warn("dojo.html.set: no cont argument provided, using empty string"); - cont = ""; - } - if(!params){ - // simple and fast - return html._setNodeContent(node, cont, true); - }else{ - // more options but slower - // note the arguments are reversed in order, to match the convention for instantiation via the parser - var op = new html._ContentSetter(lang.mixin( - params, - { content: cont, node: node } - )); - return op.set(); - } - }; - - return html; -}); - -}, -'dijit/_PaletteMixin':function(){ -define("dijit/_PaletteMixin", [ - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/dom-class", // domClass.add domClass.remove - "dojo/dom-construct", // domConstruct.create domConstruct.place - "dojo/_base/event", // event.stop - "dojo/keys", // keys - "dojo/_base/lang", // lang.getObject - "./_CssStateMixin", - "./focus", - "./typematic" -], function(declare, domAttr, domClass, domConstruct, event, keys, lang, _CssStateMixin, focus, typematic){ - -// module: -// dijit/_PaletteMixin - -return declare("dijit._PaletteMixin", [_CssStateMixin], { - // summary: - // A keyboard accessible palette, for picking a color/emoticon/etc. - // description: - // A mixin for a grid showing various entities, so the user can pick a certain entity. - - // defaultTimeout: Number - // Number of milliseconds before a held key or button becomes typematic - defaultTimeout: 500, - - // timeoutChangeRate: Number - // Fraction of time used to change the typematic timer between events - // 1.0 means that each typematic event fires at defaultTimeout intervals - // Less than 1.0 means that each typematic event fires at an increasing faster rate - timeoutChangeRate: 0.90, - - // value: String - // Currently selected color/emoticon/etc. - value: "", - - // _selectedCell: [private] Integer - // Index of the currently selected cell. Initially, none selected - _selectedCell: -1, - -/*===== - // _currentFocus: [private] DomNode - // The currently focused cell (if the palette itself has focus), or otherwise - // the cell to be focused when the palette itself gets focus. - // Different from value, which represents the selected (i.e. clicked) cell. - _currentFocus: null, -=====*/ - -/*===== - // _xDim: [protected] Integer - // This is the number of cells horizontally across. - _xDim: null, -=====*/ - -/*===== - // _yDim: [protected] Integer - // This is the number of cells vertically down. - _yDim: null, -=====*/ - - // tabIndex: String - // Widget tab index. - tabIndex: "0", - - // cellClass: [protected] String - // CSS class applied to each cell in the palette - cellClass: "dijitPaletteCell", - - // dyeClass: [protected] Constructor - // Constructor for Object created for each cell of the palette. - // dyeClass should implements dijit.Dye interface - dyeClass: null, - - // summary: String - // Localized summary for the palette table - summary: '', - _setSummaryAttr: "paletteTableNode", - - _dyeFactory: function(value /*===== , row, col, title =====*/){ - // summary: - // Return instance of dijit.Dye for specified cell of palette - // tags: - // extension - - // Remove string support for 2.0 - var dyeClassObj = typeof this.dyeClass == "string" ? lang.getObject(this.dyeClass) : this.dyeClass; - return new dyeClassObj(value); - }, - - _preparePalette: function(choices, titles) { - // summary: - // Subclass must call _preparePalette() from postCreate(), passing in the tooltip - // for each cell - // choices: String[][] - // id's for each cell of the palette, used to create Dye JS object for each cell - // titles: String[] - // Localized tooltip for each cell - - this._cells = []; - var url = this._blankGif; - - this.connect(this.gridNode, "ondijitclick", "_onCellClick"); - - for(var row=0; row < choices.length; row++){ - var rowNode = domConstruct.create("tr", {tabIndex: "-1"}, this.gridNode); - for(var col=0; col < choices[row].length; col++){ - var value = choices[row][col]; - if(value){ - var cellObject = this._dyeFactory(value, row, col, titles[value]); - - var cellNode = domConstruct.create("td", { - "class": this.cellClass, - tabIndex: "-1", - title: titles[value], - role: "gridcell" - }, rowNode); - - // prepare cell inner structure - cellObject.fillCell(cellNode, url); - - cellNode.idx = this._cells.length; - - // save cell info into _cells - this._cells.push({node:cellNode, dye:cellObject}); - } - } - } - this._xDim = choices[0].length; - this._yDim = choices.length; - - // Now set all events - // The palette itself is navigated to with the tab key on the keyboard - // Keyboard navigation within the Palette is with the arrow keys - // Spacebar selects the cell. - // For the up key the index is changed by negative the x dimension. - - var keyIncrementMap = { - UP_ARROW: -this._xDim, - // The down key the index is increase by the x dimension. - DOWN_ARROW: this._xDim, - // Right and left move the index by 1. - RIGHT_ARROW: this.isLeftToRight() ? 1 : -1, - LEFT_ARROW: this.isLeftToRight() ? -1 : 1 - }; - for(var key in keyIncrementMap){ - this.own( - typematic.addKeyListener( - this.domNode, - {charOrCode:keys[key], ctrlKey:false, altKey:false, shiftKey:false}, - this, - function(){ - var increment = keyIncrementMap[key]; - return function(count){ this._navigateByKey(increment, count); }; - }(), - this.timeoutChangeRate, - this.defaultTimeout - ) - ); - } - }, - - postCreate: function(){ - this.inherited(arguments); - - // Set initial navigable node. - this._setCurrent(this._cells[0].node); - }, - - focus: function(){ - // summary: - // Focus this widget. Puts focus on the most recently focused cell. - - // The cell already has tabIndex set, just need to set CSS and focus it - focus.focus(this._currentFocus); - }, - - _onCellClick: function(/*Event*/ evt){ - // summary: - // Handler for click, enter key & space key. Selects the cell. - // evt: - // The event. - // tags: - // private - - var target = evt.target; - - // Find TD associated with click event. For ColorPalette user likely clicked IMG inside of TD - while(target.tagName != "TD"){ - if(!target.parentNode || target == this.gridNode){ // probably can never happen, but just in case - return; - } - target = target.parentNode; - } - - var value = this._getDye(target).getValue(); - - // First focus the clicked cell, and then send onChange() notification. - // onChange() (via _setValueAttr) must be after the focus call, because - // it may trigger a refocus to somewhere else (like the Editor content area), and that - // second focus should win. - this._setCurrent(target); - focus.focus(target); - this._setValueAttr(value, true); - - event.stop(evt); - }, - - _setCurrent: function(/*DomNode*/ node){ - // summary: - // Sets which node is the focused cell. - // description: - // At any point in time there's exactly one - // cell with tabIndex != -1. If focus is inside the palette then - // focus is on that cell. - // - // After calling this method, arrow key handlers and mouse click handlers - // should focus the cell in a setTimeout(). - // tags: - // protected - if("_currentFocus" in this){ - // Remove tabIndex on old cell - domAttr.set(this._currentFocus, "tabIndex", "-1"); - } - - // Set tabIndex of new cell - this._currentFocus = node; - if(node){ - domAttr.set(node, "tabIndex", this.tabIndex); - } - }, - - _setValueAttr: function(value, priorityChange){ - // summary: - // This selects a cell. It triggers the onChange event. - // value: String - // Value of the cell to select - // tags: - // protected - // priorityChange: Boolean? - // Optional parameter used to tell the select whether or not to fire - // onChange event. - - // clear old selected cell - if(this._selectedCell >= 0){ - domClass.remove(this._cells[this._selectedCell].node, this.cellClass + "Selected"); - } - this._selectedCell = -1; - - // search for cell matching specified value - if(value){ - for(var i = 0; i < this._cells.length; i++){ - if(value == this._cells[i].dye.getValue()){ - this._selectedCell = i; - domClass.add(this._cells[i].node, this.cellClass + "Selected"); - break; - } - } - } - - // record new value, or null if no matching cell - this._set("value", this._selectedCell >= 0 ? value : null); - - if(priorityChange || priorityChange === undefined){ - this.onChange(value); - } - }, - - onChange: function(/*===== value =====*/){ - // summary: - // Callback when a cell is selected. - // value: String - // Value corresponding to cell. - }, - - _navigateByKey: function(increment, typeCount){ - // summary: - // This is the callback for typematic. - // It changes the focus and the highlighed cell. - // increment: - // How much the key is navigated. - // typeCount: - // How many times typematic has fired. - // tags: - // private - - // typecount == -1 means the key is released. - if(typeCount == -1){ return; } - - var newFocusIndex = this._currentFocus.idx + increment; - if(newFocusIndex < this._cells.length && newFocusIndex > -1){ - var focusNode = this._cells[newFocusIndex].node; - this._setCurrent(focusNode); - - // Actually focus the node, for the benefit of screen readers. - // Use defer because IE doesn't like changing focus inside of an event handler - this.defer(lang.hitch(focus, "focus", focusNode)); - } - }, - - _getDye: function(/*DomNode*/ cell){ - // summary: - // Get JS object for given cell DOMNode - - return this._cells[cell.idx].dye; - } -}); - -/*===== -declare("dijit.Dye", - null, - { - // summary: - // Interface for the JS Object associated with a palette cell (i.e. DOMNode) - - constructor: function(alias, row, col){ - // summary: - // Initialize according to value or alias like "white" - // alias: String - }, - - getValue: function(){ - // summary: - // Return "value" of cell; meaning of "value" varies by subclass. - // description: - // For example color hex value, emoticon ascii value etc, entity hex value. - }, - - fillCell: function(cell, blankGif){ - // summary: - // Add cell DOMNode inner structure - // cell: DomNode - // The surrounding cell - // blankGif: String - // URL for blank cell image - } - } -); -=====*/ - -}); - -}, -'dijit/form/ValidationTextBox':function(){ -require({cache:{ -'url:dijit/form/templates/ValidationTextBox.html':"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n"}}); -define("dijit/form/ValidationTextBox", [ - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.deprecated - "dojo/i18n", // i18n.getLocalization - "./TextBox", - "../Tooltip", - "dojo/text!./templates/ValidationTextBox.html", - "dojo/i18n!./nls/validate" -], function(declare, kernel, i18n, TextBox, Tooltip, template){ - - // module: - // dijit/form/ValidationTextBox - - - /*===== - var __Constraints = { - // locale: String - // locale used for validation, picks up value from this widget's lang attribute - // _flags_: anything - // various flags passed to pattern function - }; - =====*/ - - var ValidationTextBox; - return ValidationTextBox = declare("dijit.form.ValidationTextBox", TextBox, { - // summary: - // Base class for textbox widgets with the ability to validate content of various types and provide user feedback. - - templateString: template, - - // required: Boolean - // User is required to enter data into this field. - required: false, - - // promptMessage: String - // If defined, display this hint string immediately on focus to the textbox, if empty. - // Also displays if the textbox value is Incomplete (not yet valid but will be with additional input). - // Think of this like a tooltip that tells the user what to do, not an error message - // that tells the user what they've done wrong. - // - // Message disappears when user starts typing. - promptMessage: "", - - // invalidMessage: String - // The message to display if value is invalid. - // The translated string value is read from the message file by default. - // Set to "" to use the promptMessage instead. - invalidMessage: "$_unset_$", - - // missingMessage: String - // The message to display if value is empty and the field is required. - // The translated string value is read from the message file by default. - // Set to "" to use the invalidMessage instead. - missingMessage: "$_unset_$", - - // message: String - // Currently error/prompt message. - // When using the default tooltip implementation, this will only be - // displayed when the field is focused. - message: "", - - // constraints: __Constraints - // user-defined object needed to pass parameters to the validator functions - constraints: {}, - - // pattern: [extension protected] String|Function(constraints) returning a string. - // This defines the regular expression used to validate the input. - // Do not add leading ^ or $ characters since the widget adds these. - // A function may be used to generate a valid pattern when dependent on constraints or other runtime factors. - // set('pattern', String|Function). - pattern: ".*", - - // regExp: Deprecated [extension protected] String. Use "pattern" instead. - regExp: "", - - regExpGen: function(/*__Constraints*/ /*===== constraints =====*/){ - // summary: - // Deprecated. Use set('pattern', Function) instead. - }, - - // state: [readonly] String - // Shows current state (ie, validation result) of input (""=Normal, Incomplete, or Error) - state: "", - - // tooltipPosition: String[] - // See description of `dijit/Tooltip.defaultPosition` for details on this parameter. - tooltipPosition: [], - - _deprecateRegExp: function(attr, value){ - if(value != ValidationTextBox.prototype[attr]){ - kernel.deprecated("ValidationTextBox id="+this.id+", set('" + attr + "', ...) is deprecated. Use set('pattern', ...) instead.", "", "2.0"); - this.set('pattern', value); - } - }, - _setRegExpGenAttr: function(/*Function*/ newFcn){ - this._deprecateRegExp("regExpGen", newFcn); - this.regExpGen = this._getPatternAttr; // backward compat with this.regExpGen(this.constraints) - }, - _setRegExpAttr: function(/*String*/ value){ - this._deprecateRegExp("regExp", value); - }, - - _setValueAttr: function(){ - // summary: - // Hook so set('value', ...) works. - this.inherited(arguments); - this.validate(this.focused); - }, - - validator: function(/*anything*/ value, /*__Constraints*/ constraints){ - // summary: - // Overridable function used to validate the text input against the regular expression. - // tags: - // protected - return (new RegExp("^(?:" + this._getPatternAttr(constraints) + ")"+(this.required?"":"?")+"$")).test(value) && - (!this.required || !this._isEmpty(value)) && - (this._isEmpty(value) || this.parse(value, constraints) !== undefined); // Boolean - }, - - _isValidSubset: function(){ - // summary: - // Returns true if the value is either already valid or could be made valid by appending characters. - // This is used for validation while the user [may be] still typing. - return this.textbox.value.search(this._partialre) == 0; - }, - - isValid: function(/*Boolean*/ /*===== isFocused =====*/){ - // summary: - // Tests if value is valid. - // Can override with your own routine in a subclass. - // tags: - // protected - return this.validator(this.textbox.value, this.constraints); - }, - - _isEmpty: function(value){ - // summary: - // Checks for whitespace - return (this.trim ? /^\s*$/ : /^$/).test(value); // Boolean - }, - - getErrorMessage: function(/*Boolean*/ /*===== isFocused =====*/){ - // summary: - // Return an error message to show if appropriate - // tags: - // protected - var invalid = this.invalidMessage == "$_unset_$" ? this.messages.invalidMessage : - !this.invalidMessage ? this.promptMessage : this.invalidMessage; - var missing = this.missingMessage == "$_unset_$" ? this.messages.missingMessage : - !this.missingMessage ? invalid : this.missingMessage; - return (this.required && this._isEmpty(this.textbox.value)) ? missing : invalid; // String - }, - - getPromptMessage: function(/*Boolean*/ /*===== isFocused =====*/){ - // summary: - // Return a hint message to show when widget is first focused - // tags: - // protected - return this.promptMessage; // String - }, - - _maskValidSubsetError: true, - validate: function(/*Boolean*/ isFocused){ - // summary: - // Called by oninit, onblur, and onkeypress. - // description: - // Show missing or invalid messages if appropriate, and highlight textbox field. - // tags: - // protected - var message = ""; - var isValid = this.disabled || this.isValid(isFocused); - if(isValid){ this._maskValidSubsetError = true; } - var isEmpty = this._isEmpty(this.textbox.value); - var isValidSubset = !isValid && isFocused && this._isValidSubset(); - this._set("state", isValid ? "" : (((((!this._hasBeenBlurred || isFocused) && isEmpty) || isValidSubset) && (this._maskValidSubsetError || (isValidSubset && !this._hasBeenBlurred && isFocused))) ? "Incomplete" : "Error")); - this.focusNode.setAttribute("aria-invalid", isValid ? "false" : "true"); - - if(this.state == "Error"){ - this._maskValidSubsetError = isFocused && isValidSubset; // we want the error to show up after a blur and refocus - message = this.getErrorMessage(isFocused); - }else if(this.state == "Incomplete"){ - message = this.getPromptMessage(isFocused); // show the prompt whenever the value is not yet complete - this._maskValidSubsetError = !this._hasBeenBlurred || isFocused; // no Incomplete warnings while focused - }else if(isEmpty){ - message = this.getPromptMessage(isFocused); // show the prompt whenever there's no error and no text - } - this.set("message", message); - - return isValid; - }, - - displayMessage: function(/*String*/ message){ - // summary: - // Overridable method to display validation errors/hints. - // By default uses a tooltip. - // tags: - // extension - if(message && this.focused){ - Tooltip.show(message, this.domNode, this.tooltipPosition, !this.isLeftToRight()); - }else{ - Tooltip.hide(this.domNode); - } - }, - - _refreshState: function(){ - // Overrides TextBox._refreshState() - if(this._created){ - this.validate(this.focused); - } - this.inherited(arguments); - }, - - //////////// INITIALIZATION METHODS /////////////////////////////////////// - - constructor: function(params /*===== , srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree. - - this.constraints = {}; - this.baseClass += ' dijitValidationTextBox'; - }, - - startup: function(){ - this.inherited(arguments); - this._refreshState(); // after all _set* methods have run - }, - - _setConstraintsAttr: function(/*__Constraints*/ constraints){ - if(!constraints.locale && this.lang){ - constraints.locale = this.lang; - } - this._set("constraints", constraints); - this._refreshState(); - }, - - _setPatternAttr: function(/*String|Function*/ pattern){ - this._set("pattern", pattern); // don't set on INPUT to avoid native HTML5 validation - }, - - _getPatternAttr: function(/*__Constraints*/ constraints){ - // summary: - // Hook to get the current regExp and to compute the partial validation RE. - var p = this.pattern; - var type = (typeof p).toLowerCase(); - if(type == "function"){ - p = this.pattern(constraints || this.constraints); - } - if(p != this._lastRegExp){ - var partialre = ""; - this._lastRegExp = p; - // parse the regexp and produce a new regexp that matches valid subsets - // if the regexp is .* then there's no use in matching subsets since everything is valid - if(p != ".*"){ - p.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g, - function(re){ - switch(re.charAt(0)){ - case '{': - case '+': - case '?': - case '*': - case '^': - case '$': - case '|': - case '(': - partialre += re; - break; - case ")": - partialre += "|$)"; - break; - default: - partialre += "(?:"+re+"|$)"; - break; - } - }); - } - try{ // this is needed for now since the above regexp parsing needs more test verification - "".search(partialre); - }catch(e){ // should never be here unless the original RE is bad or the parsing is bad - partialre = this.pattern; - console.warn('RegExp error in ' + this.declaredClass + ': ' + this.pattern); - } // should never be here unless the original RE is bad or the parsing is bad - this._partialre = "^(?:" + partialre + ")$"; - } - return p; - }, - - postMixInProperties: function(){ - this.inherited(arguments); - this.messages = i18n.getLocalization("dijit.form", "validate", this.lang); - this._setConstraintsAttr(this.constraints); // this needs to happen now (and later) due to codependency on _set*Attr calls attachPoints - }, - - _setDisabledAttr: function(/*Boolean*/ value){ - this.inherited(arguments); // call FormValueWidget._setDisabledAttr() - this._refreshState(); - }, - - _setRequiredAttr: function(/*Boolean*/ value){ - this._set("required", value); - this.focusNode.setAttribute("aria-required", value); - this._refreshState(); - }, - - _setMessageAttr: function(/*String*/ message){ - this._set("message", message); - this.displayMessage(message); - }, - - reset:function(){ - // Overrides dijit/form/TextBox.reset() by also - // hiding errors about partial matches - this._maskValidSubsetError = true; - this.inherited(arguments); - }, - - _onBlur: function(){ - // the message still exists but for back-compat, and to erase the tooltip - // (if the message is being displayed as a tooltip), call displayMessage('') - this.displayMessage(''); - - this.inherited(arguments); - } - }); -}); - -}, -'dijit/_base/typematic':function(){ -define("dijit/_base/typematic", ["../typematic"], function(){ - - /*===== - return { - // summary: - // Deprecated, for back-compat, just loads top level module - }; - =====*/ - -}); - -}, -'dijit/layout/BorderContainer':function(){ -define("dijit/layout/BorderContainer", [ - "dojo/_base/array", // array.filter array.forEach array.map - "dojo/cookie", // cookie - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.remove domClass.toggle - "dojo/dom-construct", // domConstruct.destroy domConstruct.place - "dojo/dom-geometry", // domGeometry.marginBox - "dojo/dom-style", // domStyle.style - "dojo/_base/event", // event.stop - "dojo/keys", - "dojo/_base/lang", // lang.getObject lang.hitch - "dojo/on", - "dojo/touch", - "../_WidgetBase", - "../_Widget", - "../_TemplatedMixin", - "./_LayoutWidget", - "./utils" // layoutUtils.layoutChildren -], function(array, cookie, declare, domClass, domConstruct, domGeometry, domStyle, event, keys, lang, on, touch, - _WidgetBase, _Widget, _TemplatedMixin, _LayoutWidget, layoutUtils){ - -// module: -// dijit/layout/BorderContainer - -var _Splitter = declare("dijit.layout._Splitter", [_Widget, _TemplatedMixin ], -{ - // summary: - // A draggable spacer between two items in a `dijit/layout/BorderContainer`. - // description: - // This is instantiated by `dijit/layout/BorderContainer`. Users should not - // create it directly. - // tags: - // private - -/*===== - // container: [const] dijit/layout/BorderContainer - // Pointer to the parent BorderContainer - container: null, - - // child: [const] dijit/layout/_LayoutWidget - // Pointer to the pane associated with this splitter - child: null, - - // region: [const] String - // Region of pane associated with this splitter. - // "top", "bottom", "left", "right". - region: null, -=====*/ - - // live: [const] Boolean - // If true, the child's size changes and the child widget is redrawn as you drag the splitter; - // otherwise, the size doesn't change until you drop the splitter (by mouse-up) - live: true, - - templateString: '<div class="dijitSplitter" data-dojo-attach-event="onkeypress:_onKeyPress,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" role="separator"><div class="dijitSplitterThumb"></div></div>', - - constructor: function(){ - this._handlers = []; - }, - - postMixInProperties: function(){ - this.inherited(arguments); - - this.horizontal = /top|bottom/.test(this.region); - this._factor = /top|left/.test(this.region) ? 1 : -1; - this._cookieName = this.container.id + "_" + this.region; - }, - - buildRendering: function(){ - this.inherited(arguments); - - domClass.add(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V")); - - if(this.container.persist){ - // restore old size - var persistSize = cookie(this._cookieName); - if(persistSize){ - this.child.domNode.style[this.horizontal ? "height" : "width"] = persistSize; - } - } - }, - - _computeMaxSize: function(){ - // summary: - // Return the maximum size that my corresponding pane can be set to - - var dim = this.horizontal ? 'h' : 'w', - childSize = domGeometry.getMarginBox(this.child.domNode)[dim], - center = array.filter(this.container.getChildren(), function(child){ return child.region == "center";})[0], - spaceAvailable = domGeometry.getMarginBox(center.domNode)[dim]; // can expand until center is crushed to 0 - - return Math.min(this.child.maxSize, childSize + spaceAvailable); - }, - - _startDrag: function(e){ - if(!this.cover){ - this.cover = domConstruct.place("<div class=dijitSplitterCover></div>", this.child.domNode, "after"); - } - domClass.add(this.cover, "dijitSplitterCoverActive"); - - // Safeguard in case the stop event was missed. Shouldn't be necessary if we always get the mouse up. - if(this.fake){ domConstruct.destroy(this.fake); } - if(!(this._resize = this.live)){ //TODO: disable live for IE6? - // create fake splitter to display at old position while we drag - (this.fake = this.domNode.cloneNode(true)).removeAttribute("id"); - domClass.add(this.domNode, "dijitSplitterShadow"); - domConstruct.place(this.fake, this.domNode, "after"); - } - domClass.add(this.domNode, "dijitSplitterActive dijitSplitter" + (this.horizontal ? "H" : "V") + "Active"); - if(this.fake){ - domClass.remove(this.fake, "dijitSplitterHover dijitSplitter" + (this.horizontal ? "H" : "V") + "Hover"); - } - - //Performance: load data info local vars for onmousevent function closure - var factor = this._factor, - isHorizontal = this.horizontal, - axis = isHorizontal ? "pageY" : "pageX", - pageStart = e[axis], - splitterStyle = this.domNode.style, - dim = isHorizontal ? 'h' : 'w', - childStart = domGeometry.getMarginBox(this.child.domNode)[dim], - max = this._computeMaxSize(), - min = this.child.minSize || 20, - region = this.region, - splitterAttr = region == "top" || region == "bottom" ? "top" : "left", // style attribute of splitter to adjust - splitterStart = parseInt(splitterStyle[splitterAttr], 10), - resize = this._resize, - layoutFunc = lang.hitch(this.container, "_layoutChildren", this.child.id), - de = this.ownerDocument; - - this._handlers = this._handlers.concat([ - on(de, touch.move, this._drag = function(e, forceResize){ - var delta = e[axis] - pageStart, - childSize = factor * delta + childStart, - boundChildSize = Math.max(Math.min(childSize, max), min); - - if(resize || forceResize){ - layoutFunc(boundChildSize); - } - // TODO: setting style directly (usually) sets content box size, need to set margin box size - splitterStyle[splitterAttr] = delta + splitterStart + factor*(boundChildSize - childSize) + "px"; - }), - on(de, "dragstart", event.stop), - on(this.ownerDocumentBody, "selectstart", event.stop), - on(de, touch.release, lang.hitch(this, "_stopDrag")) - ]); - event.stop(e); - }, - - _onMouse: function(e){ - // summary: - // Handler for onmouseenter / onmouseleave events - var o = (e.type == "mouseover" || e.type == "mouseenter"); - domClass.toggle(this.domNode, "dijitSplitterHover", o); - domClass.toggle(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Hover", o); - }, - - _stopDrag: function(e){ - try{ - if(this.cover){ - domClass.remove(this.cover, "dijitSplitterCoverActive"); - } - if(this.fake){ domConstruct.destroy(this.fake); } - domClass.remove(this.domNode, "dijitSplitterActive dijitSplitter" - + (this.horizontal ? "H" : "V") + "Active dijitSplitterShadow"); - this._drag(e); //TODO: redundant with onmousemove? - this._drag(e, true); - }finally{ - this._cleanupHandlers(); - delete this._drag; - } - - if(this.container.persist){ - cookie(this._cookieName, this.child.domNode.style[this.horizontal ? "height" : "width"], {expires:365}); - } - }, - - _cleanupHandlers: function(){ - var h; - while(h = this._handlers.pop()){ h.remove(); } - }, - - _onKeyPress: function(/*Event*/ e){ - // should we apply typematic to this? - this._resize = true; - var horizontal = this.horizontal; - var tick = 1; - switch(e.charOrCode){ - case horizontal ? keys.UP_ARROW : keys.LEFT_ARROW: - tick *= -1; -// break; - case horizontal ? keys.DOWN_ARROW : keys.RIGHT_ARROW: - break; - default: -// this.inherited(arguments); - return; - } - var childSize = domGeometry.getMarginSize(this.child.domNode)[ horizontal ? 'h' : 'w' ] + this._factor * tick; - this.container._layoutChildren(this.child.id, Math.max(Math.min(childSize, this._computeMaxSize()), this.child.minSize)); - event.stop(e); - }, - - destroy: function(){ - this._cleanupHandlers(); - delete this.child; - delete this.container; - delete this.cover; - delete this.fake; - this.inherited(arguments); - } -}); - -var _Gutter = declare("dijit.layout._Gutter", [_Widget, _TemplatedMixin], -{ - // summary: - // Just a spacer div to separate side pane from center pane. - // Basically a trick to lookup the gutter/splitter width from the theme. - // description: - // Instantiated by `dijit/layout/BorderContainer`. Users should not - // create directly. - // tags: - // private - - templateString: '<div class="dijitGutter" role="presentation"></div>', - - postMixInProperties: function(){ - this.inherited(arguments); - this.horizontal = /top|bottom/.test(this.region); - }, - - buildRendering: function(){ - this.inherited(arguments); - domClass.add(this.domNode, "dijitGutter" + (this.horizontal ? "H" : "V")); - } -}); - -var BorderContainer = declare("dijit.layout.BorderContainer", _LayoutWidget, { - // summary: - // Provides layout in up to 5 regions, a mandatory center with optional borders along its 4 sides. - // description: - // A BorderContainer is a box with a specified size, such as style="width: 500px; height: 500px;", - // that contains a child widget marked region="center" and optionally children widgets marked - // region equal to "top", "bottom", "leading", "trailing", "left" or "right". - // Children along the edges will be laid out according to width or height dimensions and may - // include optional splitters (splitter="true") to make them resizable by the user. The remaining - // space is designated for the center region. - // - // The outer size must be specified on the BorderContainer node. Width must be specified for the sides - // and height for the top and bottom, respectively. No dimensions should be specified on the center; - // it will fill the remaining space. Regions named "leading" and "trailing" may be used just like - // "left" and "right" except that they will be reversed in right-to-left environments. - // - // For complex layouts, multiple children can be specified for a single region. In this case, the - // layoutPriority flag on the children determines which child is closer to the edge (low layoutPriority) - // and which child is closer to the center (high layoutPriority). layoutPriority can also be used - // instead of the design attribute to control layout precedence of horizontal vs. vertical panes. - // - // See `BorderContainer.ChildWidgetProperties` for details on the properties that can be set on - // children of a `BorderContainer`. - // example: - // | <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design: 'sidebar', gutters: false" - // | style="width: 400px; height: 300px;"> - // | <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'top'">header text</div> - // | <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'right', splitter: true" style="width: 200px;">table of contents</div> - // | <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'">client area</div> - // | </div> - - // design: String - // Which design is used for the layout: - // - // - "headline" (default) where the top and bottom extend the full width of the container - // - "sidebar" where the left and right sides extend from top to bottom. - design: "headline", - - // gutters: [const] Boolean - // Give each pane a border and margin. - // Margin determined by domNode.paddingLeft. - // When false, only resizable panes have a gutter (i.e. draggable splitter) for resizing. - gutters: true, - - // liveSplitters: [const] Boolean - // Specifies whether splitters resize as you drag (true) or only upon mouseup (false) - liveSplitters: true, - - // persist: Boolean - // Save splitter positions in a cookie. - persist: false, - - baseClass: "dijitBorderContainer", - - // _splitterClass: Function||String - // Optional hook to override the default Splitter widget used by BorderContainer - _splitterClass: _Splitter, - - postMixInProperties: function(){ - // change class name to indicate that BorderContainer is being used purely for - // layout (like LayoutContainer) rather than for pretty formatting. - if(!this.gutters){ - this.baseClass += "NoGutter"; - } - this.inherited(arguments); - }, - - startup: function(){ - if(this._started){ return; } - array.forEach(this.getChildren(), this._setupChild, this); - this.inherited(arguments); - }, - - _setupChild: function(/*dijit/_WidgetBase*/ child){ - // Override _LayoutWidget._setupChild(). - - var region = child.region; - if(region){ - this.inherited(arguments); - - domClass.add(child.domNode, this.baseClass+"Pane"); - - var ltr = this.isLeftToRight(); - if(region == "leading"){ region = ltr ? "left" : "right"; } - if(region == "trailing"){ region = ltr ? "right" : "left"; } - - // Create draggable splitter for resizing pane, - // or alternately if splitter=false but BorderContainer.gutters=true then - // insert dummy div just for spacing - if(region != "center" && (child.splitter || this.gutters) && !child._splitterWidget){ - var _Splitter = child.splitter ? this._splitterClass : _Gutter; - if(lang.isString(_Splitter)){ - _Splitter = lang.getObject(_Splitter); // for back-compat, remove in 2.0 - } - var splitter = new _Splitter({ - id: child.id + "_splitter", - container: this, - child: child, - region: region, - live: this.liveSplitters - }); - splitter.isSplitter = true; - child._splitterWidget = splitter; - - domConstruct.place(splitter.domNode, child.domNode, "after"); - - // Splitters aren't added as Contained children, so we need to call startup explicitly - splitter.startup(); - } - child.region = region; // TODO: technically wrong since it overwrites "trailing" with "left" etc. - } - }, - - layout: function(){ - // Implement _LayoutWidget.layout() virtual method. - this._layoutChildren(); - }, - - addChild: function(/*dijit/_WidgetBase*/ child, /*Integer?*/ insertIndex){ - // Override _LayoutWidget.addChild(). - this.inherited(arguments); - if(this._started){ - this.layout(); //OPT - } - }, - - removeChild: function(/*dijit/_WidgetBase*/ child){ - // Override _LayoutWidget.removeChild(). - - var region = child.region; - var splitter = child._splitterWidget; - if(splitter){ - splitter.destroy(); - delete child._splitterWidget; - } - this.inherited(arguments); - - if(this._started){ - this._layoutChildren(); - } - // Clean up whatever style changes we made to the child pane. - // Unclear how height and width should be handled. - domClass.remove(child.domNode, this.baseClass+"Pane"); - domStyle.set(child.domNode, { - top: "auto", - bottom: "auto", - left: "auto", - right: "auto", - position: "static" - }); - domStyle.set(child.domNode, region == "top" || region == "bottom" ? "width" : "height", "auto"); - }, - - getChildren: function(){ - // Override _LayoutWidget.getChildren() to only return real children, not the splitters. - return array.filter(this.inherited(arguments), function(widget){ - return !widget.isSplitter; - }); - }, - - // TODO: remove in 2.0 - getSplitter: function(/*String*/region){ - // summary: - // Returns the widget responsible for rendering the splitter associated with region - // tags: - // deprecated - return array.filter(this.getChildren(), function(child){ - return child.region == region; - })[0]._splitterWidget; - }, - - resize: function(newSize, currentSize){ - // Overrides _LayoutWidget.resize(). - - // resetting potential padding to 0px to provide support for 100% width/height + padding - // TODO: this hack doesn't respect the box model and is a temporary fix - if(!this.cs || !this.pe){ - var node = this.domNode; - this.cs = domStyle.getComputedStyle(node); - this.pe = domGeometry.getPadExtents(node, this.cs); - this.pe.r = domStyle.toPixelValue(node, this.cs.paddingRight); - this.pe.b = domStyle.toPixelValue(node, this.cs.paddingBottom); - - domStyle.set(node, "padding", "0px"); - } - - this.inherited(arguments); - }, - - _layoutChildren: function(/*String?*/ changedChildId, /*Number?*/ changedChildSize){ - // summary: - // This is the main routine for setting size/position of each child. - // description: - // With no arguments, measures the height of top/bottom panes, the width - // of left/right panes, and then sizes all panes accordingly. - // - // With changedRegion specified (as "left", "top", "bottom", or "right"), - // it changes that region's width/height to changedRegionSize and - // then resizes other regions that were affected. - // changedChildId: - // Id of the child which should be resized because splitter was dragged. - // changedChildSize: - // The new width/height (in pixels) to make specified child - - if(!this._borderBox || !this._borderBox.h){ - // We are currently hidden, or we haven't been sized by our parent yet. - // Abort. Someone will resize us later. - return; - } - - // Generate list of wrappers of my children in the order that I want layoutChildren() - // to process them (i.e. from the outside to the inside) - var wrappers = array.map(this.getChildren(), function(child, idx){ - return { - pane: child, - weight: [ - child.region == "center" ? Infinity : 0, - child.layoutPriority, - (this.design == "sidebar" ? 1 : -1) * (/top|bottom/.test(child.region) ? 1 : -1), - idx - ] - }; - }, this); - wrappers.sort(function(a, b){ - var aw = a.weight, bw = b.weight; - for(var i=0; i<aw.length; i++){ - if(aw[i] != bw[i]){ - return aw[i] - bw[i]; - } - } - return 0; - }); - - // Make new list, combining the externally specified children with splitters and gutters - var childrenAndSplitters = []; - array.forEach(wrappers, function(wrapper){ - var pane = wrapper.pane; - childrenAndSplitters.push(pane); - if(pane._splitterWidget){ - childrenAndSplitters.push(pane._splitterWidget); - } - }); - - // Compute the box in which to lay out my children - var dim = { - l: this.pe.l, - t: this.pe.t, - w: this._borderBox.w - this.pe.w, - h: this._borderBox.h - this.pe.h - }; - - // Layout the children, possibly changing size due to a splitter drag - layoutUtils.layoutChildren(this.domNode, dim, childrenAndSplitters, - changedChildId, changedChildSize); - }, - - destroyRecursive: function(){ - // Destroy splitters first, while getChildren() still works - array.forEach(this.getChildren(), function(child){ - var splitter = child._splitterWidget; - if(splitter){ - splitter.destroy(); - } - delete child._splitterWidget; - }); - - // Then destroy the real children, and myself - this.inherited(arguments); - } -}); - -BorderContainer.ChildWidgetProperties = { - // summary: - // These properties can be specified for the children of a BorderContainer. - - // region: [const] String - // Values: "top", "bottom", "leading", "trailing", "left", "right", "center". - // See the `dijit/layout/BorderContainer` description for details. - region: '', - - // layoutPriority: [const] Number - // Children with a higher layoutPriority will be placed closer to the BorderContainer center, - // between children with a lower layoutPriority. - layoutPriority: 0, - - // splitter: [const] Boolean - // Parameter for children where region != "center". - // If true, enables user to resize the widget by putting a draggable splitter between - // this widget and the region=center widget. - splitter: false, - - // minSize: [const] Number - // Specifies a minimum size (in pixels) for this widget when resized by a splitter. - minSize: 0, - - // maxSize: [const] Number - // Specifies a maximum size (in pixels) for this widget when resized by a splitter. - maxSize: Infinity -}; - -// Since any widget can be specified as a LayoutContainer child, mix it -// into the base widget class. (This is a hack, but it's effective.) -// This is for the benefit of the parser. Remove for 2.0. Also, hide from doc viewer. -lang.extend(_WidgetBase, /*===== {} || =====*/ BorderContainer.ChildWidgetProperties); - -// For monkey patching -BorderContainer._Splitter = _Splitter; -BorderContainer._Gutter = _Gutter; - -return BorderContainer; -}); - -}, -'dijit/_base':function(){ -define("dijit/_base", [ - "./main", - "./a11y", // used to be in dijit/_base/manager - "./WidgetSet", // used to be in dijit/_base/manager - "./_base/focus", - "./_base/manager", - "./_base/place", - "./_base/popup", - "./_base/scroll", - "./_base/sniff", - "./_base/typematic", - "./_base/wai", - "./_base/window" -], function(dijit){ - - // module: - // dijit/_base - - /*===== - return { - // summary: - // Includes all the modules in dijit/_base - }; - =====*/ - - return dijit._base; -}); - -}, -'dojo/window':function(){ -define("dojo/window", ["./_base/lang", "./sniff", "./_base/window", "./dom", "./dom-geometry", "./dom-style"], - function(lang, has, baseWindow, dom, geom, style){ - - // module: - // dojo/window - - var window = { - // summary: - // TODOC - - getBox: function(/*Document?*/ doc){ - // summary: - // Returns the dimensions and scroll position of the viewable area of a browser window - - doc = doc || baseWindow.doc; - - var - scrollRoot = (doc.compatMode == 'BackCompat') ? baseWindow.body(doc) : doc.documentElement, - // get scroll position - scroll = geom.docScroll(doc), // scrollRoot.scrollTop/Left should work - w, h; - - if(has("touch")){ // if(scrollbars not supported) - var uiWindow = window.get(doc); // use UI window, not dojo.global window - // on mobile, scrollRoot.clientHeight <= uiWindow.innerHeight <= scrollRoot.offsetHeight, return uiWindow.innerHeight - w = uiWindow.innerWidth || scrollRoot.clientWidth; // || scrollRoot.clientXXX probably never evaluated - h = uiWindow.innerHeight || scrollRoot.clientHeight; - }else{ - // on desktops, scrollRoot.clientHeight <= scrollRoot.offsetHeight <= uiWindow.innerHeight, return scrollRoot.clientHeight - // uiWindow.innerWidth/Height includes the scrollbar and cannot be used - w = scrollRoot.clientWidth; - h = scrollRoot.clientHeight; - } - return { - l: scroll.x, - t: scroll.y, - w: w, - h: h - }; - }, - - get: function(/*Document*/ doc){ - // summary: - // Get window object associated with document doc. - // doc: - // The document to get the associated window for. - - // In some IE versions (at least 6.0), document.parentWindow does not return a - // reference to the real window object (maybe a copy), so we must fix it as well - // We use IE specific execScript to attach the real window reference to - // document._parentWindow for later use - if(has("ie") && window !== document.parentWindow){ - /* - In IE 6, only the variable "window" can be used to connect events (others - may be only copies). - */ - doc.parentWindow.execScript("document._parentWindow = window;", "Javascript"); - //to prevent memory leak, unset it after use - //another possibility is to add an onUnload handler which seems overkill to me (liucougar) - var win = doc._parentWindow; - doc._parentWindow = null; - return win; // Window - } - - return doc.parentWindow || doc.defaultView; // Window - }, - - scrollIntoView: function(/*DomNode*/ node, /*Object?*/ pos){ - // summary: - // Scroll the passed node into view, if it is not already. - - // don't rely on node.scrollIntoView working just because the function is there - - try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method - node = dom.byId(node); - var doc = node.ownerDocument || baseWindow.doc, // TODO: why baseWindow.doc? Isn't node.ownerDocument always defined? - body = baseWindow.body(doc), - html = doc.documentElement || body.parentNode, - isIE = has("ie"), isWK = has("webkit"); - // if an untested browser, then use the native method - if((!(has("mozilla") || isIE || isWK || has("opera")) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){ - node.scrollIntoView(false); // short-circuit to native if possible - return; - } - var backCompat = doc.compatMode == 'BackCompat', - clientAreaRoot = (isIE >= 9 && "frameElement" in node.ownerDocument.parentWindow) - ? ((html.clientHeight > 0 && html.clientWidth > 0 && (body.clientHeight == 0 || body.clientWidth == 0 || body.clientHeight > html.clientHeight || body.clientWidth > html.clientWidth)) ? html : body) - : (backCompat ? body : html), - scrollRoot = isWK ? body : clientAreaRoot, - rootWidth = clientAreaRoot.clientWidth, - rootHeight = clientAreaRoot.clientHeight, - rtl = !geom.isBodyLtr(doc), - nodePos = pos || geom.position(node), - el = node.parentNode, - isFixed = function(el){ - return ((isIE <= 6 || (isIE && backCompat))? false : (style.get(el, 'position').toLowerCase() == "fixed")); - }; - if(isFixed(node)){ return; } // nothing to do - - while(el){ - if(el == body){ el = scrollRoot; } - var elPos = geom.position(el), - fixedPos = isFixed(el); - - if(el == scrollRoot){ - elPos.w = rootWidth; elPos.h = rootHeight; - if(scrollRoot == html && isIE && rtl){ elPos.x += scrollRoot.offsetWidth-elPos.w; } // IE workaround where scrollbar causes negative x - if(elPos.x < 0 || !isIE){ elPos.x = 0; } // IE can have values > 0 - if(elPos.y < 0 || !isIE){ elPos.y = 0; } - }else{ - var pb = geom.getPadBorderExtents(el); - elPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t; - var clientSize = el.clientWidth, - scrollBarSize = elPos.w - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.w = clientSize; - elPos.x += (rtl && (isIE || el.clientLeft > pb.l/*Chrome*/)) ? scrollBarSize : 0; - } - clientSize = el.clientHeight; - scrollBarSize = elPos.h - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.h = clientSize; - } - } - if(fixedPos){ // bounded by viewport, not parents - if(elPos.y < 0){ - elPos.h += elPos.y; elPos.y = 0; - } - if(elPos.x < 0){ - elPos.w += elPos.x; elPos.x = 0; - } - if(elPos.y + elPos.h > rootHeight){ - elPos.h = rootHeight - elPos.y; - } - if(elPos.x + elPos.w > rootWidth){ - elPos.w = rootWidth - elPos.x; - } - } - // calculate overflow in all 4 directions - var l = nodePos.x - elPos.x, // beyond left: < 0 - t = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0 - r = l + nodePos.w - elPos.w, // beyond right: > 0 - bot = t + nodePos.h - elPos.h; // beyond bottom: > 0 - if(r * l > 0){ - var s = Math[l < 0? "max" : "min"](l, r); - if(rtl && ((isIE == 8 && !backCompat) || isIE >= 9)){ s = -s; } - nodePos.x += el.scrollLeft; - el.scrollLeft += s; - nodePos.x -= el.scrollLeft; - } - if(bot * t > 0){ - nodePos.y += el.scrollTop; - el.scrollTop += Math[t < 0? "max" : "min"](t, bot); - nodePos.y -= el.scrollTop; - } - el = (el != scrollRoot) && !fixedPos && el.parentNode; - } - }catch(error){ - console.error('scrollIntoView: ' + error); - node.scrollIntoView(false); - } - } - }; - - 1 && lang.setObject("dojo.window", window); - - return window; -}); - -}, -'dojo/number':function(){ -define("dojo/number", [/*===== "./_base/declare", =====*/ "./_base/lang", "./i18n", "./i18n!./cldr/nls/number", "./string", "./regexp"], - function(/*===== declare, =====*/ lang, i18n, nlsNumber, dstring, dregexp){ - -// module: -// dojo/number - -var number = { - // summary: - // localized formatting and parsing routines for Number -}; -lang.setObject("dojo.number", number); - -/*===== -number.__FormatOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. Literal characters in patterns are not supported. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // places: Number? - // fixed number of decimal places to show. This overrides any - // information in the provided pattern. - // round: Number? - // 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1 - // means do not round. - // locale: String? - // override the locale used to determine formatting rules - // fractional: Boolean? - // If false, show no decimal places, overriding places and pattern settings. -}); -=====*/ - -number.format = function(/*Number*/ value, /*number.__FormatOptions?*/ options){ - // summary: - // Format a Number as a String, using locale-specific settings - // description: - // Create a string from a Number using a known localized pattern. - // Formatting patterns appropriate to the locale are chosen from the - // [Common Locale Data Repository](http://unicode.org/cldr) as well as the appropriate symbols and - // delimiters. - // If value is Infinity, -Infinity, or is not a valid JavaScript number, return null. - // value: - // the number to be formatted - - options = lang.mixin({}, options || {}); - var locale = i18n.normalizeLocale(options.locale), - bundle = i18n.getLocalization("dojo.cldr", "number", locale); - options.customs = bundle; - var pattern = options.pattern || bundle[(options.type || "decimal") + "Format"]; - if(isNaN(value) || Math.abs(value) == Infinity){ return null; } // null - return number._applyPattern(value, pattern, options); // String -}; - -//number._numberPatternRE = /(?:[#0]*,?)*[#0](?:\.0*#*)?/; // not precise, but good enough -number._numberPatternRE = /[#0,]*[#0](?:\.0*#*)?/; // not precise, but good enough - -number._applyPattern = function(/*Number*/ value, /*String*/ pattern, /*number.__FormatOptions?*/ options){ - // summary: - // Apply pattern to format value as a string using options. Gives no - // consideration to local customs. - // value: - // the number to be formatted. - // pattern: - // a pattern string as described by - // [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // options: number.__FormatOptions? - // _applyPattern is usually called via `dojo/number.format()` which - // populates an extra property in the options parameter, "customs". - // The customs object specifies group and decimal parameters if set. - - //TODO: support escapes - options = options || {}; - var group = options.customs.group, - decimal = options.customs.decimal, - patternList = pattern.split(';'), - positivePattern = patternList[0]; - pattern = patternList[(value < 0) ? 1 : 0] || ("-" + positivePattern); - - //TODO: only test against unescaped - if(pattern.indexOf('%') != -1){ - value *= 100; - }else if(pattern.indexOf('\u2030') != -1){ - value *= 1000; // per mille - }else if(pattern.indexOf('\u00a4') != -1){ - group = options.customs.currencyGroup || group;//mixins instead? - decimal = options.customs.currencyDecimal || decimal;// Should these be mixins instead? - pattern = pattern.replace(/\u00a4{1,3}/, function(match){ - var prop = ["symbol", "currency", "displayName"][match.length-1]; - return options[prop] || options.currency || ""; - }); - }else if(pattern.indexOf('E') != -1){ - throw new Error("exponential notation not supported"); - } - - //TODO: support @ sig figs? - var numberPatternRE = number._numberPatternRE; - var numberPattern = positivePattern.match(numberPatternRE); - if(!numberPattern){ - throw new Error("unable to find a number expression in pattern: "+pattern); - } - if(options.fractional === false){ options.places = 0; } - return pattern.replace(numberPatternRE, - number._formatAbsolute(value, numberPattern[0], {decimal: decimal, group: group, places: options.places, round: options.round})); -}; - -number.round = function(/*Number*/ value, /*Number?*/ places, /*Number?*/ increment){ - // summary: - // Rounds to the nearest value with the given number of decimal places, away from zero - // description: - // Rounds to the nearest value with the given number of decimal places, away from zero if equal. - // Similar to Number.toFixed(), but compensates for browser quirks. Rounding can be done by - // fractional increments also, such as the nearest quarter. - // NOTE: Subject to floating point errors. See dojox/math/round for experimental workaround. - // value: - // The number to round - // places: - // The number of decimal places where rounding takes place. Defaults to 0 for whole rounding. - // Must be non-negative. - // increment: - // Rounds next place to nearest value of increment/10. 10 by default. - // example: - // | >>> number.round(-0.5) - // | -1 - // | >>> number.round(162.295, 2) - // | 162.29 // note floating point error. Should be 162.3 - // | >>> number.round(10.71, 0, 2.5) - // | 10.75 - var factor = 10 / (increment || 10); - return (factor * +value).toFixed(places) / factor; // Number -}; - -if((0.9).toFixed() == 0){ - // (isIE) toFixed() bug workaround: Rounding fails on IE when most significant digit - // is just after the rounding place and is >=5 - var round = number.round; - number.round = function(v, p, m){ - var d = Math.pow(10, -p || 0), a = Math.abs(v); - if(!v || a >= d){ - d = 0; - }else{ - a /= d; - if(a < 0.5 || a >= 0.95){ - d = 0; - } - } - return round(v, p, m) + (v > 0 ? d : -d); - }; - - // Use "doc hint" so the doc parser ignores this new definition of round(), and uses the one above. - /*===== number.round = round; =====*/ -} - -/*===== -number.__FormatAbsoluteOptions = declare(null, { - // decimal: String? - // the decimal separator - // group: String? - // the group separator - // places: Number|String? - // number of decimal places. the range "n,m" will format to m places. - // round: Number? - // 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1 - // means don't round. -}); -=====*/ - -number._formatAbsolute = function(/*Number*/ value, /*String*/ pattern, /*number.__FormatAbsoluteOptions?*/ options){ - // summary: - // Apply numeric pattern to absolute value using options. Gives no - // consideration to local customs. - // value: - // the number to be formatted, ignores sign - // pattern: - // the number portion of a pattern (e.g. `#,##0.00`) - options = options || {}; - if(options.places === true){options.places=0;} - if(options.places === Infinity){options.places=6;} // avoid a loop; pick a limit - - var patternParts = pattern.split("."), - comma = typeof options.places == "string" && options.places.indexOf(","), - maxPlaces = options.places; - if(comma){ - maxPlaces = options.places.substring(comma + 1); - }else if(!(maxPlaces >= 0)){ - maxPlaces = (patternParts[1] || []).length; - } - if(!(options.round < 0)){ - value = number.round(value, maxPlaces, options.round); - } - - var valueParts = String(Math.abs(value)).split("."), - fractional = valueParts[1] || ""; - if(patternParts[1] || options.places){ - if(comma){ - options.places = options.places.substring(0, comma); - } - // Pad fractional with trailing zeros - var pad = options.places !== undefined ? options.places : (patternParts[1] && patternParts[1].lastIndexOf("0") + 1); - if(pad > fractional.length){ - valueParts[1] = dstring.pad(fractional, pad, '0', true); - } - - // Truncate fractional - if(maxPlaces < fractional.length){ - valueParts[1] = fractional.substr(0, maxPlaces); - } - }else{ - if(valueParts[1]){ valueParts.pop(); } - } - - // Pad whole with leading zeros - var patternDigits = patternParts[0].replace(',', ''); - pad = patternDigits.indexOf("0"); - if(pad != -1){ - pad = patternDigits.length - pad; - if(pad > valueParts[0].length){ - valueParts[0] = dstring.pad(valueParts[0], pad); - } - - // Truncate whole - if(patternDigits.indexOf("#") == -1){ - valueParts[0] = valueParts[0].substr(valueParts[0].length - pad); - } - } - - // Add group separators - var index = patternParts[0].lastIndexOf(','), - groupSize, groupSize2; - if(index != -1){ - groupSize = patternParts[0].length - index - 1; - var remainder = patternParts[0].substr(0, index); - index = remainder.lastIndexOf(','); - if(index != -1){ - groupSize2 = remainder.length - index - 1; - } - } - var pieces = []; - for(var whole = valueParts[0]; whole;){ - var off = whole.length - groupSize; - pieces.push((off > 0) ? whole.substr(off) : whole); - whole = (off > 0) ? whole.slice(0, off) : ""; - if(groupSize2){ - groupSize = groupSize2; - delete groupSize2; - } - } - valueParts[0] = pieces.reverse().join(options.group || ","); - - return valueParts.join(options.decimal || "."); -}; - -/*===== -number.__RegexpOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // locale: String? - // override the locale used to determine formatting rules - // strict: Boolean? - // strict parsing, false by default. Strict parsing requires input as produced by the format() method. - // Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators - // places: Number|String? - // number of decimal places to accept: Infinity, a positive number, or - // a range "n,m". Defined by pattern or Infinity if pattern not provided. -}); -=====*/ -number.regexp = function(/*number.__RegexpOptions?*/ options){ - // summary: - // Builds the regular needed to parse a number - // description: - // Returns regular expression with positive and negative match, group - // and decimal separators - return number._parseInfo(options).regexp; // String -}; - -number._parseInfo = function(/*Object?*/ options){ - options = options || {}; - var locale = i18n.normalizeLocale(options.locale), - bundle = i18n.getLocalization("dojo.cldr", "number", locale), - pattern = options.pattern || bundle[(options.type || "decimal") + "Format"], -//TODO: memoize? - group = bundle.group, - decimal = bundle.decimal, - factor = 1; - - if(pattern.indexOf('%') != -1){ - factor /= 100; - }else if(pattern.indexOf('\u2030') != -1){ - factor /= 1000; // per mille - }else{ - var isCurrency = pattern.indexOf('\u00a4') != -1; - if(isCurrency){ - group = bundle.currencyGroup || group; - decimal = bundle.currencyDecimal || decimal; - } - } - - //TODO: handle quoted escapes - var patternList = pattern.split(';'); - if(patternList.length == 1){ - patternList.push("-" + patternList[0]); - } - - var re = dregexp.buildGroupRE(patternList, function(pattern){ - pattern = "(?:"+dregexp.escapeString(pattern, '.')+")"; - return pattern.replace(number._numberPatternRE, function(format){ - var flags = { - signed: false, - separator: options.strict ? group : [group,""], - fractional: options.fractional, - decimal: decimal, - exponent: false - }, - - parts = format.split('.'), - places = options.places; - - // special condition for percent (factor != 1) - // allow decimal places even if not specified in pattern - if(parts.length == 1 && factor != 1){ - parts[1] = "###"; - } - if(parts.length == 1 || places === 0){ - flags.fractional = false; - }else{ - if(places === undefined){ places = options.pattern ? parts[1].lastIndexOf('0') + 1 : Infinity; } - if(places && options.fractional == undefined){flags.fractional = true;} // required fractional, unless otherwise specified - if(!options.places && (places < parts[1].length)){ places += "," + parts[1].length; } - flags.places = places; - } - var groups = parts[0].split(','); - if(groups.length > 1){ - flags.groupSize = groups.pop().length; - if(groups.length > 1){ - flags.groupSize2 = groups.pop().length; - } - } - return "("+number._realNumberRegexp(flags)+")"; - }); - }, true); - - if(isCurrency){ - // substitute the currency symbol for the placeholder in the pattern - re = re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g, function(match, before, target, after){ - var prop = ["symbol", "currency", "displayName"][target.length-1], - symbol = dregexp.escapeString(options[prop] || options.currency || ""); - before = before ? "[\\s\\xa0]" : ""; - after = after ? "[\\s\\xa0]" : ""; - if(!options.strict){ - if(before){before += "*";} - if(after){after += "*";} - return "(?:"+before+symbol+after+")?"; - } - return before+symbol+after; - }); - } - -//TODO: substitute localized sign/percent/permille/etc.? - - // normalize whitespace and return - return {regexp: re.replace(/[\xa0 ]/g, "[\\s\\xa0]"), group: group, decimal: decimal, factor: factor}; // Object -}; - -/*===== -number.__ParseOptions = declare(null, { - // pattern: String? - // override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // with this string. Default value is based on locale. Overriding this property will defeat - // localization. Literal characters in patterns are not supported. - // type: String? - // choose a format type based on the locale from the following: - // decimal, scientific (not yet supported), percent, currency. decimal by default. - // locale: String? - // override the locale used to determine formatting rules - // strict: Boolean? - // strict parsing, false by default. Strict parsing requires input as produced by the format() method. - // Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators - // fractional: Boolean|Array? - // Whether to include the fractional portion, where the number of decimal places are implied by pattern - // or explicit 'places' parameter. The value [true,false] makes the fractional portion optional. -}); -=====*/ -number.parse = function(/*String*/ expression, /*number.__ParseOptions?*/ options){ - // summary: - // Convert a properly formatted string to a primitive Number, using - // locale-specific settings. - // description: - // Create a Number from a string using a known localized pattern. - // Formatting patterns are chosen appropriate to the locale - // and follow the syntax described by - // [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // Note that literal characters in patterns are not supported. - // expression: - // A string representation of a Number - var info = number._parseInfo(options), - results = (new RegExp("^"+info.regexp+"$")).exec(expression); - if(!results){ - return NaN; //NaN - } - var absoluteMatch = results[1]; // match for the positive expression - if(!results[1]){ - if(!results[2]){ - return NaN; //NaN - } - // matched the negative pattern - absoluteMatch =results[2]; - info.factor *= -1; - } - - // Transform it to something Javascript can parse as a number. Normalize - // decimal point and strip out group separators or alternate forms of whitespace - absoluteMatch = absoluteMatch. - replace(new RegExp("["+info.group + "\\s\\xa0"+"]", "g"), ""). - replace(info.decimal, "."); - // Adjust for negative sign, percent, etc. as necessary - return absoluteMatch * info.factor; //Number -}; - -/*===== -number.__RealNumberRegexpFlags = declare(null, { - // places: Number? - // The integer number of decimal places or a range given as "n,m". If - // not given, the decimal part is optional and the number of places is - // unlimited. - // decimal: String? - // A string for the character used as the decimal point. Default - // is ".". - // fractional: Boolean|Array? - // Whether decimal places are used. Can be true, false, or [true, - // false]. Default is [true, false] which means optional. - // exponent: Boolean|Array? - // Express in exponential notation. Can be true, false, or [true, - // false]. Default is [true, false], (i.e. will match if the - // exponential part is present are not). - // eSigned: Boolean|Array? - // The leading plus-or-minus sign on the exponent. Can be true, - // false, or [true, false]. Default is [true, false], (i.e. will - // match if it is signed or unsigned). flags in regexp.integer can be - // applied. -}); -=====*/ - -number._realNumberRegexp = function(/*__RealNumberRegexpFlags?*/ flags){ - // summary: - // Builds a regular expression to match a real number in exponential - // notation - - // assign default values to missing parameters - flags = flags || {}; - //TODO: use mixin instead? - if(!("places" in flags)){ flags.places = Infinity; } - if(typeof flags.decimal != "string"){ flags.decimal = "."; } - if(!("fractional" in flags) || /^0/.test(flags.places)){ flags.fractional = [true, false]; } - if(!("exponent" in flags)){ flags.exponent = [true, false]; } - if(!("eSigned" in flags)){ flags.eSigned = [true, false]; } - - var integerRE = number._integerRegexp(flags), - decimalRE = dregexp.buildGroupRE(flags.fractional, - function(q){ - var re = ""; - if(q && (flags.places!==0)){ - re = "\\" + flags.decimal; - if(flags.places == Infinity){ - re = "(?:" + re + "\\d+)?"; - }else{ - re += "\\d{" + flags.places + "}"; - } - } - return re; - }, - true - ); - - var exponentRE = dregexp.buildGroupRE(flags.exponent, - function(q){ - if(q){ return "([eE]" + number._integerRegexp({ signed: flags.eSigned}) + ")"; } - return ""; - } - ); - - var realRE = integerRE + decimalRE; - // allow for decimals without integers, e.g. .25 - if(decimalRE){realRE = "(?:(?:"+ realRE + ")|(?:" + decimalRE + "))";} - return realRE + exponentRE; // String -}; - -/*===== -number.__IntegerRegexpFlags = declare(null, { - // signed: Boolean? - // The leading plus-or-minus sign. Can be true, false, or `[true,false]`. - // Default is `[true, false]`, (i.e. will match if it is signed - // or unsigned). - // separator: String? - // The character used as the thousands separator. Default is no - // separator. For more than one symbol use an array, e.g. `[",", ""]`, - // makes ',' optional. - // groupSize: Number? - // group size between separators - // groupSize2: Number? - // second grouping, where separators 2..n have a different interval than the first separator (for India) -}); -=====*/ - -number._integerRegexp = function(/*number.__IntegerRegexpFlags?*/ flags){ - // summary: - // Builds a regular expression that matches an integer - - // assign default values to missing parameters - flags = flags || {}; - if(!("signed" in flags)){ flags.signed = [true, false]; } - if(!("separator" in flags)){ - flags.separator = ""; - }else if(!("groupSize" in flags)){ - flags.groupSize = 3; - } - - var signRE = dregexp.buildGroupRE(flags.signed, - function(q){ return q ? "[-+]" : ""; }, - true - ); - - var numberRE = dregexp.buildGroupRE(flags.separator, - function(sep){ - if(!sep){ - return "(?:\\d+)"; - } - - sep = dregexp.escapeString(sep); - if(sep == " "){ sep = "\\s"; } - else if(sep == "\xa0"){ sep = "\\s\\xa0"; } - - var grp = flags.groupSize, grp2 = flags.groupSize2; - //TODO: should we continue to enforce that numbers with separators begin with 1-9? See #6933 - if(grp2){ - var grp2RE = "(?:0|[1-9]\\d{0," + (grp2-1) + "}(?:[" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})"; - return ((grp-grp2) > 0) ? "(?:" + grp2RE + "|(?:0|[1-9]\\d{0," + (grp-1) + "}))" : grp2RE; - } - return "(?:0|[1-9]\\d{0," + (grp-1) + "}(?:[" + sep + "]\\d{" + grp + "})*)"; - }, - true - ); - - return signRE + numberRE; // String -}; - -return number; -}); - -}, -'dijit/_FocusMixin':function(){ -define("dijit/_FocusMixin", [ - "./focus", - "./_WidgetBase", - "dojo/_base/declare", // declare - "dojo/_base/lang" // lang.extend -], function(focus, _WidgetBase, declare, lang){ - - // module: - // dijit/_FocusMixin - - // We don't know where _FocusMixin will occur in the inheritance chain, but we need the _onFocus()/_onBlur() below - // to be last in the inheritance chain, so mixin to _WidgetBase. - lang.extend(_WidgetBase, { - // focused: [readonly] Boolean - // This widget or a widget it contains has focus, or is "active" because - // it was recently clicked. - focused: false, - - onFocus: function(){ - // summary: - // Called when the widget becomes "active" because - // it or a widget inside of it either has focus, or has recently - // been clicked. - // tags: - // callback - }, - - onBlur: function(){ - // summary: - // Called when the widget stops being "active" because - // focus moved to something outside of it, or the user - // clicked somewhere outside of it, or the widget was - // hidden. - // tags: - // callback - }, - - _onFocus: function(){ - // summary: - // This is where widgets do processing for when they are active, - // such as changing CSS classes. See onFocus() for more details. - // tags: - // protected - this.onFocus(); - }, - - _onBlur: function(){ - // summary: - // This is where widgets do processing for when they stop being active, - // such as changing CSS classes. See onBlur() for more details. - // tags: - // protected - this.onBlur(); - } - }); - - return declare("dijit._FocusMixin", null, { - // summary: - // Mixin to widget to provide _onFocus() and _onBlur() methods that - // fire when a widget or its descendants get/lose focus - - // flag that I want _onFocus()/_onBlur() notifications from focus manager - _focusManager: focus - }); - -}); - -}, -'dojo/data/util/filter':function(){ -define("dojo/data/util/filter", ["../../_base/lang"], function(lang){ - // module: - // dojo/data/util/filter - // summary: - // TODOC - -var filter = {}; -lang.setObject("dojo.data.util.filter", filter); - -filter.patternToRegExp = function(/*String*/pattern, /*boolean?*/ ignoreCase){ - // summary: - // Helper function to convert a simple pattern to a regular expression for matching. - // description: - // Returns a regular expression object that conforms to the defined conversion rules. - // For example: - // - // - ca* -> /^ca.*$/ - // - *ca* -> /^.*ca.*$/ - // - *c\*a* -> /^.*c\*a.*$/ - // - *c\*a?* -> /^.*c\*a..*$/ - // - // and so on. - // pattern: string - // A simple matching pattern to convert that follows basic rules: - // - // - * Means match anything, so ca* means match anything starting with ca - // - ? Means match single character. So, b?b will match to bob and bab, and so on. - // - \ is an escape character. So for example, \* means do not treat * as a match, but literal character *. - // - // To use a \ as a character in the string, it must be escaped. So in the pattern it should be - // represented by \\ to be treated as an ordinary \ character instead of an escape. - // ignoreCase: - // An optional flag to indicate if the pattern matching should be treated as case-sensitive or not when comparing - // By default, it is assumed case sensitive. - - var rxp = "^"; - var c = null; - for(var i = 0; i < pattern.length; i++){ - c = pattern.charAt(i); - switch(c){ - case '\\': - rxp += c; - i++; - rxp += pattern.charAt(i); - break; - case '*': - rxp += ".*"; break; - case '?': - rxp += "."; break; - case '$': - case '^': - case '/': - case '+': - case '.': - case '|': - case '(': - case ')': - case '{': - case '}': - case '[': - case ']': - rxp += "\\"; //fallthrough - default: - rxp += c; - } - } - rxp += "$"; - if(ignoreCase){ - return new RegExp(rxp,"mi"); //RegExp - }else{ - return new RegExp(rxp,"m"); //RegExp - } - -}; - -return filter; -}); - -}, -'dijit/_WidgetsInTemplateMixin':function(){ -define("dijit/_WidgetsInTemplateMixin", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/parser" // parser.parse -], function(array, declare, parser){ - - // module: - // dijit/_WidgetsInTemplateMixin - - return declare("dijit._WidgetsInTemplateMixin", null, { - // summary: - // Mixin to supplement _TemplatedMixin when template contains widgets - - // _earlyTemplatedStartup: Boolean - // A fallback to preserve the 1.0 - 1.3 behavior of children in - // templates having their startup called before the parent widget - // fires postCreate. Defaults to 'false', causing child widgets to - // have their .startup() called immediately before a parent widget - // .startup(), but always after the parent .postCreate(). Set to - // 'true' to re-enable to previous, arguably broken, behavior. - _earlyTemplatedStartup: false, - - // widgetsInTemplate: [protected] Boolean - // Should we parse the template to find widgets that might be - // declared in markup inside it? (Remove for 2.0 and assume true) - widgetsInTemplate: true, - - _beforeFillContent: function(){ - if(this.widgetsInTemplate){ - // Before copying over content, instantiate widgets in template - var node = this.domNode; - - var cw = (this._startupWidgets = parser.parse(node, { - noStart: !this._earlyTemplatedStartup, - template: true, - inherited: {dir: this.dir, lang: this.lang, textDir: this.textDir}, - propsThis: this, // so data-dojo-props of widgets in the template can reference "this" to refer to me - scope: "dojo" // even in multi-version mode templates use dojoType/data-dojo-type - })); - - if(!cw.isFulfilled()){ - throw new Error(this.declaredClass + ": parser returned unfilled promise (probably waiting for module auto-load), " + - "unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation."); - } - - // _WidgetBase::destroy() will destroy any supporting widgets under this.domNode. - // If we wanted to, we could call this.own() on anything in this._startupWidgets that was moved outside - // of this.domNode (like Dialog, which is moved to <body>). - - this._attachTemplateNodes(cw, function(n,p){ - return n[p]; - }); - } - }, - - startup: function(){ - array.forEach(this._startupWidgets, function(w){ - if(w && !w._started && w.startup){ - w.startup(); - } - }); - this.inherited(arguments); - } - }); -}); - -}, -'dojo/fx/Toggler':function(){ -define("dojo/fx/Toggler", ["../_base/lang","../_base/declare","../_base/fx", "../_base/connect"], - function(lang, declare, baseFx, connectUtil){ - // module: - // dojo/fx/Toggler - -return declare("dojo.fx.Toggler", null, { - // summary: - // A simple `dojo.Animation` toggler API. - // description: - // class constructor for an animation toggler. It accepts a packed - // set of arguments about what type of animation to use in each - // direction, duration, etc. All available members are mixed into - // these animations from the constructor (for example, `node`, - // `showDuration`, `hideDuration`). - // example: - // | var t = new dojo/fx/Toggler({ - // | node: "nodeId", - // | showDuration: 500, - // | // hideDuration will default to "200" - // | showFunc: dojo/fx/wipeIn, - // | // hideFunc will default to "fadeOut" - // | }); - // | t.show(100); // delay showing for 100ms - // | // ...time passes... - // | t.hide(); - - // node: DomNode - // the node to target for the showing and hiding animations - node: null, - - // showFunc: Function - // The function that returns the `dojo.Animation` to show the node - showFunc: baseFx.fadeIn, - - // hideFunc: Function - // The function that returns the `dojo.Animation` to hide the node - hideFunc: baseFx.fadeOut, - - // showDuration: - // Time in milliseconds to run the show Animation - showDuration: 200, - - // hideDuration: - // Time in milliseconds to run the hide Animation - hideDuration: 200, - - // FIXME: need a policy for where the toggler should "be" the next - // time show/hide are called if we're stopped somewhere in the - // middle. - // FIXME: also would be nice to specify individual showArgs/hideArgs mixed into - // each animation individually. - // FIXME: also would be nice to have events from the animations exposed/bridged - - /*===== - _showArgs: null, - _showAnim: null, - - _hideArgs: null, - _hideAnim: null, - - _isShowing: false, - _isHiding: false, - =====*/ - - constructor: function(args){ - var _t = this; - - lang.mixin(_t, args); - _t.node = args.node; - _t._showArgs = lang.mixin({}, args); - _t._showArgs.node = _t.node; - _t._showArgs.duration = _t.showDuration; - _t.showAnim = _t.showFunc(_t._showArgs); - - _t._hideArgs = lang.mixin({}, args); - _t._hideArgs.node = _t.node; - _t._hideArgs.duration = _t.hideDuration; - _t.hideAnim = _t.hideFunc(_t._hideArgs); - - connectUtil.connect(_t.showAnim, "beforeBegin", lang.hitch(_t.hideAnim, "stop", true)); - connectUtil.connect(_t.hideAnim, "beforeBegin", lang.hitch(_t.showAnim, "stop", true)); - }, - - show: function(delay){ - // summary: - // Toggle the node to showing - // delay: Integer? - // Amount of time to stall playing the show animation - return this.showAnim.play(delay || 0); - }, - - hide: function(delay){ - // summary: - // Toggle the node to hidden - // delay: Integer? - // Amount of time to stall playing the hide animation - return this.hideAnim.play(delay || 0); - } -}); - -}); - -}, -'dijit/form/FilteringSelect':function(){ -define("dijit/form/FilteringSelect", [ - "dojo/data/util/filter", // filter.patternToRegExp - "dojo/_base/declare", // declare - "dojo/_base/lang", // lang.mixin - "dojo/when", - "./MappedTextBox", - "./ComboBoxMixin" -], function(filter, declare, lang, when, MappedTextBox, ComboBoxMixin){ - - // module: - // dijit/form/FilteringSelect - - return declare("dijit.form.FilteringSelect", [MappedTextBox, ComboBoxMixin], { - // summary: - // An enhanced version of the HTML SELECT tag, populated dynamically - // - // description: - // An enhanced version of the HTML SELECT tag, populated dynamically. It works - // very nicely with very large data sets because it can load and page data as needed. - // It also resembles ComboBox, but does not allow values outside of the provided ones. - // If OPTION tags are used as the data provider via markup, then the - // OPTION tag's child text node is used as the displayed value when selected - // while the OPTION tag's value attribute is used as the widget value on form submit. - // To set the default value when using OPTION tags, specify the selected - // attribute on 1 of the child OPTION tags. - // - // Similar features: - // - // - There is a drop down list of possible values. - // - You can only enter a value from the drop down list. (You can't - // enter an arbitrary value.) - // - The value submitted with the form is the hidden value (ex: CA), - // not the displayed value a.k.a. label (ex: California) - // - // Enhancements over plain HTML version: - // - // - If you type in some text then it will filter down the list of - // possible values in the drop down list. - // - List can be specified either as a static list or via a javascript - // function (that can get the list from a server) - - // required: Boolean - // True (default) if user is required to enter a value into this field. - required: true, - - _lastDisplayedValue: "", - - _isValidSubset: function(){ - return this._opened; - }, - - isValid: function(){ - // Overrides ValidationTextBox.isValid() - return !!this.item || (!this.required && this.get('displayedValue') == ""); // #5974 - }, - - _refreshState: function(){ - if(!this.searchTimer){ // state will be refreshed after results are returned - this.inherited(arguments); - } - }, - - _callbackSetLabel: function( - /*Array*/ result, - /*Object*/ query, - /*Object*/ options, - /*Boolean?*/ priorityChange){ - // summary: - // Callback from dojo.store after lookup of user entered value finishes - - // setValue does a synchronous lookup, - // so it calls _callbackSetLabel directly, - // and so does not pass dataObject - // still need to test against _lastQuery in case it came too late - if((query && query[this.searchAttr] !== this._lastQuery) || (!query && result.length && this.store.getIdentity(result[0]) != this._lastQuery)){ - return; - } - if(!result.length){ - //#3268: don't modify display value on bad input - //#3285: change CSS to indicate error - this.set("value", '', priorityChange || (priorityChange === undefined && !this.focused), this.textbox.value, null); - }else{ - this.set('item', result[0], priorityChange); - } - }, - - _openResultList: function(/*Object*/ results, /*Object*/ query, /*Object*/ options){ - // Callback when a data store query completes. - // Overrides ComboBox._openResultList() - - // #3285: tap into search callback to see if user's query resembles a match - if(query[this.searchAttr] !== this._lastQuery){ - return; - } - this.inherited(arguments); - - if(this.item === undefined){ // item == undefined for keyboard search - // If the search returned no items that means that the user typed - // in something invalid (and they can't make it valid by typing more characters), - // so flag the FilteringSelect as being in an invalid state - this.validate(true); - } - }, - - _getValueAttr: function(){ - // summary: - // Hook for get('value') to work. - - // don't get the textbox value but rather the previously set hidden value. - // Use this.valueNode.value which isn't always set for other MappedTextBox widgets until blur - return this.valueNode.value; - }, - - _getValueField: function(){ - // Overrides ComboBox._getValueField() - return "value"; - }, - - _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange, /*String?*/ displayedValue, /*item?*/ item){ - // summary: - // Hook so set('value', value) works. - // description: - // Sets the value of the select. - // Also sets the label to the corresponding value by reverse lookup. - if(!this._onChangeActive){ priorityChange = null; } - - if(item === undefined){ - if(value === null || value === ''){ - value = ''; - if(!lang.isString(displayedValue)){ - this._setDisplayedValueAttr(displayedValue||'', priorityChange); - return; - } - } - - var self = this; - this._lastQuery = value; - when(this.store.get(value), function(item){ - self._callbackSetLabel(item? [item] : [], undefined, undefined, priorityChange); - }); - }else{ - this.valueNode.value = value; - this.inherited(arguments); - } - }, - - _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){ - // summary: - // Set the displayed valued in the input box, and the hidden value - // that gets submitted, based on a dojo.data store item. - // description: - // Users shouldn't call this function; they should be calling - // set('item', value) - // tags: - // private - this.inherited(arguments); - this._lastDisplayedValue = this.textbox.value; - }, - - _getDisplayQueryString: function(/*String*/ text){ - return text.replace(/([\\\*\?])/g, "\\$1"); - }, - - _setDisplayedValueAttr: function(/*String*/ label, /*Boolean?*/ priorityChange){ - // summary: - // Hook so set('displayedValue', label) works. - // description: - // Sets textbox to display label. Also performs reverse lookup - // to set the hidden value. label should corresponding to item.searchAttr. - - if(label == null){ label = ''; } - - // This is called at initialization along with every custom setter. - // Usually (or always?) the call can be ignored. If it needs to be - // processed then at least make sure that the XHR request doesn't trigger an onChange() - // event, even if it returns after creation has finished - if(!this._created){ - if(!("displayedValue" in this.params)){ - return; - } - priorityChange = false; - } - - // Do a reverse lookup to map the specified displayedValue to the hidden value. - // Note that if there's a custom labelFunc() this code - if(this.store){ - this.closeDropDown(); - var query = lang.clone(this.query); // #6196: populate query with user-specifics - - // Generate query - var qs = this._getDisplayQueryString(label), q; - if(this.store._oldAPI){ - // remove this branch for 2.0 - q = qs; - }else{ - // Query on searchAttr is a regex for benefit of dojo/store/Memory, - // but with a toString() method to help dojo/store/JsonRest. - // Search string like "Co*" converted to regex like /^Co.*$/i. - q = filter.patternToRegExp(qs, this.ignoreCase); - q.toString = function(){ return qs; }; - } - this._lastQuery = query[this.searchAttr] = q; - - // If the label is not valid, the callback will never set it, - // so the last valid value will get the warning textbox. Set the - // textbox value now so that the impending warning will make - // sense to the user - this.textbox.value = label; - this._lastDisplayedValue = label; - this._set("displayedValue", label); // for watch("displayedValue") notification - var _this = this; - var options = { - ignoreCase: this.ignoreCase, - deep: true - }; - lang.mixin(options, this.fetchProperties); - this._fetchHandle = this.store.query(query, options); - when(this._fetchHandle, function(result){ - _this._fetchHandle = null; - _this._callbackSetLabel(result || [], query, options, priorityChange); - }, function(err){ - _this._fetchHandle = null; - if(!_this._cancelingQuery){ // don't treat canceled query as an error - console.error('dijit.form.FilteringSelect: ' + err.toString()); - } - }); - } - }, - - undo: function(){ - this.set('displayedValue', this._lastDisplayedValue); - } - }); -}); - -}, -'dojo/data/util/sorter':function(){ -define("dojo/data/util/sorter", ["../../_base/lang"], function(lang){ - // module: - // dojo/data/util/sorter - // summary: - // TODOC - -var sorter = {}; -lang.setObject("dojo.data.util.sorter", sorter); - -sorter.basicComparator = function( /*anything*/ a, - /*anything*/ b){ - // summary: - // Basic comparison function that compares if an item is greater or less than another item - // description: - // returns 1 if a > b, -1 if a < b, 0 if equal. - // 'null' values (null, undefined) are treated as larger values so that they're pushed to the end of the list. - // And compared to each other, null is equivalent to undefined. - - //null is a problematic compare, so if null, we set to undefined. - //Makes the check logic simple, compact, and consistent - //And (null == undefined) === true, so the check later against null - //works for undefined and is less bytes. - var r = -1; - if(a === null){ - a = undefined; - } - if(b === null){ - b = undefined; - } - if(a == b){ - r = 0; - }else if(a > b || a == null){ - r = 1; - } - return r; //int {-1,0,1} -}; - -sorter.createSortFunction = function( /* attributes[] */sortSpec, /*dojo/data/api/Read*/ store){ - // summary: - // Helper function to generate the sorting function based off the list of sort attributes. - // description: - // The sort function creation will look for a property on the store called 'comparatorMap'. If it exists - // it will look in the mapping for comparisons function for the attributes. If one is found, it will - // use it instead of the basic comparator, which is typically used for strings, ints, booleans, and dates. - // Returns the sorting function for this particular list of attributes and sorting directions. - // sortSpec: - // A JS object that array that defines out what attribute names to sort on and whether it should be descenting or asending. - // The objects should be formatted as follows: - // | { - // | attribute: "attributeName-string" || attribute, - // | descending: true|false; // Default is false. - // | } - // store: - // The datastore object to look up item values from. - - var sortFunctions=[]; - - function createSortFunction(attr, dir, comp, s){ - //Passing in comp and s (comparator and store), makes this - //function much faster. - return function(itemA, itemB){ - var a = s.getValue(itemA, attr); - var b = s.getValue(itemB, attr); - return dir * comp(a,b); //int - }; - } - var sortAttribute; - var map = store.comparatorMap; - var bc = sorter.basicComparator; - for(var i = 0; i < sortSpec.length; i++){ - sortAttribute = sortSpec[i]; - var attr = sortAttribute.attribute; - if(attr){ - var dir = (sortAttribute.descending) ? -1 : 1; - var comp = bc; - if(map){ - if(typeof attr !== "string" && ("toString" in attr)){ - attr = attr.toString(); - } - comp = map[attr] || bc; - } - sortFunctions.push(createSortFunction(attr, - dir, comp, store)); - } - } - return function(rowA, rowB){ - var i=0; - while(i < sortFunctions.length){ - var ret = sortFunctions[i++](rowA, rowB); - if(ret !== 0){ - return ret;//int - } - } - return 0; //int - }; // Function -}; - -return sorter; -}); - -}, -'dijit/form/_ButtonMixin':function(){ -define("dijit/form/_ButtonMixin", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "dojo/_base/event", // event.stop - "../registry" // registry.byNode -], function(declare, dom, event, registry){ - -// module: -// dijit/form/_ButtonMixin - -return declare("dijit.form._ButtonMixin", null, { - // summary: - // A mixin to add a thin standard API wrapper to a normal HTML button - // description: - // A label should always be specified (through innerHTML) or the label attribute. - // - // Attach points: - // - // - focusNode (required): this node receives focus - // - valueNode (optional): this node's value gets submitted with FORM elements - // - containerNode (optional): this node gets the innerHTML assignment for label - // example: - // | <button data-dojo-type="dijit/form/Button" onClick="...">Hello world</button> - // example: - // | var button1 = new Button({label: "hello world", onClick: foo}); - // | dojo.body().appendChild(button1.domNode); - - // label: HTML String - // Content to display in button. - label: "", - - // type: [const] String - // Type of button (submit, reset, button, checkbox, radio) - type: "button", - - _onClick: function(/*Event*/ e){ - // summary: - // Internal function to handle click actions - if(this.disabled){ - event.stop(e); - return false; - } - var preventDefault = this.onClick(e) === false; // user click actions - if(!preventDefault && this.type == "submit" && !(this.valueNode||this.focusNode).form){ // see if a non-form widget needs to be signalled - for(var node=this.domNode; node.parentNode; node=node.parentNode){ - var widget=registry.byNode(node); - if(widget && typeof widget._onSubmit == "function"){ - widget._onSubmit(e); - preventDefault = true; - break; - } - } - } - if(preventDefault){ - e.preventDefault(); - } - return !preventDefault; - }, - - postCreate: function(){ - this.inherited(arguments); - dom.setSelectable(this.focusNode, false); - }, - - onClick: function(/*Event*/ /*===== e =====*/){ - // summary: - // Callback for when button is clicked. - // If type="submit", return true to perform submit, or false to cancel it. - // type: - // callback - return true; // Boolean - }, - - _setLabelAttr: function(/*String*/ content){ - // summary: - // Hook for set('label', ...) to work. - // description: - // Set the label (text) of the button; takes an HTML string. - this._set("label", content); - (this.containerNode||this.focusNode).innerHTML = content; - } -}); - -}); - -}, -'dojo/colors':function(){ -define("dojo/colors", ["./_base/kernel", "./_base/lang", "./_base/Color", "./_base/array"], function(dojo, lang, Color, ArrayUtil){ - // module: - // dojo/colors - - /*===== - return { - // summary: - // Color utilities, extending Base dojo.Color - }; - =====*/ - - var ColorExt = {}; - lang.setObject("dojo.colors", ColorExt); - -//TODO: this module appears to break naming conventions - - // this is a standard conversion prescribed by the CSS3 Color Module - var hue2rgb = function(m1, m2, h){ - if(h < 0){ ++h; } - if(h > 1){ --h; } - var h6 = 6 * h; - if(h6 < 1){ return m1 + (m2 - m1) * h6; } - if(2 * h < 1){ return m2; } - if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; } - return m1; - }; - // Override base Color.fromRgb with the impl in this module - dojo.colorFromRgb = Color.fromRgb = function(/*String*/ color, /*dojo/_base/Color?*/ obj){ - // summary: - // get rgb(a) array from css-style color declarations - // description: - // this function can handle all 4 CSS3 Color Module formats: rgb, - // rgba, hsl, hsla, including rgb(a) with percentage values. - var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/); - if(m){ - var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a; - if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){ - var r = c[0]; - if(r.charAt(r.length - 1) == "%"){ - // 3 rgb percentage values - a = ArrayUtil.map(c, function(x){ - return parseFloat(x) * 2.56; - }); - if(l == 4){ a[3] = c[3]; } - return Color.fromArray(a, obj); // dojo/_base/Color - } - return Color.fromArray(c, obj); // dojo/_base/Color - } - if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){ - // normalize hsl values - var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360, - S = parseFloat(c[1]) / 100, - L = parseFloat(c[2]) / 100, - // calculate rgb according to the algorithm - // recommended by the CSS3 Color Module - m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S, - m1 = 2 * L - m2; - a = [ - hue2rgb(m1, m2, H + 1 / 3) * 256, - hue2rgb(m1, m2, H) * 256, - hue2rgb(m1, m2, H - 1 / 3) * 256, - 1 - ]; - if(l == 4){ a[3] = c[3]; } - return Color.fromArray(a, obj); // dojo/_base/Color - } - } - return null; // dojo/_base/Color - }; - - var confine = function(c, low, high){ - // summary: - // sanitize a color component by making sure it is a number, - // and clamping it to valid values - c = Number(c); - return isNaN(c) ? high : c < low ? low : c > high ? high : c; // Number - }; - - Color.prototype.sanitize = function(){ - // summary: - // makes sure that the object has correct attributes - var t = this; - t.r = Math.round(confine(t.r, 0, 255)); - t.g = Math.round(confine(t.g, 0, 255)); - t.b = Math.round(confine(t.b, 0, 255)); - t.a = confine(t.a, 0, 1); - return this; // dojo/_base/Color - }; - - ColorExt.makeGrey = Color.makeGrey = function(/*Number*/ g, /*Number?*/ a){ - // summary: - // creates a greyscale color with an optional alpha - return Color.fromArray([g, g, g, a]); // dojo/_base/Color - }; - - // mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings - lang.mixin(Color.named, { - "aliceblue": [240,248,255], - "antiquewhite": [250,235,215], - "aquamarine": [127,255,212], - "azure": [240,255,255], - "beige": [245,245,220], - "bisque": [255,228,196], - "blanchedalmond": [255,235,205], - "blueviolet": [138,43,226], - "brown": [165,42,42], - "burlywood": [222,184,135], - "cadetblue": [95,158,160], - "chartreuse": [127,255,0], - "chocolate": [210,105,30], - "coral": [255,127,80], - "cornflowerblue": [100,149,237], - "cornsilk": [255,248,220], - "crimson": [220,20,60], - "cyan": [0,255,255], - "darkblue": [0,0,139], - "darkcyan": [0,139,139], - "darkgoldenrod": [184,134,11], - "darkgray": [169,169,169], - "darkgreen": [0,100,0], - "darkgrey": [169,169,169], - "darkkhaki": [189,183,107], - "darkmagenta": [139,0,139], - "darkolivegreen": [85,107,47], - "darkorange": [255,140,0], - "darkorchid": [153,50,204], - "darkred": [139,0,0], - "darksalmon": [233,150,122], - "darkseagreen": [143,188,143], - "darkslateblue": [72,61,139], - "darkslategray": [47,79,79], - "darkslategrey": [47,79,79], - "darkturquoise": [0,206,209], - "darkviolet": [148,0,211], - "deeppink": [255,20,147], - "deepskyblue": [0,191,255], - "dimgray": [105,105,105], - "dimgrey": [105,105,105], - "dodgerblue": [30,144,255], - "firebrick": [178,34,34], - "floralwhite": [255,250,240], - "forestgreen": [34,139,34], - "gainsboro": [220,220,220], - "ghostwhite": [248,248,255], - "gold": [255,215,0], - "goldenrod": [218,165,32], - "greenyellow": [173,255,47], - "grey": [128,128,128], - "honeydew": [240,255,240], - "hotpink": [255,105,180], - "indianred": [205,92,92], - "indigo": [75,0,130], - "ivory": [255,255,240], - "khaki": [240,230,140], - "lavender": [230,230,250], - "lavenderblush": [255,240,245], - "lawngreen": [124,252,0], - "lemonchiffon": [255,250,205], - "lightblue": [173,216,230], - "lightcoral": [240,128,128], - "lightcyan": [224,255,255], - "lightgoldenrodyellow": [250,250,210], - "lightgray": [211,211,211], - "lightgreen": [144,238,144], - "lightgrey": [211,211,211], - "lightpink": [255,182,193], - "lightsalmon": [255,160,122], - "lightseagreen": [32,178,170], - "lightskyblue": [135,206,250], - "lightslategray": [119,136,153], - "lightslategrey": [119,136,153], - "lightsteelblue": [176,196,222], - "lightyellow": [255,255,224], - "limegreen": [50,205,50], - "linen": [250,240,230], - "magenta": [255,0,255], - "mediumaquamarine": [102,205,170], - "mediumblue": [0,0,205], - "mediumorchid": [186,85,211], - "mediumpurple": [147,112,219], - "mediumseagreen": [60,179,113], - "mediumslateblue": [123,104,238], - "mediumspringgreen": [0,250,154], - "mediumturquoise": [72,209,204], - "mediumvioletred": [199,21,133], - "midnightblue": [25,25,112], - "mintcream": [245,255,250], - "mistyrose": [255,228,225], - "moccasin": [255,228,181], - "navajowhite": [255,222,173], - "oldlace": [253,245,230], - "olivedrab": [107,142,35], - "orange": [255,165,0], - "orangered": [255,69,0], - "orchid": [218,112,214], - "palegoldenrod": [238,232,170], - "palegreen": [152,251,152], - "paleturquoise": [175,238,238], - "palevioletred": [219,112,147], - "papayawhip": [255,239,213], - "peachpuff": [255,218,185], - "peru": [205,133,63], - "pink": [255,192,203], - "plum": [221,160,221], - "powderblue": [176,224,230], - "rosybrown": [188,143,143], - "royalblue": [65,105,225], - "saddlebrown": [139,69,19], - "salmon": [250,128,114], - "sandybrown": [244,164,96], - "seagreen": [46,139,87], - "seashell": [255,245,238], - "sienna": [160,82,45], - "skyblue": [135,206,235], - "slateblue": [106,90,205], - "slategray": [112,128,144], - "slategrey": [112,128,144], - "snow": [255,250,250], - "springgreen": [0,255,127], - "steelblue": [70,130,180], - "tan": [210,180,140], - "thistle": [216,191,216], - "tomato": [255,99,71], - "turquoise": [64,224,208], - "violet": [238,130,238], - "wheat": [245,222,179], - "whitesmoke": [245,245,245], - "yellowgreen": [154,205,50] - }); - - return Color; // TODO: return ColorExt, not Color -}); - -}, -'dijit/registry':function(){ -define("dijit/registry", [ - "dojo/_base/array", // array.forEach array.map - "dojo/sniff", // has("ie") - "dojo/_base/unload", // unload.addOnWindowUnload - "dojo/_base/window", // win.body - "./main" // dijit._scopeName -], function(array, has, unload, win, dijit){ - - // module: - // dijit/registry - - var _widgetTypeCtr = {}, hash = {}; - - var registry = { - // summary: - // Registry of existing widget on page, plus some utility methods. - - // length: Number - // Number of registered widgets - length: 0, - - add: function(widget){ - // summary: - // Add a widget to the registry. If a duplicate ID is detected, a error is thrown. - // widget: dijit/_WidgetBase - // Any dijit/_WidgetBase subclass. - if(hash[widget.id]){ - throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered"); - } - hash[widget.id] = widget; - this.length++; - }, - - remove: function(/*String*/ id){ - // summary: - // Remove a widget from the registry. Does not destroy the widget; simply - // removes the reference. - if(hash[id]){ - delete hash[id]; - this.length--; - } - }, - - byId: function(/*String|Widget*/ id){ - // summary: - // Find a widget by it's id. - // If passed a widget then just returns the widget. - return typeof id == "string" ? hash[id] : id; // dijit/_WidgetBase - }, - - byNode: function(/*DOMNode*/ node){ - // summary: - // Returns the widget corresponding to the given DOMNode - return hash[node.getAttribute("widgetId")]; // dijit/_WidgetBase - }, - - toArray: function(){ - // summary: - // Convert registry into a true Array - // - // example: - // Work with the widget .domNodes in a real Array - // | array.map(registry.toArray(), function(w){ return w.domNode; }); - - var ar = []; - for(var id in hash){ - ar.push(hash[id]); - } - return ar; // dijit/_WidgetBase[] - }, - - getUniqueId: function(/*String*/widgetType){ - // summary: - // Generates a unique id for a given widgetType - - var id; - do{ - id = widgetType + "_" + - (widgetType in _widgetTypeCtr ? - ++_widgetTypeCtr[widgetType] : _widgetTypeCtr[widgetType] = 0); - }while(hash[id]); - return dijit._scopeName == "dijit" ? id : dijit._scopeName + "_" + id; // String - }, - - findWidgets: function(root, skipNode){ - // summary: - // Search subtree under root returning widgets found. - // Doesn't search for nested widgets (ie, widgets inside other widgets). - // root: DOMNode - // Node to search under. - // skipNode: DOMNode - // If specified, don't search beneath this node (usually containerNode). - - var outAry = []; - - function getChildrenHelper(root){ - for(var node = root.firstChild; node; node = node.nextSibling){ - if(node.nodeType == 1){ - var widgetId = node.getAttribute("widgetId"); - if(widgetId){ - var widget = hash[widgetId]; - if(widget){ // may be null on page w/multiple dojo's loaded - outAry.push(widget); - } - }else if(node !== skipNode){ - getChildrenHelper(node); - } - } - } - } - - getChildrenHelper(root); - return outAry; - }, - - _destroyAll: function(){ - // summary: - // Code to destroy all widgets and do other cleanup on page unload - - // Clean up focus manager lingering references to widgets and nodes - dijit._curFocus = null; - dijit._prevFocus = null; - dijit._activeStack = []; - - // Destroy all the widgets, top down - array.forEach(registry.findWidgets(win.body()), function(widget){ - // Avoid double destroy of widgets like Menu that are attached to <body> - // even though they are logically children of other widgets. - if(!widget._destroyed){ - if(widget.destroyRecursive){ - widget.destroyRecursive(); - }else if(widget.destroy){ - widget.destroy(); - } - } - }); - }, - - getEnclosingWidget: function(/*DOMNode*/ node){ - // summary: - // Returns the widget whose DOM tree contains the specified DOMNode, or null if - // the node is not contained within the DOM tree of any widget - while(node){ - var id = node.nodeType == 1 && node.getAttribute("widgetId"); - if(id){ - return hash[id]; - } - node = node.parentNode; - } - return null; - }, - - // In case someone needs to access hash. - // Actually, this is accessed from WidgetSet back-compatibility code - _hash: hash - }; - - dijit.registry = registry; - - return registry; -}); - -}, -'dijit/tree/_dndContainer':function(){ -define("dijit/tree/_dndContainer", [ - "dojo/aspect", // aspect.after - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.remove domClass.replace - "dojo/_base/event", // event.stop - "dojo/_base/lang", // lang.mixin lang.hitch - "dojo/on", - "dojo/touch" -], function(aspect, declare,domClass, event, lang, on, touch){ - - // module: - // dijit/tree/_dndContainer - - /*===== - var __Args = { - // summary: - // A dict of parameters for Tree source configuration. - // isSource: Boolean? - // Can be used as a DnD source. Defaults to true. - // accept: String[] - // List of accepted types (text strings) for a target; defaults to - // ["text", "treeNode"] - // copyOnly: Boolean? - // Copy items, if true, use a state of Ctrl key otherwise, - // dragThreshold: Number - // The move delay in pixels before detecting a drag; 0 by default - // betweenThreshold: Integer - // Distance from upper/lower edge of node to allow drop to reorder nodes - }; - =====*/ - - return declare("dijit.tree._dndContainer", null, { - - // summary: - // This is a base class for `dijit/tree/_dndSelector`, and isn't meant to be used directly. - // It's modeled after `dojo/dnd/Container`. - // tags: - // protected - - /*===== - // current: DomNode - // The currently hovered TreeNode.rowNode (which is the DOM node - // associated w/a given node in the tree, excluding it's descendants) - current: null, - =====*/ - - constructor: function(tree, params){ - // summary: - // A constructor of the Container - // tree: Node - // Node or node's id to build the container on - // params: __Args - // A dict of parameters, which gets mixed into the object - // tags: - // private - this.tree = tree; - this.node = tree.domNode; // TODO: rename; it's not a TreeNode but the whole Tree - lang.mixin(this, params); - - // class-specific variables - this.current = null; // current TreeNode's DOM node - - // states - this.containerState = ""; - domClass.add(this.node, "dojoDndContainer"); - - // set up events - this.events = [ - // Mouse (or touch) enter/leave on Tree itself - on(this.node, touch.enter, lang.hitch(this, "onOverEvent")), - on(this.node, touch.leave, lang.hitch(this, "onOutEvent")), - - // switching between TreeNodes - aspect.after(this.tree, "_onNodeMouseEnter", lang.hitch(this, "onMouseOver"), true), - aspect.after(this.tree, "_onNodeMouseLeave", lang.hitch(this, "onMouseOut"), true), - - // cancel text selection and text dragging - on(this.node, "dragstart", lang.hitch(event, "stop")), - on(this.node, "selectstart", lang.hitch(event, "stop")) - ]; - }, - - destroy: function(){ - // summary: - // Prepares this object to be garbage-collected - - var h; - while(h = this.events.pop()){ h.remove(); } - - // this.clearItems(); - this.node = this.parent = null; - }, - - // mouse events - onMouseOver: function(widget /*===== , evt =====*/){ - // summary: - // Called when mouse is moved over a TreeNode - // widget: TreeNode - // evt: Event - // tags: - // protected - this.current = widget; - }, - - onMouseOut: function(/*===== widget, evt =====*/){ - // summary: - // Called when mouse is moved away from a TreeNode - // widget: TreeNode - // evt: Event - // tags: - // protected - this.current = null; - }, - - _changeState: function(type, newState){ - // summary: - // Changes a named state to new state value - // type: String - // A name of the state to change - // newState: String - // new state - var prefix = "dojoDnd" + type; - var state = type.toLowerCase() + "State"; - //domClass.replace(this.node, prefix + newState, prefix + this[state]); - domClass.replace(this.node, prefix + newState, prefix + this[state]); - this[state] = newState; - }, - - _addItemClass: function(node, type){ - // summary: - // Adds a class with prefix "dojoDndItem" - // node: Node - // A node - // type: String - // A variable suffix for a class name - domClass.add(node, "dojoDndItem" + type); - }, - - _removeItemClass: function(node, type){ - // summary: - // Removes a class with prefix "dojoDndItem" - // node: Node - // A node - // type: String - // A variable suffix for a class name - domClass.remove(node, "dojoDndItem" + type); - }, - - onOverEvent: function(){ - // summary: - // This function is called once, when mouse is over our container - // tags: - // protected - this._changeState("Container", "Over"); - }, - - onOutEvent: function(){ - // summary: - // This function is called once, when mouse is out of our container - // tags: - // protected - this._changeState("Container", ""); - } - }); -}); - -}, -'url:dijit/templates/InlineEditBox.html':"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\tdata-dojo-attach-event=\"onkeypress: _onKeyPress\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"dijit/form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"dijit/form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n", -'dijit/_base/wai':function(){ -define("dijit/_base/wai", [ - "dojo/dom-attr", // domAttr.attr - "dojo/_base/lang", // lang.mixin - "../main", // export symbols to dijit - "../hccss" // not using this module directly, but loading it sets CSS flag on <html> -], function(domAttr, lang, dijit){ - - // module: - // dijit/_base/wai - - var exports = { - // summary: - // Deprecated methods for setting/getting wai roles and states. - // New code should call setAttribute()/getAttribute() directly. - // - // Also loads hccss to apply dj_a11y class to root node if machine is in high-contrast mode. - - hasWaiRole: function(/*Element*/ elem, /*String?*/ role){ - // summary: - // Determines if an element has a particular role. - // returns: - // True if elem has the specific role attribute and false if not. - // For backwards compatibility if role parameter not provided, - // returns true if has a role - var waiRole = this.getWaiRole(elem); - return role ? (waiRole.indexOf(role) > -1) : (waiRole.length > 0); - }, - - getWaiRole: function(/*Element*/ elem){ - // summary: - // Gets the role for an element (which should be a wai role). - // returns: - // The role of elem or an empty string if elem - // does not have a role. - return lang.trim((domAttr.get(elem, "role") || "").replace("wairole:","")); - }, - - setWaiRole: function(/*Element*/ elem, /*String*/ role){ - // summary: - // Sets the role on an element. - // description: - // Replace existing role attribute with new role. - - domAttr.set(elem, "role", role); - }, - - removeWaiRole: function(/*Element*/ elem, /*String*/ role){ - // summary: - // Removes the specified role from an element. - // Removes role attribute if no specific role provided (for backwards compat.) - - var roleValue = domAttr.get(elem, "role"); - if(!roleValue){ return; } - if(role){ - var t = lang.trim((" " + roleValue + " ").replace(" " + role + " ", " ")); - domAttr.set(elem, "role", t); - }else{ - elem.removeAttribute("role"); - } - }, - - hasWaiState: function(/*Element*/ elem, /*String*/ state){ - // summary: - // Determines if an element has a given state. - // description: - // Checks for an attribute called "aria-"+state. - // returns: - // true if elem has a value for the given state and - // false if it does not. - - return elem.hasAttribute ? elem.hasAttribute("aria-"+state) : !!elem.getAttribute("aria-"+state); - }, - - getWaiState: function(/*Element*/ elem, /*String*/ state){ - // summary: - // Gets the value of a state on an element. - // description: - // Checks for an attribute called "aria-"+state. - // returns: - // The value of the requested state on elem - // or an empty string if elem has no value for state. - - return elem.getAttribute("aria-"+state) || ""; - }, - - setWaiState: function(/*Element*/ elem, /*String*/ state, /*String*/ value){ - // summary: - // Sets a state on an element. - // description: - // Sets an attribute called "aria-"+state. - - elem.setAttribute("aria-"+state, value); - }, - - removeWaiState: function(/*Element*/ elem, /*String*/ state){ - // summary: - // Removes a state from an element. - // description: - // Sets an attribute called "aria-"+state. - - elem.removeAttribute("aria-"+state); - } - }; - - lang.mixin(dijit, exports); - - /*===== return exports; =====*/ - return dijit; // for back compat :-( -}); - -}, -'dijit/form/_FormSelectWidget':function(){ -define("dijit/form/_FormSelectWidget", [ - "dojo/_base/array", // array.filter array.forEach array.map array.some - "dojo/_base/Deferred", - "dojo/aspect", // aspect.after - "dojo/data/util/sorter", // util.sorter.createSortFunction - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "dojo/dom-class", // domClass.toggle - "dojo/_base/kernel", // _scopeName - "dojo/_base/lang", // lang.delegate lang.isArray lang.isObject lang.hitch - "dojo/query", // query - "dojo/when", - "dojo/store/util/QueryResults", - "./_FormValueWidget" -], function(array, Deferred, aspect, sorter, declare, dom, domClass, kernel, lang, query, when, - QueryResults, _FormValueWidget){ - -// module: -// dijit/form/_FormSelectWidget - -/*===== -var __SelectOption = { - // value: String - // The value of the option. Setting to empty (or missing) will - // place a separator at that location - // label: String - // The label for our option. It can contain html tags. - // selected: Boolean - // Whether or not we are a selected option - // disabled: Boolean - // Whether or not this specific option is disabled -}; -=====*/ - -var _FormSelectWidget = declare("dijit.form._FormSelectWidget", _FormValueWidget, { - // summary: - // Extends _FormValueWidget in order to provide "select-specific" - // values - i.e., those values that are unique to `<select>` elements. - // This also provides the mechanism for reading the elements from - // a store, if desired. - - // multiple: [const] Boolean - // Whether or not we are multi-valued - multiple: false, - - // options: __SelectOption[] - // The set of options for our select item. Roughly corresponds to - // the html `<option>` tag. - options: null, - - // store: dojo/store/api/Store - // A store to use for getting our list of options - rather than reading them - // from the `<option>` html tags. Should support getIdentity(). - // For back-compat store can also be a dojo/data/api/Identity. - store: null, - - // query: object - // A query to use when fetching items from our store - query: null, - - // queryOptions: object - // Query options to use when fetching from the store - queryOptions: null, - - // labelAttr: String? - // The entries in the drop down list come from this attribute in the dojo.store items. - // If ``store`` is set, labelAttr must be set too, unless store is an old-style - // dojo.data store rather than a new dojo/store. - labelAttr: "", - - // onFetch: Function - // A callback to do with an onFetch - but before any items are actually - // iterated over (i.e. to filter even further what you want to add) - onFetch: null, - - // sortByLabel: Boolean - // Flag to sort the options returned from a store by the label of - // the store. - sortByLabel: true, - - - // loadChildrenOnOpen: Boolean - // By default loadChildren is called when the items are fetched from the - // store. This property allows delaying loadChildren (and the creation - // of the options/menuitems) until the user clicks the button to open the - // dropdown. - loadChildrenOnOpen: false, - - // onLoadDeferred: [readonly] dojo.Deferred - // This is the `dojo.Deferred` returned by setStore(). - // Calling onLoadDeferred.then() registers your - // callback to be called only once, when the prior setStore completes. - onLoadDeferred: null, - - getOptions: function(/*anything*/ valueOrIdx){ - // summary: - // Returns a given option (or options). - // valueOrIdx: - // If passed in as a string, that string is used to look up the option - // in the array of options - based on the value property. - // (See dijit/form/_FormSelectWidget.__SelectOption). - // - // If passed in a number, then the option with the given index (0-based) - // within this select will be returned. - // - // If passed in a dijit/form/_FormSelectWidget.__SelectOption, the same option will be - // returned if and only if it exists within this select. - // - // If passed an array, then an array will be returned with each element - // in the array being looked up. - // - // If not passed a value, then all options will be returned - // - // returns: - // The option corresponding with the given value or index. null - // is returned if any of the following are true: - // - // - A string value is passed in which doesn't exist - // - An index is passed in which is outside the bounds of the array of options - // - A dijit/form/_FormSelectWidget.__SelectOption is passed in which is not a part of the select - - // NOTE: the compare for passing in a dijit/form/_FormSelectWidget.__SelectOption checks - // if the value property matches - NOT if the exact option exists - // NOTE: if passing in an array, null elements will be placed in the returned - // array when a value is not found. - var lookupValue = valueOrIdx, opts = this.options || [], l = opts.length; - - if(lookupValue === undefined){ - return opts; // __SelectOption[] - } - if(lang.isArray(lookupValue)){ - return array.map(lookupValue, "return this.getOptions(item);", this); // __SelectOption[] - } - if(lang.isObject(valueOrIdx)){ - // We were passed an option - so see if it's in our array (directly), - // and if it's not, try and find it by value. - if(!array.some(this.options, function(o, idx){ - if(o === lookupValue || - (o.value && o.value === lookupValue.value)){ - lookupValue = idx; - return true; - } - return false; - })){ - lookupValue = -1; - } - } - if(typeof lookupValue == "string"){ - for(var i=0; i<l; i++){ - if(opts[i].value === lookupValue){ - lookupValue = i; - break; - } - } - } - if(typeof lookupValue == "number" && lookupValue >= 0 && lookupValue < l){ - return this.options[lookupValue]; // __SelectOption - } - return null; // null - }, - - addOption: function(/*__SelectOption|__SelectOption[]*/ option){ - // summary: - // Adds an option or options to the end of the select. If value - // of the option is empty or missing, a separator is created instead. - // Passing in an array of options will yield slightly better performance - // since the children are only loaded once. - if(!lang.isArray(option)){ option = [option]; } - array.forEach(option, function(i){ - if(i && lang.isObject(i)){ - this.options.push(i); - } - }, this); - this._loadChildren(); - }, - - removeOption: function(/*String|__SelectOption|Number|Array*/ valueOrIdx){ - // summary: - // Removes the given option or options. You can remove by string - // (in which case the value is removed), number (in which case the - // index in the options array is removed), or select option (in - // which case, the select option with a matching value is removed). - // You can also pass in an array of those values for a slightly - // better performance since the children are only loaded once. - if(!lang.isArray(valueOrIdx)){ valueOrIdx = [valueOrIdx]; } - var oldOpts = this.getOptions(valueOrIdx); - array.forEach(oldOpts, function(i){ - // We can get null back in our array - if our option was not found. In - // that case, we don't want to blow up... - if(i){ - this.options = array.filter(this.options, function(node){ - return (node.value !== i.value || node.label !== i.label); - }); - this._removeOptionItem(i); - } - }, this); - this._loadChildren(); - }, - - updateOption: function(/*__SelectOption|__SelectOption[]*/ newOption){ - // summary: - // Updates the values of the given option. The option to update - // is matched based on the value of the entered option. Passing - // in an array of new options will yield better performance since - // the children will only be loaded once. - if(!lang.isArray(newOption)){ newOption = [newOption]; } - array.forEach(newOption, function(i){ - var oldOpt = this.getOptions(i), k; - if(oldOpt){ - for(k in i){ oldOpt[k] = i[k]; } - } - }, this); - this._loadChildren(); - }, - - setStore: function(store, - selectedValue, - fetchArgs){ - // summary: - // Sets the store you would like to use with this select widget. - // The selected value is the value of the new store to set. This - // function returns the original store, in case you want to reuse - // it or something. - // store: dojo/store/api/Store - // The dojo.store you would like to use - it MUST implement getIdentity() - // and MAY implement observe(). - // For backwards-compatibility this can also be a data.data store, in which case - // it MUST implement dojo/data/api/Identity, - // and MAY implement dojo/data/api/Notification. - // selectedValue: anything? - // The value that this widget should set itself to *after* the store - // has been loaded - // fetchArgs: Object? - // Hash of parameters to set filter on store, etc. - // - // - query: new value for Select.query, - // - queryOptions: new value for Select.queryOptions, - // - onFetch: callback function for each item in data (Deprecated) - var oStore = this.store; - fetchArgs = fetchArgs || {}; - - if(oStore !== store){ - // Our store has changed, so cancel any listeners on old store (remove for 2.0) - var h; - while((h = this._notifyConnections.pop())){ h.remove(); } - - // For backwards-compatibility, accept dojo.data store in addition to dojo.store.store. Remove in 2.0. - if(!store.get){ - lang.mixin(store, { - _oldAPI: true, - get: function(id){ - // summary: - // Retrieves an object by it's identity. This will trigger a fetchItemByIdentity. - // Like dojo.store.DataStore.get() except returns native item. - var deferred = new Deferred(); - this.fetchItemByIdentity({ - identity: id, - onItem: function(object){ - deferred.resolve(object); - }, - onError: function(error){ - deferred.reject(error); - } - }); - return deferred.promise; - }, - query: function(query, options){ - // summary: - // Queries the store for objects. Like dojo/store/DataStore.query() - // except returned Deferred contains array of native items. - var deferred = new Deferred(function(){ if(fetchHandle.abort){ fetchHandle.abort(); } } ); - deferred.total = new Deferred(); - var fetchHandle = this.fetch(lang.mixin({ - query: query, - onBegin: function(count){ - deferred.total.resolve(count); - }, - onComplete: function(results){ - deferred.resolve(results); - }, - onError: function(error){ - deferred.reject(error); - } - }, options)); - return new QueryResults(deferred); - } - }); - - if(store.getFeatures()["dojo.data.api.Notification"]){ - this._notifyConnections = [ - aspect.after(store, "onNew", lang.hitch(this, "_onNewItem"), true), - aspect.after(store, "onDelete", lang.hitch(this, "_onDeleteItem"), true), - aspect.after(store, "onSet", lang.hitch(this, "_onSetItem"), true) - ]; - } - } - this._set("store", store); // Our store has changed, so update our notifications - } - - // Remove existing options (if there are any) - if(this.options && this.options.length){ - this.removeOption(this.options); - } - - // Cancel listener for updates to old store - if(this._queryRes && this._queryRes.close){ - this._queryRes.close(); - } - - // If user has specified new query and query options along with this new store, then use them. - if(fetchArgs.query){ - this._set("query", fetchArgs.query); - this._set("queryOptions", fetchArgs.queryOptions); - } - - // Add our new options - if(store){ - this._loadingStore = true; - this.onLoadDeferred = new Deferred(); - - // Run query - // Save result in this._queryRes so we can cancel the listeners we register below - this._queryRes = store.query(this.query, this.queryOptions); - when(this._queryRes, lang.hitch(this, function(items){ - - if(this.sortByLabel && !fetchArgs.sort && items.length){ - if(items[0].getValue){ - // Old dojo.data API to access items, remove for 2.0 - items.sort(sorter.createSortFunction([{ - attribute: store.getLabelAttributes(items[0])[0] - }], store)); - }else{ - var labelAttr = this.labelAttr; - items.sort(function(a, b){ - return a[labelAttr] > b[labelAttr] ? 1 : b[labelAttr] > a[labelAttr] ? -1 : 0; - }); - } - } - - if(fetchArgs.onFetch){ - items = fetchArgs.onFetch.call(this, items, fetchArgs); - } - - // TODO: Add these guys as a batch, instead of separately - array.forEach(items, function(i){ - this._addOptionForItem(i); - }, this); - - // Register listener for store updates - if(this._queryRes.observe){ - this._queryRes.observe(lang.hitch(this, function(object, deletedFrom, insertedInto){ - if(deletedFrom == insertedInto){ - this._onSetItem(object); - }else{ - if(deletedFrom != -1){ - this._onDeleteItem(object); - } - if(insertedInto != -1){ - this._onNewItem(object); - } - } - }), true); - } - - // Set our value (which might be undefined), and then tweak - // it to send a change event with the real value - this._loadingStore = false; - this.set("value", "_pendingValue" in this ? this._pendingValue : selectedValue); - delete this._pendingValue; - - if(!this.loadChildrenOnOpen){ - this._loadChildren(); - }else{ - this._pseudoLoadChildren(items); - } - this.onLoadDeferred.resolve(true); - this.onSetStore(); - }), function(err){ - console.error('dijit.form.Select: ' + err.toString()); - this.onLoadDeferred.reject(err); - }); - } - return oStore; // dojo/data/api/Identity - }, - - // TODO: implement set() and watch() for store and query, although not sure how to handle - // setting them individually rather than together (as in setStore() above) - - _setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){ - // summary: - // set the value of the widget. - // If a string is passed, then we set our value from looking it up. - if(!this._onChangeActive){ priorityChange = null; } - if(this._loadingStore){ - // Our store is loading - so save our value, and we'll set it when - // we're done - this._pendingValue = newValue; - return; - } - var opts = this.getOptions() || []; - if(!lang.isArray(newValue)){ - newValue = [newValue]; - } - array.forEach(newValue, function(i, idx){ - if(!lang.isObject(i)){ - i = i + ""; - } - if(typeof i === "string"){ - newValue[idx] = array.filter(opts, function(node){ - return node.value === i; - })[0] || {value: "", label: ""}; - } - }, this); - - // Make sure some sane default is set - newValue = array.filter(newValue, function(i){ return i && i.value; }); - if(!this.multiple && (!newValue[0] || !newValue[0].value) && opts.length){ - newValue[0] = opts[0]; - } - array.forEach(opts, function(i){ - i.selected = array.some(newValue, function(v){ return v.value === i.value; }); - }); - var val = array.map(newValue, function(i){ return i.value; }), - disp = array.map(newValue, function(i){ return i.label; }); - - if(typeof val == "undefined" || typeof val[0] == "undefined"){ return; } // not fully initialized yet or a failed value lookup - this._setDisplay(this.multiple ? disp : disp[0]); - this.inherited(arguments, [ this.multiple ? val : val[0], priorityChange ]); - this._updateSelection(); - }, - - _getDisplayedValueAttr: function(){ - // summary: - // returns the displayed value of the widget - var val = this.get("value"); - if(!lang.isArray(val)){ - val = [val]; - } - var ret = array.map(this.getOptions(val), function(v){ - if(v && "label" in v){ - return v.label; - }else if(v){ - return v.value; - } - return null; - }, this); - return this.multiple ? ret : ret[0]; - }, - - _loadChildren: function(){ - // summary: - // Loads the children represented by this widget's options. - // reset the menu to make it populatable on the next click - if(this._loadingStore){ return; } - array.forEach(this._getChildren(), function(child){ - child.destroyRecursive(); - }); - // Add each menu item - array.forEach(this.options, this._addOptionItem, this); - - // Update states - this._updateSelection(); - }, - - _updateSelection: function(){ - // summary: - // Sets the "selected" class on the item for styling purposes - this._set("value", this._getValueFromOpts()); - var val = this.value; - if(!lang.isArray(val)){ - val = [val]; - } - if(val && val[0]){ - array.forEach(this._getChildren(), function(child){ - var isSelected = array.some(val, function(v){ - return child.option && (v === child.option.value); - }); - domClass.toggle(child.domNode, this.baseClass.replace(/\s+|$/g, "SelectedOption "), isSelected); - child.domNode.setAttribute("aria-selected", isSelected ? "true" : "false"); - }, this); - } - }, - - _getValueFromOpts: function(){ - // summary: - // Returns the value of the widget by reading the options for - // the selected flag - var opts = this.getOptions() || []; - if(!this.multiple && opts.length){ - // Mirror what a select does - choose the first one - var opt = array.filter(opts, function(i){ - return i.selected; - })[0]; - if(opt && opt.value){ - return opt.value; - }else{ - opts[0].selected = true; - return opts[0].value; - } - }else if(this.multiple){ - // Set value to be the sum of all selected - return array.map(array.filter(opts, function(i){ - return i.selected; - }), function(i){ - return i.value; - }) || []; - } - return ""; - }, - - // Internal functions to call when we have store notifications come in - _onNewItem: function(/*item*/ item, /*Object?*/ parentInfo){ - if(!parentInfo || !parentInfo.parent){ - // Only add it if we are top-level - this._addOptionForItem(item); - } - }, - _onDeleteItem: function(/*item*/ item){ - var store = this.store; - this.removeOption(store.getIdentity(item)); - }, - _onSetItem: function(/*item*/ item){ - this.updateOption(this._getOptionObjForItem(item)); - }, - - _getOptionObjForItem: function(item){ - // summary: - // Returns an option object based off the given item. The "value" - // of the option item will be the identity of the item, the "label" - // of the option will be the label of the item. - - // remove getLabel() call for 2.0 (it's to support the old dojo.data API) - var store = this.store, - label = (this.labelAttr && this.labelAttr in item) ? item[this.labelAttr] : store.getLabel(item), - value = (label ? store.getIdentity(item) : null); - return {value: value, label: label, item: item}; // __SelectOption - }, - - _addOptionForItem: function(/*item*/ item){ - // summary: - // Creates (and adds) the option for the given item - var store = this.store; - if(store.isItemLoaded && !store.isItemLoaded(item)){ - // We are not loaded - so let's load it and add later. - // Remove for 2.0 (it's the old dojo.data API) - store.loadItem({item: item, onItem: function(i){ - this._addOptionForItem(i); - }, - scope: this}); - return; - } - var newOpt = this._getOptionObjForItem(item); - this.addOption(newOpt); - }, - - constructor: function(params /*===== , srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree - - // Saves off our value, if we have an initial one set so we - // can use it if we have a store as well (see startup()) - this._oValue = (params || {}).value || null; - this._notifyConnections = []; // remove for 2.0 - }, - - buildRendering: function(){ - this.inherited(arguments); - dom.setSelectable(this.focusNode, false); - }, - - _fillContent: function(){ - // summary: - // Loads our options and sets up our dropdown correctly. We - // don't want any content, so we don't call any inherit chain - // function. - if(!this.options){ - this.options = - this.srcNodeRef - ? query("> *", this.srcNodeRef).map( - function(node){ - if(node.getAttribute("type") === "separator"){ - return { value: "", label: "", selected: false, disabled: false }; - } - return { - value: (node.getAttribute("data-" + kernel._scopeName + "-value") || node.getAttribute("value")), - label: String(node.innerHTML), - // FIXME: disabled and selected are not valid on complex markup children (which is why we're - // looking for data-dojo-value above. perhaps we should data-dojo-props="" this whole thing?) - // decide before 1.6 - selected: node.getAttribute("selected") || false, - disabled: node.getAttribute("disabled") || false - }; - }, - this) - : []; - } - if(!this.value){ - this._set("value", this._getValueFromOpts()); - }else if(this.multiple && typeof this.value == "string"){ - this._set("value", this.value.split(",")); - } - }, - - postCreate: function(){ - // summary: - // sets up our event handling that we need for functioning - // as a select - this.inherited(arguments); - - // Make our event connections for updating state - this.connect(this, "onChange", "_updateSelection"); - - // moved from startup - // Connects in our store, if we have one defined - var store = this.store; - if(store && (store.getIdentity || store.getFeatures()["dojo.data.api.Identity"])){ - // Temporarily set our store to null so that it will get set - // and connected appropriately - this.store = null; - this.setStore(store, this._oValue); - } - }, - - startup: function(){ - // summary: - this._loadChildren(); - this.inherited(arguments); - }, - - destroy: function(){ - // summary: - // Clean up our connections - - var h; - while((h = this._notifyConnections.pop())){ h.remove(); } - - // Cancel listener for store updates - if(this._queryRes && this._queryRes.close){ - this._queryRes.close(); - } - - this.inherited(arguments); - }, - - _addOptionItem: function(/*__SelectOption*/ /*===== option =====*/){ - // summary: - // User-overridable function which, for the given option, adds an - // item to the select. If the option doesn't have a value, then a - // separator is added in that place. Make sure to store the option - // in the created option widget. - }, - - _removeOptionItem: function(/*__SelectOption*/ /*===== option =====*/){ - // summary: - // User-overridable function which, for the given option, removes - // its item from the select. - }, - - _setDisplay: function(/*String or String[]*/ /*===== newDisplay =====*/){ - // summary: - // Overridable function which will set the display for the - // widget. newDisplay is either a string (in the case of - // single selects) or array of strings (in the case of multi-selects) - }, - - _getChildren: function(){ - // summary: - // Overridable function to return the children that this widget contains. - return []; - }, - - _getSelectedOptionsAttr: function(){ - // summary: - // hooks into this.attr to provide a mechanism for getting the - // option items for the current value of the widget. - return this.getOptions(this.get("value")); - }, - - _pseudoLoadChildren: function(/*item[]*/ /*===== items =====*/){ - // summary: - // a function that will "fake" loading children, if needed, and - // if we have set to not load children until the widget opens. - // items: - // An array of items that will be loaded, when needed - }, - - onSetStore: function(){ - // summary: - // a function that can be connected to in order to receive a - // notification that the store has finished loading and all options - // from that store are available - } -}); - -/*===== -_FormSelectWidget.__SelectOption = __SelectOption; -=====*/ - -return _FormSelectWidget; - -}); - -}, -'dijit/form/Select':function(){ -require({cache:{ -'url:dijit/form/templates/Select.html':"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,_popupStateNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"▼ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n"}}); -define("dijit/form/Select", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/dom-class", // domClass.add domClass.remove domClass.toggle - "dojo/dom-geometry", // domGeometry.setMarginBox - "dojo/_base/event", // event.stop - "dojo/i18n", // i18n.getLocalization - "dojo/_base/lang", // lang.hitch - "dojo/sniff", // has("ie") - "./_FormSelectWidget", - "../_HasDropDown", - "../Menu", - "../MenuItem", - "../MenuSeparator", - "../Tooltip", - "dojo/text!./templates/Select.html", - "dojo/i18n!./nls/validate" -], function(array, declare, domAttr, domClass, domGeometry, event, i18n, lang, has, - _FormSelectWidget, _HasDropDown, Menu, MenuItem, MenuSeparator, Tooltip, template){ - -// module: -// dijit/form/Select - - -var _SelectMenu = declare("dijit.form._SelectMenu", Menu, { - // summary: - // An internally-used menu for dropdown that allows us a vertical scrollbar - - // Override Menu.autoFocus setting so that opening a Select highlights the current value. - autoFocus: true, - - buildRendering: function(){ - // summary: - // Stub in our own changes, so that our domNode is not a table - // otherwise, we won't respond correctly to heights/overflows - this.inherited(arguments); - var o = (this.menuTableNode = this.domNode); - var n = (this.domNode = this.ownerDocument.createElement("div")); - n.style.cssText = "overflow-x: hidden; overflow-y: scroll"; - if(o.parentNode){ - o.parentNode.replaceChild(n, o); - } - domClass.remove(o, "dijitMenuTable"); - n.className = o.className + " dijitSelectMenu"; - o.className = "dijitReset dijitMenuTable"; - o.setAttribute("role", "listbox"); - n.setAttribute("role", "presentation"); - n.appendChild(o); - }, - - postCreate: function(){ - // summary: - // stop mousemove from selecting text on IE to be consistent with other browsers - - this.inherited(arguments); - - this.connect(this.domNode, "onselectstart", event.stop); - }, - - - focus: function(){ - // summary: - // Overridden so that the previously selected value will be focused instead of only the first item - var found = false, - val = this.parentWidget.value; - if(lang.isArray(val)){ - val = val[val.length-1]; - } - if(val){ // if focus selected - array.forEach(this.parentWidget._getChildren(), function(child){ - if(child.option && (val === child.option.value)){ // find menu item widget with this value - found = true; - this.focusChild(child, false); // focus previous selection - } - }, this); - } - if(!found){ - this.inherited(arguments); // focus first item by default - } - }, - - resize: function(/*Object*/ mb){ - // summary: - // Overridden so that we are able to handle resizing our - // internal widget. Note that this is not a "full" resize - // implementation - it only works correctly if you pass it a - // marginBox. - // - // mb: Object - // The margin box to set this dropdown to. - if(mb){ - domGeometry.setMarginBox(this.domNode, mb); - if("w" in mb){ - // We've explicitly set the wrapper <div>'s width, so set <table> width to match. - // 100% is safer than a pixel value because there may be a scroll bar with - // browser/OS specific width. - this.menuTableNode.style.width = "100%"; - } - } - } -}); - -var Select = declare("dijit.form.Select", [_FormSelectWidget, _HasDropDown], { - // summary: - // This is a "styleable" select box - it is basically a DropDownButton which - // can take a `<select>` as its input. - - baseClass: "dijitSelect dijitValidationTextBox", - - templateString: template, - - _buttonInputDisabled: has("ie") ? "disabled" : "", // allows IE to disallow focus, but Firefox cannot be disabled for mousedown events - - // required: Boolean - // Can be true or false, default is false. - required: false, - - // state: [readonly] String - // "Incomplete" if this select is required but unset (i.e. blank value), "" otherwise - state: "", - - // message: String - // Currently displayed error/prompt message - message: "", - - // tooltipPosition: String[] - // See description of `dijit/Tooltip.defaultPosition` for details on this parameter. - tooltipPosition: [], - - // emptyLabel: string - // What to display in an "empty" dropdown - emptyLabel: " ", //   - - // _isLoaded: Boolean - // Whether or not we have been loaded - _isLoaded: false, - - // _childrenLoaded: Boolean - // Whether or not our children have been loaded - _childrenLoaded: false, - - _fillContent: function(){ - // summary: - // Set the value to be the first, or the selected index - this.inherited(arguments); - // set value from selected option - if(this.options.length && !this.value && this.srcNodeRef){ - var si = this.srcNodeRef.selectedIndex || 0; // || 0 needed for when srcNodeRef is not a SELECT - this.value = this.options[si >= 0 ? si : 0].value; - } - // Create the dropDown widget - this.dropDown = new _SelectMenu({ id: this.id + "_menu", parentWidget: this }); - domClass.add(this.dropDown.domNode, this.baseClass.replace(/\s+|$/g, "Menu ")); - }, - - _getMenuItemForOption: function(/*_FormSelectWidget.__SelectOption*/ option){ - // summary: - // For the given option, return the menu item that should be - // used to display it. This can be overridden as needed - if(!option.value && !option.label){ - // We are a separator (no label set for it) - return new MenuSeparator({ownerDocument: this.ownerDocument}); - }else{ - // Just a regular menu option - var click = lang.hitch(this, "_setValueAttr", option); - var item = new MenuItem({ - option: option, - label: option.label || this.emptyLabel, - onClick: click, - ownerDocument: this.ownerDocument, - dir: this.dir, - disabled: option.disabled || false - }); - item.focusNode.setAttribute("role", "option"); - return item; - } - }, - - _addOptionItem: function(/*_FormSelectWidget.__SelectOption*/ option){ - // summary: - // For the given option, add an option to our dropdown. - // If the option doesn't have a value, then a separator is added - // in that place. - if(this.dropDown){ - this.dropDown.addChild(this._getMenuItemForOption(option)); - } - }, - - _getChildren: function(){ - if(!this.dropDown){ - return []; - } - return this.dropDown.getChildren(); - }, - - _loadChildren: function(/*Boolean*/ loadMenuItems){ - // summary: - // Resets the menu and the length attribute of the button - and - // ensures that the label is appropriately set. - // loadMenuItems: Boolean - // actually loads the child menu items - we only do this when we are - // populating for showing the dropdown. - - if(loadMenuItems === true){ - // this.inherited destroys this.dropDown's child widgets (MenuItems). - // Avoid this.dropDown (Menu widget) having a pointer to a destroyed widget (which will cause - // issues later in _setSelected). (see #10296) - if(this.dropDown){ - delete this.dropDown.focusedChild; - } - if(this.options.length){ - this.inherited(arguments); - }else{ - // Drop down menu is blank but add one blank entry just so something appears on the screen - // to let users know that they are no choices (mimicing native select behavior) - array.forEach(this._getChildren(), function(child){ child.destroyRecursive(); }); - var item = new MenuItem({ - ownerDocument: this.ownerDocument, - label: this.emptyLabel - }); - this.dropDown.addChild(item); - } - }else{ - this._updateSelection(); - } - - this._isLoaded = false; - this._childrenLoaded = true; - - if(!this._loadingStore){ - // Don't call this if we are loading - since we will handle it later - this._setValueAttr(this.value, false); - } - }, - - _refreshState: function(){ - if(this._started){ - this.validate(this.focused); - } - }, - - startup: function(){ - this.inherited(arguments); - this._refreshState(); // after all _set* methods have run - }, - - _setValueAttr: function(value){ - this.inherited(arguments); - domAttr.set(this.valueNode, "value", this.get("value")); - this._refreshState(); // to update this.state - }, - - _setDisabledAttr: function(/*Boolean*/ value){ - this.inherited(arguments); - this._refreshState(); // to update this.state - }, - - _setRequiredAttr: function(/*Boolean*/ value){ - this._set("required", value); - this.focusNode.setAttribute("aria-required", value); - this._refreshState(); // to update this.state - }, - - _setOptionsAttr: function(/*Array*/ options){ - this._isLoaded = false; - this._set('options', options); - }, - - _setDisplay: function(/*String*/ newDisplay){ - // summary: - // sets the display for the given value (or values) - var lbl = newDisplay || this.emptyLabel; - this.containerNode.innerHTML = '<span role="option" class="dijitReset dijitInline ' + this.baseClass.replace(/\s+|$/g, "Label ")+'">' + lbl + '</span>'; - }, - - validate: function(/*Boolean*/ isFocused){ - // summary: - // Called by oninit, onblur, and onkeypress, and whenever required/disabled state changes - // description: - // Show missing or invalid messages if appropriate, and highlight textbox field. - // Used when a select is initially set to no value and the user is required to - // set the value. - - var isValid = this.disabled || this.isValid(isFocused); - this._set("state", isValid ? "" : (this._hasBeenBlurred ? "Error" : "Incomplete")); - this.focusNode.setAttribute("aria-invalid", isValid ? "false" : "true"); - var message = isValid ? "" : this._missingMsg; - if(message && this.focused && this._hasBeenBlurred){ - Tooltip.show(message, this.domNode, this.tooltipPosition, !this.isLeftToRight()); - }else{ - Tooltip.hide(this.domNode); - } - this._set("message", message); - return isValid; - }, - - isValid: function(/*Boolean*/ /*===== isFocused =====*/){ - // summary: - // Whether or not this is a valid value. The only way a Select - // can be invalid is when it's required but nothing is selected. - return (!this.required || this.value === 0 || !(/^\s*$/.test(this.value || ""))); // handle value is null or undefined - }, - - reset: function(){ - // summary: - // Overridden so that the state will be cleared. - this.inherited(arguments); - Tooltip.hide(this.domNode); - this._refreshState(); // to update this.state - }, - - postMixInProperties: function(){ - // summary: - // set the missing message - this.inherited(arguments); - this._missingMsg = i18n.getLocalization("dijit.form", "validate", this.lang).missingMessage; - }, - - postCreate: function(){ - // summary: - // stop mousemove from selecting text on IE to be consistent with other browsers - - this.inherited(arguments); - - this.connect(this.domNode, "onselectstart", event.stop); - this.domNode.setAttribute("aria-expanded", "false"); - - if(has("ie") < 9){ - // IE INPUT tag fontFamily has to be set directly using STYLE - // the defer gives IE a chance to render the TextBox and to deal with font inheritance - this.defer(function(){ - try{ - var s = domStyle.getComputedStyle(this.domNode); // can throw an exception if widget is immediately destroyed - if(s){ - var ff = s.fontFamily; - if(ff){ - var inputs = this.domNode.getElementsByTagName("INPUT"); - if(inputs){ - for(var i=0; i < inputs.length; i++){ - inputs[i].style.fontFamily = ff; - } - } - } - } - }catch(e){/*when used in a Dialog, and this is called before the dialog is - shown, s.fontFamily would trigger "Invalid Argument" error.*/} - }); - } - }, - - _setStyleAttr: function(/*String||Object*/ value){ - this.inherited(arguments); - domClass.toggle(this.domNode, this.baseClass.replace(/\s+|$/g, "FixedWidth "), !!this.domNode.style.width); - }, - - isLoaded: function(){ - return this._isLoaded; - }, - - loadDropDown: function(/*Function*/ loadCallback){ - // summary: - // populates the menu - this._loadChildren(true); - this._isLoaded = true; - loadCallback(); - }, - - closeDropDown: function(){ - // overriding _HasDropDown.closeDropDown() - this.inherited(arguments); - - if(this.dropDown && this.dropDown.menuTableNode){ - // Erase possible width: 100% setting from _SelectMenu.resize(). - // Leaving it would interfere with the next openDropDown() call, which - // queries the natural size of the drop down. - this.dropDown.menuTableNode.style.width = ""; - } - }, - - destroy: function(preserveDom){ - if(this.dropDown && !this.dropDown._destroyed){ - this.dropDown.destroyRecursive(preserveDom); - delete this.dropDown; - } - this.inherited(arguments); - }, - - _onFocus: function(){ - this.validate(true); // show tooltip if second focus of required tooltip, but no selection - this.inherited(arguments); - }, - - _onBlur: function(){ - Tooltip.hide(this.domNode); - this.inherited(arguments); - this.validate(false); - } -}); - -Select._Menu = _SelectMenu; // for monkey patching - -return Select; -}); - -}, -'dojo/store/util/QueryResults':function(){ -define("dojo/store/util/QueryResults", ["../../_base/array", "../../_base/lang", "../../_base/Deferred" -], function(array, lang, Deferred){ - -// module: -// dojo/store/util/QueryResults - -var QueryResults = function(results){ - // summary: - // A function that wraps the results of a store query with additional - // methods. - // description: - // QueryResults is a basic wrapper that allows for array-like iteration - // over any kind of returned data from a query. While the simplest store - // will return a plain array of data, other stores may return deferreds or - // promises; this wrapper makes sure that *all* results can be treated - // the same. - // - // Additional methods include `forEach`, `filter` and `map`. - // results: Array|dojo/promise/Promise - // The result set as an array, or a promise for an array. - // returns: - // An array-like object that can be used for iterating over. - // example: - // Query a store and iterate over the results. - // - // | store.query({ prime: true }).forEach(function(item){ - // | // do something - // | }); - - if(!results){ - return results; - } - // if it is a promise it may be frozen - if(results.then){ - results = lang.delegate(results); - } - function addIterativeMethod(method){ - if(!results[method]){ - results[method] = function(){ - var args = arguments; - return Deferred.when(results, function(results){ - Array.prototype.unshift.call(args, results); - return QueryResults(array[method].apply(array, args)); - }); - }; - } - } - addIterativeMethod("forEach"); - addIterativeMethod("filter"); - addIterativeMethod("map"); - if(!results.total){ - results.total = Deferred.when(results, function(results){ - return results.length; - }); - } - return results; // Object -}; - -lang.setObject("dojo.store.util.QueryResults", QueryResults); - -return QueryResults; - -}); - -}, -'dijit/form/_ListBase':function(){ -define("dijit/form/_ListBase", [ - "dojo/_base/declare", // declare - "dojo/on", - "dojo/window" // winUtils.scrollIntoView -], function(declare, on, winUtils){ - -// module: -// dijit/form/_ListBase - -return declare( "dijit.form._ListBase", null, { - // summary: - // Focus-less menu to handle UI events consistently - // Abstract methods that must be defined externally: - // - // - onSelect: item is active (mousedown but not yet mouseup, or keyboard arrow selected but no Enter) - // - onDeselect: cancels onSelect - // tags: - // private - - // selected: DOMNode - // currently selected node - selected: null, - - _listConnect: function(/*String|Function*/ eventType, /*String*/ callbackFuncName){ - // summary: - // Connects 'containerNode' to specified method of this object - // and automatically registers for 'disconnect' on widget destroy. - // description: - // Provide widget-specific analog to 'connect'. - // The callback function is called with the normal event object, - // but also a second parameter is passed that indicates which list item - // actually received the event. - // returns: - // A handle that can be passed to `disconnect` in order to disconnect - // before the widget is destroyed. - // tags: - // private - - var self = this; - return self.own(on(self.containerNode, - on.selector( - function(eventTarget, selector, target){ - return eventTarget.parentNode == target; - }, - eventType - ), - function(evt){ - evt.preventDefault(); - self[callbackFuncName](evt, this); - } - )); - }, - - selectFirstNode: function(){ - // summary: - // Select the first displayed item in the list. - var first = this.containerNode.firstChild; - while(first && first.style.display == "none"){ - first = first.nextSibling; - } - this._setSelectedAttr(first); - }, - - selectLastNode: function(){ - // summary: - // Select the last displayed item in the list - var last = this.containerNode.lastChild; - while(last && last.style.display == "none"){ - last = last.previousSibling; - } - this._setSelectedAttr(last); - }, - - selectNextNode: function(){ - // summary: - // Select the item just below the current selection. - // If nothing selected, select first node. - var selectedNode = this.selected; - if(!selectedNode){ - this.selectFirstNode(); - }else{ - var next = selectedNode.nextSibling; - while(next && next.style.display == "none"){ - next = next.nextSibling; - } - if(!next){ - this.selectFirstNode(); - }else{ - this._setSelectedAttr(next); - } - } - }, - - selectPreviousNode: function(){ - // summary: - // Select the item just above the current selection. - // If nothing selected, select last node (if - // you select Previous and try to keep scrolling up the list). - var selectedNode = this.selected; - if(!selectedNode){ - this.selectLastNode(); - }else{ - var prev = selectedNode.previousSibling; - while(prev && prev.style.display == "none"){ - prev = prev.previousSibling; - } - if(!prev){ - this.selectLastNode(); - }else{ - this._setSelectedAttr(prev); - } - } - }, - - _setSelectedAttr: function(/*DomNode*/ node){ - // summary: - // Does the actual select. - if(this.selected != node){ - var selectedNode = this.selected; - if(selectedNode){ - this.onDeselect(selectedNode); - this.selected = null; - } - if(node){ - this.selected = node; - winUtils.scrollIntoView(node); - this.onSelect(node); - } - }else if(node){ - this.onSelect(node); - } - } -}); - -}); - -}, -'dijit/form/_FormWidget':function(){ -define("dijit/form/_FormWidget", [ - "dojo/_base/declare", // declare - "dojo/has", // has("dijit-legacy-requires") - "dojo/_base/kernel", // kernel.deprecated - "dojo/ready", - "../_Widget", - "../_CssStateMixin", - "../_TemplatedMixin", - "./_FormWidgetMixin" -], function(declare, has, kernel, ready, _Widget, _CssStateMixin, _TemplatedMixin, _FormWidgetMixin){ - - -// module: -// dijit/form/_FormWidget - -// Back compat w/1.6, remove for 2.0 -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/form/_FormValueWidget"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -return declare("dijit.form._FormWidget", [_Widget, _TemplatedMixin, _CssStateMixin, _FormWidgetMixin], { - // summary: - // Base class for widgets corresponding to native HTML elements such as `<checkbox>` or `<button>`, - // which can be children of a `<form>` node or a `dijit/form/Form` widget. - // - // description: - // Represents a single HTML element. - // All these widgets should have these attributes just like native HTML input elements. - // You can set them during widget construction or afterwards, via `dijit/_WidgetBase.set()`. - // - // They also share some common methods. - - setDisabled: function(/*Boolean*/ disabled){ - // summary: - // Deprecated. Use set('disabled', ...) instead. - kernel.deprecated("setDisabled("+disabled+") is deprecated. Use set('disabled',"+disabled+") instead.", "", "2.0"); - this.set('disabled', disabled); - }, - - setValue: function(/*String*/ value){ - // summary: - // Deprecated. Use set('value', ...) instead. - kernel.deprecated("dijit.form._FormWidget:setValue("+value+") is deprecated. Use set('value',"+value+") instead.", "", "2.0"); - this.set('value', value); - }, - - getValue: function(){ - // summary: - // Deprecated. Use get('value') instead. - kernel.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.", "", "2.0"); - return this.get('value'); - }, - - postMixInProperties: function(){ - // Setup name=foo string to be referenced from the template (but only if a name has been specified) - // Unfortunately we can't use _setNameAttr to set the name due to IE limitations, see #8484, #8660. - // Regarding escaping, see heading "Attribute values" in - // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2 - this.nameAttrSetting = this.name ? ('name="' + this.name.replace(/"/g, """) + '"') : ''; - this.inherited(arguments); - }, - - // Override automatic assigning type --> focusNode, it causes exception on IE. - // Instead, type must be specified as ${type} in the template, as part of the original DOM - _setTypeAttr: null -}); - -}); - -}, -'dojo/DeferredList':function(){ -define("dojo/DeferredList", ["./_base/kernel", "./_base/Deferred", "./_base/array"], function(dojo, Deferred, darray){ - // module: - // dojo/DeferredList - - -dojo.DeferredList = function(/*Array*/ list, /*Boolean?*/ fireOnOneCallback, /*Boolean?*/ fireOnOneErrback, /*Boolean?*/ consumeErrors, /*Function?*/ canceller){ - // summary: - // Deprecated, use dojo/promise/all instead. - // Provides event handling for a group of Deferred objects. - // description: - // DeferredList takes an array of existing deferreds and returns a new deferred of its own - // this new deferred will typically have its callback fired when all of the deferreds in - // the given list have fired their own deferreds. The parameters `fireOnOneCallback` and - // fireOnOneErrback, will fire before all the deferreds as appropriate - // list: - // The list of deferreds to be synchronizied with this DeferredList - // fireOnOneCallback: - // Will cause the DeferredLists callback to be fired as soon as any - // of the deferreds in its list have been fired instead of waiting until - // the entire list has finished - // fireonOneErrback: - // Will cause the errback to fire upon any of the deferreds errback - // canceller: - // A deferred canceller function, see dojo.Deferred - var resultList = []; - Deferred.call(this); - var self = this; - if(list.length === 0 && !fireOnOneCallback){ - this.resolve([0, []]); - } - var finished = 0; - darray.forEach(list, function(item, i){ - item.then(function(result){ - if(fireOnOneCallback){ - self.resolve([i, result]); - }else{ - addResult(true, result); - } - },function(error){ - if(fireOnOneErrback){ - self.reject(error); - }else{ - addResult(false, error); - } - if(consumeErrors){ - return null; - } - throw error; - }); - function addResult(succeeded, result){ - resultList[i] = [succeeded, result]; - finished++; - if(finished === list.length){ - self.resolve(resultList); - } - - } - }); -}; -dojo.DeferredList.prototype = new Deferred(); - -dojo.DeferredList.prototype.gatherResults = function(deferredList){ - // summary: - // Gathers the results of the deferreds for packaging - // as the parameters to the Deferred Lists' callback - // deferredList: dojo/DeferredList - // The deferred list from which this function gathers results. - // returns: dojo/DeferredList - // The newly created deferred list which packs results as - // parameters to its callback. - - var d = new dojo.DeferredList(deferredList, false, true, false); - d.addCallback(function(results){ - var ret = []; - darray.forEach(results, function(result){ - ret.push(result[1]); - }); - return ret; - }); - return d; -}; - -return dojo.DeferredList; -}); - -}, -'dojo/dnd/common':function(){ -define("dojo/dnd/common", ["../_base/connect", "../_base/kernel", "../_base/lang", "../dom"], - function(connect, kernel, lang, dom){ - -// module: -// dojo/dnd/common - -var exports = lang.getObject("dojo.dnd", true); -/*===== -// TODO: for 2.0, replace line above with this code. -var exports = { - // summary: - // TODOC -}; -=====*/ - -exports.getCopyKeyState = connect.isCopyKey; - -exports._uniqueId = 0; -exports.getUniqueId = function(){ - // summary: - // returns a unique string for use with any DOM element - var id; - do{ - id = kernel._scopeName + "Unique" + (++exports._uniqueId); - }while(dom.byId(id)); - return id; -}; - -exports._empty = {}; - -exports.isFormElement = function(/*Event*/ e){ - // summary: - // returns true if user clicked on a form element - var t = e.target; - if(t.nodeType == 3 /*TEXT_NODE*/){ - t = t.parentNode; - } - return " button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0; // Boolean -}; - -return exports; -}); - -}, -'dijit/CheckedMenuItem':function(){ -require({cache:{ -'url:dijit/templates/CheckedMenuItem.html':"<tr class=\"dijitReset dijitMenuItem\" data-dojo-attach-point=\"focusNode\" role=\"menuitemcheckbox\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"/>\n\t\t<span class=\"dijitCheckedMenuItemIconChar\">✓</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\"> </td>\n</tr>\n"}}); -define("dijit/CheckedMenuItem", [ - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.toggle - "./MenuItem", - "dojo/text!./templates/CheckedMenuItem.html", - "./hccss" -], function(declare, domClass, MenuItem, template){ - - // module: - // dijit/CheckedMenuItem - - return declare("dijit.CheckedMenuItem", MenuItem, { - // summary: - // A checkbox-like menu item for toggling on and off - - templateString: template, - - // checked: Boolean - // Our checked state - checked: false, - _setCheckedAttr: function(/*Boolean*/ checked){ - // summary: - // Hook so attr('checked', bool) works. - // Sets the class and state for the check box. - domClass.toggle(this.domNode, "dijitCheckedMenuItemChecked", checked); - this.domNode.setAttribute("aria-checked", checked ? "true" : "false"); - this._set("checked", checked); - }, - - iconClass: "", // override dijitNoIcon - - onChange: function(/*Boolean*/ /*===== checked =====*/){ - // summary: - // User defined function to handle check/uncheck events - // tags: - // callback - }, - - _onClick: function(evt){ - // summary: - // Clicking this item just toggles its state - // tags: - // private - if(!this.disabled){ - this.set("checked", !this.checked); - this.onChange(this.checked); - } - this.onClick(evt); - } - }); -}); - -}, -'dijit/Viewport':function(){ -define("dijit/Viewport", [ - "dojo/Evented", - "dojo/on", - "dojo/ready", - "dojo/sniff", - "dojo/_base/window", // global - "dojo/window" // getBox() -], function(Evented, on, ready, has, win, winUtils){ - - // module: - // dijit/Viewport - - /*===== - return { - // summary: - // Utility singleton to watch for viewport resizes, avoiding duplicate notifications - // which can lead to infinite loops. - // description: - // Usage: Viewport.on("resize", myCallback). - // - // myCallback() is called without arguments in case it's _WidgetBase.resize(), - // which would interpret the argument as the size to make the widget. - }; - =====*/ - - var Viewport = new Evented(); - - ready(200, function(){ - var oldBox = winUtils.getBox(); - Viewport._rlh = on(win.global, "resize", function(){ - var newBox = winUtils.getBox(); - if(oldBox.h == newBox.h && oldBox.w == newBox.w){ return; } - oldBox = newBox; - Viewport.emit("resize"); - }); - - // Also catch zoom changes on IE8, since they don't naturally generate resize events - if(has("ie") == 8){ - var deviceXDPI = screen.deviceXDPI; - setInterval(function(){ - if(screen.deviceXDPI != deviceXDPI){ - deviceXDPI = screen.deviceXDPI; - Viewport.emit("resize"); - } - }, 500); - } - }); - - return Viewport; -}); - -}, -'dijit/_base/place':function(){ -define("dijit/_base/place", [ - "dojo/_base/array", // array.forEach - "dojo/_base/lang", // lang.isArray, lang.mixin - "dojo/window", // windowUtils.getBox - "../place", - "../main" // export to dijit namespace -], function(array, lang, windowUtils, place, dijit){ - - // module: - // dijit/_base/place - - - var exports = { - // summary: - // Deprecated back compatibility module, new code should use dijit/place directly instead of using this module. - }; - - exports.getViewport = function(){ - // summary: - // Deprecated method to return the dimensions and scroll position of the viewable area of a browser window. - // New code should use windowUtils.getBox() - - return windowUtils.getBox(); - }; - - exports.placeOnScreen = place.at; - - exports.placeOnScreenAroundElement = function(node, aroundNode, aroundCorners, layoutNode){ - // summary: - // Like dijit.placeOnScreenAroundNode(), except it accepts an arbitrary object - // for the "around" argument and finds a proper processor to place a node. - // Deprecated, new code should use dijit/place.around() instead. - - // Convert old style {"BL": "TL", "BR": "TR"} type argument - // to style needed by dijit.place code: - // [ - // {aroundCorner: "BL", corner: "TL" }, - // {aroundCorner: "BR", corner: "TR" } - // ] - var positions; - if(lang.isArray(aroundCorners)){ - positions = aroundCorners; - }else{ - positions = []; - for(var key in aroundCorners){ - positions.push({aroundCorner: key, corner: aroundCorners[key]}); - } - } - - return place.around(node, aroundNode, positions, true, layoutNode); - }; - - exports.placeOnScreenAroundNode = exports.placeOnScreenAroundElement; - /*===== - exports.placeOnScreenAroundNode = function(node, aroundNode, aroundCorners, layoutNode){ - // summary: - // Position node adjacent or kitty-corner to aroundNode - // such that it's fully visible in viewport. - // Deprecated, new code should use dijit/place.around() instead. - }; - =====*/ - - exports.placeOnScreenAroundRectangle = exports.placeOnScreenAroundElement; - /*===== - exports.placeOnScreenAroundRectangle = function(node, aroundRect, aroundCorners, layoutNode){ - // summary: - // Like dijit.placeOnScreenAroundNode(), except that the "around" - // parameter is an arbitrary rectangle on the screen (x, y, width, height) - // instead of a dom node. - // Deprecated, new code should use dijit/place.around() instead. - }; - =====*/ - - exports.getPopupAroundAlignment = function(/*Array*/ position, /*Boolean*/ leftToRight){ - // summary: - // Deprecated method, unneeded when using dijit/place directly. - // Transforms the passed array of preferred positions into a format suitable for - // passing as the aroundCorners argument to dijit/place.placeOnScreenAroundElement. - // position: String[] - // This variable controls the position of the drop down. - // It's an array of strings with the following values: - // - // - before: places drop down to the left of the target node/widget, or to the right in - // the case of RTL scripts like Hebrew and Arabic - // - after: places drop down to the right of the target node/widget, or to the left in - // the case of RTL scripts like Hebrew and Arabic - // - above: drop down goes above target node - // - below: drop down goes below target node - // - // The list is positions is tried, in order, until a position is found where the drop down fits - // within the viewport. - // leftToRight: Boolean - // Whether the popup will be displaying in leftToRight mode. - - var align = {}; - array.forEach(position, function(pos){ - var ltr = leftToRight; - switch(pos){ - case "after": - align[leftToRight ? "BR" : "BL"] = leftToRight ? "BL" : "BR"; - break; - case "before": - align[leftToRight ? "BL" : "BR"] = leftToRight ? "BR" : "BL"; - break; - case "below-alt": - ltr = !ltr; - // fall through - case "below": - // first try to align left borders, next try to align right borders (or reverse for RTL mode) - align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; - align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; - break; - case "above-alt": - ltr = !ltr; - // fall through - case "above": - default: - // first try to align left borders, next try to align right borders (or reverse for RTL mode) - align[ltr ? "TL" : "TR"] = ltr ? "BL" : "BR"; - align[ltr ? "TR" : "TL"] = ltr ? "BR" : "BL"; - break; - } - }); - return align; - }; - - lang.mixin(dijit, exports); - - /*===== return exports; =====*/ - return dijit; // for back compat :-( -}); - -}, -'dijit/MenuSeparator':function(){ -require({cache:{ -'url:dijit/templates/MenuSeparator.html':"<tr class=\"dijitMenuSeparator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>"}}); -define("dijit/MenuSeparator", [ - "dojo/_base/declare", // declare - "dojo/dom", // dom.setSelectable - "./_WidgetBase", - "./_TemplatedMixin", - "./_Contained", - "dojo/text!./templates/MenuSeparator.html" -], function(declare, dom, _WidgetBase, _TemplatedMixin, _Contained, template){ - - // module: - // dijit/MenuSeparator - - return declare("dijit.MenuSeparator", [_WidgetBase, _TemplatedMixin, _Contained], { - // summary: - // A line between two menu items - - templateString: template, - - buildRendering: function(){ - this.inherited(arguments); - dom.setSelectable(this.domNode, false); - }, - - isFocusable: function(){ - // summary: - // Override to always return false - // tags: - // protected - - return false; // Boolean - } - }); -}); - -}, -'dijit/form/_ComboBoxMenu':function(){ -define("dijit/form/_ComboBoxMenu", [ - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.remove - "dojo/dom-style", // domStyle.get - "dojo/keys", // keys.DOWN_ARROW keys.PAGE_DOWN keys.PAGE_UP keys.UP_ARROW - "../_WidgetBase", - "../_TemplatedMixin", - "./_ComboBoxMenuMixin", - "./_ListMouseMixin" -], function(declare, domClass, domStyle, keys, - _WidgetBase, _TemplatedMixin, _ComboBoxMenuMixin, _ListMouseMixin){ - - - // module: - // dijit/form/_ComboBoxMenu - - return declare("dijit.form._ComboBoxMenu",[_WidgetBase, _TemplatedMixin, _ListMouseMixin, _ComboBoxMenuMixin], { - // summary: - // Focus-less menu for internal use in `dijit/form/ComboBox` - // Abstract methods that must be defined externally: - // - // - onChange: item was explicitly chosen (mousedown somewhere on the menu and mouseup somewhere on the menu) - // - onPage: next(1) or previous(-1) button pressed - // tags: - // private - - templateString: "<div class='dijitReset dijitMenu' data-dojo-attach-point='containerNode' style='overflow: auto; overflow-x: hidden;' role='listbox'>" - +"<div class='dijitMenuItem dijitMenuPreviousButton' data-dojo-attach-point='previousButton' role='option'></div>" - +"<div class='dijitMenuItem dijitMenuNextButton' data-dojo-attach-point='nextButton' role='option'></div>" - +"</div>", - - baseClass: "dijitComboBoxMenu", - - postCreate: function(){ - this.inherited(arguments); - if(!this.isLeftToRight()){ - domClass.add(this.previousButton, "dijitMenuItemRtl"); - domClass.add(this.nextButton, "dijitMenuItemRtl"); - } - }, - - _createMenuItem: function(){ - // note: not using domConstruct.create() because need to specify document - var item = this.ownerDocument.createElement("div"); - item.className = "dijitReset dijitMenuItem" +(this.isLeftToRight() ? "" : " dijitMenuItemRtl"); - item.setAttribute("role", "option"); - return item; - }, - - onHover: function(/*DomNode*/ node){ - // summary: - // Add hover CSS - domClass.add(node, "dijitMenuItemHover"); - }, - - onUnhover: function(/*DomNode*/ node){ - // summary: - // Remove hover CSS - domClass.remove(node, "dijitMenuItemHover"); - }, - - onSelect: function(/*DomNode*/ node){ - // summary: - // Add selected CSS - domClass.add(node, "dijitMenuItemSelected"); - }, - - onDeselect: function(/*DomNode*/ node){ - // summary: - // Remove selected CSS - domClass.remove(node, "dijitMenuItemSelected"); - }, - - _page: function(/*Boolean*/ up){ - // summary: - // Handles page-up and page-down keypresses - - var scrollamount = 0; - var oldscroll = this.domNode.scrollTop; - var height = domStyle.get(this.domNode, "height"); - // if no item is highlighted, highlight the first option - if(!this.getHighlightedOption()){ - this.selectNextNode(); - } - while(scrollamount<height){ - var highlighted_option = this.getHighlightedOption(); - if(up){ - // stop at option 1 - if(!highlighted_option.previousSibling || - highlighted_option.previousSibling.style.display == "none"){ - break; - } - this.selectPreviousNode(); - }else{ - // stop at last option - if(!highlighted_option.nextSibling || - highlighted_option.nextSibling.style.display == "none"){ - break; - } - this.selectNextNode(); - } - // going backwards - var newscroll = this.domNode.scrollTop; - scrollamount += (newscroll-oldscroll)*(up ? -1:1); - oldscroll = newscroll; - } - }, - - handleKey: function(evt){ - // summary: - // Handle keystroke event forwarded from ComboBox, returning false if it's - // a keystroke I recognize and process, true otherwise. - switch(evt.keyCode){ - case keys.DOWN_ARROW: - this.selectNextNode(); - return false; - case keys.PAGE_DOWN: - this._page(false); - return false; - case keys.UP_ARROW: - this.selectPreviousNode(); - return false; - case keys.PAGE_UP: - this._page(true); - return false; - default: - return true; - } - } - }); -}); - -}, -'url:dijit/layout/templates/ScrollingTabController.html':"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_menuBtn\"\n\t\t\tdata-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t\tdata-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">▼</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_leftBtn\"\n\t\t\tdata-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t\tdata-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">◀</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_rightBtn\"\n\t\t\tdata-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t\tdata-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">▶</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeypress:onkeypress'\n\t\t\t\tdata-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>", -'dijit/Dialog':function(){ -require({cache:{ -'url:dijit/templates/Dialog.html':"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabIndex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n</div>\n"}}); -define("dijit/Dialog", [ - "require", - "dojo/_base/array", // array.forEach array.indexOf array.map - "dojo/_base/connect", // connect._keypress - "dojo/_base/declare", // declare - "dojo/_base/Deferred", // Deferred - "dojo/dom", // dom.isDescendant - "dojo/dom-class", // domClass.add domClass.contains - "dojo/dom-geometry", // domGeometry.position - "dojo/dom-style", // domStyle.set - "dojo/_base/event", // event.stop - "dojo/_base/fx", // fx.fadeIn fx.fadeOut - "dojo/i18n", // i18n.getLocalization - "dojo/keys", - "dojo/_base/lang", // lang.mixin lang.hitch - "dojo/on", - "dojo/ready", - "dojo/sniff", // has("ie") has("opera") has("dijit-legacy-requires") - "dojo/window", // winUtils.getBox, winUtils.get - "dojo/dnd/Moveable", // Moveable - "dojo/dnd/TimedMoveable", // TimedMoveable - "./focus", - "./_base/manager", // manager.defaultDuration - "./_Widget", - "./_TemplatedMixin", - "./_CssStateMixin", - "./form/_FormMixin", - "./_DialogMixin", - "./DialogUnderlay", - "./layout/ContentPane", - "dojo/text!./templates/Dialog.html", - "./main", // for back-compat, exporting dijit._underlay (remove in 2.0) - "dojo/i18n!./nls/common" -], function(require, array, connect, declare, Deferred, - dom, domClass, domGeometry, domStyle, event, fx, i18n, keys, lang, on, ready, has, winUtils, - Moveable, TimedMoveable, focus, manager, _Widget, _TemplatedMixin, _CssStateMixin, _FormMixin, _DialogMixin, - DialogUnderlay, ContentPane, template, dijit){ - - // module: - // dijit/Dialog - - /*===== - dijit._underlay = function(kwArgs){ - // summary: - // A shared instance of a `dijit.DialogUnderlay` - // - // description: - // A shared instance of a `dijit.DialogUnderlay` created and - // used by `dijit.Dialog`, though never created until some Dialog - // or subclass thereof is shown. - }; - =====*/ - - var _DialogBase = declare("dijit._DialogBase", [_TemplatedMixin, _FormMixin, _DialogMixin, _CssStateMixin], { - templateString: template, - - baseClass: "dijitDialog", - - cssStateNodes: { - closeButtonNode: "dijitDialogCloseIcon" - }, - - // Map widget attributes to DOMNode attributes. - _setTitleAttr: [ - { node: "titleNode", type: "innerHTML" }, - { node: "titleBar", type: "attribute" } - ], - - // open: [readonly] Boolean - // True if Dialog is currently displayed on screen. - open: false, - - // duration: Integer - // The time in milliseconds it takes the dialog to fade in and out - duration: manager.defaultDuration, - - // refocus: Boolean - // A Toggle to modify the default focus behavior of a Dialog, which - // is to re-focus the element which had focus before being opened. - // False will disable refocusing. Default: true - refocus: true, - - // autofocus: Boolean - // A Toggle to modify the default focus behavior of a Dialog, which - // is to focus on the first dialog element after opening the dialog. - // False will disable autofocusing. Default: true - autofocus: true, - - // _firstFocusItem: [private readonly] DomNode - // The pointer to the first focusable node in the dialog. - // Set by `dijit/_DialogMixin._getFocusItems()`. - _firstFocusItem: null, - - // _lastFocusItem: [private readonly] DomNode - // The pointer to which node has focus prior to our dialog. - // Set by `dijit/_DialogMixin._getFocusItems()`. - _lastFocusItem: null, - - // doLayout: [protected] Boolean - // Don't change this parameter from the default value. - // This ContentPane parameter doesn't make sense for Dialog, since Dialog - // is never a child of a layout container, nor can you specify the size of - // Dialog in order to control the size of an inner widget. - doLayout: false, - - // draggable: Boolean - // Toggles the moveable aspect of the Dialog. If true, Dialog - // can be dragged by it's title. If false it will remain centered - // in the viewport. - draggable: true, - - _setDraggableAttr: function(/*Boolean*/ val){ - // Avoid _WidgetBase behavior of copying draggable attribute to this.domNode, - // as that prevents text select on modern browsers (#14452) - this._set("draggable", val); - }, - - // aria-describedby: String - // Allows the user to add an aria-describedby attribute onto the dialog. The value should - // be the id of the container element of text that describes the dialog purpose (usually - // the first text in the dialog). - // | <div data-dojo-type="dijit/Dialog" aria-describedby="intro" .....> - // | <div id="intro">Introductory text</div> - // | <div>rest of dialog contents</div> - // | </div> - "aria-describedby": "", - - // maxRatio: Number - // Maximum size to allow the dialog to expand to, relative to viewport size - maxRatio: 0.9, - - postMixInProperties: function(){ - var _nlsResources = i18n.getLocalization("dijit", "common"); - lang.mixin(this, _nlsResources); - this.inherited(arguments); - }, - - postCreate: function(){ - domStyle.set(this.domNode, { - display: "none", - position:"absolute" - }); - this.ownerDocumentBody.appendChild(this.domNode); - - this.inherited(arguments); - - this.connect(this, "onExecute", "hide"); - this.connect(this, "onCancel", "hide"); - this._modalconnects = []; - }, - - onLoad: function(){ - // summary: - // Called when data has been loaded from an href. - // Unlike most other callbacks, this function can be connected to (via `dojo.connect`) - // but should *not* be overridden. - // tags: - // callback - - // when href is specified we need to reposition the dialog after the data is loaded - // and find the focusable elements - this._position(); - if(this.autofocus && DialogLevelManager.isTop(this)){ - this._getFocusItems(this.domNode); - focus.focus(this._firstFocusItem); - } - this.inherited(arguments); - }, - - _onBlur: function(by){ - this.inherited(arguments); - - // If focus was accidentally removed from the dialog, such as if the user clicked a blank - // area of the screen, or clicked the browser's address bar and then tabbed into the page, - // then refocus. Won't do anything if focus was removed because the Dialog was closed, or - // because a new Dialog popped up on top of the old one. - var refocus = lang.hitch(this, function(){ - if(this.open && !this._destroyed && DialogLevelManager.isTop(this)){ - this._getFocusItems(this.domNode); - focus.focus(this._firstFocusItem); - } - }); - if(by == "mouse"){ - // wait for mouse up, and then refocus dialog; otherwise doesn't work - on.once(this.ownerDocument, "mouseup", refocus); - }else{ - refocus(); - } - }, - - _endDrag: function(){ - // summary: - // Called after dragging the Dialog. Saves the position of the dialog in the viewport, - // and also adjust position to be fully within the viewport, so user doesn't lose access to handle - var nodePosition = domGeometry.position(this.domNode), - viewport = winUtils.getBox(this.ownerDocument); - nodePosition.y = Math.min(Math.max(nodePosition.y, 0), (viewport.h - nodePosition.h)); - nodePosition.x = Math.min(Math.max(nodePosition.x, 0), (viewport.w - nodePosition.w)); - this._relativePosition = nodePosition; - this._position(); - }, - - _setup: function(){ - // summary: - // Stuff we need to do before showing the Dialog for the first - // time (but we defer it until right beforehand, for - // performance reasons). - // tags: - // private - - var node = this.domNode; - - if(this.titleBar && this.draggable){ - this._moveable = new ((has("ie") == 6) ? TimedMoveable // prevent overload, see #5285 - : Moveable)(node, { handle: this.titleBar }); - this.connect(this._moveable, "onMoveStop", "_endDrag"); - }else{ - domClass.add(node,"dijitDialogFixed"); - } - - this.underlayAttrs = { - dialogId: this.id, - "class": array.map(this["class"].split(/\s/), function(s){ return s+"_underlay"; }).join(" "), - ownerDocument: this.ownerDocument - }; - }, - - _size: function(){ - // summary: - // If necessary, shrink dialog contents so dialog fits in viewport - // tags: - // private - - this._checkIfSingleChild(); - - // If we resized the dialog contents earlier, reset them back to original size, so - // that if the user later increases the viewport size, the dialog can display w/out a scrollbar. - // Need to do this before the domGeometry.position(this.domNode) call below. - if(this._singleChild){ - if(typeof this._singleChildOriginalStyle != "undefined"){ - this._singleChild.domNode.style.cssText = this._singleChildOriginalStyle; - delete this._singleChildOriginalStyle; - } - }else{ - domStyle.set(this.containerNode, { - width:"auto", - height:"auto" - }); - } - - var bb = domGeometry.position(this.domNode); - - // Get viewport size but then reduce it by a bit; Dialog should always have some space around it - // to indicate that it's a popup. This will also compensate for possible scrollbars on viewport. - var viewport = winUtils.getBox(this.ownerDocument); - viewport.w *= this.maxRatio; - viewport.h *= this.maxRatio; - - if(bb.w >= viewport.w || bb.h >= viewport.h){ - // Reduce size of dialog contents so that dialog fits in viewport - - var containerSize = domGeometry.position(this.containerNode), - w = Math.min(bb.w, viewport.w) - (bb.w - containerSize.w), - h = Math.min(bb.h, viewport.h) - (bb.h - containerSize.h); - - if(this._singleChild && this._singleChild.resize){ - if(typeof this._singleChildOriginalStyle == "undefined"){ - this._singleChildOriginalStyle = this._singleChild.domNode.style.cssText; - } - this._singleChild.resize({w: w, h: h}); - }else{ - domStyle.set(this.containerNode, { - width: w + "px", - height: h + "px", - overflow: "auto", - position: "relative" // workaround IE bug moving scrollbar or dragging dialog - }); - } - }else{ - if(this._singleChild && this._singleChild.resize){ - this._singleChild.resize(); - } - } - }, - - _position: function(){ - // summary: - // Position modal dialog in the viewport. If no relative offset - // in the viewport has been determined (by dragging, for instance), - // center the node. Otherwise, use the Dialog's stored relative offset, - // and position the node to top: left: values based on the viewport. - if(!domClass.contains(this.ownerDocumentBody, "dojoMove")){ // don't do anything if called during auto-scroll - var node = this.domNode, - viewport = winUtils.getBox(this.ownerDocument), - p = this._relativePosition, - bb = p ? null : domGeometry.position(node), - l = Math.floor(viewport.l + (p ? p.x : (viewport.w - bb.w) / 2)), - t = Math.floor(viewport.t + (p ? p.y : (viewport.h - bb.h) / 2)) - ; - domStyle.set(node,{ - left: l + "px", - top: t + "px" - }); - } - }, - - _onKey: function(/*Event*/ evt){ - // summary: - // Handles the keyboard events for accessibility reasons - // tags: - // private - - if(evt.charOrCode){ - var node = evt.target; - if(evt.charOrCode === keys.TAB){ - this._getFocusItems(this.domNode); - } - var singleFocusItem = (this._firstFocusItem == this._lastFocusItem); - // see if we are shift-tabbing from first focusable item on dialog - if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === keys.TAB){ - if(!singleFocusItem){ - focus.focus(this._lastFocusItem); // send focus to last item in dialog - } - event.stop(evt); - }else if(node == this._lastFocusItem && evt.charOrCode === keys.TAB && !evt.shiftKey){ - if(!singleFocusItem){ - focus.focus(this._firstFocusItem); // send focus to first item in dialog - } - event.stop(evt); - }else{ - // see if the key is for the dialog - while(node){ - if(node == this.domNode || domClass.contains(node, "dijitPopup")){ - if(evt.charOrCode == keys.ESCAPE){ - this.onCancel(); - }else{ - return; // just let it go - } - } - node = node.parentNode; - } - // this key is for the disabled document window - if(evt.charOrCode !== keys.TAB){ // allow tabbing into the dialog for a11y - event.stop(evt); - // opera won't tab to a div - }else if(!has("opera")){ - try{ - this._firstFocusItem.focus(); - }catch(e){ /*squelch*/ } - } - } - } - }, - - show: function(){ - // summary: - // Display the dialog - // returns: dojo/_base/Deferred - // Deferred object that resolves when the display animation is complete - - if(this.open){ return; } - - if(!this._started){ - this.startup(); - } - - // first time we show the dialog, there's some initialization stuff to do - if(!this._alreadyInitialized){ - this._setup(); - this._alreadyInitialized=true; - } - - if(this._fadeOutDeferred){ - this._fadeOutDeferred.cancel(); - } - - // Recenter Dialog if user scrolls browser. Connecting to document doesn't work on IE, need to use window. - var win = winUtils.get(this.ownerDocument); - this._modalconnects.push(on(win, "scroll", lang.hitch(this, "resize"))); - - this._modalconnects.push(on(this.domNode, connect._keypress, lang.hitch(this, "_onKey"))); - - domStyle.set(this.domNode, { - opacity:0, - display:"" - }); - - this._set("open", true); - this._onShow(); // lazy load trigger - - this._size(); - this._position(); - - // fade-in Animation object, setup below - var fadeIn; - - this._fadeInDeferred = new Deferred(lang.hitch(this, function(){ - fadeIn.stop(); - delete this._fadeInDeferred; - })); - - fadeIn = fx.fadeIn({ - node: this.domNode, - duration: this.duration, - beforeBegin: lang.hitch(this, function(){ - DialogLevelManager.show(this, this.underlayAttrs); - }), - onEnd: lang.hitch(this, function(){ - if(this.autofocus && DialogLevelManager.isTop(this)){ - // find focusable items each time dialog is shown since if dialog contains a widget the - // first focusable items can change - this._getFocusItems(this.domNode); - focus.focus(this._firstFocusItem); - } - this._fadeInDeferred.resolve(true); - delete this._fadeInDeferred; - }) - }).play(); - - return this._fadeInDeferred; - }, - - hide: function(){ - // summary: - // Hide the dialog - // returns: dojo/_base/Deferred - // Deferred object that resolves when the hide animation is complete - - // If we haven't been initialized yet then we aren't showing and we can just return. - // Likewise if we are already hidden, or are currently fading out. - if(!this._alreadyInitialized || !this.open){ - return; - } - if(this._fadeInDeferred){ - this._fadeInDeferred.cancel(); - } - - // fade-in Animation object, setup below - var fadeOut; - - this._fadeOutDeferred = new Deferred(lang.hitch(this, function(){ - fadeOut.stop(); - delete this._fadeOutDeferred; - })); - // fire onHide when the promise resolves. - this._fadeOutDeferred.then(lang.hitch(this, 'onHide')); - - fadeOut = fx.fadeOut({ - node: this.domNode, - duration: this.duration, - onEnd: lang.hitch(this, function(){ - this.domNode.style.display = "none"; - DialogLevelManager.hide(this); - this._fadeOutDeferred.resolve(true); - delete this._fadeOutDeferred; - }) - }).play(); - - if(this._scrollConnected){ - this._scrollConnected = false; - } - var h; - while(h = this._modalconnects.pop()){ - h.remove(); - } - - if(this._relativePosition){ - delete this._relativePosition; - } - this._set("open", false); - - return this._fadeOutDeferred; - }, - - resize: function(){ - // summary: - // Called when viewport scrolled or size changed. Position the Dialog and the underlay. - // tags: - // private - if(this.domNode.style.display != "none"){ - if(DialogUnderlay._singleton){ // avoid race condition during show() - DialogUnderlay._singleton.layout(); - } - this._position(); - this._size(); - } - }, - - destroy: function(){ - if(this._fadeInDeferred){ - this._fadeInDeferred.cancel(); - } - if(this._fadeOutDeferred){ - this._fadeOutDeferred.cancel(); - } - if(this._moveable){ - this._moveable.destroy(); - } - var h; - while(h = this._modalconnects.pop()){ - h.remove(); - } - - DialogLevelManager.hide(this); - - this.inherited(arguments); - } - }); - - var Dialog = declare("dijit.Dialog", [ContentPane, _DialogBase], { - // summary: - // A modal dialog Widget. - // description: - // Pops up a modal dialog window, blocking access to the screen - // and also graying out the screen Dialog is extended from - // ContentPane so it supports all the same parameters (href, etc.). - // example: - // | <div data-dojo-type="dijit/Dialog" data-dojo-props="href: 'test.html'"></div> - // example: - // | var foo = new Dialog({ title: "test dialog", content: "test content" }; - // | foo.placeAt(win.body()); - // | foo.startup(); - }); - Dialog._DialogBase = _DialogBase; // for monkey patching and dojox/widget/DialogSimple - - var DialogLevelManager = Dialog._DialogLevelManager = { - // summary: - // Controls the various active "levels" on the page, starting with the - // stuff initially visible on the page (at z-index 0), and then having an entry for - // each Dialog shown. - - _beginZIndex: 950, - - show: function(/*dijit/_WidgetBase*/ dialog, /*Object*/ underlayAttrs){ - // summary: - // Call right before fade-in animation for new dialog. - // Saves current focus, displays/adjusts underlay for new dialog, - // and sets the z-index of the dialog itself. - // - // New dialog will be displayed on top of all currently displayed dialogs. - // - // Caller is responsible for setting focus in new dialog after the fade-in - // animation completes. - - // Save current focus - ds[ds.length-1].focus = focus.curNode; - - // Display the underlay, or if already displayed then adjust for this new dialog - // TODO: one underlay per document (based on dialog.ownerDocument) - var underlay = DialogUnderlay._singleton; - if(!underlay || underlay._destroyed){ - underlay = dijit._underlay = DialogUnderlay._singleton = new DialogUnderlay(underlayAttrs); - }else{ - underlay.set(dialog.underlayAttrs); - } - - // Set z-index a bit above previous dialog - var zIndex = ds[ds.length-1].dialog ? ds[ds.length-1].zIndex + 2 : Dialog._DialogLevelManager._beginZIndex; - if(ds.length == 1){ // first dialog - underlay.show(); - } - domStyle.set(DialogUnderlay._singleton.domNode, 'zIndex', zIndex - 1); - - // Dialog - domStyle.set(dialog.domNode, 'zIndex', zIndex); - - ds.push({dialog: dialog, underlayAttrs: underlayAttrs, zIndex: zIndex}); - }, - - hide: function(/*dijit/_WidgetBase*/ dialog){ - // summary: - // Called when the specified dialog is hidden/destroyed, after the fade-out - // animation ends, in order to reset page focus, fix the underlay, etc. - // If the specified dialog isn't open then does nothing. - // - // Caller is responsible for either setting display:none on the dialog domNode, - // or calling dijit/popup.hide(), or removing it from the page DOM. - - if(ds[ds.length-1].dialog == dialog){ - // Removing the top (or only) dialog in the stack, return focus - // to previous dialog - - ds.pop(); - - var pd = ds[ds.length-1]; // the new active dialog (or the base page itself) - - // Adjust underlay, unless the underlay widget has already been destroyed - // because we are being called during page unload (when all widgets are destroyed) - if(!DialogUnderlay._singleton._destroyed){ - if(ds.length == 1){ - // Returning to original page. Hide the underlay. - DialogUnderlay._singleton.hide(); - }else{ - // Popping back to previous dialog, adjust underlay. - domStyle.set(DialogUnderlay._singleton.domNode, 'zIndex', pd.zIndex - 1); - DialogUnderlay._singleton.set(pd.underlayAttrs); - } - } - - // Adjust focus - if(dialog.refocus){ - // If we are returning control to a previous dialog but for some reason - // that dialog didn't have a focused field, set focus to first focusable item. - // This situation could happen if two dialogs appeared at nearly the same time, - // since a dialog doesn't set it's focus until the fade-in is finished. - var focus = pd.focus; - if(pd.dialog && (!focus || !dom.isDescendant(focus, pd.dialog.domNode))){ - pd.dialog._getFocusItems(pd.dialog.domNode); - focus = pd.dialog._firstFocusItem; - } - - if(focus){ - // Refocus the button that spawned the Dialog. This will fail in corner cases including - // page unload on IE, because the dijit/form/Button that launched the Dialog may get destroyed - // before this code runs. (#15058) - try{ - focus.focus(); - }catch(e){} - } - } - }else{ - // Removing a dialog out of order (#9944, #10705). - // Don't need to mess with underlay or z-index or anything. - var idx = array.indexOf(array.map(ds, function(elem){return elem.dialog}), dialog); - if(idx != -1){ - ds.splice(idx, 1); - } - } - }, - - isTop: function(/*dijit/_WidgetBase*/ dialog){ - // summary: - // Returns true if specified Dialog is the top in the task - return ds[ds.length-1].dialog == dialog; - } - }; - - // Stack representing the various active "levels" on the page, starting with the - // stuff initially visible on the page (at z-index 0), and then having an entry for - // each Dialog shown. - // Each element in stack has form { - // dialog: dialogWidget, - // focus: returnFromGetFocus(), - // underlayAttrs: attributes to set on underlay (when this widget is active) - // } - var ds = Dialog._dialogStack = [ - {dialog: null, focus: null, underlayAttrs: null} // entry for stuff at z-index: 0 - ]; - - // Back compat w/1.6, remove for 2.0 - if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/TooltipDialog"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - return Dialog; -}); - -}, -'dijit/_base/focus':function(){ -define("dijit/_base/focus", [ - "dojo/_base/array", // array.forEach - "dojo/dom", // dom.isDescendant - "dojo/_base/lang", // lang.isArray - "dojo/topic", // publish - "dojo/_base/window", // win.doc win.doc.selection win.global win.global.getSelection win.withGlobal - "../focus", - "../main" // for exporting symbols to dijit -], function(array, dom, lang, topic, win, focus, dijit){ - - // module: - // dijit/_base/focus - - var exports = { - // summary: - // Deprecated module to monitor currently focused node and stack of currently focused widgets. - // New code should access dijit/focus directly. - - // _curFocus: DomNode - // Currently focused item on screen - _curFocus: null, - - // _prevFocus: DomNode - // Previously focused item on screen - _prevFocus: null, - - isCollapsed: function(){ - // summary: - // Returns true if there is no text selected - return dijit.getBookmark().isCollapsed; - }, - - getBookmark: function(){ - // summary: - // Retrieves a bookmark that can be used with moveToBookmark to return to the same range - var bm, rg, tg, sel = win.doc.selection, cf = focus.curNode; - - if(win.global.getSelection){ - //W3C Range API for selections. - sel = win.global.getSelection(); - if(sel){ - if(sel.isCollapsed){ - tg = cf? cf.tagName : ""; - if(tg){ - //Create a fake rangelike item to restore selections. - tg = tg.toLowerCase(); - if(tg == "textarea" || - (tg == "input" && (!cf.type || cf.type.toLowerCase() == "text"))){ - sel = { - start: cf.selectionStart, - end: cf.selectionEnd, - node: cf, - pRange: true - }; - return {isCollapsed: (sel.end <= sel.start), mark: sel}; //Object. - } - } - bm = {isCollapsed:true}; - if(sel.rangeCount){ - bm.mark = sel.getRangeAt(0).cloneRange(); - } - }else{ - rg = sel.getRangeAt(0); - bm = {isCollapsed: false, mark: rg.cloneRange()}; - } - } - }else if(sel){ - // If the current focus was a input of some sort and no selection, don't bother saving - // a native bookmark. This is because it causes issues with dialog/page selection restore. - // So, we need to create psuedo bookmarks to work with. - tg = cf ? cf.tagName : ""; - tg = tg.toLowerCase(); - if(cf && tg && (tg == "button" || tg == "textarea" || tg == "input")){ - if(sel.type && sel.type.toLowerCase() == "none"){ - return { - isCollapsed: true, - mark: null - } - }else{ - rg = sel.createRange(); - return { - isCollapsed: rg.text && rg.text.length?false:true, - mark: { - range: rg, - pRange: true - } - }; - } - } - bm = {}; - - //'IE' way for selections. - try{ - // createRange() throws exception when dojo in iframe - //and nothing selected, see #9632 - rg = sel.createRange(); - bm.isCollapsed = !(sel.type == 'Text' ? rg.htmlText.length : rg.length); - }catch(e){ - bm.isCollapsed = true; - return bm; - } - if(sel.type.toUpperCase() == 'CONTROL'){ - if(rg.length){ - bm.mark=[]; - var i=0,len=rg.length; - while(i<len){ - bm.mark.push(rg.item(i++)); - } - }else{ - bm.isCollapsed = true; - bm.mark = null; - } - }else{ - bm.mark = rg.getBookmark(); - } - }else{ - console.warn("No idea how to store the current selection for this browser!"); - } - return bm; // Object - }, - - moveToBookmark: function(/*Object*/ bookmark){ - // summary: - // Moves current selection to a bookmark - // bookmark: - // This should be a returned object from dijit.getBookmark() - - var _doc = win.doc, - mark = bookmark.mark; - if(mark){ - if(win.global.getSelection){ - //W3C Rangi API (FF, WebKit, Opera, etc) - var sel = win.global.getSelection(); - if(sel && sel.removeAllRanges){ - if(mark.pRange){ - var n = mark.node; - n.selectionStart = mark.start; - n.selectionEnd = mark.end; - }else{ - sel.removeAllRanges(); - sel.addRange(mark); - } - }else{ - console.warn("No idea how to restore selection for this browser!"); - } - }else if(_doc.selection && mark){ - //'IE' way. - var rg; - if(mark.pRange){ - rg = mark.range; - }else if(lang.isArray(mark)){ - rg = _doc.body.createControlRange(); - //rg.addElement does not have call/apply method, so can not call it directly - //rg is not available in "range.addElement(item)", so can't use that either - array.forEach(mark, function(n){ - rg.addElement(n); - }); - }else{ - rg = _doc.body.createTextRange(); - rg.moveToBookmark(mark); - } - rg.select(); - } - } - }, - - getFocus: function(/*Widget?*/ menu, /*Window?*/ openedForWindow){ - // summary: - // Called as getFocus(), this returns an Object showing the current focus - // and selected text. - // - // Called as getFocus(widget), where widget is a (widget representing) a button - // that was just pressed, it returns where focus was before that button - // was pressed. (Pressing the button may have either shifted focus to the button, - // or removed focus altogether.) In this case the selected text is not returned, - // since it can't be accurately determined. - // - // menu: dijit/_WidgetBase|{domNode: DomNode} structure - // The button that was just pressed. If focus has disappeared or moved - // to this button, returns the previous focus. In this case the bookmark - // information is already lost, and null is returned. - // - // openedForWindow: - // iframe in which menu was opened - // - // returns: - // A handle to restore focus/selection, to be passed to `dijit.focus` - var node = !focus.curNode || (menu && dom.isDescendant(focus.curNode, menu.domNode)) ? dijit._prevFocus : focus.curNode; - return { - node: node, - bookmark: node && (node == focus.curNode) && win.withGlobal(openedForWindow || win.global, dijit.getBookmark), - openedForWindow: openedForWindow - }; // Object - }, - - // _activeStack: dijit/_WidgetBase[] - // List of currently active widgets (focused widget and it's ancestors) - _activeStack: [], - - registerIframe: function(/*DomNode*/ iframe){ - // summary: - // Registers listeners on the specified iframe so that any click - // or focus event on that iframe (or anything in it) is reported - // as a focus/click event on the `<iframe>` itself. - // description: - // Currently only used by editor. - // returns: - // Handle to pass to unregisterIframe() - return focus.registerIframe(iframe); - }, - - unregisterIframe: function(/*Object*/ handle){ - // summary: - // Unregisters listeners on the specified iframe created by registerIframe. - // After calling be sure to delete or null out the handle itself. - // handle: - // Handle returned by registerIframe() - - handle && handle.remove(); - }, - - registerWin: function(/*Window?*/targetWindow, /*DomNode?*/ effectiveNode){ - // summary: - // Registers listeners on the specified window (either the main - // window or an iframe's window) to detect when the user has clicked somewhere - // or focused somewhere. - // description: - // Users should call registerIframe() instead of this method. - // targetWindow: - // If specified this is the window associated with the iframe, - // i.e. iframe.contentWindow. - // effectiveNode: - // If specified, report any focus events inside targetWindow as - // an event on effectiveNode, rather than on evt.target. - // returns: - // Handle to pass to unregisterWin() - - return focus.registerWin(targetWindow, effectiveNode); - }, - - unregisterWin: function(/*Handle*/ handle){ - // summary: - // Unregisters listeners on the specified window (either the main - // window or an iframe's window) according to handle returned from registerWin(). - // After calling be sure to delete or null out the handle itself. - - handle && handle.remove(); - } - }; - - // Override focus singleton's focus function so that dijit.focus() - // has backwards compatible behavior of restoring selection (although - // probably no one is using that). - focus.focus = function(/*Object|DomNode */ handle){ - // summary: - // Sets the focused node and the selection according to argument. - // To set focus to an iframe's content, pass in the iframe itself. - // handle: - // object returned by get(), or a DomNode - - if(!handle){ return; } - - var node = "node" in handle ? handle.node : handle, // because handle is either DomNode or a composite object - bookmark = handle.bookmark, - openedForWindow = handle.openedForWindow, - collapsed = bookmark ? bookmark.isCollapsed : false; - - // Set the focus - // Note that for iframe's we need to use the <iframe> to follow the parentNode chain, - // but we need to set focus to iframe.contentWindow - if(node){ - var focusNode = (node.tagName.toLowerCase() == "iframe") ? node.contentWindow : node; - if(focusNode && focusNode.focus){ - try{ - // Gecko throws sometimes if setting focus is impossible, - // node not displayed or something like that - focusNode.focus(); - }catch(e){/*quiet*/} - } - focus._onFocusNode(node); - } - - // set the selection - // do not need to restore if current selection is not empty - // (use keyboard to select a menu item) or if previous selection was collapsed - // as it may cause focus shift (Esp in IE). - if(bookmark && win.withGlobal(openedForWindow || win.global, dijit.isCollapsed) && !collapsed){ - if(openedForWindow){ - openedForWindow.focus(); - } - try{ - win.withGlobal(openedForWindow || win.global, dijit.moveToBookmark, null, [bookmark]); - }catch(e2){ - /*squelch IE internal error, see http://trac.dojotoolkit.org/ticket/1984 */ - } - } - }; - - // For back compatibility, monitor changes to focused node and active widget stack, - // publishing events and copying changes from focus manager variables into dijit (top level) variables - focus.watch("curNode", function(name, oldVal, newVal){ - dijit._curFocus = newVal; - dijit._prevFocus = oldVal; - if(newVal){ - topic.publish("focusNode", newVal); // publish - } - }); - focus.watch("activeStack", function(name, oldVal, newVal){ - dijit._activeStack = newVal; - }); - - focus.on("widget-blur", function(widget, by){ - topic.publish("widgetBlur", widget, by); // publish - }); - focus.on("widget-focus", function(widget, by){ - topic.publish("widgetFocus", widget, by); // publish - }); - - lang.mixin(dijit, exports); - - /*===== return exports; =====*/ - return dijit; // for back compat :-( -}); - -}, -'dijit/tree/dndSource':function(){ -define("dijit/tree/dndSource", [ - "dojo/_base/array", // array.forEach array.indexOf array.map - "dojo/_base/connect", // isCopyKey - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add - "dojo/dom-geometry", // domGeometry.position - "dojo/_base/lang", // lang.mixin lang.hitch - "dojo/on", // subscribe - "dojo/touch", - "dojo/topic", - "dojo/dnd/Manager", // DNDManager.manager - "./_dndSelector" -], function(array, connect, declare, domClass, domGeometry, lang, on, touch, topic, DNDManager, _dndSelector){ - -// module: -// dijit/tree/dndSource -// summary: -// Handles drag and drop operations (as a source or a target) for `dijit.Tree` - -/*===== -var __Item = { - // summary: - // New item to be added to the Tree, like: - // id: Anything - id: "", - // name: String - name: "" -}; -=====*/ - -var dndSource = declare("dijit.tree.dndSource", _dndSelector, { - // summary: - // Handles drag and drop operations (as a source or a target) for `dijit.Tree` - - // isSource: Boolean - // Can be used as a DnD source. - isSource: true, - - // accept: String[] - // List of accepted types (text strings) for the Tree; defaults to - // ["text"] - accept: ["text", "treeNode"], - - // copyOnly: [private] Boolean - // Copy items, if true, use a state of Ctrl key otherwise - copyOnly: false, - - // dragThreshold: Number - // The move delay in pixels before detecting a drag; 5 by default - dragThreshold: 5, - - // betweenThreshold: Integer - // Distance from upper/lower edge of node to allow drop to reorder nodes - betweenThreshold: 0, - - // Flag used by Avatar.js to signal to generate text node when dragging - generateText: true, - - constructor: function(/*dijit/Tree*/ tree, /*dijit/tree/dndSource*/ params){ - // summary: - // a constructor of the Tree DnD Source - // tags: - // private - if(!params){ params = {}; } - lang.mixin(this, params); - var type = params.accept instanceof Array ? params.accept : ["text", "treeNode"]; - this.accept = null; - if(type.length){ - this.accept = {}; - for(var i = 0; i < type.length; ++i){ - this.accept[type[i]] = 1; - } - } - - // class-specific variables - this.isDragging = false; - this.mouseDown = false; - this.targetAnchor = null; // DOMNode corresponding to the currently moused over TreeNode - this.targetBox = null; // coordinates of this.targetAnchor - this.dropPosition = ""; // whether mouse is over/after/before this.targetAnchor - this._lastX = 0; - this._lastY = 0; - - // states - this.sourceState = ""; - if(this.isSource){ - domClass.add(this.node, "dojoDndSource"); - } - this.targetState = ""; - if(this.accept){ - domClass.add(this.node, "dojoDndTarget"); - } - - // set up events - this.topics = [ - topic.subscribe("/dnd/source/over", lang.hitch(this, "onDndSourceOver")), - topic.subscribe("/dnd/start", lang.hitch(this, "onDndStart")), - topic.subscribe("/dnd/drop", lang.hitch(this, "onDndDrop")), - topic.subscribe("/dnd/cancel", lang.hitch(this, "onDndCancel")) - ]; - }, - - // methods - checkAcceptance: function(/*===== source, nodes =====*/){ - // summary: - // Checks if the target can accept nodes from this source - // source: dijit/tree/dndSource - // The source which provides items - // nodes: DOMNode[] - // Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if - // source is a dijit/Tree. - // tags: - // extension - return true; // Boolean - }, - - copyState: function(keyPressed){ - // summary: - // Returns true, if we need to copy items, false to move. - // It is separated to be overwritten dynamically, if needed. - // keyPressed: Boolean - // The "copy" control key was pressed - // tags: - // protected - return this.copyOnly || keyPressed; // Boolean - }, - destroy: function(){ - // summary: - // Prepares the object to be garbage-collected. - this.inherited(arguments); - var h; - while(h = this.topics.pop()){ h.remove(); } - this.targetAnchor = null; - }, - - _onDragMouse: function(e, firstTime){ - // summary: - // Helper method for processing onmousemove/onmouseover events while drag is in progress. - // Keeps track of current drop target. - // e: Event - // The mousemove event. - // firstTime: Boolean? - // If this flag is set, this is the first mouse move event of the drag, so call m.canDrop() etc. - // even if newTarget == null because the user quickly dragged a node in the Tree to a position - // over Tree.containerNode but not over any TreeNode (#7971) - - var m = DNDManager.manager(), - oldTarget = this.targetAnchor, // the TreeNode corresponding to TreeNode mouse was previously over - newTarget = this.current, // TreeNode corresponding to TreeNode mouse is currently over - oldDropPosition = this.dropPosition; // the previous drop position (over/before/after) - - // calculate if user is indicating to drop the dragged node before, after, or over - // (i.e., to become a child of) the target node - var newDropPosition = "Over"; - if(newTarget && this.betweenThreshold > 0){ - // If mouse is over a new TreeNode, then get new TreeNode's position and size - if(!this.targetBox || oldTarget != newTarget){ - this.targetBox = domGeometry.position(newTarget.rowNode, true); - } - if((e.pageY - this.targetBox.y) <= this.betweenThreshold){ - newDropPosition = "Before"; - }else if((e.pageY - this.targetBox.y) >= (this.targetBox.h - this.betweenThreshold)){ - newDropPosition = "After"; - } - } - - if(firstTime || newTarget != oldTarget || newDropPosition != oldDropPosition){ - if(oldTarget){ - this._removeItemClass(oldTarget.rowNode, oldDropPosition); - } - if(newTarget){ - this._addItemClass(newTarget.rowNode, newDropPosition); - } - - // Check if it's ok to drop the dragged node on/before/after the target node. - if(!newTarget){ - m.canDrop(false); - }else if(newTarget == this.tree.rootNode && newDropPosition != "Over"){ - // Can't drop before or after tree's root node; the dropped node would just disappear (at least visually) - m.canDrop(false); - }else{ - // Guard against dropping onto yourself (TODO: guard against dropping onto your descendant, #7140) - var sameId = false; - if(m.source == this){ - for(var dragId in this.selection){ - var dragNode = this.selection[dragId]; - if(dragNode.item === newTarget.item){ - sameId = true; - break; - } - } - } - if(sameId){ - m.canDrop(false); - }else if(this.checkItemAcceptance(newTarget.rowNode, m.source, newDropPosition.toLowerCase()) - && !this._isParentChildDrop(m.source, newTarget.rowNode)){ - m.canDrop(true); - }else{ - m.canDrop(false); - } - } - - this.targetAnchor = newTarget; - this.dropPosition = newDropPosition; - } - }, - - onMouseMove: function(e){ - // summary: - // Called for any onmousemove/ontouchmove events over the Tree - // e: Event - // onmousemouse/ontouchmove event - // tags: - // private - if(this.isDragging && this.targetState == "Disabled"){ return; } - this.inherited(arguments); - var m = DNDManager.manager(); - if(this.isDragging){ - this._onDragMouse(e); - }else{ - if(this.mouseDown && this.isSource && - (Math.abs(e.pageX-this._lastX)>=this.dragThreshold || Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){ - var nodes = this.getSelectedTreeNodes(); - if(nodes.length){ - if(nodes.length > 1){ - //filter out all selected items which has one of their ancestor selected as well - var seen = this.selection, i = 0, r = [], n, p; - nextitem: while((n = nodes[i++])){ - for(p = n.getParent(); p && p !== this.tree; p = p.getParent()){ - if(seen[p.id]){ //parent is already selected, skip this node - continue nextitem; - } - } - //this node does not have any ancestors selected, add it - r.push(n); - } - nodes = r; - } - nodes = array.map(nodes, function(n){return n.domNode}); - m.startDrag(this, nodes, this.copyState(connect.isCopyKey(e))); - this._onDragMouse(e, true); // because this may be the only mousemove event we get before the drop - } - } - } - }, - - onMouseDown: function(e){ - // summary: - // Event processor for onmousedown/ontouchstart - // e: Event - // onmousedown/ontouchend event - // tags: - // private - this.mouseDown = true; - this.mouseButton = e.button; - this._lastX = e.pageX; - this._lastY = e.pageY; - this.inherited(arguments); - }, - - onMouseUp: function(e){ - // summary: - // Event processor for onmouseup/ontouchend - // e: Event - // onmouseup/ontouchend event - // tags: - // private - if(this.mouseDown){ - this.mouseDown = false; - this.inherited(arguments); - } - }, - - onMouseOut: function(){ - // summary: - // Event processor for when mouse is moved away from a TreeNode - // tags: - // private - this.inherited(arguments); - this._unmarkTargetAnchor(); - }, - - checkItemAcceptance: function(/*===== target, source, position =====*/){ - // summary: - // Stub function to be overridden if one wants to check for the ability to drop at the node/item level - // description: - // In the base case, this is called to check if target can become a child of source. - // When betweenThreshold is set, position="before" or "after" means that we - // are asking if the source node can be dropped before/after the target node. - // target: DOMNode - // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to - // Use dijit.getEnclosingWidget(target) to get the TreeNode. - // source: dijit/tree/dndSource - // The (set of) nodes we are dropping - // position: String - // "over", "before", or "after" - // tags: - // extension - return true; - }, - - // topic event processors - onDndSourceOver: function(source){ - // summary: - // Topic event processor for /dnd/source/over, called when detected a current source. - // source: Object - // The dijit/tree/dndSource / dojo/dnd/Source which has the mouse over it - // tags: - // private - if(this != source){ - this.mouseDown = false; - this._unmarkTargetAnchor(); - }else if(this.isDragging){ - var m = DNDManager.manager(); - m.canDrop(false); - } - }, - onDndStart: function(source, nodes, copy){ - // summary: - // Topic event processor for /dnd/start, called to initiate the DnD operation - // source: Object - // The dijit/tree/dndSource / dojo/dnd/Source which is providing the items - // nodes: DomNode[] - // The list of transferred items, dndTreeNode nodes if dragging from a Tree - // copy: Boolean - // Copy items, if true, move items otherwise - // tags: - // private - - if(this.isSource){ - this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : ""); - } - var accepted = this.checkAcceptance(source, nodes); - - this._changeState("Target", accepted ? "" : "Disabled"); - - if(this == source){ - DNDManager.manager().overSource(this); - } - - this.isDragging = true; - }, - - itemCreator: function(nodes /*===== , target, source =====*/){ - // summary: - // Returns objects passed to `Tree.model.newItem()` based on DnD nodes - // dropped onto the tree. Developer must override this method to enable - // dropping from external sources onto this Tree, unless the Tree.model's items - // happen to look like {id: 123, name: "Apple" } with no other attributes. - // description: - // For each node in nodes[], which came from source, create a hash of name/value - // pairs to be passed to Tree.model.newItem(). Returns array of those hashes. - // nodes: DomNode[] - // target: DomNode - // source: dojo/dnd/Source - // returns: __Item[] - // Array of name/value hashes for each new item to be added to the Tree - // tags: - // extension - - // TODO: for 2.0 refactor so itemCreator() is called once per drag node, and - // make signature itemCreator(sourceItem, node, target) (or similar). - - return array.map(nodes, function(node){ - return { - "id": node.id, - "name": node.textContent || node.innerText || "" - }; - }); // Object[] - }, - - onDndDrop: function(source, nodes, copy){ - // summary: - // Topic event processor for /dnd/drop, called to finish the DnD operation. - // description: - // Updates data store items according to where node was dragged from and dropped - // to. The tree will then respond to those data store updates and redraw itself. - // source: Object - // The dijit/tree/dndSource / dojo/dnd/Source which is providing the items - // nodes: DomNode[] - // The list of transferred items, dndTreeNode nodes if dragging from a Tree - // copy: Boolean - // Copy items, if true, move items otherwise - // tags: - // protected - if(this.containerState == "Over"){ - var tree = this.tree, - model = tree.model, - target = this.targetAnchor; - - this.isDragging = false; - - // Compute the new parent item - var newParentItem; - var insertIndex; - var before; // drop source before (aka previous sibling) of target - newParentItem = (target && target.item) || tree.item; - if(this.dropPosition == "Before" || this.dropPosition == "After"){ - // TODO: if there is no parent item then disallow the drop. - // Actually this should be checked during onMouseMove too, to make the drag icon red. - newParentItem = (target.getParent() && target.getParent().item) || tree.item; - // Compute the insert index for reordering - insertIndex = target.getIndexInParent(); - if(this.dropPosition == "After"){ - insertIndex = target.getIndexInParent() + 1; - before = target.getNextSibling() && target.getNextSibling().item; - }else{ - before = target.item; - } - }else{ - newParentItem = (target && target.item) || tree.item; - } - - // If necessary, use this variable to hold array of hashes to pass to model.newItem() - // (one entry in the array for each dragged node). - var newItemsParams; - - array.forEach(nodes, function(node, idx){ - // dojo/dnd/Item representing the thing being dropped. - // Don't confuse the use of item here (meaning a DnD item) with the - // uses below where item means dojo.data item. - var sourceItem = source.getItem(node.id); - - // Information that's available if the source is another Tree - // (possibly but not necessarily this tree, possibly but not - // necessarily the same model as this Tree) - if(array.indexOf(sourceItem.type, "treeNode") != -1){ - var childTreeNode = sourceItem.data, - childItem = childTreeNode.item, - oldParentItem = childTreeNode.getParent().item; - } - - if(source == this){ - // This is a node from my own tree, and we are moving it, not copying. - // Remove item from old parent's children attribute. - // TODO: dijit/tree/dndSelector should implement deleteSelectedNodes() - // and this code should go there. - - if(typeof insertIndex == "number"){ - if(newParentItem == oldParentItem && childTreeNode.getIndexInParent() < insertIndex){ - insertIndex -= 1; - } - } - model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex, before); - }else if(model.isItem(childItem)){ - // Item from same model - // (maybe we should only do this branch if the source is a tree?) - model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex, before); - }else{ - // Get the hash to pass to model.newItem(). A single call to - // itemCreator() returns an array of hashes, one for each drag source node. - if(!newItemsParams){ - newItemsParams = this.itemCreator(nodes, target.rowNode, source); - } - - // Create new item in the tree, based on the drag source. - model.newItem(newItemsParams[idx], newParentItem, insertIndex, before); - } - }, this); - - // Expand the target node (if it's currently collapsed) so the user can see - // where their node was dropped. In particular since that node is still selected. - this.tree._expandNode(target); - } - this.onDndCancel(); - }, - - onDndCancel: function(){ - // summary: - // Topic event processor for /dnd/cancel, called to cancel the DnD operation - // tags: - // private - this._unmarkTargetAnchor(); - this.isDragging = false; - this.mouseDown = false; - delete this.mouseButton; - this._changeState("Source", ""); - this._changeState("Target", ""); - }, - - // When focus moves in/out of the entire Tree - onOverEvent: function(){ - // summary: - // This method is called when mouse is moved over our container (like onmouseenter) - // tags: - // private - this.inherited(arguments); - DNDManager.manager().overSource(this); - }, - onOutEvent: function(){ - // summary: - // This method is called when mouse is moved out of our container (like onmouseleave) - // tags: - // private - this._unmarkTargetAnchor(); - var m = DNDManager.manager(); - if(this.isDragging){ - m.canDrop(false); - } - m.outSource(this); - - this.inherited(arguments); - }, - - _isParentChildDrop: function(source, targetRow){ - // summary: - // Checks whether the dragged items are parent rows in the tree which are being - // dragged into their own children. - // - // source: - // The DragSource object. - // - // targetRow: - // The tree row onto which the dragged nodes are being dropped. - // - // tags: - // private - - // If the dragged object is not coming from the tree this widget belongs to, - // it cannot be invalid. - if(!source.tree || source.tree != this.tree){ - return false; - } - - - var root = source.tree.domNode; - var ids = source.selection; - - var node = targetRow.parentNode; - - // Iterate up the DOM hierarchy from the target drop row, - // checking of any of the dragged nodes have the same ID. - while(node != root && !ids[node.id]){ - node = node.parentNode; - } - - return node.id && ids[node.id]; - }, - - _unmarkTargetAnchor: function(){ - // summary: - // Removes hover class of the current target anchor - // tags: - // private - if(!this.targetAnchor){ return; } - this._removeItemClass(this.targetAnchor.rowNode, this.dropPosition); - this.targetAnchor = null; - this.targetBox = null; - this.dropPosition = null; - }, - - _markDndStatus: function(copy){ - // summary: - // Changes source's state based on "copy" status - this._changeState("Source", copy ? "Copied" : "Moved"); - } -}); - -/*===== -dndSource.__Item = __Item; -=====*/ - -return dndSource; -}); - -}, -'dijit/a11y':function(){ -define("dijit/a11y", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/config", // defaultDuration - "dojo/_base/declare", // declare - "dojo/dom", // dom.byId - "dojo/dom-attr", // domAttr.attr domAttr.has - "dojo/dom-style", // style.style - "dojo/sniff", // has("ie") - "./main" // for exporting methods to dijit namespace -], function(array, config, declare, dom, domAttr, domStyle, has, dijit){ - - // module: - // dijit/a11y - - var shown = (dijit._isElementShown = function(/*Element*/ elem){ - var s = domStyle.get(elem); - return (s.visibility != "hidden") - && (s.visibility != "collapsed") - && (s.display != "none") - && (domAttr.get(elem, "type") != "hidden"); - }); - - dijit.hasDefaultTabStop = function(/*Element*/ elem){ - // summary: - // Tests if element is tab-navigable even without an explicit tabIndex setting - - // No explicit tabIndex setting, need to investigate node type - switch(elem.nodeName.toLowerCase()){ - case "a": - // An <a> w/out a tabindex is only navigable if it has an href - return domAttr.has(elem, "href"); - case "area": - case "button": - case "input": - case "object": - case "select": - case "textarea": - // These are navigable by default - return true; - case "iframe": - // If it's an editor <iframe> then it's tab navigable. - var body; - try{ - // non-IE - var contentDocument = elem.contentDocument; - if("designMode" in contentDocument && contentDocument.designMode == "on"){ - return true; - } - body = contentDocument.body; - }catch(e1){ - // contentWindow.document isn't accessible within IE7/8 - // if the iframe.src points to a foreign url and this - // page contains an element, that could get focus - try{ - body = elem.contentWindow.document.body; - }catch(e2){ - return false; - } - } - return body && (body.contentEditable == 'true' || - (body.firstChild && body.firstChild.contentEditable == 'true')); - default: - return elem.contentEditable == 'true'; - } - }; - - var isTabNavigable = (dijit.isTabNavigable = function(/*Element*/ elem){ - // summary: - // Tests if an element is tab-navigable - - // TODO: convert (and rename method) to return effective tabIndex; will save time in _getTabNavigable() - if(domAttr.get(elem, "disabled")){ - return false; - }else if(domAttr.has(elem, "tabIndex")){ - // Explicit tab index setting - return domAttr.get(elem, "tabIndex") >= 0; // boolean - }else{ - // No explicit tabIndex setting, so depends on node type - return dijit.hasDefaultTabStop(elem); - } - }); - - dijit._getTabNavigable = function(/*DOMNode*/ root){ - // summary: - // Finds descendants of the specified root node. - // description: - // Finds the following descendants of the specified root node: - // - // - the first tab-navigable element in document order - // without a tabIndex or with tabIndex="0" - // - the last tab-navigable element in document order - // without a tabIndex or with tabIndex="0" - // - the first element in document order with the lowest - // positive tabIndex value - // - the last element in document order with the highest - // positive tabIndex value - var first, last, lowest, lowestTabindex, highest, highestTabindex, radioSelected = {}; - - function radioName(node){ - // If this element is part of a radio button group, return the name for that group. - return node && node.tagName.toLowerCase() == "input" && - node.type && node.type.toLowerCase() == "radio" && - node.name && node.name.toLowerCase(); - } - - var walkTree = function(/*DOMNode*/ parent){ - for(var child = parent.firstChild; child; child = child.nextSibling){ - // Skip text elements, hidden elements, and also non-HTML elements (those in custom namespaces) in IE, - // since show() invokes getAttribute("type"), which crash on VML nodes in IE. - if(child.nodeType != 1 || (has("ie") <= 9 && child.scopeName !== "HTML") || !shown(child)){ - continue; - } - - if(isTabNavigable(child)){ - var tabindex = +domAttr.get(child, "tabIndex"); // + to convert string --> number - if(!domAttr.has(child, "tabIndex") || tabindex == 0){ - if(!first){ - first = child; - } - last = child; - }else if(tabindex > 0){ - if(!lowest || tabindex < lowestTabindex){ - lowestTabindex = tabindex; - lowest = child; - } - if(!highest || tabindex >= highestTabindex){ - highestTabindex = tabindex; - highest = child; - } - } - var rn = radioName(child); - if(domAttr.get(child, "checked") && rn){ - radioSelected[rn] = child; - } - } - if(child.nodeName.toUpperCase() != 'SELECT'){ - walkTree(child); - } - } - }; - if(shown(root)){ - walkTree(root); - } - function rs(node){ - // substitute checked radio button for unchecked one, if there is a checked one with the same name. - return radioSelected[radioName(node)] || node; - } - - return { first: rs(first), last: rs(last), lowest: rs(lowest), highest: rs(highest) }; - }; - dijit.getFirstInTabbingOrder = function(/*String|DOMNode*/ root, /*Document?*/ doc){ - // summary: - // Finds the descendant of the specified root node - // that is first in the tabbing order - var elems = dijit._getTabNavigable(dom.byId(root, doc)); - return elems.lowest ? elems.lowest : elems.first; // DomNode - }; - - dijit.getLastInTabbingOrder = function(/*String|DOMNode*/ root, /*Document?*/ doc){ - // summary: - // Finds the descendant of the specified root node - // that is last in the tabbing order - var elems = dijit._getTabNavigable(dom.byId(root, doc)); - return elems.last ? elems.last : elems.highest; // DomNode - }; - - return { - // summary: - // Accessibility utility functions (keyboard, tab stops, etc.) - - hasDefaultTabStop: dijit.hasDefaultTabStop, - isTabNavigable: dijit.isTabNavigable, - _getTabNavigable: dijit._getTabNavigable, - getFirstInTabbingOrder: dijit.getFirstInTabbingOrder, - getLastInTabbingOrder: dijit.getLastInTabbingOrder - }; -}); - -}, -'dijit/form/_ToggleButtonMixin':function(){ -define("dijit/form/_ToggleButtonMixin", [ - "dojo/_base/declare", // declare - "dojo/dom-attr" // domAttr.set -], function(declare, domAttr){ - -// module: -// dijit/form/_ToggleButtonMixin - -return declare("dijit.form._ToggleButtonMixin", null, { - // summary: - // A mixin to provide functionality to allow a button that can be in two states (checked or not). - - // checked: Boolean - // Corresponds to the native HTML `<input>` element's attribute. - // In markup, specified as "checked='checked'" or just "checked". - // True if the button is depressed, or the checkbox is checked, - // or the radio button is selected, etc. - checked: false, - - // aria-pressed for toggle buttons, and aria-checked for checkboxes - _aria_attr: "aria-pressed", - - _onClick: function(/*Event*/ evt){ - var original = this.checked; - this._set('checked', !original); // partially set the toggled value, assuming the toggle will work, so it can be overridden in the onclick handler - var ret = this.inherited(arguments); // the user could reset the value here - this.set('checked', ret ? this.checked : original); // officially set the toggled or user value, or reset it back - return ret; - }, - - _setCheckedAttr: function(/*Boolean*/ value, /*Boolean?*/ priorityChange){ - this._set("checked", value); - var node = this.focusNode || this.domNode; - domAttr.set(node, "checked", !!value); // "mixed" -> true - if(value){ - node.setAttribute("checked", ""); - }else{ - node.removeAttribute("checked"); - } - node.setAttribute(this._aria_attr, String(value)); // aria values should be strings - this._handleOnChange(value, priorityChange); - }, - - reset: function(){ - // summary: - // Reset the widget's value to what it was at initialization time - - this._hasBeenBlurred = false; - - // set checked state to original setting - this.set('checked', this.params.checked || false); - } -}); - -}); - -}, -'dijit/_Widget':function(){ -define("dijit/_Widget", [ - "dojo/aspect", // aspect.around - "dojo/_base/config", // config.isDebug - "dojo/_base/connect", // connect.connect - "dojo/_base/declare", // declare - "dojo/has", - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.hitch - "dojo/query", - "dojo/ready", - "./registry", // registry.byNode - "./_WidgetBase", - "./_OnDijitClickMixin", - "./_FocusMixin", - "dojo/uacss", // browser sniffing (included for back-compat; subclasses may be using) - "./hccss" // high contrast mode sniffing (included to set CSS classes on <body>, module ret value unused) -], function(aspect, config, connect, declare, has, kernel, lang, query, ready, - registry, _WidgetBase, _OnDijitClickMixin, _FocusMixin){ - - -// module: -// dijit/_Widget - - -function connectToDomNode(){ - // summary: - // If user connects to a widget method === this function, then they will - // instead actually be connecting the equivalent event on this.domNode -} - -// Trap dojo.connect() calls to connectToDomNode methods, and redirect to _Widget.on() -function aroundAdvice(originalConnect){ - return function(obj, event, scope, method){ - if(obj && typeof event == "string" && obj[event] == connectToDomNode){ - return obj.on(event.substring(2).toLowerCase(), lang.hitch(scope, method)); - } - return originalConnect.apply(connect, arguments); - }; -} -aspect.around(connect, "connect", aroundAdvice); -if(kernel.connect){ - aspect.around(kernel, "connect", aroundAdvice); -} - -var _Widget = declare("dijit._Widget", [_WidgetBase, _OnDijitClickMixin, _FocusMixin], { - // summary: - // Old base class for widgets. New widgets should extend `dijit/_WidgetBase` instead - // description: - // Old Base class for Dijit widgets. - // - // Extends _WidgetBase, adding support for: - // - // - declaratively/programatically specifying widget initialization parameters like - // onMouseMove="foo" that call foo when this.domNode gets a mousemove event - // - ondijitclick: - // Support new data-dojo-attach-event="ondijitclick: ..." that is triggered by a mouse click or a SPACE/ENTER keypress - // - focus related functions: - // In particular, the onFocus()/onBlur() callbacks. Driven internally by - // dijit/_base/focus.js. - // - deprecated methods - // - onShow(), onHide(), onClose() - // - // Also, by loading code in dijit/_base, turns on: - // - // - browser sniffing (putting browser class like `dj_ie` on `<html>` node) - // - high contrast mode sniffing (add `dijit_a11y` class to `<body>` if machine is in high contrast mode) - - - ////////////////// DEFERRED CONNECTS /////////////////// - - onClick: connectToDomNode, - /*===== - onClick: function(event){ - // summary: - // Connect to this function to receive notifications of mouse click events. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onDblClick: connectToDomNode, - /*===== - onDblClick: function(event){ - // summary: - // Connect to this function to receive notifications of mouse double click events. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onKeyDown: connectToDomNode, - /*===== - onKeyDown: function(event){ - // summary: - // Connect to this function to receive notifications of keys being pressed down. - // event: - // key Event - // tags: - // callback - }, - =====*/ - onKeyPress: connectToDomNode, - /*===== - onKeyPress: function(event){ - // summary: - // Connect to this function to receive notifications of printable keys being typed. - // event: - // key Event - // tags: - // callback - }, - =====*/ - onKeyUp: connectToDomNode, - /*===== - onKeyUp: function(event){ - // summary: - // Connect to this function to receive notifications of keys being released. - // event: - // key Event - // tags: - // callback - }, - =====*/ - onMouseDown: connectToDomNode, - /*===== - onMouseDown: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse button is pressed down. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseMove: connectToDomNode, - /*===== - onMouseMove: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse moves over nodes contained within this widget. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseOut: connectToDomNode, - /*===== - onMouseOut: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse moves off of nodes contained within this widget. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseOver: connectToDomNode, - /*===== - onMouseOver: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse moves onto nodes contained within this widget. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseLeave: connectToDomNode, - /*===== - onMouseLeave: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse moves off of this widget. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseEnter: connectToDomNode, - /*===== - onMouseEnter: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse moves onto this widget. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - onMouseUp: connectToDomNode, - /*===== - onMouseUp: function(event){ - // summary: - // Connect to this function to receive notifications of when the mouse button is released. - // event: - // mouse Event - // tags: - // callback - }, - =====*/ - - constructor: function(params /*===== ,srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified: - // - // - use srcNodeRef.innerHTML as my contents - // - if this is a behavioral widget then apply behavior to that srcNodeRef - // - otherwise, replace srcNodeRef with my generated DOM tree - - // extract parameters like onMouseMove that should connect directly to this.domNode - this._toConnect = {}; - for(var name in params){ - if(this[name] === connectToDomNode){ - this._toConnect[name.replace(/^on/, "").toLowerCase()] = params[name]; - delete params[name]; - } - } - }, - - postCreate: function(){ - this.inherited(arguments); - - // perform connection from this.domNode to user specified handlers (ex: onMouseMove) - for(var name in this._toConnect){ - this.on(name, this._toConnect[name]); - } - delete this._toConnect; - }, - - on: function(/*String|Function*/ type, /*Function*/ func){ - if(this[this._onMap(type)] === connectToDomNode){ - // Use connect.connect() rather than on() to get handling for "onmouseenter" on non-IE, - // normalization of onkeypress/onkeydown to behave like firefox, etc. - // Also, need to specify context as "this" rather than the default context of the DOMNode - // Remove in 2.0. - return connect.connect(this.domNode, type.toLowerCase(), this, func); - } - return this.inherited(arguments); - }, - - _setFocusedAttr: function(val){ - // Remove this method in 2.0 (or sooner), just here to set _focused == focused, for back compat - // (but since it's a private variable we aren't required to keep supporting it). - this._focused = val; - this._set("focused", val); - }, - - ////////////////// DEPRECATED METHODS /////////////////// - - setAttribute: function(/*String*/ attr, /*anything*/ value){ - // summary: - // Deprecated. Use set() instead. - // tags: - // deprecated - kernel.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.", "", "2.0"); - this.set(attr, value); - }, - - attr: function(/*String|Object*/name, /*Object?*/value){ - // summary: - // Set or get properties on a widget instance. - // name: - // The property to get or set. If an object is passed here and not - // a string, its keys are used as names of attributes to be set - // and the value of the object as values to set in the widget. - // value: - // Optional. If provided, attr() operates as a setter. If omitted, - // the current value of the named property is returned. - // description: - // This method is deprecated, use get() or set() directly. - - // Print deprecation warning but only once per calling function - if(config.isDebug){ - var alreadyCalledHash = arguments.callee._ach || (arguments.callee._ach = {}), - caller = (arguments.callee.caller || "unknown caller").toString(); - if(!alreadyCalledHash[caller]){ - kernel.deprecated(this.declaredClass + "::attr() is deprecated. Use get() or set() instead, called from " + - caller, "", "2.0"); - alreadyCalledHash[caller] = true; - } - } - - var args = arguments.length; - if(args >= 2 || typeof name === "object"){ // setter - return this.set.apply(this, arguments); - }else{ // getter - return this.get(name); - } - }, - - getDescendants: function(){ - // summary: - // Returns all the widgets contained by this, i.e., all widgets underneath this.containerNode. - // This method should generally be avoided as it returns widgets declared in templates, which are - // supposed to be internal/hidden, but it's left here for back-compat reasons. - - kernel.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.", "", "2.0"); - return this.containerNode ? query('[widgetId]', this.containerNode).map(registry.byNode) : []; // dijit/_WidgetBase[] - }, - - ////////////////// MISCELLANEOUS METHODS /////////////////// - - _onShow: function(){ - // summary: - // Internal method called when this widget is made visible. - // See `onShow` for details. - this.onShow(); - }, - - onShow: function(){ - // summary: - // Called when this widget becomes the selected pane in a - // `dijit/layout/TabContainer`, `dijit/layout/StackContainer`, - // `dijit/layout/AccordionContainer`, etc. - // - // Also called to indicate display of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`. - // tags: - // callback - }, - - onHide: function(){ - // summary: - // Called when another widget becomes the selected pane in a - // `dijit/layout/TabContainer`, `dijit/layout/StackContainer`, - // `dijit/layout/AccordionContainer`, etc. - // - // Also called to indicate hide of a `dijit.Dialog`, `dijit.TooltipDialog`, or `dijit.TitlePane`. - // tags: - // callback - }, - - onClose: function(){ - // summary: - // Called when this widget is being displayed as a popup (ex: a Calendar popped - // up from a DateTextBox), and it is hidden. - // This is called from the dijit.popup code, and should not be called directly. - // - // Also used as a parameter for children of `dijit/layout/StackContainer` or subclasses. - // Callback if a user tries to close the child. Child will be closed if this function returns true. - // tags: - // extension - - return true; // Boolean - } -}); - -// For back-compat, remove in 2.0. -if(has("dijit-legacy-requires")){ - ready(0, function(){ - var requires = ["dijit/_base"]; - require(requires); // use indirection so modules not rolled into a build - }); -} -return _Widget; -}); - -}, -'dojo/touch':function(){ -define("dojo/touch", ["./_base/kernel", "./aspect", "./dom", "./on", "./has", "./mouse", "./ready", "./_base/window"], -function(dojo, aspect, dom, on, has, mouse, ready, win){ - - // module: - // dojo/touch - - var hasTouch = has("touch"); - - // TODO: get iOS version from dojo/sniff after #15827 is fixed - var ios4 = false; - if(has("ios")){ - var ua = navigator.userAgent; - var v = ua.match(/OS ([\d_]+)/) ? RegExp.$1 : "1"; - var os = parseFloat(v.replace(/_/, '.').replace(/_/g, '')); - ios4 = os < 5; - } - - var touchmove, hoveredNode; - - if(hasTouch){ - ready(function(){ - // Keep track of currently hovered node - hoveredNode = win.body(); // currently hovered node - - win.doc.addEventListener("touchstart", function(evt){ - // Precede touchstart event with touch.over event. DnD depends on this. - // Use addEventListener(cb, true) to run cb before any touchstart handlers on node run, - // and to ensure this code runs even if the listener on the node does event.stop(). - var oldNode = hoveredNode; - hoveredNode = evt.target; - on.emit(oldNode, "dojotouchout", { - target: oldNode, - relatedTarget: hoveredNode, - bubbles: true - }); - on.emit(hoveredNode, "dojotouchover", { - target: hoveredNode, - relatedTarget: oldNode, - bubbles: true - }); - }, true); - - // Fire synthetic touchover and touchout events on nodes since the browser won't do it natively. - on(win.doc, "touchmove", function(evt){ - var newNode = win.doc.elementFromPoint( - evt.pageX - (ios4 ? 0 : win.global.pageXOffset), // iOS 4 expects page coords - evt.pageY - (ios4 ? 0 : win.global.pageYOffset) - ); - if(newNode && hoveredNode !== newNode){ - // touch out on the old node - on.emit(hoveredNode, "dojotouchout", { - target: hoveredNode, - relatedTarget: newNode, - bubbles: true - }); - - // touchover on the new node - on.emit(newNode, "dojotouchover", { - target: newNode, - relatedTarget: hoveredNode, - bubbles: true - }); - - hoveredNode = newNode; - } - }); - }); - - // Define synthetic touch.move event that unlike the native touchmove, fires for the node the finger is - // currently dragging over rather than the node where the touch started. - touchmove = function(node, listener){ - return on(win.doc, "touchmove", function(evt){ - if(node === win.doc || dom.isDescendant(hoveredNode, node)){ - evt.target = hoveredNode; - listener.call(this, evt); - } - }); - }; - } - - - function _handle(type){ - // type: String - // press | move | release | cancel - - return function(node, listener){//called by on(), see dojo.on - return on(node, type, listener); - }; - } - - //device neutral events - touch.press|move|release|cancel/over/out - var touch = { - press: _handle(hasTouch ? "touchstart": "mousedown"), - move: hasTouch ? touchmove :_handle("mousemove"), - release: _handle(hasTouch ? "touchend": "mouseup"), - cancel: hasTouch ? _handle("touchcancel") : mouse.leave, - over: _handle(hasTouch ? "dojotouchover": "mouseover"), - out: _handle(hasTouch ? "dojotouchout": "mouseout"), - enter: mouse._eventHandler(hasTouch ? "dojotouchover" : "mouseover"), - leave: mouse._eventHandler(hasTouch ? "dojotouchout" : "mouseout") - }; - /*===== - touch = { - // summary: - // This module provides unified touch event handlers by exporting - // press, move, release and cancel which can also run well on desktop. - // Based on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html - // - // example: - // Used with dojo.on - // | define(["dojo/on", "dojo/touch"], function(on, touch){ - // | on(node, touch.press, function(e){}); - // | on(node, touch.move, function(e){}); - // | on(node, touch.release, function(e){}); - // | on(node, touch.cancel, function(e){}); - // example: - // Used with touch.* directly - // | touch.press(node, function(e){}); - // | touch.move(node, function(e){}); - // | touch.release(node, function(e){}); - // | touch.cancel(node, function(e){}); - - press: function(node, listener){ - // summary: - // Register a listener to 'touchstart'|'mousedown' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - move: function(node, listener){ - // summary: - // Register a listener to 'touchmove'|'mousemove' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - release: function(node, listener){ - // summary: - // Register a listener to 'touchend'|'mouseup' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - cancel: function(node, listener){ - // summary: - // Register a listener to 'touchcancel'|'mouseleave' for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - over: function(node, listener){ - // summary: - // Register a listener to 'mouseover' or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - out: function(node, listener){ - // summary: - // Register a listener to 'mouseout' or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - enter: function(node, listener){ - // summary: - // Register a listener to mouse.enter or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - }, - leave: function(node, listener){ - // summary: - // Register a listener to mouse.leave or touch equivalent for the given node - // node: Dom - // Target node to listen to - // listener: Function - // Callback function - // returns: - // A handle which will be used to remove the listener by handle.remove() - } - }; - =====*/ - - 1 && (dojo.touch = touch); - - return touch; -}); - -}, -'url:dijit/form/templates/Select.html':"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,_popupStateNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"Χ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"▼ \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n", -'dojo/fx':function(){ -define("dojo/fx", [ - "./_base/lang", - "./Evented", - "./_base/kernel", - "./_base/array", - "./_base/connect", - "./_base/fx", - "./dom", - "./dom-style", - "./dom-geometry", - "./ready", - "require" // for context sensitive loading of Toggler -], function(lang, Evented, dojo, arrayUtil, connect, baseFx, dom, domStyle, geom, ready, require){ - - // module: - // dojo/fx - - // For back-compat, remove in 2.0. - if(!dojo.isAsync){ - ready(0, function(){ - var requires = ["./fx/Toggler"]; - require(requires); // use indirection so modules not rolled into a build - }); - } - - var coreFx = dojo.fx = { - // summary: - // Effects library on top of Base animations - }; - - var _baseObj = { - _fire: function(evt, args){ - if(this[evt]){ - this[evt].apply(this, args||[]); - } - return this; - } - }; - - var _chain = function(animations){ - this._index = -1; - this._animations = animations||[]; - this._current = this._onAnimateCtx = this._onEndCtx = null; - - this.duration = 0; - arrayUtil.forEach(this._animations, function(a){ - this.duration += a.duration; - if(a.delay){ this.duration += a.delay; } - }, this); - }; - _chain.prototype = new Evented(); - lang.extend(_chain, { - _onAnimate: function(){ - this._fire("onAnimate", arguments); - }, - _onEnd: function(){ - connect.disconnect(this._onAnimateCtx); - connect.disconnect(this._onEndCtx); - this._onAnimateCtx = this._onEndCtx = null; - if(this._index + 1 == this._animations.length){ - this._fire("onEnd"); - }else{ - // switch animations - this._current = this._animations[++this._index]; - this._onAnimateCtx = connect.connect(this._current, "onAnimate", this, "_onAnimate"); - this._onEndCtx = connect.connect(this._current, "onEnd", this, "_onEnd"); - this._current.play(0, true); - } - }, - play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){ - if(!this._current){ this._current = this._animations[this._index = 0]; } - if(!gotoStart && this._current.status() == "playing"){ return this; } - var beforeBegin = connect.connect(this._current, "beforeBegin", this, function(){ - this._fire("beforeBegin"); - }), - onBegin = connect.connect(this._current, "onBegin", this, function(arg){ - this._fire("onBegin", arguments); - }), - onPlay = connect.connect(this._current, "onPlay", this, function(arg){ - this._fire("onPlay", arguments); - connect.disconnect(beforeBegin); - connect.disconnect(onBegin); - connect.disconnect(onPlay); - }); - if(this._onAnimateCtx){ - connect.disconnect(this._onAnimateCtx); - } - this._onAnimateCtx = connect.connect(this._current, "onAnimate", this, "_onAnimate"); - if(this._onEndCtx){ - connect.disconnect(this._onEndCtx); - } - this._onEndCtx = connect.connect(this._current, "onEnd", this, "_onEnd"); - this._current.play.apply(this._current, arguments); - return this; - }, - pause: function(){ - if(this._current){ - var e = connect.connect(this._current, "onPause", this, function(arg){ - this._fire("onPause", arguments); - connect.disconnect(e); - }); - this._current.pause(); - } - return this; - }, - gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){ - this.pause(); - var offset = this.duration * percent; - this._current = null; - arrayUtil.some(this._animations, function(a){ - if(a.duration <= offset){ - this._current = a; - return true; - } - offset -= a.duration; - return false; - }); - if(this._current){ - this._current.gotoPercent(offset / this._current.duration, andPlay); - } - return this; - }, - stop: function(/*boolean?*/ gotoEnd){ - if(this._current){ - if(gotoEnd){ - for(; this._index + 1 < this._animations.length; ++this._index){ - this._animations[this._index].stop(true); - } - this._current = this._animations[this._index]; - } - var e = connect.connect(this._current, "onStop", this, function(arg){ - this._fire("onStop", arguments); - connect.disconnect(e); - }); - this._current.stop(); - } - return this; - }, - status: function(){ - return this._current ? this._current.status() : "stopped"; - }, - destroy: function(){ - if(this._onAnimateCtx){ connect.disconnect(this._onAnimateCtx); } - if(this._onEndCtx){ connect.disconnect(this._onEndCtx); } - } - }); - lang.extend(_chain, _baseObj); - - coreFx.chain = function(/*dojo/_base/fx.Animation[]*/ animations){ - // summary: - // Chain a list of `dojo.Animation`s to run in sequence - // - // description: - // Return a `dojo.Animation` which will play all passed - // `dojo.Animation` instances in sequence, firing its own - // synthesized events simulating a single animation. (eg: - // onEnd of this animation means the end of the chain, - // not the individual animations within) - // - // example: - // Once `node` is faded out, fade in `otherNode` - // | fx.chain([ - // | dojo.fadeIn({ node:node }), - // | dojo.fadeOut({ node:otherNode }) - // | ]).play(); - // - return new _chain(animations); // dojo/_base/fx.Animation - }; - - var _combine = function(animations){ - this._animations = animations||[]; - this._connects = []; - this._finished = 0; - - this.duration = 0; - arrayUtil.forEach(animations, function(a){ - var duration = a.duration; - if(a.delay){ duration += a.delay; } - if(this.duration < duration){ this.duration = duration; } - this._connects.push(connect.connect(a, "onEnd", this, "_onEnd")); - }, this); - - this._pseudoAnimation = new baseFx.Animation({curve: [0, 1], duration: this.duration}); - var self = this; - arrayUtil.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop", "onEnd"], - function(evt){ - self._connects.push(connect.connect(self._pseudoAnimation, evt, - function(){ self._fire(evt, arguments); } - )); - } - ); - }; - lang.extend(_combine, { - _doAction: function(action, args){ - arrayUtil.forEach(this._animations, function(a){ - a[action].apply(a, args); - }); - return this; - }, - _onEnd: function(){ - if(++this._finished > this._animations.length){ - this._fire("onEnd"); - } - }, - _call: function(action, args){ - var t = this._pseudoAnimation; - t[action].apply(t, args); - }, - play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){ - this._finished = 0; - this._doAction("play", arguments); - this._call("play", arguments); - return this; - }, - pause: function(){ - this._doAction("pause", arguments); - this._call("pause", arguments); - return this; - }, - gotoPercent: function(/*Decimal*/percent, /*Boolean?*/ andPlay){ - var ms = this.duration * percent; - arrayUtil.forEach(this._animations, function(a){ - a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay); - }); - this._call("gotoPercent", arguments); - return this; - }, - stop: function(/*boolean?*/ gotoEnd){ - this._doAction("stop", arguments); - this._call("stop", arguments); - return this; - }, - status: function(){ - return this._pseudoAnimation.status(); - }, - destroy: function(){ - arrayUtil.forEach(this._connects, connect.disconnect); - } - }); - lang.extend(_combine, _baseObj); - - coreFx.combine = function(/*dojo/_base/fx.Animation[]*/ animations){ - // summary: - // Combine a list of `dojo.Animation`s to run in parallel - // - // description: - // Combine an array of `dojo.Animation`s to run in parallel, - // providing a new `dojo.Animation` instance encompasing each - // animation, firing standard animation events. - // - // example: - // Fade out `node` while fading in `otherNode` simultaneously - // | fx.combine([ - // | dojo.fadeIn({ node:node }), - // | dojo.fadeOut({ node:otherNode }) - // | ]).play(); - // - // example: - // When the longest animation ends, execute a function: - // | var anim = fx.combine([ - // | dojo.fadeIn({ node: n, duration:700 }), - // | dojo.fadeOut({ node: otherNode, duration: 300 }) - // | ]); - // | dojo.connect(anim, "onEnd", function(){ - // | // overall animation is done. - // | }); - // | anim.play(); // play the animation - // - return new _combine(animations); // dojo/_base/fx.Animation - }; - - coreFx.wipeIn = function(/*Object*/ args){ - // summary: - // Expand a node to it's natural height. - // - // description: - // Returns an animation that will expand the - // node defined in 'args' object from it's current height to - // it's natural height (with no scrollbar). - // Node must have no margin/border/padding. - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on) - // - // example: - // | fx.wipeIn({ - // | node:"someId" - // | }).play() - var node = args.node = dom.byId(args.node), s = node.style, o; - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - height: { - // wrapped in functions so we wait till the last second to query (in case value has changed) - start: function(){ - // start at current [computed] height, but use 1px rather than 0 - // because 0 causes IE to display the whole panel - o = s.overflow; - s.overflow = "hidden"; - if(s.visibility == "hidden" || s.display == "none"){ - s.height = "1px"; - s.display = ""; - s.visibility = ""; - return 1; - }else{ - var height = domStyle.get(node, "height"); - return Math.max(height, 1); - } - }, - end: function(){ - return node.scrollHeight; - } - } - } - }, args)); - - var fini = function(){ - s.height = "auto"; - s.overflow = o; - }; - connect.connect(anim, "onStop", fini); - connect.connect(anim, "onEnd", fini); - - return anim; // dojo/_base/fx.Animation - }; - - coreFx.wipeOut = function(/*Object*/ args){ - // summary: - // Shrink a node to nothing and hide it. - // - // description: - // Returns an animation that will shrink node defined in "args" - // from it's current height to 1px, and then hide it. - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on) - // - // example: - // | fx.wipeOut({ node:"someId" }).play() - - var node = args.node = dom.byId(args.node), s = node.style, o; - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - height: { - end: 1 // 0 causes IE to display the whole panel - } - } - }, args)); - - connect.connect(anim, "beforeBegin", function(){ - o = s.overflow; - s.overflow = "hidden"; - s.display = ""; - }); - var fini = function(){ - s.overflow = o; - s.height = "auto"; - s.display = "none"; - }; - connect.connect(anim, "onStop", fini); - connect.connect(anim, "onEnd", fini); - - return anim; // dojo/_base/fx.Animation - }; - - coreFx.slideTo = function(/*Object*/ args){ - // summary: - // Slide a node to a new top/left position - // - // description: - // Returns an animation that will slide "node" - // defined in args Object from its current position to - // the position defined by (args.left, args.top). - // - // args: Object - // A hash-map of standard `dojo.Animation` constructor properties - // (such as easing: node: duration: and so on). Special args members - // are `top` and `left`, which indicate the new position to slide to. - // - // example: - // | .slideTo({ node: node, left:"40", top:"50", units:"px" }).play() - - var node = args.node = dom.byId(args.node), - top = null, left = null; - - var init = (function(n){ - return function(){ - var cs = domStyle.getComputedStyle(n); - var pos = cs.position; - top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0); - left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0); - if(pos != 'absolute' && pos != 'relative'){ - var ret = geom.position(n, true); - top = ret.y; - left = ret.x; - n.style.position="absolute"; - n.style.top=top+"px"; - n.style.left=left+"px"; - } - }; - })(node); - init(); - - var anim = baseFx.animateProperty(lang.mixin({ - properties: { - top: args.top || 0, - left: args.left || 0 - } - }, args)); - connect.connect(anim, "beforeBegin", anim, init); - - return anim; // dojo/_base/fx.Animation - }; - - return coreFx; -}); - -}, -'dijit/_DialogMixin':function(){ -define("dijit/_DialogMixin", [ - "dojo/_base/declare", // declare - "./a11y" // _getTabNavigable -], function(declare, a11y){ - - // module: - // dijit/_DialogMixin - - return declare("dijit._DialogMixin", null, { - // summary: - // This provides functions useful to Dialog and TooltipDialog - - execute: function(/*Object*/ /*===== formContents =====*/){ - // summary: - // Callback when the user hits the submit button. - // Override this method to handle Dialog execution. - // description: - // After the user has pressed the submit button, the Dialog - // first calls onExecute() to notify the container to hide the - // dialog and restore focus to wherever it used to be. - // - // *Then* this method is called. - // type: - // callback - }, - - onCancel: function(){ - // summary: - // Called when user has pressed the Dialog's cancel button, to notify container. - // description: - // Developer shouldn't override or connect to this method; - // it's a private communication device between the TooltipDialog - // and the thing that opened it (ex: `dijit/form/DropDownButton`) - // type: - // protected - }, - - onExecute: function(){ - // summary: - // Called when user has pressed the dialog's OK button, to notify container. - // description: - // Developer shouldn't override or connect to this method; - // it's a private communication device between the TooltipDialog - // and the thing that opened it (ex: `dijit/form/DropDownButton`) - // type: - // protected - }, - - _onSubmit: function(){ - // summary: - // Callback when user hits submit button - // type: - // protected - this.onExecute(); // notify container that we are about to execute - this.execute(this.get('value')); - }, - - _getFocusItems: function(){ - // summary: - // Finds focusable items in dialog, - // and sets this._firstFocusItem and this._lastFocusItem - // tags: - // protected - - var elems = a11y._getTabNavigable(this.containerNode); - this._firstFocusItem = elems.lowest || elems.first || this.closeButtonNode || this.domNode; - this._lastFocusItem = elems.last || elems.highest || this._firstFocusItem; - } - }); -}); - -}, -'dijit/Tree':function(){ -require({cache:{ -'url:dijit/templates/TreeNode.html':"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow dijitInline\" role=\"presentation\"\n\t\t><div data-dojo-attach-point=\"indentNode\" class=\"dijitInline\"></div\n\t\t><img src=\"${_blankGif}\" alt=\"\" data-dojo-attach-point=\"expandoNode\" class=\"dijitTreeExpando\" role=\"presentation\"\n\t\t/><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"\n\t\t></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" data-dojo-attach-point=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" role=\"presentation\"\n\t\t\t/><span data-dojo-attach-point=\"labelNode\" class=\"dijitTreeLabel\" role=\"treeitem\" tabindex=\"-1\" aria-selected=\"false\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\" style=\"display: none;\"></div>\n</div>\n", -'url:dijit/templates/Tree.html':"<div class=\"dijitTree dijitTreeContainer\" role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n</div>\n"}}); -define("dijit/Tree", [ - "dojo/_base/array", // array.filter array.forEach array.map - "dojo/_base/connect", // connect.isCopyKey() - "dojo/cookie", // cookie - "dojo/_base/declare", // declare - "dojo/Deferred", // Deferred - "dojo/DeferredList", // DeferredList - "dojo/dom", // dom.isDescendant - "dojo/dom-class", // domClass.add domClass.remove domClass.replace domClass.toggle - "dojo/dom-geometry", // domGeometry.setMarginBox domGeometry.position - "dojo/dom-style",// domStyle.set - "dojo/_base/event", // event.stop - "dojo/errors/create", // createError - "dojo/fx", // fxUtils.wipeIn fxUtils.wipeOut - "dojo/_base/kernel", // kernel.deprecated - "dojo/keys", // arrows etc. - "dojo/_base/lang", // lang.getObject lang.mixin lang.hitch - "dojo/on", // on(), on.selector() - "dojo/topic", - "dojo/touch", - "dojo/when", - "./focus", - "./registry", // registry.byNode(), registry.getEnclosingWidget() - "./_base/manager", // manager.defaultDuration - "./_Widget", - "./_TemplatedMixin", - "./_Container", - "./_Contained", - "./_CssStateMixin", - "dojo/text!./templates/TreeNode.html", - "dojo/text!./templates/Tree.html", - "./tree/TreeStoreModel", - "./tree/ForestStoreModel", - "./tree/_dndSelector" -], function(array, connect, cookie, declare, Deferred, DeferredList, - dom, domClass, domGeometry, domStyle, event, createError, fxUtils, kernel, keys, lang, on, topic, touch, when, - focus, registry, manager, _Widget, _TemplatedMixin, _Container, _Contained, _CssStateMixin, - treeNodeTemplate, treeTemplate, TreeStoreModel, ForestStoreModel, _dndSelector){ - -// module: -// dijit/Tree - -// Back-compat shim -Deferred = declare(Deferred, { - addCallback: function(callback){ this.then(callback); }, - addErrback: function(errback){ this.then(null, errback); } -}); - -var TreeNode = declare( - "dijit._TreeNode", - [_Widget, _TemplatedMixin, _Container, _Contained, _CssStateMixin], -{ - // summary: - // Single node within a tree. This class is used internally - // by Tree and should not be accessed directly. - // tags: - // private - - // item: [const] Item - // the dojo.data entry this tree represents - item: null, - - // isTreeNode: [protected] Boolean - // Indicates that this is a TreeNode. Used by `dijit.Tree` only, - // should not be accessed directly. - isTreeNode: true, - - // label: String - // Text of this tree node - label: "", - _setLabelAttr: {node: "labelNode", type: "innerText"}, - - // isExpandable: [private] Boolean - // This node has children, so show the expando node (+ sign) - isExpandable: null, - - // isExpanded: [readonly] Boolean - // This node is currently expanded (ie, opened) - isExpanded: false, - - // state: [private] String - // Dynamic loading-related stuff. - // When an empty folder node appears, it is "UNCHECKED" first, - // then after dojo.data query it becomes "LOADING" and, finally "LOADED" - state: "UNCHECKED", - - templateString: treeNodeTemplate, - - baseClass: "dijitTreeNode", - - // For hover effect for tree node, and focus effect for label - cssStateNodes: { - rowNode: "dijitTreeRow" - }, - - // Tooltip is defined in _WidgetBase but we need to handle the mapping to DOM here - _setTooltipAttr: {node: "rowNode", type: "attribute", attribute: "title"}, - - buildRendering: function(){ - this.inherited(arguments); - - // set expand icon for leaf - this._setExpando(); - - // set icon and label class based on item - this._updateItemClasses(this.item); - - if(this.isExpandable){ - this.labelNode.setAttribute("aria-expanded", this.isExpanded); - } - - //aria-selected should be false on all selectable elements. - this.setSelected(false); - }, - - _setIndentAttr: function(indent){ - // summary: - // Tell this node how many levels it should be indented - // description: - // 0 for top level nodes, 1 for their children, 2 for their - // grandchildren, etc. - - // Math.max() is to prevent negative padding on hidden root node (when indent == -1) - var pixels = (Math.max(indent, 0) * this.tree._nodePixelIndent) + "px"; - - domStyle.set(this.domNode, "backgroundPosition", pixels + " 0px"); // TODOC: what is this for??? - domStyle.set(this.indentNode, this.isLeftToRight() ? "paddingLeft" : "paddingRight", pixels); - - array.forEach(this.getChildren(), function(child){ - child.set("indent", indent+1); - }); - - this._set("indent", indent); - }, - - markProcessing: function(){ - // summary: - // Visually denote that tree is loading data, etc. - // tags: - // private - this.state = "LOADING"; - this._setExpando(true); - }, - - unmarkProcessing: function(){ - // summary: - // Clear markup from markProcessing() call - // tags: - // private - this._setExpando(false); - }, - - _updateItemClasses: function(item){ - // summary: - // Set appropriate CSS classes for icon and label dom node - // (used to allow for item updates to change respective CSS) - // tags: - // private - var tree = this.tree, model = tree.model; - if(tree._v10Compat && item === model.root){ - // For back-compat with 1.0, need to use null to specify root item (TODO: remove in 2.0) - item = null; - } - this._applyClassAndStyle(item, "icon", "Icon"); - this._applyClassAndStyle(item, "label", "Label"); - this._applyClassAndStyle(item, "row", "Row"); - - this.tree._startPaint(true); // signifies paint started and finished (synchronously) - }, - - _applyClassAndStyle: function(item, lower, upper){ - // summary: - // Set the appropriate CSS classes and styles for labels, icons and rows. - // - // item: - // The data item. - // - // lower: - // The lower case attribute to use, e.g. 'icon', 'label' or 'row'. - // - // upper: - // The upper case attribute to use, e.g. 'Icon', 'Label' or 'Row'. - // - // tags: - // private - - var clsName = "_" + lower + "Class"; - var nodeName = lower + "Node"; - var oldCls = this[clsName]; - - this[clsName] = this.tree["get" + upper + "Class"](item, this.isExpanded); - domClass.replace(this[nodeName], this[clsName] || "", oldCls || ""); - - domStyle.set(this[nodeName], this.tree["get" + upper + "Style"](item, this.isExpanded) || {}); - }, - - _updateLayout: function(){ - // summary: - // Set appropriate CSS classes for this.domNode - // tags: - // private - var parent = this.getParent(); - if(!parent || !parent.rowNode || parent.rowNode.style.display == "none"){ - /* if we are hiding the root node then make every first level child look like a root node */ - domClass.add(this.domNode, "dijitTreeIsRoot"); - }else{ - domClass.toggle(this.domNode, "dijitTreeIsLast", !this.getNextSibling()); - } - }, - - _setExpando: function(/*Boolean*/ processing){ - // summary: - // Set the right image for the expando node - // tags: - // private - - var styles = ["dijitTreeExpandoLoading", "dijitTreeExpandoOpened", - "dijitTreeExpandoClosed", "dijitTreeExpandoLeaf"], - _a11yStates = ["*","-","+","*"], - idx = processing ? 0 : (this.isExpandable ? (this.isExpanded ? 1 : 2) : 3); - - // apply the appropriate class to the expando node - domClass.replace(this.expandoNode, styles[idx], styles); - - // provide a non-image based indicator for images-off mode - this.expandoNodeText.innerHTML = _a11yStates[idx]; - - }, - - expand: function(){ - // summary: - // Show my children - // returns: - // Deferred that fires when expansion is complete - - // If there's already an expand in progress or we are already expanded, just return - if(this._expandDeferred){ - return this._expandDeferred; // dojo/_base/Deferred - } - - // cancel in progress collapse operation - if(this._collapseDeferred){ - this._collapseDeferred.cancel(); - delete this._collapseDeferred; - } - - // All the state information for when a node is expanded, maybe this should be - // set when the animation completes instead - this.isExpanded = true; - this.labelNode.setAttribute("aria-expanded", "true"); - if(this.tree.showRoot || this !== this.tree.rootNode){ - this.containerNode.setAttribute("role", "group"); - } - domClass.add(this.contentNode,'dijitTreeContentExpanded'); - this._setExpando(); - this._updateItemClasses(this.item); - - if(this == this.tree.rootNode && this.tree.showRoot){ - this.tree.domNode.setAttribute("aria-expanded", "true"); - } - - var def, - wipeIn = fxUtils.wipeIn({ - node: this.containerNode, - duration: manager.defaultDuration, - onEnd: function(){ - def.resolve(true); - } - }); - - // Deferred that fires when expand is complete - def = (this._expandDeferred = new Deferred(function(){ - // Canceller - wipeIn.stop(); - })); - - wipeIn.play(); - - return def; // dojo/_base/Deferred - }, - - collapse: function(){ - // summary: - // Collapse this node (if it's expanded) - - if(this._collapseDeferred){ - // Node is already collapsed, or there's a collapse in progress, just return that Deferred - return this._collapseDeferred; - } - - // cancel in progress expand operation - if(this._expandDeferred){ - this._expandDeferred.cancel(); - delete this._expandDeferred; - } - - this.isExpanded = false; - this.labelNode.setAttribute("aria-expanded", "false"); - if(this == this.tree.rootNode && this.tree.showRoot){ - this.tree.domNode.setAttribute("aria-expanded", "false"); - } - domClass.remove(this.contentNode,'dijitTreeContentExpanded'); - this._setExpando(); - this._updateItemClasses(this.item); - - var def, - wipeOut = fxUtils.wipeOut({ - node: this.containerNode, - duration: manager.defaultDuration, - onEnd: function(){ - def.resolve(true); - } - }); - - // Deferred that fires when expand is complete - def = (this._collapseDeferred = new Deferred(function(){ - // Canceller - wipeOut.stop(); - })); - - wipeOut.play(); - - return def; // dojo/_base/Deferred - }, - - // indent: Integer - // Levels from this node to the root node - indent: 0, - - setChildItems: function(/* Object[] */ items){ - // summary: - // Sets the child items of this node, removing/adding nodes - // from current children to match specified items[] array. - // Also, if this.persist == true, expands any children that were previously - // opened. - // returns: - // Deferred object that fires after all previously opened children - // have been expanded again (or fires instantly if there are no such children). - - var tree = this.tree, - model = tree.model, - defs = []; // list of deferreds that need to fire before I am complete - - - // Orphan all my existing children. - // If items contains some of the same items as before then we will reattach them. - // Don't call this.removeChild() because that will collapse the tree etc. - var oldChildren = this.getChildren(); - array.forEach(oldChildren, function(child){ - _Container.prototype.removeChild.call(this, child); - }, this); - - // All the old children of this TreeNode are subject for destruction if - // 1) they aren't listed in the new children array (items) - // 2) they aren't immediately adopted by another node (DnD) - this.defer(function(){ - array.forEach(oldChildren, function(node){ - if(!node._destroyed && !node.getParent()){ - // If node is in selection then remove it. - tree.dndController.removeTreeNode(node); - - // Deregister mapping from item id --> this node - var id = model.getIdentity(node.item), - ary = tree._itemNodesMap[id]; - if(ary.length == 1){ - delete tree._itemNodesMap[id]; - }else{ - var index = array.indexOf(ary, node); - if(index != -1){ - ary.splice(index, 1); - } - } - - // And finally we can destroy the node - node.destroyRecursive(); - } - }); - }); - - this.state = "LOADED"; - - if(items && items.length > 0){ - this.isExpandable = true; - - // Create _TreeNode widget for each specified tree node, unless one already - // exists and isn't being used (presumably it's from a DnD move and was recently - // released - array.forEach(items, function(item){ // MARKER: REUSE NODE - var id = model.getIdentity(item), - existingNodes = tree._itemNodesMap[id], - node; - if(existingNodes){ - for(var i=0;i<existingNodes.length;i++){ - if(existingNodes[i] && !existingNodes[i].getParent()){ - node = existingNodes[i]; - node.set('indent', this.indent+1); - break; - } - } - } - if(!node){ - node = this.tree._createTreeNode({ - item: item, - tree: tree, - isExpandable: model.mayHaveChildren(item), - label: tree.getLabel(item), - tooltip: tree.getTooltip(item), - ownerDocument: tree.ownerDocument, - dir: tree.dir, - lang: tree.lang, - textDir: tree.textDir, - indent: this.indent + 1 - }); - if(existingNodes){ - existingNodes.push(node); - }else{ - tree._itemNodesMap[id] = [node]; - } - } - this.addChild(node); - - // If node was previously opened then open it again now (this may trigger - // more data store accesses, recursively) - if(this.tree.autoExpand || this.tree._state(node)){ - defs.push(tree._expandNode(node)); - } - }, this); - - // note that updateLayout() needs to be called on each child after - // _all_ the children exist - array.forEach(this.getChildren(), function(child){ - child._updateLayout(); - }); - }else{ - this.isExpandable=false; - } - - if(this._setExpando){ - // change expando to/from dot or + icon, as appropriate - this._setExpando(false); - } - - // Set leaf icon or folder icon, as appropriate - this._updateItemClasses(this.item); - - // On initial tree show, make the selected TreeNode as either the root node of the tree, - // or the first child, if the root node is hidden - if(this == tree.rootNode){ - var fc = this.tree.showRoot ? this : this.getChildren()[0]; - if(fc){ - fc.setFocusable(true); - tree.lastFocused = fc; - }else{ - // fallback: no nodes in tree so focus on Tree <div> itself - tree.domNode.setAttribute("tabIndex", "0"); - } - } - - var def = new DeferredList(defs); - this.tree._startPaint(def); // to reset TreeNode widths after an item is added/removed from the Tree - return def; // dojo/_base/Deferred - }, - - getTreePath: function(){ - var node = this; - var path = []; - while(node && node !== this.tree.rootNode){ - path.unshift(node.item); - node = node.getParent(); - } - path.unshift(this.tree.rootNode.item); - - return path; - }, - - getIdentity: function(){ - return this.tree.model.getIdentity(this.item); - }, - - removeChild: function(/* treeNode */ node){ - this.inherited(arguments); - - var children = this.getChildren(); - if(children.length == 0){ - this.isExpandable = false; - this.collapse(); - } - - array.forEach(children, function(child){ - child._updateLayout(); - }); - }, - - makeExpandable: function(){ - // summary: - // if this node wasn't already showing the expando node, - // turn it into one and call _setExpando() - - // TODO: hmm this isn't called from anywhere, maybe should remove it for 2.0 - - this.isExpandable = true; - this._setExpando(false); - }, - - setSelected: function(/*Boolean*/ selected){ - // summary: - // A Tree has a (single) currently selected node. - // Mark that this node is/isn't that currently selected node. - // description: - // In particular, setting a node as selected involves setting tabIndex - // so that when user tabs to the tree, focus will go to that node (only). - this.labelNode.setAttribute("aria-selected", selected ? "true" : "false"); - domClass.toggle(this.rowNode, "dijitTreeRowSelected", selected); - }, - - setFocusable: function(/*Boolean*/ selected){ - // summary: - // A Tree has a (single) node that's focusable. - // Mark that this node is/isn't that currently focsuable node. - // description: - // In particular, setting a node as selected involves setting tabIndex - // so that when user tabs to the tree, focus will go to that node (only). - - this.labelNode.setAttribute("tabIndex", selected ? "0" : "-1"); - }, - - - _setTextDirAttr: function(textDir){ - if(textDir &&((this.textDir != textDir) || !this._created)){ - this._set("textDir", textDir); - this.applyTextDir(this.labelNode, this.labelNode.innerText || this.labelNode.textContent || ""); - array.forEach(this.getChildren(), function(childNode){ - childNode.set("textDir", textDir); - }, this); - } - } -}); - -var Tree = declare("dijit.Tree", [_Widget, _TemplatedMixin], { - // summary: - // This widget displays hierarchical data from a store. - - // store: [deprecated] String|dojo/data/Store - // Deprecated. Use "model" parameter instead. - // The store to get data to display in the tree. - store: null, - - // model: dijit/tree/model - // Interface to read tree data, get notifications of changes to tree data, - // and for handling drop operations (i.e drag and drop onto the tree) - model: null, - - // query: [deprecated] anything - // Deprecated. User should specify query to the model directly instead. - // Specifies datastore query to return the root item or top items for the tree. - query: null, - - // label: [deprecated] String - // Deprecated. Use dijit/tree/ForestStoreModel directly instead. - // Used in conjunction with query parameter. - // If a query is specified (rather than a root node id), and a label is also specified, - // then a fake root node is created and displayed, with this label. - label: "", - - // showRoot: [const] Boolean - // Should the root node be displayed, or hidden? - showRoot: true, - - // childrenAttr: [deprecated] String[] - // Deprecated. This information should be specified in the model. - // One ore more attributes that holds children of a tree node - childrenAttr: ["children"], - - // paths: String[][] or Item[][] - // Full paths from rootNode to selected nodes expressed as array of items or array of ids. - // Since setting the paths may be asynchronous (because of waiting on dojo.data), set("paths", ...) - // returns a Deferred to indicate when the set is complete. - paths: [], - - // path: String[] or Item[] - // Backward compatible singular variant of paths. - path: [], - - // selectedItems: [readonly] Item[] - // The currently selected items in this tree. - // This property can only be set (via set('selectedItems', ...)) when that item is already - // visible in the tree. (I.e. the tree has already been expanded to show that node.) - // Should generally use `paths` attribute to set the selected items instead. - selectedItems: null, - - // selectedItem: [readonly] Item - // Backward compatible singular variant of selectedItems. - selectedItem: null, - - // openOnClick: Boolean - // If true, clicking a folder node's label will open it, rather than calling onClick() - openOnClick: false, - - // openOnDblClick: Boolean - // If true, double-clicking a folder node's label will open it, rather than calling onDblClick() - openOnDblClick: false, - - templateString: treeTemplate, - - // persist: Boolean - // Enables/disables use of cookies for state saving. - persist: true, - - // autoExpand: Boolean - // Fully expand the tree on load. Overrides `persist`. - autoExpand: false, - - // dndController: [protected] Function|String - // Class to use as as the dnd controller. Specifying this class enables DnD. - // Generally you should specify this as dijit/tree/dndSource. - // Setting of dijit/tree/_dndSelector handles selection only (no actual DnD). - dndController: _dndSelector, - - // parameters to pull off of the tree and pass on to the dndController as its params - dndParams: ["onDndDrop","itemCreator","onDndCancel","checkAcceptance", "checkItemAcceptance", "dragThreshold", "betweenThreshold"], - - //declare the above items so they can be pulled from the tree's markup - - // onDndDrop: [protected] Function - // Parameter to dndController, see `dijit/tree/dndSource.onDndDrop()`. - // Generally this doesn't need to be set. - onDndDrop: null, - - itemCreator: null, - /*===== - itemCreator: function(nodes, target, source){ - // summary: - // Returns objects passed to `Tree.model.newItem()` based on DnD nodes - // dropped onto the tree. Developer must override this method to enable - // dropping from external sources onto this Tree, unless the Tree.model's items - // happen to look like {id: 123, name: "Apple" } with no other attributes. - // - // For each node in nodes[], which came from source, create a hash of name/value - // pairs to be passed to Tree.model.newItem(). Returns array of those hashes. - // nodes: DomNode[] - // The DOMNodes dragged from the source container - // target: DomNode - // The target TreeNode.rowNode - // source: dojo/dnd/Source - // The source container the nodes were dragged from, perhaps another Tree or a plain dojo/dnd/Source - // returns: Object[] - // Array of name/value hashes for each new item to be added to the Tree, like: - // | [ - // | { id: 123, label: "apple", foo: "bar" }, - // | { id: 456, label: "pear", zaz: "bam" } - // | ] - // tags: - // extension - return [{}]; - }, - =====*/ - - // onDndCancel: [protected] Function - // Parameter to dndController, see `dijit/tree/dndSource.onDndCancel()`. - // Generally this doesn't need to be set. - onDndCancel: null, - -/*===== - checkAcceptance: function(source, nodes){ - // summary: - // Checks if the Tree itself can accept nodes from this source - // source: dijit/tree/dndSource - // The source which provides items - // nodes: DOMNode[] - // Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if - // source is a dijit/Tree. - // tags: - // extension - return true; // Boolean - }, -=====*/ - checkAcceptance: null, - -/*===== - checkItemAcceptance: function(target, source, position){ - // summary: - // Stub function to be overridden if one wants to check for the ability to drop at the node/item level - // description: - // In the base case, this is called to check if target can become a child of source. - // When betweenThreshold is set, position="before" or "after" means that we - // are asking if the source node can be dropped before/after the target node. - // target: DOMNode - // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to - // Use registry.getEnclosingWidget(target) to get the TreeNode. - // source: dijit/tree/dndSource - // The (set of) nodes we are dropping - // position: String - // "over", "before", or "after" - // tags: - // extension - return true; // Boolean - }, -=====*/ - checkItemAcceptance: null, - - // dragThreshold: Integer - // Number of pixels mouse moves before it's considered the start of a drag operation - dragThreshold: 5, - - // betweenThreshold: Integer - // Set to a positive value to allow drag and drop "between" nodes. - // - // If during DnD mouse is over a (target) node but less than betweenThreshold - // pixels from the bottom edge, dropping the the dragged node will make it - // the next sibling of the target node, rather than the child. - // - // Similarly, if mouse is over a target node but less that betweenThreshold - // pixels from the top edge, dropping the dragged node will make it - // the target node's previous sibling rather than the target node's child. - betweenThreshold: 0, - - // _nodePixelIndent: Integer - // Number of pixels to indent tree nodes (relative to parent node). - // Default is 19 but can be overridden by setting CSS class dijitTreeIndent - // and calling resize() or startup() on tree after it's in the DOM. - _nodePixelIndent: 19, - - _publish: function(/*String*/ topicName, /*Object*/ message){ - // summary: - // Publish a message for this widget/topic - topic.publish(this.id, lang.mixin({tree: this, event: topicName}, message || {})); // publish - }, - - postMixInProperties: function(){ - this.tree = this; - - if(this.autoExpand){ - // There's little point in saving opened/closed state of nodes for a Tree - // that initially opens all it's nodes. - this.persist = false; - } - - this._itemNodesMap = {}; - - if(!this.cookieName && this.id){ - this.cookieName = this.id + "SaveStateCookie"; - } - - // Deferred that fires when all the children have loaded. - this.expandChildrenDeferred = new Deferred(); - - // Deferred that fires when all pending operations complete. - this.pendingCommandsDeferred = this.expandChildrenDeferred; - - this.inherited(arguments); - }, - - postCreate: function(){ - this._initState(); - - // Catch events on TreeNodes - var self = this; - this.own( - on(this.domNode, on.selector(".dijitTreeNode", touch.enter), function(evt){ - self._onNodeMouseEnter(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeNode", touch.leave), function(evt){ - self._onNodeMouseLeave(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeNode", "click"), function(evt){ - self._onClick(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeNode", "dblclick"), function(evt){ - self._onDblClick(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeNode", "keypress"), function(evt){ - self._onKeyPress(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeNode", "keydown"), function(evt){ - self._onKeyDown(registry.byNode(this), evt); - }), - on(this.domNode, on.selector(".dijitTreeRow", "focusin"), function(evt){ - self._onNodeFocus(registry.getEnclosingWidget(this), evt); - }) - ); - - // Create glue between store and Tree, if not specified directly by user - if(!this.model){ - this._store2model(); - } - - // monitor changes to items - this.connect(this.model, "onChange", "_onItemChange"); - this.connect(this.model, "onChildrenChange", "_onItemChildrenChange"); - this.connect(this.model, "onDelete", "_onItemDelete"); - - this.inherited(arguments); - - if(this.dndController){ - if(lang.isString(this.dndController)){ - this.dndController = lang.getObject(this.dndController); - } - var params={}; - for(var i=0; i<this.dndParams.length;i++){ - if(this[this.dndParams[i]]){ - params[this.dndParams[i]] = this[this.dndParams[i]]; - } - } - this.dndController = new this.dndController(this, params); - } - - this._load(); - - // If no path was specified to the constructor, use path saved in cookie - if(!this.params.path && !this.params.paths && this.persist){ - this.set("paths", this.dndController._getSavedPaths()); - } - - // onLoadDeferred should fire when all commands that are part of initialization have completed. - // It will include all the set("paths", ...) commands that happen during initialization. - this.onLoadDeferred = this.pendingCommandsDeferred; - - this.onLoadDeferred.then(lang.hitch(this, "onLoad")); - }, - - _store2model: function(){ - // summary: - // User specified a store&query rather than model, so create model from store/query - this._v10Compat = true; - kernel.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query"); - - var modelParams = { - id: this.id + "_ForestStoreModel", - store: this.store, - query: this.query, - childrenAttrs: this.childrenAttr - }; - - // Only override the model's mayHaveChildren() method if the user has specified an override - if(this.params.mayHaveChildren){ - modelParams.mayHaveChildren = lang.hitch(this, "mayHaveChildren"); - } - - if(this.params.getItemChildren){ - modelParams.getChildren = lang.hitch(this, function(item, onComplete, onError){ - this.getItemChildren((this._v10Compat && item === this.model.root) ? null : item, onComplete, onError); - }); - } - this.model = new ForestStoreModel(modelParams); - - // For backwards compatibility, the visibility of the root node is controlled by - // whether or not the user has specified a label - this.showRoot = Boolean(this.label); - }, - - onLoad: function(){ - // summary: - // Called when tree finishes loading and expanding. - // description: - // If persist == true the loading may encompass many levels of fetches - // from the data store, each asynchronous. Waits for all to finish. - // tags: - // callback - }, - - _load: function(){ - // summary: - // Initial load of the tree. - // Load root node (possibly hidden) and it's children. - this.model.getRoot( - lang.hitch(this, function(item){ - var rn = (this.rootNode = this.tree._createTreeNode({ - item: item, - tree: this, - isExpandable: true, - label: this.label || this.getLabel(item), - textDir: this.textDir, - indent: this.showRoot ? 0 : -1 - })); - - if(!this.showRoot){ - rn.rowNode.style.display="none"; - // if root is not visible, move tree role to the invisible - // root node's containerNode, see #12135 - this.domNode.setAttribute("role", "presentation"); - this.domNode.removeAttribute("aria-expanded"); - this.domNode.removeAttribute("aria-multiselectable"); - - rn.labelNode.setAttribute("role", "presentation"); - rn.containerNode.setAttribute("role", "tree"); - rn.containerNode.setAttribute("aria-expanded","true"); - rn.containerNode.setAttribute("aria-multiselectable", !this.dndController.singular); - }else{ - this.domNode.setAttribute("aria-multiselectable", !this.dndController.singular); - } - - this.domNode.appendChild(rn.domNode); - var identity = this.model.getIdentity(item); - if(this._itemNodesMap[identity]){ - this._itemNodesMap[identity].push(rn); - }else{ - this._itemNodesMap[identity] = [rn]; - } - - rn._updateLayout(); // sets "dijitTreeIsRoot" CSS classname - - // Load top level children, and if persist==true, all nodes that were previously opened - this._expandNode(rn).then(lang.hitch(this, function(){ - // Then, select the nodes that were selected last time, or - // the ones specified by params.paths[]. - - this.expandChildrenDeferred.resolve(true); - })); - }), - lang.hitch(this, function(err){ - console.error(this, ": error loading root: ", err); - }) - ); - }, - - getNodesByItem: function(/*Item or id*/ item){ - // summary: - // Returns all tree nodes that refer to an item - // returns: - // Array of tree nodes that refer to passed item - - if(!item){ return []; } - var identity = lang.isString(item) ? item : this.model.getIdentity(item); - // return a copy so widget don't get messed up by changes to returned array - return [].concat(this._itemNodesMap[identity]); - }, - - _setSelectedItemAttr: function(/*Item or id*/ item){ - this.set('selectedItems', [item]); - }, - - _setSelectedItemsAttr: function(/*Items or ids*/ items){ - // summary: - // Select tree nodes related to passed items. - // WARNING: if model use multi-parented items or desired tree node isn't already loaded - // behavior is undefined. Use set('paths', ...) instead. - var tree = this; - return this.pendingCommandsDeferred = this.pendingCommandsDeferred.then( lang.hitch(this, function(){ - var identities = array.map(items, function(item){ - return (!item || lang.isString(item)) ? item : tree.model.getIdentity(item); - }); - var nodes = []; - array.forEach(identities, function(id){ - nodes = nodes.concat(tree._itemNodesMap[id] || []); - }); - this.set('selectedNodes', nodes); - })); - }, - - _setPathAttr: function(/*Item[]|String[]*/ path){ - // summary: - // Singular variant of _setPathsAttr - if(path.length){ - return this.set("paths", [path]); - }else{ - // Empty list is interpreted as "select nothing" - return this.set("paths", []); - } - }, - - _setPathsAttr: function(/*Item[][]|String[][]*/ paths){ - // summary: - // Select the tree nodes identified by passed paths. - // paths: - // Array of arrays of items or item id's - // returns: - // Deferred to indicate when the set is complete - - var tree = this; - - // Let any previous set("path", ...) commands complete before this one starts. - return this.pendingCommandsDeferred = this.pendingCommandsDeferred.then(function(){ - // We may need to wait for some nodes to expand, so setting - // each path will involve a Deferred. We bring those deferreds - // together with a DeferredList. - return new DeferredList(array.map(paths, function(path){ - var d = new Deferred(); - - // normalize path to use identity - path = array.map(path, function(item){ - return lang.isString(item) ? item : tree.model.getIdentity(item); - }); - - if(path.length){ - // Wait for the tree to load, if it hasn't already. - selectPath(path, [tree.rootNode], d); - }else{ - d.reject(new Tree.PathError("Empty path")); - } - return d; - })); - }).then(setNodes); - - function selectPath(path, nodes, def){ - // Traverse path; the next path component should be among "nodes". - var nextPath = path.shift(); - var nextNode = array.filter(nodes, function(node){ - return node.getIdentity() == nextPath; - })[0]; - if(!!nextNode){ - if(path.length){ - tree._expandNode(nextNode).then(function(){ selectPath(path, nextNode.getChildren(), def); }); - }else{ - // Successfully reached the end of this path - def.resolve(nextNode); - } - }else{ - def.reject(new Tree.PathError("Could not expand path at " + nextPath)); - } - } - - function setNodes(newNodes){ - // After all expansion is finished, set the selection to - // the set of nodes successfully found. - tree.set("selectedNodes", array.map( - array.filter(newNodes,function(x){return x[0];}), - function(x){return x[1];})); - } - }, - - _setSelectedNodeAttr: function(node){ - this.set('selectedNodes', [node]); - }, - _setSelectedNodesAttr: function(nodes){ - // summary: - // Marks the specified TreeNodes as selected. - // nodes: TreeNode[] - // TreeNodes to mark. - this.dndController.setSelection(nodes); - }, - - - expandAll: function(){ - // summary: - // Expand all nodes in the tree - // returns: - // Deferred that fires when all nodes have expanded - - var _this = this; - - function expand(node){ - var def = new dojo.Deferred(); - - // Expand the node - _this._expandNode(node).then(function(){ - // When node has expanded, call expand() recursively on each non-leaf child - var childBranches = array.filter(node.getChildren() || [], function(node){ - return node.isExpandable; - }), - defs = array.map(childBranches, expand); - - // And when all those recursive calls finish, signal that I'm finished - new dojo.DeferredList(defs).then(function(){ - def.resolve(true); - }); - }); - - return def; - } - - return expand(this.rootNode); - }, - - collapseAll: function(){ - // summary: - // Collapse all nodes in the tree - // returns: - // Deferred that fires when all nodes have collapsed - - var _this = this; - - function collapse(node){ - var def = new dojo.Deferred(); - def.label = "collapseAllDeferred"; - - // Collapse children first - var childBranches = array.filter(node.getChildren() || [], function(node){ - return node.isExpandable; - }), - defs = array.map(childBranches, collapse); - - // And when all those recursive calls finish, collapse myself, unless I'm the invisible root node, - // in which case collapseAll() is finished - new dojo.DeferredList(defs).then(function(){ - if(!node.isExpanded || (node == _this.rootNode && !_this.showRoot)){ - def.resolve(true); - }else{ - _this._collapseNode(node).then(function(){ - // When node has collapsed, signal that call is finished - def.resolve(true); - }); - } - }); - - - return def; - } - - return collapse(this.rootNode); - }, - - ////////////// Data store related functions ////////////////////// - // These just get passed to the model; they are here for back-compat - - mayHaveChildren: function(/*dojo/data/Item*/ /*===== item =====*/){ - // summary: - // Deprecated. This should be specified on the model itself. - // - // Overridable function to tell if an item has or may have children. - // Controls whether or not +/- expando icon is shown. - // (For efficiency reasons we may not want to check if an element actually - // has children until user clicks the expando node) - // tags: - // deprecated - }, - - getItemChildren: function(/*===== parentItem, onComplete =====*/){ - // summary: - // Deprecated. This should be specified on the model itself. - // - // Overridable function that return array of child items of given parent item, - // or if parentItem==null then return top items in tree - // tags: - // deprecated - }, - - /////////////////////////////////////////////////////// - // Functions for converting an item to a TreeNode - getLabel: function(/*dojo/data/Item*/ item){ - // summary: - // Overridable function to get the label for a tree node (given the item) - // tags: - // extension - return this.model.getLabel(item); // String - }, - - getIconClass: function(/*dojo/data/Item*/ item, /*Boolean*/ opened){ - // summary: - // Overridable function to return CSS class name to display icon - // tags: - // extension - return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "dijitLeaf" - }, - - getLabelClass: function(/*===== item, opened =====*/){ - // summary: - // Overridable function to return CSS class name to display label - // item: dojo/data/Item - // opened: Boolean - // returns: String - // CSS class name - // tags: - // extension - }, - - getRowClass: function(/*===== item, opened =====*/){ - // summary: - // Overridable function to return CSS class name to display row - // item: dojo/data/Item - // opened: Boolean - // returns: String - // CSS class name - // tags: - // extension - }, - - getIconStyle: function(/*===== item, opened =====*/){ - // summary: - // Overridable function to return CSS styles to display icon - // item: dojo/data/Item - // opened: Boolean - // returns: Object - // Object suitable for input to dojo.style() like {backgroundImage: "url(...)"} - // tags: - // extension - }, - - getLabelStyle: function(/*===== item, opened =====*/){ - // summary: - // Overridable function to return CSS styles to display label - // item: dojo/data/Item - // opened: Boolean - // returns: - // Object suitable for input to dojo.style() like {color: "red", background: "green"} - // tags: - // extension - }, - - getRowStyle: function(/*===== item, opened =====*/){ - // summary: - // Overridable function to return CSS styles to display row - // item: dojo/data/Item - // opened: Boolean - // returns: - // Object suitable for input to dojo.style() like {background-color: "#bbb"} - // tags: - // extension - }, - - getTooltip: function(/*dojo/data/Item*/ /*===== item =====*/){ - // summary: - // Overridable function to get the tooltip for a tree node (given the item) - // tags: - // extension - return ""; // String - }, - - /////////// Keyboard and Mouse handlers //////////////////// - - _onKeyPress: function(/*TreeNode*/ treeNode, /*Event*/ e){ - // summary: - // Handles keystrokes for printable keys, doing search navigation - - if(e.charCode <= 32){ - // Avoid duplicate events on firefox (this is an arrow key that will be handled by keydown handler) - return; - } - - if(!e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey){ - var c = String.fromCharCode(e.charCode); - this._onLetterKeyNav( { node: treeNode, key: c.toLowerCase() } ); - event.stop(e); - } - }, - - _onKeyDown: function(/*TreeNode*/ treeNode, /*Event*/ e){ - // summary: - // Handles arrow, space, and enter keys - - var key = e.keyCode; - - var map = this._keyHandlerMap; - if(!map){ - // Setup table mapping keys to events. - // On WebKit based browsers, the combination ctrl-enter does not get passed through. To allow accessible - // multi-select on those browsers, the space key is also used for selection. - // Therefore, also allow space key for keyboard "click" operation. - map = {}; - map[keys.ENTER] = map[keys.SPACE] = map[" "] = "_onEnterKey"; - map[this.isLeftToRight() ? keys.LEFT_ARROW : keys.RIGHT_ARROW] = "_onLeftArrow"; - map[this.isLeftToRight() ? keys.RIGHT_ARROW : keys.LEFT_ARROW] = "_onRightArrow"; - map[keys.UP_ARROW] = "_onUpArrow"; - map[keys.DOWN_ARROW] = "_onDownArrow"; - map[keys.HOME] = "_onHomeKey"; - map[keys.END] = "_onEndKey"; - this._keyHandlerMap = map; - } - - if(this._keyHandlerMap[key]){ - // clear record of recent printables (being saved for multi-char letter navigation), - // because "a", down-arrow, "b" shouldn't search for "ab" - if(this._curSearch){ - this._curSearch.timer.remove(); - delete this._curSearch; - } - - this[this._keyHandlerMap[key]]( { node: treeNode, item: treeNode.item, evt: e } ); - event.stop(e); - } - }, - - _onEnterKey: function(/*Object*/ message){ - this._publish("execute", { item: message.item, node: message.node } ); - this.dndController.userSelect(message.node, connect.isCopyKey( message.evt ), message.evt.shiftKey); - this.onClick(message.item, message.node, message.evt); - }, - - _onDownArrow: function(/*Object*/ message){ - // summary: - // down arrow pressed; get next visible node, set focus there - var node = this._getNextNode(message.node); - if(node && node.isTreeNode){ - this.focusNode(node); - } - }, - - _onUpArrow: function(/*Object*/ message){ - // summary: - // Up arrow pressed; move to previous visible node - - var node = message.node; - - // if younger siblings - var previousSibling = node.getPreviousSibling(); - if(previousSibling){ - node = previousSibling; - // if the previous node is expanded, dive in deep - while(node.isExpandable && node.isExpanded && node.hasChildren()){ - // move to the last child - var children = node.getChildren(); - node = children[children.length-1]; - } - }else{ - // if this is the first child, return the parent - // unless the parent is the root of a tree with a hidden root - var parent = node.getParent(); - if(!(!this.showRoot && parent === this.rootNode)){ - node = parent; - } - } - - if(node && node.isTreeNode){ - this.focusNode(node); - } - }, - - _onRightArrow: function(/*Object*/ message){ - // summary: - // Right arrow pressed; go to child node - var node = message.node; - - // if not expanded, expand, else move to 1st child - if(node.isExpandable && !node.isExpanded){ - this._expandNode(node); - }else if(node.hasChildren()){ - node = node.getChildren()[0]; - if(node && node.isTreeNode){ - this.focusNode(node); - } - } - }, - - _onLeftArrow: function(/*Object*/ message){ - // summary: - // Left arrow pressed. - // If not collapsed, collapse, else move to parent. - - var node = message.node; - - if(node.isExpandable && node.isExpanded){ - this._collapseNode(node); - }else{ - var parent = node.getParent(); - if(parent && parent.isTreeNode && !(!this.showRoot && parent === this.rootNode)){ - this.focusNode(parent); - } - } - }, - - _onHomeKey: function(){ - // summary: - // Home key pressed; get first visible node, and set focus there - var node = this._getRootOrFirstNode(); - if(node){ - this.focusNode(node); - } - }, - - _onEndKey: function(){ - // summary: - // End key pressed; go to last visible node. - - var node = this.rootNode; - while(node.isExpanded){ - var c = node.getChildren(); - node = c[c.length - 1]; - } - - if(node && node.isTreeNode){ - this.focusNode(node); - } - }, - - // multiCharSearchDuration: Number - // If multiple characters are typed where each keystroke happens within - // multiCharSearchDuration of the previous keystroke, - // search for nodes matching all the keystrokes. - // - // For example, typing "ab" will search for entries starting with - // "ab" unless the delay between "a" and "b" is greater than multiCharSearchDuration. - multiCharSearchDuration: 250, - - _onLetterKeyNav: function(message){ - // summary: - // Called when user presses a prinatable key; search for node starting with recently typed letters. - // message: Object - // Like { node: TreeNode, key: 'a' } where key is the key the user pressed. - - // Branch depending on whether this key starts a new search, or modifies an existing search - var cs = this._curSearch; - if(cs){ - // We are continuing a search. Ex: user has pressed 'a', and now has pressed - // 'b', so we want to search for nodes starting w/"ab". - cs.pattern = cs.pattern + message.key; - cs.timer.remove(); - }else{ - // We are starting a new search - cs = this._curSearch = { - pattern: message.key, - startNode: message.node - }; - } - - // set/reset timer to forget recent keystrokes - cs.timer = this.defer(function(){ - delete this._curSearch; - }, this.multiCharSearchDuration); - - // Navigate to TreeNode matching keystrokes [entered so far]. - var node = cs.startNode; - do{ - node = this._getNextNode(node); - //check for last node, jump to first node if necessary - if(!node){ - node = this._getRootOrFirstNode(); - } - }while(node !== cs.startNode && (node.label.toLowerCase().substr(0, cs.pattern.length) != cs.pattern)); - if(node && node.isTreeNode){ - // no need to set focus if back where we started - if(node !== cs.startNode){ - this.focusNode(node); - } - } - }, - - isExpandoNode: function(node, widget){ - // summary: - // check whether a dom node is the expandoNode for a particular TreeNode widget - return dom.isDescendant(node, widget.expandoNode) || dom.isDescendant(node, widget.expandoNodeText); - }, - - _onClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){ - // summary: - // Translates click events into commands for the controller to process - - var domElement = e.target, - isExpandoClick = this.isExpandoNode(domElement, nodeWidget); - - if( (this.openOnClick && nodeWidget.isExpandable) || isExpandoClick ){ - // expando node was clicked, or label of a folder node was clicked; open it - if(nodeWidget.isExpandable){ - this._onExpandoClick({node:nodeWidget}); - } - }else{ - this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } ); - this.onClick(nodeWidget.item, nodeWidget, e); - this.focusNode(nodeWidget); - } - event.stop(e); - }, - _onDblClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){ - // summary: - // Translates double-click events into commands for the controller to process - - var domElement = e.target, - isExpandoClick = (domElement == nodeWidget.expandoNode || domElement == nodeWidget.expandoNodeText); - - if( (this.openOnDblClick && nodeWidget.isExpandable) ||isExpandoClick ){ - // expando node was clicked, or label of a folder node was clicked; open it - if(nodeWidget.isExpandable){ - this._onExpandoClick({node:nodeWidget}); - } - }else{ - this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } ); - this.onDblClick(nodeWidget.item, nodeWidget, e); - this.focusNode(nodeWidget); - } - event.stop(e); - }, - - _onExpandoClick: function(/*Object*/ message){ - // summary: - // User clicked the +/- icon; expand or collapse my children. - var node = message.node; - - // If we are collapsing, we might be hiding the currently focused node. - // Also, clicking the expando node might have erased focus from the current node. - // For simplicity's sake just focus on the node with the expando. - this.focusNode(node); - - if(node.isExpanded){ - this._collapseNode(node); - }else{ - this._expandNode(node); - } - }, - - onClick: function(/*===== item, node, evt =====*/){ - // summary: - // Callback when a tree node is clicked - // item: Object - // Object from the dojo/store corresponding to this TreeNode - // node: TreeNode - // The TreeNode itself - // evt: Event - // The event - // tags: - // callback - }, - onDblClick: function(/*===== item, node, evt =====*/){ - // summary: - // Callback when a tree node is double-clicked - // item: Object - // Object from the dojo/store corresponding to this TreeNode - // node: TreeNode - // The TreeNode itself - // evt: Event - // The event - // tags: - // callback - }, - onOpen: function(/*===== item, node =====*/){ - // summary: - // Callback when a node is opened - // item: dojo/data/Item - // node: TreeNode - // tags: - // callback - }, - onClose: function(/*===== item, node =====*/){ - // summary: - // Callback when a node is closed - // item: Object - // Object from the dojo/store corresponding to this TreeNode - // node: TreeNode - // The TreeNode itself - // tags: - // callback - }, - - _getNextNode: function(node){ - // summary: - // Get next visible node - - if(node.isExpandable && node.isExpanded && node.hasChildren()){ - // if this is an expanded node, get the first child - return node.getChildren()[0]; // TreeNode - }else{ - // find a parent node with a sibling - while(node && node.isTreeNode){ - var returnNode = node.getNextSibling(); - if(returnNode){ - return returnNode; // TreeNode - } - node = node.getParent(); - } - return null; - } - }, - - _getRootOrFirstNode: function(){ - // summary: - // Get first visible node - return this.showRoot ? this.rootNode : this.rootNode.getChildren()[0]; - }, - - _collapseNode: function(/*TreeNode*/ node){ - // summary: - // Called when the user has requested to collapse the node - // returns: - // Deferred that fires when the node is closed - - if(node._expandNodeDeferred){ - delete node._expandNodeDeferred; - } - - if(node.state == "LOADING"){ - // ignore clicks while we are in the process of loading data - return; - } - - if(node.isExpanded){ - var ret = node.collapse(); - - this.onClose(node.item, node); - this._state(node, false); - - this._startPaint(ret); // after this finishes, need to reset widths of TreeNodes - - return ret; - } - }, - - _expandNode: function(/*TreeNode*/ node){ - // summary: - // Called when the user has requested to expand the node - // returns: - // Deferred that fires when the node is loaded and opened and (if persist=true) all it's descendants - // that were previously opened too - - // Signal that this call is complete - var def = new Deferred(); - - if(node._expandNodeDeferred){ - // there's already an expand in progress, or completed, so just return - return node._expandNodeDeferred; // dojo/_base/Deferred - } - - var model = this.model, - item = node.item, - _this = this; - - // Load data if it's not already loaded - if(!node._loadDeferred){ - // need to load all the children before expanding - node.markProcessing(); - - // Setup deferred to signal when the load and expand are finished. - // Save that deferred in this._expandDeferred as a flag that operation is in progress. - node._loadDeferred = new Deferred(); - - // Get the children - model.getChildren( - item, - function(items){ - node.unmarkProcessing(); - - // Display the children and also start expanding any children that were previously expanded - // (if this.persist == true). The returned Deferred will fire when those expansions finish. - node.setChildItems(items).then(function(){ - node._loadDeferred.resolve(items); - }); - }, - function(err){ - console.error(_this, ": error loading " + node.label + " children: ", err); - node._loadDeferred.reject(err); - } - ); - } - - // Expand the node after data has loaded - node._loadDeferred.then(lang.hitch(this, function(){ - node.expand().then(function(){ - def.resolve(true); // signal that this _expandNode() call is complete - }); - - // seems like these should be inside of then(), but left here for back-compat about - // when this.isOpen flag gets set (ie, at the beginning of the animation) - this.onOpen(node.item, node); - this._state(node, true); - })); - - this._startPaint(def); // after this finishes, need to reset widths of TreeNodes - - return def; // dojo/_base/Deferred - }, - - ////////////////// Miscellaneous functions //////////////// - - focusNode: function(/* _tree.Node */ node){ - // summary: - // Focus on the specified node (which must be visible) - // tags: - // protected - - // set focus so that the label will be voiced using screen readers - focus.focus(node.labelNode); - }, - - _onNodeFocus: function(/*dijit/_WidgetBase*/ node){ - // summary: - // Called when a TreeNode gets focus, either by user clicking - // it, or programatically by arrow key handling code. - // description: - // It marks that the current node is the selected one, and the previously - // selected node no longer is. - - if(node && node != this.lastFocused){ - if(this.lastFocused && !this.lastFocused._destroyed){ - // mark that the previously focsable node is no longer focusable - this.lastFocused.setFocusable(false); - } - - // mark that the new node is the currently selected one - node.setFocusable(true); - this.lastFocused = node; - } - }, - - _onNodeMouseEnter: function(/*dijit/_WidgetBase*/ /*===== node =====*/){ - // summary: - // Called when mouse is over a node (onmouseenter event), - // this is monitored by the DND code - }, - - _onNodeMouseLeave: function(/*dijit/_WidgetBase*/ /*===== node =====*/){ - // summary: - // Called when mouse leaves a node (onmouseleave event), - // this is monitored by the DND code - }, - - //////////////// Events from the model ////////////////////////// - - _onItemChange: function(/*Item*/ item){ - // summary: - // Processes notification of a change to an item's scalar values like label - var model = this.model, - identity = model.getIdentity(item), - nodes = this._itemNodesMap[identity]; - - if(nodes){ - var label = this.getLabel(item), - tooltip = this.getTooltip(item); - array.forEach(nodes, function(node){ - node.set({ - item: item, // theoretically could be new JS Object representing same item - label: label, - tooltip: tooltip - }); - node._updateItemClasses(item); - }); - } - }, - - _onItemChildrenChange: function(/*dojo/data/Item*/ parent, /*dojo/data/Item[]*/ newChildrenList){ - // summary: - // Processes notification of a change to an item's children - var model = this.model, - identity = model.getIdentity(parent), - parentNodes = this._itemNodesMap[identity]; - - if(parentNodes){ - array.forEach(parentNodes,function(parentNode){ - parentNode.setChildItems(newChildrenList); - }); - } - }, - - _onItemDelete: function(/*Item*/ item){ - // summary: - // Processes notification of a deletion of an item. - // Not called from new dojo.store interface but there's cleanup code in setChildItems() instead. - - var model = this.model, - identity = model.getIdentity(item), - nodes = this._itemNodesMap[identity]; - - if(nodes){ - array.forEach(nodes,function(node){ - // Remove node from set of selected nodes (if it's selected) - this.dndController.removeTreeNode(node); - - var parent = node.getParent(); - if(parent){ - // if node has not already been orphaned from a _onSetItem(parent, "children", ..) call... - parent.removeChild(node); - } - node.destroyRecursive(); - }, this); - delete this._itemNodesMap[identity]; - } - }, - - /////////////// Miscellaneous funcs - - _initState: function(){ - // summary: - // Load in which nodes should be opened automatically - this._openedNodes = {}; - if(this.persist && this.cookieName){ - var oreo = cookie(this.cookieName); - if(oreo){ - array.forEach(oreo.split(','), function(item){ - this._openedNodes[item] = true; - }, this); - } - } - }, - _state: function(node, expanded){ - // summary: - // Query or set expanded state for an node - if(!this.persist){ - return false; - } - var path = array.map(node.getTreePath(), function(item){ - return this.model.getIdentity(item); - }, this).join("/"); - if(arguments.length === 1){ - return this._openedNodes[path]; - }else{ - if(expanded){ - this._openedNodes[path] = true; - }else{ - delete this._openedNodes[path]; - } - if(this.persist && this.cookieName){ - var ary = []; - for(var id in this._openedNodes){ - ary.push(id); - } - cookie(this.cookieName, ary.join(","), {expires:365}); - } - } - }, - - destroy: function(){ - if(this._curSearch){ - this._curSearch.timer.remove(); - delete this._curSearch; - } - if(this.rootNode){ - this.rootNode.destroyRecursive(); - } - if(this.dndController && !lang.isString(this.dndController)){ - this.dndController.destroy(); - } - this.rootNode = null; - this.inherited(arguments); - }, - - destroyRecursive: function(){ - // A tree is treated as a leaf, not as a node with children (like a grid), - // but defining destroyRecursive for back-compat. - this.destroy(); - }, - - resize: function(changeSize){ - if(changeSize){ - domGeometry.setMarginBox(this.domNode, changeSize); - } - - // The main JS sizing involved w/tree is the indentation, which is specified - // in CSS and read in through this dummy indentDetector node (tree must be - // visible and attached to the DOM to read this). - // If the Tree is hidden domGeometry.position(this.tree.indentDetector).w will return 0, in which case just - // keep the default value. - this._nodePixelIndent = domGeometry.position(this.tree.indentDetector).w || this._nodePixelIndent; - - // resize() may be called before this.rootNode is created, so wait until it's available - this.expandChildrenDeferred.then(lang.hitch(this, function(){ - // If tree has already loaded, then reset indent for all the nodes - this.rootNode.set('indent', this.showRoot ? 0 : -1); - - // Also, adjust widths of all rows to match width of Tree - this._adjustWidths(); - })); - }, - - _outstandingPaintOperations: 0, - _startPaint: function(/*Promise|Boolean*/ p){ - // summary: - // Called at the start of an operation that will change what's displayed. - // p: - // Promise that tells when the operation will complete. Alternately, if it's just a Boolean, it signifies - // that the operation was synchronous, and already completed. - - this._outstandingPaintOperations++; - if(this._adjustWidthsTimer){ - this._adjustWidthsTimer.remove(); - delete this._adjustWidthsTimer; - } - - var oc = lang.hitch(this, function(){ - this._outstandingPaintOperations--; - - if(this._outstandingPaintOperations <= 0 && !this._adjustWidthsTimer && this._started){ - // Use defer() to avoid a width adjustment when another operation will immediately follow, - // such as a sequence of opening a node, then it's children, then it's grandchildren, etc. - this._adjustWidthsTimer = this.defer("_adjustWidths"); - } - }); - when(p, oc, oc); - }, - - _adjustWidths: function(){ - // summary: - // Get width of widest TreeNode, or the width of the Tree itself, whichever is greater, - // and then set all TreeNodes to that width, so that selection/hover highlighting - // extends to the edge of the Tree (#13141) - - if(this._adjustWidthsTimer){ - this._adjustWidthsTimer.remove(); - delete this._adjustWidthsTimer; - } - - var maxWidth = 0, - nodes = []; - function collect(/*TreeNode*/ parent){ - var node = parent.rowNode; - node.style.width = "auto"; // erase setting from previous run - maxWidth = Math.max(maxWidth, node.clientWidth); - nodes.push(node); - if(parent.isExpanded){ - array.forEach(parent.getChildren(), collect); - } - } - collect(this.rootNode); - maxWidth = Math.max(maxWidth, domGeometry.getContentBox(this.domNode).w); // do after node.style.width="auto" - array.forEach(nodes, function(node){ - node.style.width = maxWidth + "px"; // assumes no horizontal padding, border, or margin on rowNode - }); - }, - - _createTreeNode: function(/*Object*/ args){ - // summary: - // creates a TreeNode - // description: - // Developers can override this method to define their own TreeNode class; - // However it will probably be removed in a future release in favor of a way - // of just specifying a widget for the label, rather than one that contains - // the children too. - return new TreeNode(args); - }, - - _setTextDirAttr: function(textDir){ - if(textDir && this.textDir!= textDir){ - this._set("textDir",textDir); - this.rootNode.set("textDir", textDir); - } - } -}); - -Tree.PathError = createError("TreePathError"); -Tree._TreeNode = TreeNode; // for monkey patching or creating subclasses of TreeNode - -return Tree; -}); - -}, -'dijit/form/_FormValueWidget':function(){ -define("dijit/form/_FormValueWidget", [ - "dojo/_base/declare", // declare - "dojo/sniff", // has("ie") - "./_FormWidget", - "./_FormValueMixin" -], function(declare, has, _FormWidget, _FormValueMixin){ - -// module: -// dijit/form/_FormValueWidget - -return declare("dijit.form._FormValueWidget", [_FormWidget, _FormValueMixin], -{ - // summary: - // Base class for widgets corresponding to native HTML elements such as `<input>` or `<select>` - // that have user changeable values. - // description: - // Each _FormValueWidget represents a single input value, and has a (possibly hidden) `<input>` element, - // to which it serializes it's input value, so that form submission (either normal submission or via FormBind?) - // works as expected. - - // Don't attempt to mixin the 'type', 'name' attributes here programatically -- they must be declared - // directly in the template as read by the parser in order to function. IE is known to specifically - // require the 'name' attribute at element creation time. See #8484, #8660. - - _layoutHackIE7: function(){ - // summary: - // Work around table sizing bugs on IE7 by forcing redraw - - if(has("ie") == 7){ // fix IE7 layout bug when the widget is scrolled out of sight - var domNode = this.domNode; - var parent = domNode.parentNode; - var pingNode = domNode.firstChild || domNode; // target node most unlikely to have a custom filter - var origFilter = pingNode.style.filter; // save custom filter, most likely nothing - var _this = this; - while(parent && parent.clientHeight == 0){ // search for parents that haven't rendered yet - (function ping(){ - var disconnectHandle = _this.connect(parent, "onscroll", - function(){ - _this.disconnect(disconnectHandle); // only call once - pingNode.style.filter = (new Date()).getMilliseconds(); // set to anything that's unique - _this.defer(function(){ pingNode.style.filter = origFilter; }); // restore custom filter, if any - } - ); - })(); - parent = parent.parentNode; - } - } - } -}); - -}); - -}, -'*now':function(r){r(['dojo/i18n!*preload*dojo/nls/tt-rss-layer*["ar","ca","cs","da","de","el","en-gb","en-us","es-es","fi-fi","fr-fr","he-il","hu","it-it","ja-jp","ko-kr","nl-nl","nb","pl","pt-br","pt-pt","ru","sk","sl","sv","th","tr","zh-tw","zh-cn","ROOT"]']);} -}}); -define("dojo/tt-rss-layer", [], 1); diff --git a/lib/dojo/uacss.js.uncompressed.js b/lib/dojo/uacss.js.uncompressed.js deleted file mode 100644 index f3207b0f5..000000000 --- a/lib/dojo/uacss.js.uncompressed.js +++ /dev/null @@ -1,77 +0,0 @@ -define("dojo/uacss", ["./dom-geometry", "./_base/lang", "./ready", "./sniff", "./_base/window"], - function(geometry, lang, ready, has, baseWindow){ - - // module: - // dojo/uacss - - /*===== - return { - // summary: - // Applies pre-set CSS classes to the top-level HTML node, based on: - // - // - browser (ex: dj_ie) - // - browser version (ex: dj_ie6) - // - box model (ex: dj_contentBox) - // - text direction (ex: dijitRtl) - // - // In addition, browser, browser version, and box model are - // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. - // - // Returns the has() method. - }; - =====*/ - - var - html = baseWindow.doc.documentElement, - ie = has("ie"), - opera = has("opera"), - maj = Math.floor, - ff = has("ff"), - boxModel = geometry.boxModel.replace(/-/,''), - - classes = { - "dj_quirks": has("quirks"), - - // NOTE: Opera not supported by dijit - "dj_opera": opera, - - "dj_khtml": has("khtml"), - - "dj_webkit": has("webkit"), - "dj_safari": has("safari"), - "dj_chrome": has("chrome"), - - "dj_gecko": has("mozilla") - }; // no dojo unsupported browsers - - if(ie){ - classes["dj_ie"] = true; - classes["dj_ie" + maj(ie)] = true; - classes["dj_iequirks"] = has("quirks"); - } - if(ff){ - classes["dj_ff" + maj(ff)] = true; - } - - classes["dj_" + boxModel] = true; - - // apply browser, browser version, and box model class names - var classStr = ""; - for(var clz in classes){ - if(classes[clz]){ - classStr += clz + " "; - } - } - html.className = lang.trim(html.className + " " + classStr); - - // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension. - // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl). - // priority is 90 to run ahead of parser priority of 100 - ready(90, function(){ - if(!geometry.isBodyLtr()){ - var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "); - html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")); - } - }); - return has; -}); diff --git a/lib/dojo/when.js.uncompressed.js b/lib/dojo/when.js.uncompressed.js deleted file mode 100644 index 7c7764250..000000000 --- a/lib/dojo/when.js.uncompressed.js +++ /dev/null @@ -1,55 +0,0 @@ -define("dojo/when", [ - "./Deferred", - "./promise/Promise" -], function(Deferred, Promise){ - "use strict"; - - // module: - // dojo/when - - return function when(valueOrPromise, callback, errback, progback){ - // summary: - // Transparently applies callbacks to values and/or promises. - // description: - // Accepts promises but also transparently handles non-promises. If no - // callbacks are provided returns a promise, regardless of the initial - // value. Foreign promises are converted. - // - // If callbacks are provided and the initial value is not a promise, - // the callback is executed immediately with no error handling. Returns - // a promise if the initial value is a promise, or the result of the - // callback otherwise. - // valueOrPromise: - // Either a regular value or an object with a `then()` method that - // follows the Promises/A specification. - // callback: Function? - // Callback to be invoked when the promise is resolved, or a non-promise - // is received. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // progback: Function? - // Callback to be invoked when the promise emits a progress update. - // returns: dojo/promise/Promise - // Promise, or if a callback is provided, the result of the callback. - - var receivedPromise = valueOrPromise && typeof valueOrPromise.then === "function"; - var nativePromise = receivedPromise && valueOrPromise instanceof Promise; - - if(!receivedPromise){ - if(callback){ - return callback(valueOrPromise); - }else{ - return new Deferred().resolve(valueOrPromise); - } - }else if(!nativePromise){ - var deferred = new Deferred(valueOrPromise.cancel); - valueOrPromise.then(deferred.resolve, deferred.reject, deferred.progress); - valueOrPromise = deferred.promise; - } - - if(callback || errback || progback){ - return valueOrPromise.then(callback, errback, progback); - } - return valueOrPromise; - }; -}); diff --git a/lib/dojo/window.js.uncompressed.js b/lib/dojo/window.js.uncompressed.js deleted file mode 100644 index 2b20b8542..000000000 --- a/lib/dojo/window.js.uncompressed.js +++ /dev/null @@ -1,168 +0,0 @@ -define("dojo/window", ["./_base/lang", "./sniff", "./_base/window", "./dom", "./dom-geometry", "./dom-style"], - function(lang, has, baseWindow, dom, geom, style){ - - // module: - // dojo/window - - var window = { - // summary: - // TODOC - - getBox: function(/*Document?*/ doc){ - // summary: - // Returns the dimensions and scroll position of the viewable area of a browser window - - doc = doc || baseWindow.doc; - - var - scrollRoot = (doc.compatMode == 'BackCompat') ? baseWindow.body(doc) : doc.documentElement, - // get scroll position - scroll = geom.docScroll(doc), // scrollRoot.scrollTop/Left should work - w, h; - - if(has("touch")){ // if(scrollbars not supported) - var uiWindow = window.get(doc); // use UI window, not dojo.global window - // on mobile, scrollRoot.clientHeight <= uiWindow.innerHeight <= scrollRoot.offsetHeight, return uiWindow.innerHeight - w = uiWindow.innerWidth || scrollRoot.clientWidth; // || scrollRoot.clientXXX probably never evaluated - h = uiWindow.innerHeight || scrollRoot.clientHeight; - }else{ - // on desktops, scrollRoot.clientHeight <= scrollRoot.offsetHeight <= uiWindow.innerHeight, return scrollRoot.clientHeight - // uiWindow.innerWidth/Height includes the scrollbar and cannot be used - w = scrollRoot.clientWidth; - h = scrollRoot.clientHeight; - } - return { - l: scroll.x, - t: scroll.y, - w: w, - h: h - }; - }, - - get: function(/*Document*/ doc){ - // summary: - // Get window object associated with document doc. - // doc: - // The document to get the associated window for. - - // In some IE versions (at least 6.0), document.parentWindow does not return a - // reference to the real window object (maybe a copy), so we must fix it as well - // We use IE specific execScript to attach the real window reference to - // document._parentWindow for later use - if(has("ie") && window !== document.parentWindow){ - /* - In IE 6, only the variable "window" can be used to connect events (others - may be only copies). - */ - doc.parentWindow.execScript("document._parentWindow = window;", "Javascript"); - //to prevent memory leak, unset it after use - //another possibility is to add an onUnload handler which seems overkill to me (liucougar) - var win = doc._parentWindow; - doc._parentWindow = null; - return win; // Window - } - - return doc.parentWindow || doc.defaultView; // Window - }, - - scrollIntoView: function(/*DomNode*/ node, /*Object?*/ pos){ - // summary: - // Scroll the passed node into view, if it is not already. - - // don't rely on node.scrollIntoView working just because the function is there - - try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method - node = dom.byId(node); - var doc = node.ownerDocument || baseWindow.doc, // TODO: why baseWindow.doc? Isn't node.ownerDocument always defined? - body = baseWindow.body(doc), - html = doc.documentElement || body.parentNode, - isIE = has("ie"), isWK = has("webkit"); - // if an untested browser, then use the native method - if((!(has("mozilla") || isIE || isWK || has("opera")) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){ - node.scrollIntoView(false); // short-circuit to native if possible - return; - } - var backCompat = doc.compatMode == 'BackCompat', - clientAreaRoot = (isIE >= 9 && "frameElement" in node.ownerDocument.parentWindow) - ? ((html.clientHeight > 0 && html.clientWidth > 0 && (body.clientHeight == 0 || body.clientWidth == 0 || body.clientHeight > html.clientHeight || body.clientWidth > html.clientWidth)) ? html : body) - : (backCompat ? body : html), - scrollRoot = isWK ? body : clientAreaRoot, - rootWidth = clientAreaRoot.clientWidth, - rootHeight = clientAreaRoot.clientHeight, - rtl = !geom.isBodyLtr(doc), - nodePos = pos || geom.position(node), - el = node.parentNode, - isFixed = function(el){ - return ((isIE <= 6 || (isIE && backCompat))? false : (style.get(el, 'position').toLowerCase() == "fixed")); - }; - if(isFixed(node)){ return; } // nothing to do - - while(el){ - if(el == body){ el = scrollRoot; } - var elPos = geom.position(el), - fixedPos = isFixed(el); - - if(el == scrollRoot){ - elPos.w = rootWidth; elPos.h = rootHeight; - if(scrollRoot == html && isIE && rtl){ elPos.x += scrollRoot.offsetWidth-elPos.w; } // IE workaround where scrollbar causes negative x - if(elPos.x < 0 || !isIE){ elPos.x = 0; } // IE can have values > 0 - if(elPos.y < 0 || !isIE){ elPos.y = 0; } - }else{ - var pb = geom.getPadBorderExtents(el); - elPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t; - var clientSize = el.clientWidth, - scrollBarSize = elPos.w - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.w = clientSize; - elPos.x += (rtl && (isIE || el.clientLeft > pb.l/*Chrome*/)) ? scrollBarSize : 0; - } - clientSize = el.clientHeight; - scrollBarSize = elPos.h - clientSize; - if(clientSize > 0 && scrollBarSize > 0){ - elPos.h = clientSize; - } - } - if(fixedPos){ // bounded by viewport, not parents - if(elPos.y < 0){ - elPos.h += elPos.y; elPos.y = 0; - } - if(elPos.x < 0){ - elPos.w += elPos.x; elPos.x = 0; - } - if(elPos.y + elPos.h > rootHeight){ - elPos.h = rootHeight - elPos.y; - } - if(elPos.x + elPos.w > rootWidth){ - elPos.w = rootWidth - elPos.x; - } - } - // calculate overflow in all 4 directions - var l = nodePos.x - elPos.x, // beyond left: < 0 - t = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0 - r = l + nodePos.w - elPos.w, // beyond right: > 0 - bot = t + nodePos.h - elPos.h; // beyond bottom: > 0 - if(r * l > 0){ - var s = Math[l < 0? "max" : "min"](l, r); - if(rtl && ((isIE == 8 && !backCompat) || isIE >= 9)){ s = -s; } - nodePos.x += el.scrollLeft; - el.scrollLeft += s; - nodePos.x -= el.scrollLeft; - } - if(bot * t > 0){ - nodePos.y += el.scrollTop; - el.scrollTop += Math[t < 0? "max" : "min"](t, bot); - nodePos.y -= el.scrollTop; - } - el = (el != scrollRoot) && !fixedPos && el.parentNode; - } - }catch(error){ - console.error('scrollIntoView: ' + error); - node.scrollIntoView(false); - } - } - }; - - 1 && lang.setObject("dojo.window", window); - - return window; -}); -- cgit v1.2.3 From cc332603431102a682feda22b9cf0093a29f0176 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov <fox@madoka.volgo-balt.ru> Date: Tue, 2 Apr 2013 21:20:20 +0400 Subject: feed-holder: remove overflow:hidden --- tt-rss.css | 1 - 1 file changed, 1 deletion(-) diff --git a/tt-rss.css b/tt-rss.css index 8d5080c6c..38ba335e2 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -768,7 +768,6 @@ div.fatalError textarea { border-left-width : 0px; border-bottom-width : 0px; border-top-width : 0px; - overflow : hidden; } #headlines-wrap-inner { -- cgit v1.2.3
    @@ -1798,6 +1798,41 @@ class Pref_Feeds extends Handler_Protected { "; } + function batchAddFeeds() { + $cat_id = db_escape_string($this->link, $_REQUEST['cat']); + $feeds = explode("\n", db_escape_string($this->link, $_REQUEST['feeds'])); + $login = db_escape_string($this->link, $_REQUEST['login']); + $pass = db_escape_string($this->link, $_REQUEST['pass']); + + foreach ($feeds as $feed) { + $feed = trim($feed); + + if (validate_feed_url($feed)) { + + db_query($this->link, "BEGIN"); + + if ($cat_id == "0" || !$cat_id) { + $cat_qpart = "NULL"; + } else { + $cat_qpart = "'$cat_id'"; + } + + $result = db_query($this->link, + "SELECT id FROM ttrss_feeds + WHERE feed_url = '$feed' AND owner_uid = ".$_SESSION["uid"]); + + if (db_num_rows($result) == 0) { + $result = db_query($this->link, + "INSERT INTO ttrss_feeds + (owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method) + VALUES ('".$_SESSION["uid"]."', '$feed', + '[Unknown]', $cat_qpart, '$login', '$pass', 0)"); + } + + db_query($this->link, "COMMIT"); + } + } + } } ?> diff --git a/classes/rpc.php b/classes/rpc.php index d7872477e..36d7083a5 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -640,42 +640,6 @@ class RPC extends Handler_Protected { return; } - function batchAddFeeds() { - $cat_id = db_escape_string($this->link, $_REQUEST['cat']); - $feeds = explode("\n", db_escape_string($this->link, $_REQUEST['feeds'])); - $login = db_escape_string($this->link, $_REQUEST['login']); - $pass = db_escape_string($this->link, $_REQUEST['pass']); - - foreach ($feeds as $feed) { - $feed = trim($feed); - - if (validate_feed_url($feed)) { - - db_query($this->link, "BEGIN"); - - if ($cat_id == "0" || !$cat_id) { - $cat_qpart = "NULL"; - } else { - $cat_qpart = "'$cat_id'"; - } - - $result = db_query($this->link, - "SELECT id FROM ttrss_feeds - WHERE feed_url = '$feed' AND owner_uid = ".$_SESSION["uid"]); - - if (db_num_rows($result) == 0) { - $result = db_query($this->link, - "INSERT INTO ttrss_feeds - (owner_uid,feed_url,title,cat_id,auth_login,auth_pass,update_method) - VALUES ('".$_SESSION["uid"]."', '$feed', - '[Unknown]', $cat_qpart, '$login', '$pass', 0)"); - } - - db_query($this->link, "COMMIT"); - } - } - } - function setScore() { $ids = db_escape_string($this->link, $_REQUEST['id']); $score = (int)db_escape_string($this->link, $_REQUEST['score']); -- cgit v1.2.3 From c88e4a2af317d5b1dfa60e639df9336a72fe879a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:34:17 +0400 Subject: remove small_article_preview --- cdm.css | 19 ------------------- classes/rpc.php | 27 --------------------------- index.php | 2 -- js/viewfeed.js | 45 --------------------------------------------- 4 files changed, 93 deletions(-) diff --git a/cdm.css b/cdm.css index 13f88dd4e..9893f43fc 100644 --- a/cdm.css +++ b/cdm.css @@ -192,23 +192,4 @@ div.cdm.expanded div.cdmHeader a.title, div.cdm.active div.cdmHeader a.title { font-size : 13px; } -div#small_article_preview { - width : 300px; - max-height : 350px; - overflow : hidden; - border : 1px solid #c0c0c0; - background : white; - position : absolute; - box-shadow : 2px 2px 4px #c0c0c0; - z-index : 2; -} -div#small_article_preview div.content { - padding : 5px; - font-size : 12px; - color : gray; -} - -div#small_article_preview div.content img { - max-width : 290px; -} diff --git a/classes/rpc.php b/classes/rpc.php index 36d7083a5..f0218f91e 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -834,32 +834,5 @@ class RPC extends Handler_Protected { } } - function cdmArticlePreview() { - $id = db_escape_string($this->link, $_REQUEST['id']); - - $result = db_query($this->link, "SELECT link, - ttrss_entries.title, content, feed_url - FROM - ttrss_entries, ttrss_user_entries - LEFT JOIN ttrss_feeds ON (ttrss_user_entries.feed_id = ttrss_feeds.id) - WHERE ref_id = '$id' AND ref_id = ttrss_entries.id AND - ttrss_user_entries.owner_uid = ". $_SESSION["uid"]); - - if (db_num_rows($result) != 0) { - $link = db_fetch_result($result, 0, "link"); - $title = db_fetch_result($result, 0, "title"); - $feed_url = db_fetch_result($result, 0, "feed_url"); - - $content = sanitize($this->link, - db_fetch_result($result, 0, "content"), false, false, $feed_url); - - print "
    ".$content.""; - - } else { - print "Article not found."; - } - - } - } ?> diff --git a/index.php b/index.php index 3b905d1b1..e390edffd 100644 --- a/index.php +++ b/index.php @@ -140,8 +140,6 @@
    - -
     
    diff --git a/js/viewfeed.js b/js/viewfeed.js index c24dec62e..e3d73b89b 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -13,8 +13,6 @@ var catchup_timeout_id = false; var cids_requested = []; var loaded_article_ids = []; -var _post_preview_timeout = false; - var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null; function headlines_callback2(transport, offset, background, infscroll_req) { @@ -1153,53 +1151,10 @@ function getActiveArticleId() { function postMouseIn(e, id) { post_under_pointer = id; - - if (_post_preview_timeout) window.clearTimeout(_post_preview_timeout); - - /* if (!isCdmMode() || !getInitParam("cdm_expanded")) { - _post_preview_timeout = window.setTimeout(function() { - displaySmallArticlePreview(e, id); - }, 1000); - } */ -} - -function displaySmallArticlePreview(e, id) { - try { - var query = "?op=rpc&method=cdmarticlepreview&id=" + id; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - cexc = $("CEXC-" + id); - preview = $("small_article_preview"); - row = $("RROW-" + id); - ctr = $("headlines-frame"); - - if (id != getActiveArticleId() && (!isCdmMode() || (cexc && Element.visible(cexc))) && row && preview) { - preview.innerHTML = transport.responseText; - new Effect.Appear(preview, {duration:0.2}); - - preview.setStyle({ - left: (e.clientX + 20) + 'px', - top: (row.offsetTop + row.offsetHeight*2 + 20 - ctr.scrollTop) + 'px' }); - - } - - } }); - - - } catch (e) { - exception_error("displaySmallArticlePreview", e); - } } function postMouseOut(id) { post_under_pointer = false; - - if (_post_preview_timeout) window.clearTimeout(_post_preview_timeout); - - if (Element.visible("small_article_preview")) - Element.hide("small_article_preview"); } function unpackVisibleHeadlines() { -- cgit v1.2.3 From 8956b3a607be2d0a28704713d6a5d915e6c82fd3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:36:00 +0400 Subject: remove obsolete checkDate stuff --- classes/rpc.php | 8 -------- js/functions.js | 50 -------------------------------------------------- 2 files changed, 58 deletions(-) diff --git a/classes/rpc.php b/classes/rpc.php index f0218f91e..64e09d1e7 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -480,14 +480,6 @@ class RPC extends Handler_Protected { print json_encode($articles); } - function checkDate() { - $date = db_escape_string($this->link, $_REQUEST["date"]); - $date_parsed = strtotime($date); - - print json_encode(array("result" => (bool)$date_parsed, - "date" => date("c", $date_parsed))); - } - function assigntolabel() { return $this->labelops(true); } diff --git a/js/functions.js b/js/functions.js index 0b39cc466..560742598 100644 --- a/js/functions.js +++ b/js/functions.js @@ -548,28 +548,6 @@ function fatalError(code, msg, ext_info) { } } -/* function filterDlgCheckType(sender) { - - try { - - var ftype = sender.value; - - // if selected filter type is 5 (Date) enable the modifier dropbox - if (ftype == 5) { - Element.show("filterDlg_dateModBox"); - Element.show("filterDlg_dateChkBox"); - } else { - Element.hide("filterDlg_dateModBox"); - Element.hide("filterDlg_dateChkBox"); - - } - - } catch (e) { - exception_error("filterDlgCheckType", e); - } - -} */ - function filterDlgCheckAction(sender) { try { @@ -603,34 +581,6 @@ function filterDlgCheckAction(sender) { } -function filterDlgCheckDate() { - try { - var dialog = dijit.byId("filterEditDlg"); - - var reg_exp = dialog.attr('value').reg_exp; - - var query = "?op=rpc&method=checkDate&date=" + reg_exp; - - new Ajax.Request("backend.php", { - parameters: query, - onComplete: function(transport) { - - var reply = JSON.parse(transport.responseText); - - if (reply['result'] == true) { - alert(__("Date syntax appears to be correct:") + " " + reply['date']); - return; - } else { - alert(__("Date syntax is incorrect.")); - } - - } }); - - - } catch (e) { - exception_error("filterDlgCheckDate", e); - } -} function explainError(code) { return displayDlg(__("Error explained"), "explainError", code); -- cgit v1.2.3 From d719b062404f551594bbe5ee37f1eb306061c118 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:41:41 +0400 Subject: rpc: move setScore to article --- classes/article.php | 11 +++++++++++ classes/rpc.php | 11 ----------- js/viewfeed.js | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/classes/article.php b/classes/article.php index 79c94f59b..6e4236936 100644 --- a/classes/article.php +++ b/classes/article.php @@ -208,5 +208,16 @@ class Article extends Handler_Protected { } + function setScore() { + $ids = db_escape_string($this->link, $_REQUEST['id']); + $score = (int)db_escape_string($this->link, $_REQUEST['score']); + + db_query($this->link, "UPDATE ttrss_user_entries SET + score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); + + print json_encode(array("id" => $id, + "score_pic" => get_score_pic($score))); + } + } diff --git a/classes/rpc.php b/classes/rpc.php index 64e09d1e7..d61b2891a 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -632,17 +632,6 @@ class RPC extends Handler_Protected { return; } - function setScore() { - $ids = db_escape_string($this->link, $_REQUEST['id']); - $score = (int)db_escape_string($this->link, $_REQUEST['score']); - - db_query($this->link, "UPDATE ttrss_user_entries SET - score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]); - - print json_encode(array("id" => $id, - "score_pic" => get_score_pic($score))); - } - function setpanelmode() { $wide = (int) $_REQUEST["wide"]; diff --git a/js/viewfeed.js b/js/viewfeed.js index e3d73b89b..be2b88f4d 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -2020,7 +2020,7 @@ function setSelectionScore() { var score = prompt(__("Please enter new score for selected articles:"), score); if (score != undefined) { - var query = "op=rpc&method=setScore&id=" + param_escape(ids.toString()) + + var query = "op=article&method=setScore&id=" + param_escape(ids.toString()) + "&score=" + param_escape(score); new Ajax.Request("backend.php", { @@ -2063,7 +2063,7 @@ function changeScore(id, pic) { if (new_score != undefined) { - var query = "op=rpc&method=setScore&id=" + param_escape(id) + + var query = "op=article&method=setScore&id=" + param_escape(id) + "&score=" + param_escape(new_score); new Ajax.Request("backend.php", { -- cgit v1.2.3 From 195187c4903583846edbd58516809ae743bd110e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:47:43 +0400 Subject: rpc: move several feed-related calls to pref-feeds --- classes/pref/feeds.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ classes/rpc.php | 47 ----------------------------------------------- js/functions.js | 2 +- js/prefs.js | 4 ++-- 4 files changed, 52 insertions(+), 50 deletions(-) diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index aa018ee10..7fb64623e 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1834,5 +1834,54 @@ class Pref_Feeds extends Handler_Protected { } } + function regenOPMLKey() { + $this->update_feed_access_key($this->link, 'OPML:Publish', + false, $_SESSION["uid"]); + + $new_link = Opml::opml_publish_url($this->link); + + print json_encode(array("link" => $new_link)); + } + + function regenFeedKey() { + $feed_id = db_escape_string($this->link, $_REQUEST['id']); + $is_cat = db_escape_string($this->link, $_REQUEST['is_cat']) == "true"; + + $new_key = $this->update_feed_access_key($this->link, $feed_id, $is_cat); + + print json_encode(array("link" => $new_key)); + } + + + private function update_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false) { + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $sql_is_cat = bool_to_sql_bool($is_cat); + + $result = db_query($link, "SELECT access_key FROM ttrss_access_keys + WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat + AND owner_uid = " . $owner_uid); + + if (db_num_rows($result) == 1) { + $key = db_escape_string($this->link, sha1(uniqid(rand(), true))); + + db_query($link, "UPDATE ttrss_access_keys SET access_key = '$key' + WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat + AND owner_uid = " . $owner_uid); + + return $key; + + } else { + return get_feed_access_key($link, $feed_id, $is_cat, $owner_uid); + } + } + + // Silent + function clearKeys() { + db_query($this->link, "DELETE FROM ttrss_access_keys WHERE + owner_uid = " . $_SESSION["uid"]); + } + + } ?> diff --git a/classes/rpc.php b/classes/rpc.php index d61b2891a..3593bd5d8 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -411,15 +411,6 @@ class RPC extends Handler_Protected { "content" => $tags_str, "content_full" => $tags_str_full)); } - function regenOPMLKey() { - $this->update_feed_access_key($this->link, 'OPML:Publish', - false, $_SESSION["uid"]); - - $new_link = Opml::opml_publish_url($this->link); - - print json_encode(array("link" => $new_link)); - } - function completeLabels() { $search = db_escape_string($this->link, $_REQUEST["search"]); @@ -609,21 +600,6 @@ class RPC extends Handler_Protected { print_feed_cat_select($this->link, "cat_id", $id); } - function regenFeedKey() { - $feed_id = db_escape_string($this->link, $_REQUEST['id']); - $is_cat = db_escape_string($this->link, $_REQUEST['is_cat']) == "true"; - - $new_key = $this->update_feed_access_key($this->link, $feed_id, $is_cat); - - print json_encode(array("link" => $new_key)); - } - - // Silent - function clearKeys() { - db_query($this->link, "DELETE FROM ttrss_access_keys WHERE - owner_uid = " . $_SESSION["uid"]); - } - // Silent function clearArticleKeys() { db_query($this->link, "UPDATE ttrss_user_entries SET uuid = '' WHERE @@ -716,29 +692,6 @@ class RPC extends Handler_Protected { } - function update_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false) { - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - $sql_is_cat = bool_to_sql_bool($is_cat); - - $result = db_query($link, "SELECT access_key FROM ttrss_access_keys - WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat - AND owner_uid = " . $owner_uid); - - if (db_num_rows($result) == 1) { - $key = db_escape_string($this->link, sha1(uniqid(rand(), true))); - - db_query($link, "UPDATE ttrss_access_keys SET access_key = '$key' - WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat - AND owner_uid = " . $owner_uid); - - return $key; - - } else { - return get_feed_access_key($link, $feed_id, $is_cat, $owner_uid); - } - } - private function markArticlesById($link, $ids, $cmode) { $tmp_ids = array(); diff --git a/js/functions.js b/js/functions.js index 560742598..4e4d03557 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1357,7 +1357,7 @@ function genUrlChangeKey(feed, is_cat) { notify_progress("Trying to change address...", true); - var query = "?op=rpc&method=regenFeedKey&id=" + param_escape(feed) + + var query = "?op=pref-feeds&method=regenFeedKey&id=" + param_escape(feed) + "&is_cat=" + param_escape(is_cat); new Ajax.Request("backend.php", { diff --git a/js/prefs.js b/js/prefs.js index 358625e93..b4ecd2584 100644 --- a/js/prefs.js +++ b/js/prefs.js @@ -1221,7 +1221,7 @@ function opmlRegenKey() { notify_progress("Trying to change address...", true); - var query = "?op=rpc&method=regenOPMLKey"; + var query = "?op=pref-feeds&method=regenOPMLKey"; new Ajax.Request("backend.php", { parameters: query, @@ -1521,7 +1521,7 @@ function clearFeedAccessKeys() { if (ok) { notify_progress("Clearing URLs..."); - var query = "?op=rpc&method=clearKeys"; + var query = "?op=pref-feeds&method=clearKeys"; new Ajax.Request("backend.php", { parameters: query, -- cgit v1.2.3 From 5df8be5c0ac69db8716fcb29a27b2bbc3fbcbace Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:52:21 +0400 Subject: rpc: move setArticleTags to article --- classes/article.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++- classes/rpc.php | 64 --------------------------------------------------- 2 files changed, 65 insertions(+), 65 deletions(-) diff --git a/classes/article.php b/classes/article.php index 6e4236936..bf1e55662 100644 --- a/classes/article.php +++ b/classes/article.php @@ -185,7 +185,7 @@ class Article extends Handler_Protected { $tags_str = join(", ", $tags); print ""; - print ""; + print ""; print ""; print "
    "; @@ -220,4 +220,68 @@ class Article extends Handler_Protected { } + function setArticleTags() { + + $id = db_escape_string($this->link, $_REQUEST["id"]); + + $tags_str = db_escape_string($this->link, $_REQUEST["tags_str"]); + $tags = array_unique(trim_array(explode(",", $tags_str))); + + db_query($this->link, "BEGIN"); + + $result = db_query($this->link, "SELECT int_id FROM ttrss_user_entries WHERE + ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1"); + + if (db_num_rows($result) == 1) { + + $tags_to_cache = array(); + + $int_id = db_fetch_result($result, 0, "int_id"); + + db_query($this->link, "DELETE FROM ttrss_tags WHERE + post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'"); + + foreach ($tags as $tag) { + $tag = sanitize_tag($tag); + + if (!tag_is_valid($tag)) { + continue; + } + + if (preg_match("/^[0-9]*$/", $tag)) { + continue; + } + + // print ""; + + if ($tag != '') { + db_query($this->link, "INSERT INTO ttrss_tags + (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')"); + } + + array_push($tags_to_cache, $tag); + } + + /* update tag cache */ + + sort($tags_to_cache); + $tags_str = join(",", $tags_to_cache); + + db_query($this->link, "UPDATE ttrss_user_entries + SET tag_cache = '$tags_str' WHERE ref_id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + } + + db_query($this->link, "COMMIT"); + + $tags = get_article_tags($this->link, $id); + $tags_str = format_tags_string($tags, $id); + $tags_str_full = join(", ", $tags); + + if (!$tags_str_full) $tags_str_full = __("no tags"); + + print json_encode(array("id" => (int)$id, + "content" => $tags_str, "content_full" => $tags_str_full)); + } + } diff --git a/classes/rpc.php b/classes/rpc.php index 3593bd5d8..a78e079ca 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -347,70 +347,6 @@ class RPC extends Handler_Protected { print json_encode($reply); } - function setArticleTags() { - - $id = db_escape_string($this->link, $_REQUEST["id"]); - - $tags_str = db_escape_string($this->link, $_REQUEST["tags_str"]); - $tags = array_unique(trim_array(explode(",", $tags_str))); - - db_query($this->link, "BEGIN"); - - $result = db_query($this->link, "SELECT int_id FROM ttrss_user_entries WHERE - ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1"); - - if (db_num_rows($result) == 1) { - - $tags_to_cache = array(); - - $int_id = db_fetch_result($result, 0, "int_id"); - - db_query($this->link, "DELETE FROM ttrss_tags WHERE - post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'"); - - foreach ($tags as $tag) { - $tag = sanitize_tag($tag); - - if (!tag_is_valid($tag)) { - continue; - } - - if (preg_match("/^[0-9]*$/", $tag)) { - continue; - } - - // print ""; - - if ($tag != '') { - db_query($this->link, "INSERT INTO ttrss_tags - (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')"); - } - - array_push($tags_to_cache, $tag); - } - - /* update tag cache */ - - sort($tags_to_cache); - $tags_str = join(",", $tags_to_cache); - - db_query($this->link, "UPDATE ttrss_user_entries - SET tag_cache = '$tags_str' WHERE ref_id = '$id' - AND owner_uid = " . $_SESSION["uid"]); - } - - db_query($this->link, "COMMIT"); - - $tags = get_article_tags($this->link, $id); - $tags_str = format_tags_string($tags, $id); - $tags_str_full = join(", ", $tags); - - if (!$tags_str_full) $tags_str_full = __("no tags"); - - print json_encode(array("id" => (int)$id, - "content" => $tags_str, "content_full" => $tags_str_full)); - } - function completeLabels() { $search = db_escape_string($this->link, $_REQUEST["search"]); -- cgit v1.2.3 From c83554bdddd1efb8a600d2dc6dbd119e3104013c Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:53:36 +0400 Subject: rpc: move completeTags to article --- classes/article.php | 17 +++++++++++++++++ classes/rpc.php | 16 ---------------- js/viewfeed.js | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/classes/article.php b/classes/article.php index bf1e55662..e75af0e7a 100644 --- a/classes/article.php +++ b/classes/article.php @@ -284,4 +284,21 @@ class Article extends Handler_Protected { "content" => $tags_str, "content_full" => $tags_str_full)); } + + function completeTags() { + $search = db_escape_string($this->link, $_REQUEST["search"]); + + $result = db_query($this->link, "SELECT DISTINCT tag_name FROM ttrss_tags + WHERE owner_uid = '".$_SESSION["uid"]."' AND + tag_name LIKE '$search%' ORDER BY tag_name + LIMIT 10"); + + print "
      "; + while ($line = db_fetch_assoc($result)) { + print "
    • " . $line["tag_name"] . "
    • "; + } + print "
    "; + } + + } diff --git a/classes/rpc.php b/classes/rpc.php index a78e079ca..04b763c46 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -363,22 +363,6 @@ class RPC extends Handler_Protected { print ""; } - - function completeTags() { - $search = db_escape_string($this->link, $_REQUEST["search"]); - - $result = db_query($this->link, "SELECT DISTINCT tag_name FROM ttrss_tags - WHERE owner_uid = '".$_SESSION["uid"]."' AND - tag_name LIKE '$search%' ORDER BY tag_name - LIMIT 10"); - - print "
      "; - while ($line = db_fetch_assoc($result)) { - print "
    • " . $line["tag_name"] . "
    • "; - } - print "
    "; - } - function purge() { $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"])); $days = sprintf("%d", $_REQUEST["days"]); diff --git a/js/viewfeed.js b/js/viewfeed.js index be2b88f4d..31eff1b8a 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1114,7 +1114,7 @@ function editArticleTags(id) { dojo.disconnect(tmph); new Ajax.Autocompleter('tags_str', 'tags_choices', - "backend.php?op=rpc&method=completeTags", + "backend.php?op=article&method=completeTags", { tokens: ',', paramName: "search" }); }); -- cgit v1.2.3 From 9c96a3e28cb360fc79d1e58f4871ce47ad55333e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:54:31 +0400 Subject: rpc: remove getArticles --- classes/rpc.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/classes/rpc.php b/classes/rpc.php index 04b763c46..de52a9e8c 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -378,19 +378,6 @@ class RPC extends Handler_Protected { } } - function getArticles() { - $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"])); - $articles = array(); - - foreach ($ids as $id) { - if ($id) { - array_push($articles, format_article($this->link, $id, 0, false)); - } - } - - print json_encode($articles); - } - function assigntolabel() { return $this->labelops(true); } -- cgit v1.2.3 From 4b7726f0b44db36ad12c0a0918a9129c8cbb1caa Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 14:56:08 +0400 Subject: rpc: move labelops to article --- classes/article.php | 42 ++++++++++++++++++++++++++++++++++++++++++ classes/rpc.php | 41 ----------------------------------------- js/viewfeed.js | 4 ++-- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/classes/article.php b/classes/article.php index e75af0e7a..9a0970140 100644 --- a/classes/article.php +++ b/classes/article.php @@ -300,5 +300,47 @@ class Article extends Handler_Protected { print ""; } + function assigntolabel() { + return $this->labelops(true); + } + + function removefromlabel() { + return $this->labelops(false); + } + + private function labelops($assign) { + $reply = array(); + + $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"])); + $label_id = db_escape_string($this->link, $_REQUEST["lid"]); + + $label = db_escape_string($this->link, label_find_caption($this->link, $label_id, + $_SESSION["uid"])); + + $reply["info-for-headlines"] = array(); + + if ($label) { + + foreach ($ids as $id) { + + if ($assign) + label_add_article($this->link, $id, $label, $_SESSION["uid"]); + else + label_remove_article($this->link, $id, $label, $_SESSION["uid"]); + + $labels = get_article_labels($this->link, $id, $_SESSION["uid"]); + + array_push($reply["info-for-headlines"], + array("id" => $id, "labels" => format_article_labels($labels, $id))); + + } + } + + $reply["message"] = "UPDATE_COUNTERS"; + + print json_encode($reply); + } + + } diff --git a/classes/rpc.php b/classes/rpc.php index de52a9e8c..a63392095 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -378,47 +378,6 @@ class RPC extends Handler_Protected { } } - function assigntolabel() { - return $this->labelops(true); - } - - function removefromlabel() { - return $this->labelops(false); - } - - function labelops($assign) { - $reply = array(); - - $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"])); - $label_id = db_escape_string($this->link, $_REQUEST["lid"]); - - $label = db_escape_string($this->link, label_find_caption($this->link, $label_id, - $_SESSION["uid"])); - - $reply["info-for-headlines"] = array(); - - if ($label) { - - foreach ($ids as $id) { - - if ($assign) - label_add_article($this->link, $id, $label, $_SESSION["uid"]); - else - label_remove_article($this->link, $id, $label, $_SESSION["uid"]); - - $labels = get_article_labels($this->link, $id, $_SESSION["uid"]); - - array_push($reply["info-for-headlines"], - array("id" => $id, "labels" => format_article_labels($labels, $id))); - - } - } - - $reply["message"] = "UPDATE_COUNTERS"; - - print json_encode($reply); - } - function updateFeedBrowser() { $search = db_escape_string($this->link, $_REQUEST["search"]); $limit = db_escape_string($this->link, $_REQUEST["limit"]); diff --git a/js/viewfeed.js b/js/viewfeed.js index 31eff1b8a..48137a136 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -678,7 +678,7 @@ function selectionRemoveLabel(id, ids) { return; } - var query = "?op=rpc&method=removeFromLabel&ids=" + + var query = "?op=article&method=removeFromLabel&ids=" + param_escape(ids.toString()) + "&lid=" + param_escape(id); console.log(query); @@ -706,7 +706,7 @@ function selectionAssignLabel(id, ids) { return; } - var query = "?op=rpc&method=assignToLabel&ids=" + + var query = "?op=article&method=assignToLabel&ids=" + param_escape(ids.toString()) + "&lid=" + param_escape(id); console.log(query); -- cgit v1.2.3 From 58f42816c56a8ea82f1fabe1ba83794005f1c7d6 Mon Sep 17 00:00:00 2001 From: Heiko Adams Date: Tue, 2 Apr 2013 13:30:53 +0200 Subject: updated german translation --- locale/de_DE/LC_MESSAGES/messages.mo | Bin 62612 -> 66728 bytes locale/de_DE/LC_MESSAGES/messages.po | 1420 ++++++++++++++++------------------ 2 files changed, 685 insertions(+), 735 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index b24d3b402..ebb1ac284 100755 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index bb9ddf7e0..3a7cdc1a6 100755 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -12,16 +12,16 @@ msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-04-01 21:30+0400\n" -"PO-Revision-Date: 2013-03-25 17:14+0100\n" -"Last-Translator: Joschasa \n" +"PO-Revision-Date: 2013-04-02 13:24+0100\n" +"Last-Translator: Heiko Adams \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Poedit-Language: German\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Bookmarks: -1,557,558,-1,-1,-1,-1,-1,-1,-1\n" +"X-Generator: Poedit 1.5.4\n" #: backend.php:69 msgid "Use default" @@ -55,48 +55,39 @@ msgstr "Nach 3 Monaten" msgid "Default interval" msgstr "Standard-Intervall" -#: backend.php:79 -#: backend.php:89 +#: backend.php:79 backend.php:89 msgid "Disable updates" msgstr "Nie" -#: backend.php:80 -#: backend.php:90 +#: backend.php:80 backend.php:90 msgid "Each 15 minutes" msgstr "Alle 15 Minuten" -#: backend.php:81 -#: backend.php:91 +#: backend.php:81 backend.php:91 msgid "Each 30 minutes" msgstr "Alle 30 Minuten" -#: backend.php:82 -#: backend.php:92 +#: backend.php:82 backend.php:92 msgid "Hourly" msgstr "Stündlich" -#: backend.php:83 -#: backend.php:93 +#: backend.php:83 backend.php:93 msgid "Each 4 hours" msgstr "Alle 4 Stunden" -#: backend.php:84 -#: backend.php:94 +#: backend.php:84 backend.php:94 msgid "Each 12 hours" msgstr "Alle 12 Stunden" -#: backend.php:85 -#: backend.php:95 +#: backend.php:85 backend.php:95 msgid "Daily" msgstr "Täglich" -#: backend.php:86 -#: backend.php:96 +#: backend.php:86 backend.php:96 msgid "Weekly" msgstr "Wöchentlich" -#: backend.php:99 -#: classes/pref/users.php:123 +#: backend.php:99 classes/pref/users.php:123 msgid "User" msgstr "Benutzer" @@ -132,19 +123,10 @@ msgstr ", gefunden: " msgid "Tiny Tiny RSS database is up to date." msgstr "Tiny Tiny RSS Datenbank ist auf dem neusten Stand." -#: db-updater.php:96 -#: db-updater.php:165 -#: db-updater.php:178 -#: register.php:196 -#: register.php:241 -#: register.php:254 -#: register.php:269 -#: register.php:288 -#: register.php:336 -#: register.php:346 -#: register.php:358 -#: classes/handler/public.php:648 -#: classes/handler/public.php:736 +#: db-updater.php:96 db-updater.php:165 db-updater.php:178 register.php:196 +#: register.php:241 register.php:254 register.php:269 register.php:288 +#: register.php:336 register.php:346 register.php:358 +#: classes/handler/public.php:648 classes/handler/public.php:736 #: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Zu Tiny Tiny RSS zurückkehren" @@ -155,8 +137,12 @@ msgstr "Bitte sichern Sie Ihre Datenbank bevor Sie fortfahren." #: db-updater.php:104 #, php-format -msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." -msgstr "Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste Version (%d nach %d)." +msgid "" +"Your Tiny Tiny RSS database needs update to the latest version (%d to " +"%d)." +msgstr "" +"Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste " +"Version (%d nach %d)." #: db-updater.php:118 msgid "Perform updates" @@ -186,9 +172,13 @@ msgstr "FEHLER!" #: db-updater.php:160 #, php-format msgid "Finished. Performed %d update up to schema version %d." -msgid_plural "Finished. Performed %d updates up to schema version %d." -msgstr[0] "Beendet. %d Aktualisierung auf Schema Version %d durchgeführt." -msgstr[1] "Beendet. %d Aktualisierungen auf Schema Version %d durchgeführt." +msgid_plural "" +"Finished. Performed %d updates up to schema version %d." +msgstr[0] "" +"Beendet. %d Aktualisierung auf Schema Version %d durchgeführt." +msgstr[1] "" +"Beendet. %d Aktualisierungen auf Schema Version %d " +"durchgeführt." #: db-updater.php:170 msgid "Your database schema is from a newer version of Tiny Tiny RSS." @@ -200,16 +190,28 @@ msgid "Found schema version: %d, required: %d." msgstr "Gefundene Schemaversion: %d, benötigt: %d." #: db-updater.php:174 -msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." -msgstr "Aktualisierung des Schemas nicht möglich. Bitte aktualisieren Sie die Tiny Tiny RSS Dateien auf die neuere Version und fahren Sie fort." +msgid "" +"Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer " +"version and continue." +msgstr "" +"Aktualisierung des Schemas nicht möglich. Bitte aktualisieren Sie die Tiny " +"Tiny RSS Dateien auf die neuere Version und fahren Sie fort." #: errors.php:9 -msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." -msgstr "Dieses Programm benötigt XmlHttpRequest um ordnungsgemäß zu funktionieren. Ihr Browser scheint dies nicht zu unterstützen." +msgid "" +"This program requires XmlHttpRequest to function properly. Your browser " +"doesn't seem to support it." +msgstr "" +"Dieses Programm benötigt XmlHttpRequest um ordnungsgemäß zu funktionieren. " +"Ihr Browser scheint dies nicht zu unterstützen." #: errors.php:12 -msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." -msgstr "Dieses Programm benötigt Cookies um ordungsgemäß zu funktionieren. Ihr Browser scheint diese nicht zu unterstützen." +msgid "" +"This program requires cookies to function properly. Your browser doesn't " +"seem to support them." +msgstr "" +"Dieses Programm benötigt Cookies um ordungsgemäß zu funktionieren. Ihr " +"Browser scheint diese nicht zu unterstützen." #: errors.php:15 msgid "Backend sanity check failed." @@ -220,8 +222,12 @@ msgid "Frontend sanity check failed." msgstr "Frontend Sicherheitsprüfung fehlgeschlagen." #: errors.php:19 -msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." -msgstr "Falsche Version des Datenbankschemas. <a href='update.php'>Bitte aktualisieren</a>." +msgid "" +"Incorrect database schema version. <a href='db-updater.php'>Please " +"update</a>." +msgstr "" +"Falsche Version des Datenbankschemas. <a href='update.php'>Bitte " +"aktualisieren</a>." #: errors.php:21 msgid "Request not authorized." @@ -232,60 +238,48 @@ msgid "No operation to perform." msgstr "Keine Funktion ausgewählt." #: errors.php:25 -msgid "Could not display feed: query failed. Please check label match syntax or local configuration." -msgstr "Kann Feed nicht angezeigen: Abfrage fehlgeschlagen. Bitte überprüfen Sie die Label Such-Syntax oder die lokale Konfiguration." +msgid "" +"Could not display feed: query failed. Please check label match syntax or " +"local configuration." +msgstr "" +"Kann Feed nicht angezeigen: Abfrage fehlgeschlagen. Bitte überprüfen Sie die " +"Label Such-Syntax oder die lokale Konfiguration." #: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "Zugriff verweigert. Sie haben nicht die benötigten Rechte um auf diese Seite zuzugreifen." +msgstr "" +"Zugriff verweigert. Sie haben nicht die benötigten Rechte um auf diese Seite " +"zuzugreifen." #: errors.php:29 msgid "Configuration check failed" msgstr "Konfigurationsprüfung fehlgeschlagen" #: errors.php:31 -msgid "Your version of MySQL is not currently supported. Please see official site for more information." -msgstr "Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Für weitere Informationen schauen Sie sich die offiziellen Website an." +msgid "" +"Your version of MySQL is not currently supported. Please see official site " +"for more information." +msgstr "" +"Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Für weitere " +"Informationen schauen Sie sich die offiziellen Website an." #: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" - -#: index.php:135 -#: index.php:154 -#: index.php:273 -#: prefs.php:103 -#: classes/backend.php:5 -#: classes/pref/labels.php:296 -#: classes/pref/filters.php:680 -#: classes/pref/feeds.php:1331 -#: plugins/digest/digest_body.php:63 -#: js/feedlist.js:128 -#: js/feedlist.js:448 -#: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 -#: js/prefs.js:86 -#: js/prefs.js:576 -#: js/prefs.js:666 -#: js/prefs.js:858 -#: js/prefs.js:1445 -#: js/prefs.js:1498 -#: js/prefs.js:1557 -#: js/prefs.js:1574 -#: js/prefs.js:1590 -#: js/prefs.js:1606 -#: js/prefs.js:1625 -#: js/prefs.js:1798 -#: js/prefs.js:1814 -#: js/tt-rss.js:475 -#: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 -#: plugins/import_export/import_export.js:17 -#: plugins/updater/updater.js:17 +msgstr "" +"SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP " +"Konfiguration" + +#: index.php:135 index.php:154 index.php:273 prefs.php:103 +#: classes/backend.php:5 classes/pref/labels.php:296 +#: classes/pref/filters.php:680 classes/pref/feeds.php:1331 +#: plugins/digest/digest_body.php:63 js/feedlist.js:128 js/feedlist.js:448 +#: js/functions.js:420 js/functions.js:808 js/functions.js:1244 +#: js/functions.js:1379 js/functions.js:1691 js/prefs.js:86 js/prefs.js:576 +#: js/prefs.js:666 js/prefs.js:858 js/prefs.js:1445 js/prefs.js:1498 +#: js/prefs.js:1557 js/prefs.js:1574 js/prefs.js:1590 js/prefs.js:1606 +#: js/prefs.js:1625 js/prefs.js:1798 js/prefs.js:1814 js/tt-rss.js:475 +#: js/tt-rss.js:492 js/viewfeed.js:774 js/viewfeed.js:1245 +#: plugins/import_export/import_export.js:17 plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Ladevorgang, bitte warten..." @@ -305,32 +299,25 @@ msgstr "Adaptiv" msgid "All Articles" msgstr "Alle Artikel" -#: index.php:176 -#: include/functions.php:1925 -#: classes/feeds.php:106 +#: index.php:176 include/functions.php:1925 classes/feeds.php:106 msgid "Starred" msgstr "Markiert" -#: index.php:177 -#: include/functions.php:1926 -#: classes/feeds.php:107 +#: index.php:177 include/functions.php:1926 classes/feeds.php:107 msgid "Published" msgstr "Veröffentlicht" -#: index.php:178 -#: classes/feeds.php:93 -#: classes/feeds.php:105 +#: index.php:178 classes/feeds.php:93 classes/feeds.php:105 msgid "Unread" msgstr "Ungelesen" #: index.php:179 -#, fuzzy msgid "Unread First" -msgstr "Ungelesen" +msgstr "Ungelesene zuerst" #: index.php:180 msgid "With Note" -msgstr "" +msgstr "mit Notiz" #: index.php:181 msgid "Ignore Scoring" @@ -346,45 +333,37 @@ msgstr "Standard" #: index.php:188 msgid "Newest first" -msgstr "" +msgstr "neueste zuerst" #: index.php:189 msgid "Oldest first" -msgstr "" +msgstr "älteste zuerst" #: index.php:192 msgid "Mark feed as read" msgstr "Feed als gelesen markieren" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 -#: classes/feeds.php:111 -#: classes/feeds.php:441 -#: js/FeedTree.js:128 -#: js/FeedTree.js:156 -#: plugins/digest/digest.js:647 +#: index.php:195 index.php:237 include/functions.php:1915 +#: include/localized_schema.php:10 classes/feeds.php:111 classes/feeds.php:441 +#: js/FeedTree.js:128 js/FeedTree.js:156 plugins/digest/digest.js:647 msgid "Mark as read" msgstr "Als gelesen markieren" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:196 include/functions.php:1811 include/functions.php:1923 msgid "All articles" msgstr "Alle Artikel" #: index.php:197 msgid "Older than one day" -msgstr "" +msgstr "älter als einen Tag" #: index.php:198 msgid "Older than one week" -msgstr "" +msgstr "älter als eine Woche" #: index.php:199 msgid "Older than two weeks" -msgstr "" +msgstr "älter als 2 Wochen" #: index.php:214 msgid "Communication problem with server." @@ -410,8 +389,7 @@ msgstr "Suchen..." msgid "Feed actions:" msgstr "Feed-Aktionen:" -#: index.php:232 -#: classes/handler/public.php:578 +#: index.php:232 classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feed abonnieren..." @@ -423,9 +401,7 @@ msgstr "Feed bearbeiten..." msgid "Rescore feed" msgstr "Feed neu bewerten" -#: index.php:235 -#: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: index.php:235 classes/pref/feeds.php:717 classes/pref/feeds.php:1304 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Feed abbestellen" @@ -450,8 +426,7 @@ msgstr "Zur Zusammenfassung wechseln..." msgid "Show tag cloud..." msgstr "Tagwolke anzeigen..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:244 include/functions.php:1901 msgid "Toggle widescreen mode" msgstr "Breitbild-Modus umschalten" @@ -471,16 +446,13 @@ msgstr "Filter erstellen..." msgid "Keyboard shortcuts help" msgstr "Tastaturkürzel..." -#: index.php:257 -#: plugins/digest/digest_body.php:77 +#: index.php:257 plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 msgid "Logout" msgstr "Abmelden" -#: prefs.php:36 -#: prefs.php:121 -#: include/functions.php:1928 +#: prefs.php:36 prefs.php:121 include/functions.php:1928 #: classes/pref/prefs.php:377 msgid "Preferences" msgstr "Einstellungen" @@ -493,23 +465,17 @@ msgstr "Tastaturkürzel" msgid "Exit preferences" msgstr "Einstellungen verlassen" -#: prefs.php:124 -#: classes/pref/feeds.php:107 -#: classes/pref/feeds.php:1209 +#: prefs.php:124 classes/pref/feeds.php:107 classes/pref/feeds.php:1209 #: classes/pref/feeds.php:1272 msgid "Feeds" msgstr "Feeds" -#: prefs.php:127 -#: classes/pref/filters.php:156 +#: prefs.php:127 classes/pref/filters.php:156 msgid "Filters" msgstr "Filter" -#: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 -#: classes/pref/labels.php:90 -#: plugins/mobile/mobile-functions.php:198 +#: prefs.php:130 include/functions.php:1118 include/functions.php:1754 +#: classes/pref/labels.php:90 plugins/mobile/mobile-functions.php:198 msgid "Labels" msgstr "Label" @@ -517,8 +483,7 @@ msgstr "Label" msgid "Users" msgstr "Benutzer" -#: register.php:186 -#: include/login_form.php:238 +#: register.php:186 include/login_form.php:238 msgid "Create new account" msgstr "Neues Konto erstellen" @@ -527,8 +492,14 @@ msgid "New user registrations are administratively disabled." msgstr "Die Registrierung für neue Benutzer wurde administrativ deaktiviert." #: register.php:217 -msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent." -msgstr "Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail-Adresse gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, werden gelöscht." +msgid "" +"Your temporary password will be sent to the specified email. Accounts, which " +"were not logged in once, are erased automatically 24 hours after temporary " +"password is sent." +msgstr "" +"Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail-Adresse " +"gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, " +"werden gelöscht." #: register.php:223 msgid "Desired login:" @@ -538,13 +509,11 @@ msgstr "Gewünschter Benutzername:" msgid "Check availability" msgstr "Verfügbarkeit prüfen" -#: register.php:228 -#: classes/handler/public.php:776 +#: register.php:228 classes/handler/public.php:776 msgid "Email:" msgstr "E-Mail:" -#: register.php:231 -#: classes/handler/public.php:781 +#: register.php:231 classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Wieviel ist zwei plus zwei:" @@ -576,13 +545,9 @@ msgstr "Registrierung für neue Benutzer ist momentan geschlossen." msgid "Tiny Tiny RSS data update script." msgstr "Skript zum Updaten von Tiny Tiny RSS." -#: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 -#: classes/opml.php:416 -#: classes/pref/feeds.php:222 +#: include/digest.php:109 include/functions.php:1127 +#: include/functions.php:1655 include/functions.php:1740 +#: include/functions.php:1762 classes/opml.php:416 classes/pref/feeds.php:222 msgid "Uncategorized" msgstr "Unkategorisiert" @@ -597,14 +562,12 @@ msgstr[1] "%d archivierte Artikel" msgid "No feeds found." msgstr "Keine Feeds gefunden." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1116 include/functions.php:1752 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Sonderfeeds" -#: include/functions.php:1604 -#: classes/feeds.php:1101 +#: include/functions.php:1604 classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alle Feeds" @@ -669,13 +632,11 @@ msgstr "Artikel" msgid "Toggle starred" msgstr "Markierung ein-/ausschalten" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1888 js/viewfeed.js:1908 msgid "Toggle published" msgstr "Veröffentlichung ein-/ausschalten" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1889 js/viewfeed.js:1886 msgid "Toggle unread" msgstr "Gelesen-Status umschalten" @@ -684,26 +645,22 @@ msgid "Edit tags" msgstr "Tags bearbeiten" #: include/functions.php:1891 -#, fuzzy msgid "Dismiss selected" -msgstr "Ausgewählte Artikel verbergen" +msgstr "Ausgewählte Artikel verwerfen" #: include/functions.php:1892 -#, fuzzy msgid "Dismiss read" -msgstr "Gelesene Artikel verbergen" +msgstr "gelesene Artikel verwerfen" #: include/functions.php:1893 msgid "Open in new window" msgstr "In neuem Fenster öffnen" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1894 js/viewfeed.js:1927 msgid "Mark below as read" msgstr "Untere als gelesen markieren" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1895 js/viewfeed.js:1921 msgid "Mark above as read" msgstr "Obige als gelesen markieren" @@ -716,7 +673,6 @@ msgid "Scroll up" msgstr "Nach oben scrollen" #: include/functions.php:1898 -#, fuzzy msgid "Select article under cursor" msgstr "Artikel unter Mauszeiger auswählen" @@ -725,13 +681,10 @@ msgid "Email article" msgstr "Artikel per E-Mail versenden" #: include/functions.php:1900 -#, fuzzy msgid "Close/collapse article" -msgstr "Artikel schließen" +msgstr "Artikel schließen/verbergen" -#: include/functions.php:1902 -#: plugins/embed_original/init.php:33 -#, fuzzy +#: include/functions.php:1902 plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "\"Original einbetten\" umschalten" @@ -763,8 +716,7 @@ msgstr "Auswahl umkehren" msgid "Deselect everything" msgstr "Auswahl aufheben" -#: include/functions.php:1910 -#: classes/pref/feeds.php:521 +#: include/functions.php:1910 classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Feed" @@ -777,19 +729,15 @@ msgstr "Aktuellen Feed aktualisieren" msgid "Un/hide read feeds" msgstr "Gelesene Feeds zeigen/verstecken" -#: include/functions.php:1913 -#: classes/pref/feeds.php:1275 +#: include/functions.php:1913 classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Feed abonnieren" -#: include/functions.php:1914 -#: js/FeedTree.js:135 -#: js/PrefFeedTree.js:67 +#: include/functions.php:1914 js/FeedTree.js:135 js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Feed bearbeiten" #: include/functions.php:1916 -#, fuzzy msgid "Reverse headlines" msgstr "Schlagzeilensortierung umkehren" @@ -797,8 +745,7 @@ msgstr "Schlagzeilensortierung umkehren" msgid "Debug feed update" msgstr "Aktualisierung im Diagnose-Modus durchführen" -#: include/functions.php:1918 -#: js/FeedTree.js:178 +#: include/functions.php:1918 js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Alle Feeds als gelesen markieren" @@ -811,7 +758,6 @@ msgid "Toggle combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" #: include/functions.php:1921 -#, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" @@ -823,9 +769,7 @@ msgstr "Gehe zu" msgid "Fresh" msgstr "Neu" -#: include/functions.php:1927 -#: js/tt-rss.js:431 -#: js/tt-rss.js:584 +#: include/functions.php:1927 js/tt-rss.js:431 js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tagwolke" @@ -833,13 +777,11 @@ msgstr "Tagwolke" msgid "Other" msgstr "Sonstiges" -#: include/functions.php:1930 -#: classes/pref/labels.php:281 +#: include/functions.php:1930 classes/pref/labels.php:281 msgid "Create label" msgstr "Label erstellen" -#: include/functions.php:1931 -#: classes/pref/filters.php:654 +#: include/functions.php:1931 classes/pref/filters.php:654 msgid "Create filter" msgstr "Filter erstellen" @@ -856,13 +798,11 @@ msgstr "Hilfe anzeigen" msgid "Search results: %s" msgstr "Suchergebnisse: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2909 js/viewfeed.js:2014 msgid "Click to play" msgstr "Zum Abspielen klicken" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2910 js/viewfeed.js:2013 msgid "Play" msgstr "Abspielen" @@ -870,47 +810,30 @@ msgstr "Abspielen" msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3049 include/functions.php:3343 classes/rpc.php:408 msgid "no tags" msgstr "Keine Tags" -#: include/functions.php:3059 -#: classes/feeds.php:686 +#: include/functions.php:3059 classes/feeds.php:686 msgid "Edit tags for this article" msgstr "Tags für diesen Artikel bearbeiten" -#: include/functions.php:3088 -#: classes/feeds.php:642 +#: include/functions.php:3088 classes/feeds.php:642 msgid "Originally from:" msgstr "Original von:" -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 +#: include/functions.php:3101 classes/feeds.php:655 classes/pref/feeds.php:540 msgid "Feed URL" msgstr "Feed URL" -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 +#: include/functions.php:3132 classes/dlg.php:37 classes/dlg.php:60 +#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190 +#: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262 +#: classes/backend.php:105 classes/pref/users.php:99 +#: classes/pref/filters.php:147 classes/pref/prefs.php:1012 +#: classes/pref/feeds.php:1588 classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:409 plugins/import_export/init.php:432 +#: plugins/googlereaderimport/init.php:168 plugins/share/init.php:67 #: plugins/updater/init.php:357 msgid "Close this window" msgstr "Fenster schließen" @@ -955,10 +878,8 @@ msgstr "Artikel löschen" msgid "Set starred" msgstr "Markierung setzen" -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 +#: include/localized_schema.php:12 js/viewfeed.js:483 +#: plugins/digest/digest.js:265 plugins/digest/digest.js:754 msgid "Publish article" msgstr "Artikel veröffentlichen" @@ -966,8 +887,7 @@ msgstr "Artikel veröffentlichen" msgid "Assign tags" msgstr "Tags zuweisen" -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 +#: include/localized_schema.php:14 js/viewfeed.js:1978 msgid "Assign label" msgstr "Label zuweisen" @@ -988,36 +908,66 @@ msgid "Advanced" msgstr "Erweiterte Einstellungen" #: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." +msgid "" +"This option is useful when you are reading several planet-type aggregators " +"with partially colliding userbase. When disabled, it forces same posts from " +"different feeds to appear only once." +msgstr "" +"Diese Option dient zum Lesen von Feedsammlungen mit teilweise " +"wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von " +"unterschiedlichen Feedsquellen nur einmal angezeigt." #: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für Schlagzeilen und Artikelinhalt" +msgid "" +"Display expanded list of feed articles, instead of separate displays for " +"headlines and article content" +msgstr "" +"Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für " +"Schlagzeilen und Artikelinhalt" #: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed als gelesen markiert wurde" +msgid "" +"Automatically open next feed with unread articles after marking one as read" +msgstr "" +"Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed " +"als gelesen markiert wurde" #: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue (und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" +msgid "" +"This option enables sending daily digest of new (and unread) headlines on " +"your configured e-mail address" +msgstr "" +"Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue " +"(und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" #: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." +msgid "" +"This option enables marking articles as read automatically while you scroll " +"article list." +msgstr "" +"Diese Option aktiviert das automatische \"Als gelesen markieren\" im " +"kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während " +"Sie durch die Artikelliste scrollen." #: include/localized_schema.php:26 msgid "Strip all but most common HTML tags when reading articles." msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." #: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." +msgid "" +"When auto-detecting tags in articles these tags will not be applied (comma-" +"separated list)." +msgstr "" +"Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden " +"nicht verwendet (durch Komma getrennte Liste)." #: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" +msgid "" +"When this option is enabled, headlines in Special feeds and Labels are " +"grouped by feeds" +msgstr "" +"Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und " +"Labels nach Feeds gruppiert" #: include/localized_schema.php:29 msgid "Customize CSS stylesheet to your liking" @@ -1025,7 +975,9 @@ msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" #: include/localized_schema.php:30 msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Benutze feed-spezifisches Datum statt des lokalen Importdatums um Schlagzeilen zu sortieren." +msgstr "" +"Benutze feed-spezifisches Datum statt des lokalen Importdatums um " +"Schlagzeilen zu sortieren." #: include/localized_schema.php:31 msgid "Click to register your SSL client certificate with tt-rss" @@ -1037,7 +989,7 @@ msgstr "Benutzt UTC Zeitzone" #: include/localized_schema.php:33 msgid "Select one of the available CSS themes" -msgstr "" +msgstr "Wählen Sie eines der vorhandenen CSS-Themes aus" #: include/localized_schema.php:34 msgid "Purge articles after this number of days (0 - disables)" @@ -1076,7 +1028,6 @@ msgid "Combined feed display" msgstr "Kombinierte Feed-Anzeige" #: include/localized_schema.php:43 -#, fuzzy msgid "Hide feeds with no unread articles" msgstr "Feeds ohne unglesene Nachrichten verbergen" @@ -1088,8 +1039,7 @@ msgstr "Den nächsten Feed anzeigen" msgid "Sort feeds by unread articles count" msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 +#: include/localized_schema.php:46 plugins/mobile/prefs.php:60 msgid "Reverse headline order (oldest first)" msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" @@ -1149,8 +1099,7 @@ msgstr "Externe API aktivieren" msgid "User timezone" msgstr "Zeitzone des Benutzers" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 +#: include/localized_schema.php:61 js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Benutzerdefiniertes Stylesheet" @@ -1174,15 +1123,12 @@ msgstr "Artikel den Labeln automatisch zuordnen" msgid "Select theme" msgstr "Thema auswählen" -#: include/login_form.php:183 -#: classes/handler/public.php:483 -#: classes/handler/public.php:771 -#: plugins/mobile/login_form.php:40 +#: include/login_form.php:183 classes/handler/public.php:483 +#: classes/handler/public.php:771 plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Benutzername:" -#: include/login_form.php:192 -#: classes/handler/public.php:486 +#: include/login_form.php:192 classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Passwort:" @@ -1191,8 +1137,7 @@ msgstr "Passwort:" msgid "I forgot my password" msgstr "Ich habe mein Passwort vergessen" -#: include/login_form.php:201 -#: classes/handler/public.php:489 +#: include/login_form.php:201 classes/handler/public.php:489 msgid "Language:" msgstr "Sprache:" @@ -1200,10 +1145,8 @@ msgstr "Sprache:" msgid "Profile:" msgstr "Profil:" -#: include/login_form.php:213 -#: classes/handler/public.php:233 -#: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: include/login_form.php:213 classes/handler/public.php:233 +#: classes/rpc.php:64 classes/pref/prefs.php:948 msgid "Default profile" msgstr "Standardprofil" @@ -1213,10 +1156,9 @@ msgstr "Weniger Datenverkehr nutzen" #: include/login_form.php:229 msgid "Remember me" -msgstr "" +msgstr "Erinnere dich an mich" -#: include/login_form.php:235 -#: classes/handler/public.php:499 +#: include/login_form.php:235 classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Anmelden" @@ -1233,44 +1175,28 @@ msgstr "Artikel nicht gefunden." msgid "Tags for this article (separated by commas):" msgstr "Tags für diesen Artikel (durch Komma getrennt):" -#: classes/article.php:204 -#: classes/pref/users.php:176 -#: classes/pref/labels.php:79 -#: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 -#: classes/pref/feeds.php:733 -#: classes/pref/feeds.php:881 -#: plugins/nsfw/init.php:86 -#: plugins/note/init.php:53 -#: plugins/instances/init.php:248 +#: classes/article.php:204 classes/pref/users.php:176 +#: classes/pref/labels.php:79 classes/pref/filters.php:405 +#: classes/pref/prefs.php:894 classes/pref/feeds.php:733 +#: classes/pref/feeds.php:881 plugins/nsfw/init.php:86 +#: plugins/note/init.php:53 plugins/instances/init.php:248 msgid "Save" msgstr "Speichern" -#: classes/article.php:206 -#: classes/handler/public.php:460 -#: classes/handler/public.php:502 -#: classes/feeds.php:1028 -#: classes/feeds.php:1080 -#: classes/feeds.php:1140 -#: classes/pref/users.php:178 -#: classes/pref/labels.php:81 -#: classes/pref/filters.php:408 -#: classes/pref/filters.php:804 -#: classes/pref/filters.php:880 -#: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 -#: classes/pref/feeds.php:734 -#: classes/pref/feeds.php:884 -#: classes/pref/feeds.php:1797 -#: plugins/mail/init.php:131 -#: plugins/note/init.php:55 -#: plugins/instances/init.php:251 +#: classes/article.php:206 classes/handler/public.php:460 +#: classes/handler/public.php:502 classes/feeds.php:1028 +#: classes/feeds.php:1080 classes/feeds.php:1140 classes/pref/users.php:178 +#: classes/pref/labels.php:81 classes/pref/filters.php:408 +#: classes/pref/filters.php:804 classes/pref/filters.php:880 +#: classes/pref/filters.php:947 classes/pref/prefs.php:896 +#: classes/pref/feeds.php:734 classes/pref/feeds.php:884 +#: classes/pref/feeds.php:1797 plugins/mail/init.php:131 +#: plugins/note/init.php:55 plugins/instances/init.php:251 #: plugins/instances/init.php:440 msgid "Cancel" msgstr "Abbrechen" -#: classes/handler/public.php:424 -#: plugins/bookmarklets/init.php:38 +#: classes/handler/public.php:424 plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Teilen mit Tiny Tiny RSS" @@ -1278,10 +1204,8 @@ msgstr "Teilen mit Tiny Tiny RSS" msgid "Title:" msgstr "Titel:" -#: classes/handler/public.php:434 -#: classes/pref/feeds.php:538 -#: classes/pref/feeds.php:769 -#: plugins/instances/init.php:215 +#: classes/handler/public.php:434 classes/pref/feeds.php:538 +#: classes/pref/feeds.php:769 plugins/instances/init.php:215 #: plugins/instances/init.php:405 msgid "URL:" msgstr "URL:" @@ -1310,62 +1234,58 @@ msgstr "Nicht angemeldet" msgid "Incorrect username or password" msgstr "Benutzername oder Passwort falsch" -#: classes/handler/public.php:584 -#: classes/handler/public.php:681 +#: classes/handler/public.php:584 classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "%s bereits abonniert." -#: classes/handler/public.php:587 -#: classes/handler/public.php:672 +#: classes/handler/public.php:587 classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "%s abonniert." -#: classes/handler/public.php:590 -#: classes/handler/public.php:675 +#: classes/handler/public.php:590 classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Konnte %s nicht abonnieren." -#: classes/handler/public.php:593 -#: classes/handler/public.php:678 +#: classes/handler/public.php:593 classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Keine Feeds in %s gefunden." -#: classes/handler/public.php:596 -#: classes/handler/public.php:684 +#: classes/handler/public.php:596 classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Mehrere Feed-URLs gefunden." -#: classes/handler/public.php:600 -#: classes/handler/public.php:689 +#: classes/handler/public.php:600 classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." -msgstr "Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht heruntergeladen werden." +msgstr "" +"Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht " +"heruntergeladen werden." -#: classes/handler/public.php:618 -#: classes/handler/public.php:707 +#: classes/handler/public.php:618 classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Ausgewählte Feeds abonnieren" -#: classes/handler/public.php:643 -#: classes/handler/public.php:731 +#: classes/handler/public.php:643 classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Abonnementoptionen bearbeiten" #: classes/handler/public.php:758 -#, fuzzy msgid "Password recovery" -msgstr "Passwort" +msgstr "Passwort-Wiederherstellung" #: classes/handler/public.php:764 -msgid "You will need to provide valid account name and email. New password will be sent on your email address." +msgid "" +"You will need to provide valid account name and email. New password will be " +"sent on your email address." msgstr "" +"Sie müssen einen gültigen Benutzernamen und EMail angeben. Das neue Passwort " +"wird an Ihre EMail gesendet." -#: classes/handler/public.php:786 -#: classes/pref/users.php:360 +#: classes/handler/public.php:786 classes/pref/users.php:360 msgid "Reset password" msgstr "Passwort zurücksetzen" @@ -1373,41 +1293,58 @@ msgstr "Passwort zurücksetzen" msgid "Some of the required form parameters are missing or incorrect." msgstr "Einige der benötigten Eingaben fehlen oder sind falsch." -#: classes/handler/public.php:800 -#: classes/handler/public.php:826 +#: classes/handler/public.php:800 classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Zurück" #: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." -msgstr "Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht gefunden werden." +msgstr "" +"Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht " +"gefunden werden." #: classes/dlg.php:16 -msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." -msgstr "Wenn Label und/oder Filter importiert wurden, müssen die Einstellungen erneut geladen werden, um alle neuen Einstellungen zu sehen." +msgid "" +"If you have imported labels and/or filters, you might need to reload " +"preferences to see your new data." +msgstr "" +"Wenn Label und/oder Filter importiert wurden, müssen die Einstellungen " +"erneut geladen werden, um alle neuen Einstellungen zu sehen." #: classes/dlg.php:48 msgid "Your Public OPML URL is:" msgstr "Ihre öffentliche OPML-URL lautet:" -#: classes/dlg.php:57 -#: classes/dlg.php:214 +#: classes/dlg.php:57 classes/dlg.php:214 msgid "Generate new URL" msgstr "Erzeuge neue URL" #: classes/dlg.php:71 -msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner." -msgstr "Der Aktualisierungs-Daemon ist in den Einstellungen aktiviert, aber der Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer der Instanz." +msgid "" +"Update daemon is enabled in configuration, but daemon process is not " +"running, which prevents all feeds from updating. Please start the daemon " +"process or contact instance owner." +msgstr "" +"Der Aktualisierungs-Daemon ist in den Einstellungen aktiviert, aber der " +"Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. " +"Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den " +"Besitzer der Instanz." -#: classes/dlg.php:75 -#: classes/dlg.php:84 +#: classes/dlg.php:75 classes/dlg.php:84 msgid "Last update:" msgstr "Letzte Aktualisierung:" #: classes/dlg.php:80 -msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner." -msgstr "Der Aktualisierungs Daemon braucht zu lange um eine Aktualisierung durchzuführen. Dies könnte auf ein Problem wie einen Absturz oder eine Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer des Instanz." +msgid "" +"Update daemon is taking too long to perform a feed update. This could " +"indicate a problem like crash or a hang. Please check the daemon process or " +"contact instance owner." +msgstr "" +"Der Aktualisierungs Daemon braucht zu lange um eine Aktualisierung " +"durchzuführen. Dies könnte auf ein Problem wie einen Absturz oder eine " +"Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder " +"benachrichtigen Sie den Besitzer des Instanz." #: classes/dlg.php:166 msgid "Match:" @@ -1433,20 +1370,22 @@ msgstr "Einträge anzeigen" msgid "You can view this feed as RSS using the following URL:" msgstr "Sie finden diesen Feed als RSS unter der folgenden URL:" -#: classes/dlg.php:233 -#: plugins/updater/init.php:327 +#: classes/dlg.php:233 plugins/updater/init.php:327 #, php-format msgid "New version of Tiny Tiny RSS is available (%s)." msgstr "Neue Version von Tiny Tiny RSS verfügbar (%s)." #: classes/dlg.php:241 -msgid "You can update using built-in updater in the Preferences or by using update.php" -msgstr "Um ein Update durchzuführen können Sie den eingebauten Updater in den Einstellungen oder die update.php benutzen" +msgid "" +"You can update using built-in updater in the Preferences or by using update." +"php" +msgstr "" +"Um ein Update durchzuführen können Sie den eingebauten Updater in den " +"Einstellungen oder die update.php benutzen" -#: classes/dlg.php:245 -#: plugins/updater/init.php:331 +#: classes/dlg.php:245 plugins/updater/init.php:331 msgid "See the release notes" -msgstr "" +msgstr "Release notes anzeigen" #: classes/dlg.php:247 msgid "Download" @@ -1454,7 +1393,9 @@ msgstr "Download" #: classes/dlg.php:255 msgid "Error receiving version information or no new version available." -msgstr "Das Abrufen von Update-Informationen ist fehlgeschlagen oder es ist bereits die neuste Version installiert." +msgstr "" +"Das Abrufen von Update-Informationen ist fehlgeschlagen oder es ist bereits " +"die neuste Version installiert." #: classes/feeds.php:68 msgid "Visit the website" @@ -1464,9 +1405,7 @@ msgstr "Offizielle Website besuchen" msgid "View as RSS feed" msgstr "Als RSS-Feed anzeigen" -#: classes/feeds.php:84 -#: classes/feeds.php:138 -#: classes/pref/feeds.php:1440 +#: classes/feeds.php:84 classes/feeds.php:138 classes/pref/feeds.php:1440 msgid "View as RSS" msgstr "Als RSS anzeigen" @@ -1474,19 +1413,12 @@ msgstr "Als RSS anzeigen" msgid "Select:" msgstr "Auswahl:" -#: classes/feeds.php:92 -#: classes/pref/users.php:345 -#: classes/pref/labels.php:275 -#: classes/pref/filters.php:282 -#: classes/pref/filters.php:330 -#: classes/pref/filters.php:648 -#: classes/pref/filters.php:737 -#: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 -#: classes/pref/feeds.php:1266 -#: classes/pref/feeds.php:1536 -#: classes/pref/feeds.php:1606 -#: plugins/instances/init.php:290 +#: classes/feeds.php:92 classes/pref/users.php:345 classes/pref/labels.php:275 +#: classes/pref/filters.php:282 classes/pref/filters.php:330 +#: classes/pref/filters.php:648 classes/pref/filters.php:737 +#: classes/pref/filters.php:764 classes/pref/prefs.php:908 +#: classes/pref/feeds.php:1266 classes/pref/feeds.php:1536 +#: classes/pref/feeds.php:1606 plugins/instances/init.php:290 msgid "All" msgstr "Alle" @@ -1494,19 +1426,12 @@ msgstr "Alle" msgid "Invert" msgstr "Umkehren" -#: classes/feeds.php:95 -#: classes/pref/users.php:347 -#: classes/pref/labels.php:277 -#: classes/pref/filters.php:284 -#: classes/pref/filters.php:332 -#: classes/pref/filters.php:650 -#: classes/pref/filters.php:739 -#: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 -#: classes/pref/feeds.php:1268 -#: classes/pref/feeds.php:1538 -#: classes/pref/feeds.php:1608 -#: plugins/instances/init.php:292 +#: classes/feeds.php:95 classes/pref/users.php:347 classes/pref/labels.php:277 +#: classes/pref/filters.php:284 classes/pref/filters.php:332 +#: classes/pref/filters.php:650 classes/pref/filters.php:739 +#: classes/pref/filters.php:766 classes/pref/prefs.php:910 +#: classes/pref/feeds.php:1268 classes/pref/feeds.php:1538 +#: classes/pref/feeds.php:1608 plugins/instances/init.php:292 msgid "None" msgstr "Keine" @@ -1534,17 +1459,13 @@ msgstr "Archiv" msgid "Move back" msgstr "Zurückgehen" -#: classes/feeds.php:118 -#: classes/pref/filters.php:291 -#: classes/pref/filters.php:339 -#: classes/pref/filters.php:746 +#: classes/feeds.php:118 classes/pref/filters.php:291 +#: classes/pref/filters.php:339 classes/pref/filters.php:746 #: classes/pref/filters.php:773 msgid "Delete" msgstr "Löschen" -#: classes/feeds.php:125 -#: classes/feeds.php:130 -#: plugins/mailto/init.php:28 +#: classes/feeds.php:125 classes/feeds.php:130 plugins/mailto/init.php:28 #: plugins/mail/init.php:28 msgid "Forward by email" msgstr "Per E-Mail weiterleiten" @@ -1553,15 +1474,14 @@ msgstr "Per E-Mail weiterleiten" msgid "Feed:" msgstr "Feed:" -#: classes/feeds.php:205 -#: classes/feeds.php:831 +#: classes/feeds.php:205 classes/feeds.php:831 msgid "Feed not found." msgstr "Feed nicht gefunden." #: classes/feeds.php:388 -#, fuzzy, php-format +#, php-format msgid "Imported at %s" -msgstr "Importieren" +msgstr "Importiert nach %s" #: classes/feeds.php:535 msgid "mark as read" @@ -1584,21 +1504,23 @@ msgid "No starred articles found to display." msgstr "Keine markierten Artikel zum Anzeigen gefunden." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." -msgstr "Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." +msgid "" +"No articles found to display. You can assign articles to labels manually " +"(see the Actions menu above) or use a filter." +msgstr "" +"Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell " +"hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." #: classes/feeds.php:744 msgid "No articles found to display." msgstr "Keine Artikel zum Anzeigen gefunden." -#: classes/feeds.php:759 -#: classes/feeds.php:923 +#: classes/feeds.php:759 classes/feeds.php:923 #, php-format msgid "Feeds last updated at %s" msgstr "Feeds zuletzt aktualisiert am %s" -#: classes/feeds.php:769 -#: classes/feeds.php:933 +#: classes/feeds.php:769 classes/feeds.php:933 msgid "Some feeds have update errors (click for details)" msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" @@ -1606,14 +1528,11 @@ msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" msgid "No feed selected." msgstr "Keinen Feed ausgewählt." -#: classes/feeds.php:966 -#: classes/feeds.php:974 +#: classes/feeds.php:966 classes/feeds.php:974 msgid "Feed or site URL" msgstr "URL von Feed oder Seite" -#: classes/feeds.php:980 -#: classes/pref/feeds.php:560 -#: classes/pref/feeds.php:782 +#: classes/feeds.php:980 classes/pref/feeds.php:560 classes/pref/feeds.php:782 #: classes/pref/feeds.php:1761 msgid "Place in category:" msgstr "In Kategorie einordnen:" @@ -1622,25 +1541,19 @@ msgstr "In Kategorie einordnen:" msgid "Available feeds" msgstr "Verfügbare Feeds" -#: classes/feeds.php:1000 -#: classes/pref/users.php:139 -#: classes/pref/feeds.php:590 -#: classes/pref/feeds.php:818 +#: classes/feeds.php:1000 classes/pref/users.php:139 +#: classes/pref/feeds.php:590 classes/pref/feeds.php:818 msgid "Authentication" msgstr "Authentifizierung" -#: classes/feeds.php:1004 -#: classes/pref/users.php:402 -#: classes/pref/feeds.php:596 -#: classes/pref/feeds.php:822 +#: classes/feeds.php:1004 classes/pref/users.php:402 +#: classes/pref/feeds.php:596 classes/pref/feeds.php:822 #: classes/pref/feeds.php:1775 msgid "Login" msgstr "Benutzername" -#: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 -#: classes/pref/feeds.php:602 -#: classes/pref/feeds.php:828 +#: classes/feeds.php:1007 classes/pref/prefs.php:202 +#: classes/pref/feeds.php:602 classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 msgid "Password" msgstr "Passwort" @@ -1649,9 +1562,7 @@ msgstr "Passwort" msgid "This feed requires authentication." msgstr "Dieser Feed erfordert Authentifizierung." -#: classes/feeds.php:1022 -#: classes/feeds.php:1078 -#: classes/pref/feeds.php:1796 +#: classes/feeds.php:1022 classes/feeds.php:1078 classes/pref/feeds.php:1796 msgid "Subscribe" msgstr "Abonnieren" @@ -1659,12 +1570,8 @@ msgstr "Abonnieren" msgid "More feeds" msgstr "Weitere Feeds" -#: classes/feeds.php:1048 -#: classes/feeds.php:1139 -#: classes/pref/users.php:332 -#: classes/pref/filters.php:641 -#: classes/pref/feeds.php:1259 -#: js/tt-rss.js:170 +#: classes/feeds.php:1048 classes/feeds.php:1139 classes/pref/users.php:332 +#: classes/pref/filters.php:641 classes/pref/feeds.php:1259 js/tt-rss.js:170 msgid "Search" msgstr "Suchen" @@ -1680,12 +1587,9 @@ msgstr "Feed-Archiv" msgid "limit:" msgstr "Grenzwert:" -#: classes/feeds.php:1079 -#: classes/pref/users.php:358 -#: classes/pref/labels.php:284 -#: classes/pref/filters.php:398 -#: classes/pref/filters.php:667 -#: classes/pref/feeds.php:707 +#: classes/feeds.php:1079 classes/pref/users.php:358 +#: classes/pref/labels.php:284 classes/pref/filters.php:398 +#: classes/pref/filters.php:667 classes/pref/feeds.php:707 #: plugins/instances/init.php:297 msgid "Remove" msgstr "Entfernen" @@ -1722,8 +1626,7 @@ msgstr "Strg" msgid "Help topic not found." msgstr "Hilfethema nicht gefunden." -#: classes/opml.php:28 -#: classes/opml.php:33 +#: classes/opml.php:28 classes/opml.php:33 msgid "OPML Utility" msgstr "OPML Werkzeug" @@ -1773,22 +1676,20 @@ msgstr "Verarbeite Kategorie: %s" msgid "Error: please upload OPML file." msgstr "Fehler: bitte eine OPML-Datei hochladen." -#: classes/opml.php:475 -#: plugins/googlereaderimport/init.php:161 +#: classes/opml.php:475 plugins/googlereaderimport/init.php:161 msgid "Error while parsing document." msgstr "Fehler beim Parsen des Dokuments." -#: classes/pref/users.php:6 -#: plugins/instances/init.php:157 +#: classes/pref/users.php:6 plugins/instances/init.php:157 msgid "Your access level is insufficient to open this tab." -msgstr "Sie haben nicht die benötigten Rechte um diese Registerkarte zu öffnen." +msgstr "" +"Sie haben nicht die benötigten Rechte um diese Registerkarte zu öffnen." #: classes/pref/users.php:34 msgid "User not found" msgstr "Benutzer nicht gefunden" -#: classes/pref/users.php:53 -#: classes/pref/users.php:404 +#: classes/pref/users.php:53 classes/pref/users.php:404 msgid "Registered" msgstr "Registriert" @@ -1812,8 +1713,7 @@ msgstr "Zugriffsberechtigung: " msgid "Change password to" msgstr "Passwort ändern in" -#: classes/pref/users.php:161 -#: classes/pref/feeds.php:610 +#: classes/pref/users.php:161 classes/pref/feeds.php:610 #: classes/pref/feeds.php:834 msgid "Options" msgstr "Optionen" @@ -1851,18 +1751,12 @@ msgstr "Sende das neue Passwort von Benutzer %s an %s" msgid "[tt-rss] Password change notification" msgstr "[tt-rss] Benachrichtigung: Passwort geändert" -#: classes/pref/users.php:342 -#: classes/pref/labels.php:272 -#: classes/pref/filters.php:279 -#: classes/pref/filters.php:327 -#: classes/pref/filters.php:645 -#: classes/pref/filters.php:734 -#: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 -#: classes/pref/feeds.php:1263 -#: classes/pref/feeds.php:1533 -#: classes/pref/feeds.php:1603 -#: plugins/instances/init.php:287 +#: classes/pref/users.php:342 classes/pref/labels.php:272 +#: classes/pref/filters.php:279 classes/pref/filters.php:327 +#: classes/pref/filters.php:645 classes/pref/filters.php:734 +#: classes/pref/filters.php:761 classes/pref/prefs.php:905 +#: classes/pref/feeds.php:1263 classes/pref/feeds.php:1533 +#: classes/pref/feeds.php:1603 plugins/instances/init.php:287 msgid "Select" msgstr "Auswahl" @@ -1874,8 +1768,7 @@ msgstr "Benutzer anlegen" msgid "Details" msgstr "Details" -#: classes/pref/users.php:356 -#: classes/pref/filters.php:660 +#: classes/pref/users.php:356 classes/pref/filters.php:660 #: plugins/instances/init.php:296 msgid "Edit" msgstr "Bearbeiten" @@ -1888,8 +1781,7 @@ msgstr "Zugriffsberechtigung" msgid "Last login" msgstr "Zuletzt angemeldet" -#: classes/pref/users.php:426 -#: plugins/instances/init.php:337 +#: classes/pref/users.php:426 plugins/instances/init.php:337 msgid "Click to edit" msgstr "Zum Bearbeiten klicken" @@ -1901,8 +1793,7 @@ msgstr "Keine Benutzer definiert." msgid "No matching users found." msgstr "Keine zugehörigen Benutzer gefunden." -#: classes/pref/labels.php:22 -#: classes/pref/filters.php:268 +#: classes/pref/labels.php:22 classes/pref/filters.php:268 #: classes/pref/filters.php:725 msgid "Caption" msgstr "Titel" @@ -1934,73 +1825,66 @@ msgstr "Artikel, die auf diesen Filter passen: " #: classes/pref/filters.php:133 msgid "No recent articles matching this filter have been found." -msgstr "Keine kürzlich erschienenen Artikel gefunden, die auf diesen Filter passen." +msgstr "" +"Keine kürzlich erschienenen Artikel gefunden, die auf diesen Filter passen." #: classes/pref/filters.php:137 -msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." -msgstr "Komplexe Filter liefern im Testmodus möglichweise keine Ergebnisse, da es Probleme mit der RegExp-Implementierung des Datenbankservers gibt." +msgid "" +"Complex expressions might not give results while testing due to issues with " +"database server regexp implementation." +msgstr "" +"Komplexe Filter liefern im Testmodus möglichweise keine Ergebnisse, da es " +"Probleme mit der RegExp-Implementierung des Datenbankservers gibt." -#: classes/pref/filters.php:274 -#: classes/pref/filters.php:729 +#: classes/pref/filters.php:274 classes/pref/filters.php:729 #: classes/pref/filters.php:844 msgid "Match" msgstr "Kriterien" -#: classes/pref/filters.php:288 -#: classes/pref/filters.php:336 -#: classes/pref/filters.php:743 -#: classes/pref/filters.php:770 +#: classes/pref/filters.php:288 classes/pref/filters.php:336 +#: classes/pref/filters.php:743 classes/pref/filters.php:770 msgid "Add" msgstr "Hinzufügen" -#: classes/pref/filters.php:322 -#: classes/pref/filters.php:756 +#: classes/pref/filters.php:322 classes/pref/filters.php:756 msgid "Apply actions" msgstr "Aktionen anwenden" -#: classes/pref/filters.php:372 -#: classes/pref/filters.php:785 +#: classes/pref/filters.php:372 classes/pref/filters.php:785 msgid "Enabled" msgstr "Aktiviert" -#: classes/pref/filters.php:381 -#: classes/pref/filters.php:788 +#: classes/pref/filters.php:381 classes/pref/filters.php:788 msgid "Match any rule" msgstr "Ein erfülltes Kriterium ist ausreichend" -#: classes/pref/filters.php:390 -#: classes/pref/filters.php:791 -#, fuzzy +#: classes/pref/filters.php:390 classes/pref/filters.php:791 msgid "Inverse matching" msgstr "Invertierte Übereinstimmung" -#: classes/pref/filters.php:402 -#: classes/pref/filters.php:798 +#: classes/pref/filters.php:402 classes/pref/filters.php:798 msgid "Test" msgstr "Test" #: classes/pref/filters.php:435 -#, fuzzy msgid "(inverse)" msgstr "Invertiert" #: classes/pref/filters.php:434 -#, fuzzy, php-format +#, php-format msgid "%s on %s in %s %s" -msgstr "%s innerhalb %s von %s" +msgstr "%s innerhalb %s von %s %s" #: classes/pref/filters.php:657 msgid "Combine" msgstr "Zusammenfügen" -#: classes/pref/filters.php:663 -#: classes/pref/feeds.php:1279 +#: classes/pref/filters.php:663 classes/pref/feeds.php:1279 #: classes/pref/feeds.php:1293 msgid "Reset sort order" msgstr "Sortierreihenfolge zurücksetzen" -#: classes/pref/filters.php:671 -#: classes/pref/feeds.php:1318 +#: classes/pref/filters.php:671 classes/pref/feeds.php:1318 msgid "Rescore articles" msgstr "Artikel neu bewerten" @@ -2010,14 +1894,13 @@ msgstr "Erstellen" #: classes/pref/filters.php:856 msgid "Inverse regular expression matching" -msgstr "" +msgstr "Invertiere reguläre Ausdrücke" #: classes/pref/filters.php:858 msgid "on field" msgstr "in Feld" -#: classes/pref/filters.php:864 -#: js/PrefFilterTree.js:45 +#: classes/pref/filters.php:864 js/PrefFilterTree.js:45 #: plugins/digest/digest.js:242 msgid "in" msgstr "in" @@ -2026,8 +1909,7 @@ msgstr "in" msgid "Save rule" msgstr "Regel speichern" -#: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: classes/pref/filters.php:877 js/functions.js:1063 msgid "Add rule" msgstr "Regel hinzufügen" @@ -2043,15 +1925,13 @@ msgstr "mit Parametern:" msgid "Save action" msgstr "Aktion speichern" -#: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: classes/pref/filters.php:944 js/functions.js:1089 msgid "Add action" msgstr "Aktion hinzufügen" #: classes/pref/filters.php:967 -#, fuzzy msgid "[No caption]" -msgstr "Titel" +msgstr "[kein Titel]" #: classes/pref/prefs.php:17 msgid "Old password cannot be blank." @@ -2135,11 +2015,14 @@ msgid "One time passwords / Authenticator" msgstr "Einmalpasswörter (OTP) / Authentifikator" #: classes/pref/prefs.php:269 -msgid "One time passwords are currently enabled. Enter your current password below to disable." -msgstr "Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese zu deaktivieren." +msgid "" +"One time passwords are currently enabled. Enter your current password below " +"to disable." +msgstr "" +"Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese " +"zu deaktivieren." -#: classes/pref/prefs.php:294 -#: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:294 classes/pref/prefs.php:345 msgid "Enter your password" msgstr "Geben Sie Ihr Passwort ein" @@ -2148,8 +2031,12 @@ msgid "Disable OTP" msgstr "Einmalpasswörter ausschalten" #: classes/pref/prefs.php:311 -msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." -msgstr "Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort ändern, wird diese Funktion automatisch ausgeschaltet." +msgid "" +"You will need a compatible Authenticator to use this. Changing your password " +"would automatically disable OTP." +msgstr "" +"Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort " +"ändern, wird diese Funktion automatisch ausgeschaltet." #: classes/pref/prefs.php:313 msgid "Scan the following code by the Authenticator application:" @@ -2157,7 +2044,9 @@ msgstr "Scannen Sie den folgenden Code mit Ihrem Authentifikator:" #: classes/pref/prefs.php:354 msgid "I have scanned the code and would like to enable OTP" -msgstr "Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern jetzt aktivieren" +msgstr "" +"Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern " +"jetzt aktivieren" #: classes/pref/prefs.php:362 msgid "Enable OTP" @@ -2196,50 +2085,53 @@ msgstr "Profile verwalten" msgid "Reset to defaults" msgstr "Auf Standardwerte zurücksetzen" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:631 classes/pref/prefs.php:633 msgid "Plugins" msgstr "Plugins" #: classes/pref/prefs.php:635 -msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." -msgstr "Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." +msgid "" +"You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "" +"Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." #: classes/pref/prefs.php:637 -msgid "Download more plugins at tt-rss.org forums or wiki." +msgid "" +"Download more plugins at tt-rss.org forums or wiki." msgstr "" +"Mehr Plugins im tt-rss.org Forum oder im Wiki." #: classes/pref/prefs.php:663 msgid "System plugins" msgstr "System-Plugins" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:667 classes/pref/prefs.php:721 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:668 classes/pref/prefs.php:722 msgid "Description" msgstr "Beschreibung" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:669 classes/pref/prefs.php:723 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:670 classes/pref/prefs.php:724 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:699 classes/pref/prefs.php:756 msgid "more info" -msgstr "" +msgstr "weitere Informationen" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:708 classes/pref/prefs.php:765 msgid "Clear data" msgstr "Daten löschen" @@ -2251,22 +2143,27 @@ msgstr "Benutzer-Plugins" msgid "Enable selected plugins" msgstr "Ausgewählte Plugins aktivieren" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:835 classes/pref/prefs.php:853 msgid "Incorrect password" msgstr "Falsches Passwort" #: classes/pref/prefs.php:879 #, php-format -msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." -msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." +msgid "" +"You can override colors, fonts and layout of your currently selected theme " +"with custom CSS declarations here. This file can be used as a baseline." +msgstr "" +"Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten " +"Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt " +"werden." #: classes/pref/prefs.php:919 msgid "Create profile" msgstr "Profil erstellen" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:942 classes/pref/prefs.php:972 msgid "(active)" msgstr "(aktiv)" @@ -2286,47 +2183,43 @@ msgstr "Ankreuzen um das Feld zu aktivieren" msgid "Feed Title" msgstr "Feed-Titel" -#: classes/pref/feeds.php:568 -#: classes/pref/feeds.php:793 +#: classes/pref/feeds.php:568 classes/pref/feeds.php:793 msgid "Update" msgstr "Aktualisieren" -#: classes/pref/feeds.php:583 -#: classes/pref/feeds.php:809 +#: classes/pref/feeds.php:583 classes/pref/feeds.php:809 msgid "Article purging:" msgstr "Artikel löschen:" #: classes/pref/feeds.php:606 -msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." -msgstr "Hinweis: Sie müssen Ihre Login-Informationen eingeben, wenn Ihr Feed eine Authentifizierung erfordert (außer Twitter-Feeds)." +msgid "" +"Hint: you need to fill in your login information if your feed " +"requires authentication, except for Twitter feeds." +msgstr "" +"Hinweis: Sie müssen Ihre Login-Informationen eingeben, wenn Ihr Feed " +"eine Authentifizierung erfordert (außer Twitter-Feeds)." -#: classes/pref/feeds.php:622 -#: classes/pref/feeds.php:838 +#: classes/pref/feeds.php:622 classes/pref/feeds.php:838 msgid "Hide from Popular feeds" msgstr "Nicht unter beliebten Feeds aufführen" -#: classes/pref/feeds.php:634 -#: classes/pref/feeds.php:844 +#: classes/pref/feeds.php:634 classes/pref/feeds.php:844 msgid "Include in e-mail digest" msgstr "In E-Mail-Zusammenfassung aufnehmen" -#: classes/pref/feeds.php:647 -#: classes/pref/feeds.php:850 +#: classes/pref/feeds.php:647 classes/pref/feeds.php:850 msgid "Always display image attachments" msgstr "Angehängte Bilder immer anzeigen" -#: classes/pref/feeds.php:660 -#: classes/pref/feeds.php:858 +#: classes/pref/feeds.php:660 classes/pref/feeds.php:858 msgid "Do not embed images" msgstr "Bilder nicht einbetten" -#: classes/pref/feeds.php:673 -#: classes/pref/feeds.php:866 +#: classes/pref/feeds.php:673 classes/pref/feeds.php:866 msgid "Cache images locally" msgstr "Bilder lokal zwischenspeichern" -#: classes/pref/feeds.php:685 -#: classes/pref/feeds.php:872 +#: classes/pref/feeds.php:685 classes/pref/feeds.php:872 msgid "Mark updated articles as unread" msgstr "Aktualisierte Artikel als ungelesen markieren" @@ -2346,8 +2239,7 @@ msgstr "Abonnierte Feeds:" msgid "Resets PubSubHubbub subscription status for push-enabled feeds." msgstr "PubSubHubbub-Abonnementstatus für Push-fähige Feeds zurücksetzen." -#: classes/pref/feeds.php:1112 -#: classes/pref/feeds.php:1165 +#: classes/pref/feeds.php:1112 classes/pref/feeds.php:1165 msgid "All done." msgstr "Fertig." @@ -2363,8 +2255,7 @@ msgstr "Inaktive Feeds" msgid "Edit selected feeds" msgstr "Bearbeite ausgewählte Feeds" -#: classes/pref/feeds.php:1281 -#: js/prefs.js:1770 +#: classes/pref/feeds.php:1281 js/prefs.js:1770 msgid "Batch subscribe" msgstr "Mehrere Feeds abonnieren" @@ -2401,8 +2292,12 @@ msgid "OPML" msgstr "OPML" #: classes/pref/feeds.php:1370 -msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." -msgstr "Über OPML können Feeds, Filter, Label und Tiny-Tiny-RSS-Einstellungen importiert und exportiert werden." +msgid "" +"Using OPML you can export and import your feeds, filters, labels and Tiny " +"Tiny RSS settings." +msgstr "" +"Über OPML können Feeds, Filter, Label und Tiny-Tiny-RSS-Einstellungen " +"importiert und exportiert werden." #: classes/pref/feeds.php:1372 msgid "Only main settings profile can be migrated using OPML." @@ -2425,12 +2320,21 @@ msgid "Export OPML" msgstr "OPML exportieren" #: classes/pref/feeds.php:1399 -msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." -msgstr "Ihre OPML können veröffentlicht werden, so dass jeder, der die URL kennt, diese abonnieren kann." +msgid "" +"Your OPML can be published publicly and can be subscribed by anyone who " +"knows the URL below." +msgstr "" +"Ihre OPML können veröffentlicht werden, so dass jeder, der die URL kennt, " +"diese abonnieren kann." #: classes/pref/feeds.php:1401 -msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." -msgstr "Eine öffentliche OPML enthält keine Tiny-Tiny-RSS-Einstellungen, passwortgeschützte Feeds oder Feeds, die nicht in den beliebten Feeds auftauchen sollen." +msgid "" +"Published OPML does not include your Tiny Tiny RSS settings, feeds that " +"require authentication or feeds hidden from Popular feeds." +msgstr "" +"Eine öffentliche OPML enthält keine Tiny-Tiny-RSS-Einstellungen, " +"passwortgeschützte Feeds oder Feeds, die nicht in den beliebten Feeds " +"auftauchen sollen." #: classes/pref/feeds.php:1403 msgid "Public OPML URL" @@ -2445,8 +2349,12 @@ msgid "Firefox integration" msgstr "Firefox-Integration" #: classes/pref/feeds.php:1416 -msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." -msgstr "Tiny Tiny RSS kann durch den folgenden Link als Feedreader für Firefox verwendet werden." +msgid "" +"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " +"link below." +msgstr "" +"Tiny Tiny RSS kann durch den folgenden Link als Feedreader für Firefox " +"verwendet werden." #: classes/pref/feeds.php:1423 msgid "Click here to register this site as a feed reader." @@ -2461,8 +2369,12 @@ msgid "Published articles and generated feeds" msgstr "Veröffentlichte Artikel und erzeugte Feeds" #: classes/pref/feeds.php:1435 -msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." -msgstr "Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und können von jedem abonniert werden, der die nachstehende URL kennt." +msgid "" +"Published articles are exported as a public RSS feed and can be subscribed " +"by anyone who knows the URL specified below." +msgstr "" +"Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und " +"können von jedem abonniert werden, der die nachstehende URL kennt." #: classes/pref/feeds.php:1441 msgid "Display URL" @@ -2485,16 +2397,18 @@ msgid "Unshare all articles" msgstr "Alle veröffentlichten Artikel zurückziehen" #: classes/pref/feeds.php:1529 -msgid "These feeds have not been updated with new content for 3 months (oldest first):" -msgstr "Folgende Feeds konnten seit 3 Monaten nicht aktualisiert werden (älteste zuerst):" +msgid "" +"These feeds have not been updated with new content for 3 months (oldest " +"first):" +msgstr "" +"Folgende Feeds konnten seit 3 Monaten nicht aktualisiert werden (älteste " +"zuerst):" -#: classes/pref/feeds.php:1566 -#: classes/pref/feeds.php:1636 +#: classes/pref/feeds.php:1566 classes/pref/feeds.php:1636 msgid "Click to edit feed" msgstr "Zum Bearbeiten klicken" -#: classes/pref/feeds.php:1584 -#: classes/pref/feeds.php:1656 +#: classes/pref/feeds.php:1584 classes/pref/feeds.php:1656 msgid "Unsubscribe from selected feeds" msgstr "Ausgewählte Feeds abbestellen" @@ -2504,7 +2418,9 @@ msgstr "Folgende Feeds konnten aufgrund von Fehlern nicht aktualisiert werden:" #: classes/pref/feeds.php:1758 msgid "Add one valid RSS feed per line (no feed detection is done)" -msgstr "Einen gültigen RSS Feed pro Zeile hinzufügen (Es findet keine Feederkennung statt)" +msgstr "" +"Einen gültigen RSS Feed pro Zeile hinzufügen (Es findet keine Feederkennung " +"statt)" #: classes/pref/feeds.php:1767 msgid "Feeds to subscribe, One per line" @@ -2515,8 +2431,12 @@ msgid "Feeds require authentication." msgstr "Feeds benötigen Authentifizierung." #: plugins/digest/digest_body.php:59 -msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." -msgstr "Diese Anwendung benötigt Javascript um ordnungsgemäß zu funktionieren. Bitte überprüfen Sie Ihre Browser-Einstellungen." +msgid "" +"Your browser doesn't support Javascript, which is required for this " +"application to function properly. Please check your browser settings." +msgstr "" +"Diese Anwendung benötigt Javascript um ordnungsgemäß zu funktionieren. Bitte " +"überprüfen Sie Ihre Browser-Einstellungen." #: plugins/digest/digest_body.php:74 msgid "Hello," @@ -2530,8 +2450,7 @@ msgstr "Reguläre Version" msgid "Close article" msgstr "Artikel schließen" -#: plugins/nsfw/init.php:32 -#: plugins/nsfw/init.php:43 +#: plugins/nsfw/init.php:32 plugins/nsfw/init.php:43 msgid "Not work safe (click to toggle)" msgstr "NSFW (Klicken zum Anzeigen)" @@ -2564,8 +2483,7 @@ msgstr "Altes Passwort ist falsch." #: plugins/mobile/mobile-functions.php:173 #: plugins/mobile/mobile-functions.php:200 #: plugins/mobile/mobile-functions.php:236 -#: plugins/mobile/mobile-functions.php:373 -#: plugins/mobile/prefs.php:29 +#: plugins/mobile/mobile-functions.php:373 plugins/mobile/prefs.php:29 msgid "Home" msgstr "Startseite" @@ -2581,21 +2499,15 @@ msgstr "Reguläre Version öffnen" msgid "Enable categories" msgstr "Feedkategorien aktivieren" -#: plugins/mobile/prefs.php:35 -#: plugins/mobile/prefs.php:40 -#: plugins/mobile/prefs.php:46 -#: plugins/mobile/prefs.php:51 -#: plugins/mobile/prefs.php:56 -#: plugins/mobile/prefs.php:61 +#: plugins/mobile/prefs.php:35 plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 plugins/mobile/prefs.php:61 msgid "ON" msgstr "AN" -#: plugins/mobile/prefs.php:35 -#: plugins/mobile/prefs.php:40 -#: plugins/mobile/prefs.php:46 -#: plugins/mobile/prefs.php:51 -#: plugins/mobile/prefs.php:56 -#: plugins/mobile/prefs.php:61 +#: plugins/mobile/prefs.php:35 plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 plugins/mobile/prefs.php:61 msgid "OFF" msgstr "AUS" @@ -2615,15 +2527,12 @@ msgstr "Gelesene Artikel und Feeds verstecken" msgid "Sort feeds by unread count" msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" -#: plugins/mailto/init.php:52 -#: plugins/mailto/init.php:58 -#: plugins/mail/init.php:71 -#: plugins/mail/init.php:77 +#: plugins/mailto/init.php:52 plugins/mailto/init.php:58 +#: plugins/mail/init.php:71 plugins/mail/init.php:77 msgid "[Forwarded]" msgstr "[Weitergeleitet]" -#: plugins/mailto/init.php:52 -#: plugins/mail/init.php:71 +#: plugins/mailto/init.php:52 plugins/mail/init.php:71 msgid "Multiple articles" msgstr "Mehrere Artikel" @@ -2636,8 +2545,11 @@ msgid "Forward selected article(s) by email." msgstr "Markierte(n) Artikel per E-Mail weiterleiten" #: plugins/mailto/init.php:81 -msgid "You should be able to edit the message before sending in your mail client." -msgstr "Sie können die Nachricht bearbeiten, bevor Sie diese mit Ihrem Mailclienten abschicken." +msgid "" +"You should be able to edit the message before sending in your mail client." +msgstr "" +"Sie können die Nachricht bearbeiten, bevor Sie diese mit Ihrem Mailclienten " +"abschicken." #: plugins/mailto/init.php:86 msgid "Close this dialog" @@ -2648,8 +2560,13 @@ msgid "Bookmarklets" msgstr "Lesezeichen" #: plugins/bookmarklets/init.php:24 -msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it." -msgstr "Ziehen Sie den folgenden Link in Ihre Browser-Toolbar, öffnen Sie den Feed, an dem Sie interessiert sind, in Ihren Browser und klicken auf den Link, um ihn zu abonnieren." +msgid "" +"Drag the link below to your browser toolbar, open the feed you're interested " +"in in your browser and click on the link to subscribe to it." +msgstr "" +"Ziehen Sie den folgenden Link in Ihre Browser-Toolbar, öffnen Sie den Feed, " +"an dem Sie interessiert sind, in Ihren Browser und klicken auf den Link, um " +"ihn zu abonnieren." #: plugins/bookmarklets/init.php:28 #, php-format @@ -2662,7 +2579,9 @@ msgstr "Abonnieren in Tiny Tiny RSS" #: plugins/bookmarklets/init.php:34 msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" -msgstr "Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu teilen" +msgstr "" +"Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu " +"teilen" #: plugins/import_export/init.php:64 msgid "Import and export" @@ -2673,8 +2592,12 @@ msgid "Article archive" msgstr "Artikelarchiv" #: plugins/import_export/init.php:68 -msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." -msgstr "Die markierten und archivierten Artikel können zur Aufbewahrung oder Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." +msgid "" +"You can export and import your Starred and Archived articles for safekeeping " +"or when migrating between tt-rss instances." +msgstr "" +"Die markierten und archivierten Artikel können zur Aufbewahrung oder " +"Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." #: plugins/import_export/init.php:71 msgid "Export my data" @@ -2727,8 +2650,12 @@ msgstr "Bereite Daten vor" #: plugins/import_export/init.php:426 #, php-format -msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" -msgstr "Datei konnte nicht hochgeladen werden. Möglicherweise muss upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" +msgid "" +"Could not upload file. You might need to adjust upload_max_filesize in PHP." +"ini (current value = %s)" +msgstr "" +"Datei konnte nicht hochgeladen werden. Möglicherweise muss " +"upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" #: plugins/mail/init.php:92 msgid "From:" @@ -2746,8 +2673,7 @@ msgstr "Betreff:" msgid "Send e-mail" msgstr "E-Mail versenden" -#: plugins/note/init.php:28 -#: plugins/note/note.js:11 +#: plugins/note/init.php:28 plugins/note/note.js:11 msgid "Edit article note" msgstr "Artikelnotizen bearbeiten" @@ -2765,62 +2691,57 @@ msgstr "Wert setzen" #: plugins/googlereaderimport/init.php:72 msgid "No file uploaded." -msgstr "" +msgstr "Es wurde keine Datei hochgeladen." #: plugins/googlereaderimport/init.php:153 #, php-format msgid "All done. %d out of %d articles imported." -msgstr "" +msgstr "Fertig. %d von %d Artikeln importiert." #: plugins/googlereaderimport/init.php:157 msgid "The document has incorrect format." -msgstr "" +msgstr "Das Dokumentenformat ist fehlerhaft" #: plugins/googlereaderimport/init.php:326 msgid "Import starred or shared items from Google Reader" -msgstr "" +msgstr "Importiere markierte oder geteilte Einträge aus dem Google Reader" #: plugins/googlereaderimport/init.php:330 msgid "Paste your starred.json or shared.json into the form below." -msgstr "" +msgstr "Wählen Sie ihre starred.json oder shared.json aus." #: plugins/googlereaderimport/init.php:344 msgid "Import my Starred items" -msgstr "" +msgstr "Importiere meine markierten Einträge" #: plugins/instances/init.php:144 msgid "Linked" msgstr "Verbunden" -#: plugins/instances/init.php:207 -#: plugins/instances/init.php:399 +#: plugins/instances/init.php:207 plugins/instances/init.php:399 msgid "Instance" msgstr "Instanz" -#: plugins/instances/init.php:218 -#: plugins/instances/init.php:315 +#: plugins/instances/init.php:218 plugins/instances/init.php:315 #: plugins/instances/init.php:408 msgid "Instance URL" msgstr "Instanz-URL" -#: plugins/instances/init.php:229 -#: plugins/instances/init.php:418 +#: plugins/instances/init.php:229 plugins/instances/init.php:418 msgid "Access key:" msgstr "Zugriffsberechtigung:" -#: plugins/instances/init.php:232 -#: plugins/instances/init.php:316 +#: plugins/instances/init.php:232 plugins/instances/init.php:316 #: plugins/instances/init.php:421 msgid "Access key" msgstr "Zugriffsberechtigung" -#: plugins/instances/init.php:236 -#: plugins/instances/init.php:425 +#: plugins/instances/init.php:236 plugins/instances/init.php:425 msgid "Use one access key for both linked instances." -msgstr "Benutzen Sie den selben Zugriffschlüssel für beide verbundenen Instanzen." +msgstr "" +"Benutzen Sie den selben Zugriffschlüssel für beide verbundenen Instanzen." -#: plugins/instances/init.php:244 -#: plugins/instances/init.php:433 +#: plugins/instances/init.php:244 plugins/instances/init.php:433 msgid "Generate new key" msgstr "Neuen Zugriffsschlüssel erzeugen" @@ -2829,8 +2750,13 @@ msgid "Link instance" msgstr "Instanz verbinden" #: plugins/instances/init.php:307 -msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" -msgstr "Sie können andere Instanzen von Tiny Tiny RSS mit dieser verbinden, um beliebte Feeds zu teilen. Verbinden Sie diese Instanz von Tiny Tiny RSS mit folgender URL:" +msgid "" +"You can connect other instances of Tiny Tiny RSS to this one to share " +"Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" +msgstr "" +"Sie können andere Instanzen von Tiny Tiny RSS mit dieser verbinden, um " +"beliebte Feeds zu teilen. Verbinden Sie diese Instanz von Tiny Tiny RSS mit " +"folgender URL:" #: plugins/instances/init.php:317 msgid "Last connected" @@ -2856,8 +2782,7 @@ msgstr "Per URL teilen" msgid "You can share this article by the following unique URL:" msgstr "Sie können diesen Artikel über folgende eindeutige URL teilen:" -#: plugins/updater/init.php:317 -#: plugins/updater/init.php:334 +#: plugins/updater/init.php:317 plugins/updater/init.php:334 #: plugins/updater/updater.js:10 msgid "Update Tiny Tiny RSS" msgstr "Tiny Tiny RSS updaten" @@ -2867,8 +2792,12 @@ msgid "Your Tiny Tiny RSS installation is up to date." msgstr "Tiny Tiny RSS ist auf dem neuesten Stand." #: plugins/updater/init.php:347 -msgid "Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing." -msgstr "Diesen Dialog nicht Schließen, bis das Update abgeschlossen ist. Sichern Sie ihr tt-rss Verzeichnis, bevor Sie fortfahren." +msgid "" +"Do not close this dialog until updating is finished. Backup your tt-rss " +"directory before continuing." +msgstr "" +"Diesen Dialog nicht Schließen, bis das Update abgeschlossen ist. Sichern Sie " +"ihr tt-rss Verzeichnis, bevor Sie fortfahren." #: plugins/updater/init.php:350 msgid "Ready to update." @@ -2878,34 +2807,37 @@ msgstr "Bereit zum Updaten." msgid "Start update" msgstr "Starte update" -#: js/feedlist.js:404 -#: js/feedlist.js:432 -#: plugins/digest/digest.js:26 +#: js/feedlist.js:404 js/feedlist.js:432 plugins/digest/digest.js:26 msgid "Mark all articles in %s as read?" msgstr "Alle Artikel in %s als gelesen markieren?" #: js/feedlist.js:423 -#, fuzzy msgid "Mark all articles in %s older than 1 day as read?" -msgstr "Alle Artikel in %s als gelesen markieren?" +msgstr "" +"Alle Artikel in %s, die älter als einen Tag sind, als gelesen markieren?" #: js/feedlist.js:426 -#, fuzzy msgid "Mark all articles in %s older than 1 week as read?" -msgstr "Alle Artikel in %s als gelesen markieren?" +msgstr "" +"Alle Artikel in %s, die älter als eine Woche sind, als gelesen markieren?" #: js/feedlist.js:429 -#, fuzzy msgid "Mark all articles in %s older than 2 weeks as read?" -msgstr "Alle Artikel in %s als gelesen markieren?" +msgstr "" +"Alle Artikel in %s, die älter als 2 Wochen sind, als gelesen markieren?" #: js/functions.js:92 -msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database." -msgstr "Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der Bericht enthält Ihre Browser-Informationen. Ihre IP-Adresse würde in der Datenbank gespeichert werden." +msgid "" +"Are you sure to report this exception to tt-rss.org? The report will include " +"your browser information. Your IP would be saved in the database." +msgstr "" +"Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der " +"Bericht enthält Ihre Browser-Informationen. Ihre IP-Adresse würde in der " +"Datenbank gespeichert werden." #: js/functions.js:214 msgid "close" -msgstr "" +msgstr "schließen" #: js/functions.js:621 msgid "Date syntax appears to be correct:" @@ -2917,7 +2849,7 @@ msgstr "Die Datumssyntax ist falsch." #: js/functions.js:636 msgid "Error explained" -msgstr "" +msgstr "Fehler erklärt" #: js/functions.js:718 msgid "Upload complete." @@ -2992,15 +2924,18 @@ msgid "Create Filter" msgstr "Filter erstellen" #: js/functions.js:1241 -msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." -msgstr "Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." +msgid "" +"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification " +"hub again on next feed update." +msgstr "" +"Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten " +"Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." #: js/functions.js:1252 msgid "Subscription reset." msgstr "Abonnement zurückgesetzt." -#: js/functions.js:1262 -#: js/tt-rss.js:619 +#: js/functions.js:1262 js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "%s abbestellen?" @@ -3016,14 +2951,11 @@ msgstr "Bitte geben Sie den Kategorietitel ein:" msgid "Generate new syndication address for this feed?" msgstr "Neue Veröffentlichungsadresse für diesen Feed erzeugen?" -#: js/functions.js:1408 -#: js/prefs.js:1222 +#: js/functions.js:1408 js/prefs.js:1222 msgid "Trying to change address..." msgstr "Versuche, die Adresse zu ändern..." -#: js/functions.js:1595 -#: js/tt-rss.js:396 -#: js/tt-rss.js:600 +#: js/functions.js:1595 js/tt-rss.js:396 js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Sie können diese Art von Feed nicht bearbeiten." @@ -3031,9 +2963,7 @@ msgstr "Sie können diese Art von Feed nicht bearbeiten." msgid "Edit Feed" msgstr "Feed bearbeiten" -#: js/functions.js:1616 -#: js/prefs.js:194 -#: js/prefs.js:749 +#: js/functions.js:1616 js/prefs.js:194 js/prefs.js:749 msgid "Saving data..." msgstr "Speichere Daten..." @@ -3041,33 +2971,29 @@ msgstr "Speichere Daten..." msgid "More Feeds" msgstr "Weitere Feeds" -#: js/functions.js:1709 -#: js/functions.js:1819 -#: js/prefs.js:397 -#: js/prefs.js:427 -#: js/prefs.js:459 -#: js/prefs.js:642 -#: js/prefs.js:662 -#: js/prefs.js:1198 +#: js/functions.js:1709 js/functions.js:1819 js/prefs.js:397 js/prefs.js:427 +#: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1198 #: js/prefs.js:1343 msgid "No feeds are selected." msgstr "Keine Feeds ausgewählt." #: js/functions.js:1751 -msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." -msgstr "Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten Artikeln werden nicht gelöscht" +msgid "" +"Remove selected feeds from the archive? Feeds with stored articles will not " +"be removed." +msgstr "" +"Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten " +"Artikeln werden nicht gelöscht" #: js/functions.js:1790 msgid "Feeds with update errors" msgstr "Feeds mit Aktualisierungsfehlern" -#: js/functions.js:1801 -#: js/prefs.js:1180 +#: js/functions.js:1801 js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Ausgewählte Feeds entfernen?" -#: js/functions.js:1804 -#: js/prefs.js:1183 +#: js/functions.js:1804 js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Ausgewählte Feeds werden entfernt..." @@ -3123,23 +3049,23 @@ msgstr "Ausgewählte Label entfernen?" msgid "Removing selected labels..." msgstr "Ausgewählte Label werden entfernt..." -#: js/prefs.js:295 -#: js/prefs.js:1384 +#: js/prefs.js:295 js/prefs.js:1384 msgid "No labels are selected." msgstr "Keine Label ausgewählt." #: js/prefs.js:309 -msgid "Remove selected users? Neither default admin nor your account will be removed." -msgstr "Ausgewählte Benutzer löschen? Weder der Administrator noch Ihr eigenes Konto werden gelöscht." +msgid "" +"Remove selected users? Neither default admin nor your account will be " +"removed." +msgstr "" +"Ausgewählte Benutzer löschen? Weder der Administrator noch Ihr eigenes Konto " +"werden gelöscht." #: js/prefs.js:312 msgid "Removing selected users..." msgstr "Ausgewählte Benutzer werden entfernt..." -#: js/prefs.js:326 -#: js/prefs.js:507 -#: js/prefs.js:528 -#: js/prefs.js:567 +#: js/prefs.js:326 js/prefs.js:507 js/prefs.js:528 js/prefs.js:567 msgid "No users are selected." msgstr "Keine Benutzer ausgewählt." @@ -3151,9 +3077,7 @@ msgstr "Ausgewählte Filter entfernen?" msgid "Removing selected filters..." msgstr "Ausgewählte Filter werden entfernt..." -#: js/prefs.js:359 -#: js/prefs.js:597 -#: js/prefs.js:616 +#: js/prefs.js:359 js/prefs.js:597 js/prefs.js:616 msgid "No filters are selected." msgstr "Keine Filter ausgewählt." @@ -3193,9 +3117,7 @@ msgstr "Feld für Benutzername darf nicht leer sein." msgid "Saving user..." msgstr "Benutzer werden gespeichert..." -#: js/prefs.js:512 -#: js/prefs.js:533 -#: js/prefs.js:572 +#: js/prefs.js:512 js/prefs.js:533 js/prefs.js:572 msgid "Please select only one user." msgstr "Bitte nur einen Benutzer auswählen." @@ -3239,8 +3161,7 @@ msgstr "OPML Import" msgid "Please choose an OPML file first." msgstr "Bitte zuerst eine OPML-Datei auswählen." -#: js/prefs.js:815 -#: plugins/import_export/import_export.js:115 +#: js/prefs.js:815 plugins/import_export/import_export.js:115 #: plugins/googlereaderimport/init.js:45 msgid "Importing, please wait..." msgstr "Importiere, bitte warten..." @@ -3250,8 +3171,11 @@ msgid "Reset to defaults?" msgstr "Auf Standardwerte zurücksetzen?" #: js/prefs.js:1087 -msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." -msgstr "Kategorie %s löschen? Feeds dieser Kategorie werden dann nach Unkategorisiert verschoben." +msgid "" +"Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "" +"Kategorie %s löschen? Feeds dieser Kategorie werden dann nach " +"Unkategorisiert verschoben." #: js/prefs.js:1093 msgid "Removing category..." @@ -3299,7 +3223,8 @@ msgstr "Ausgewählte Feed werden neu bewertet..." #: js/prefs.js:1350 msgid "Rescore all articles? This operation may take a lot of time." -msgstr "Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." +msgstr "" +"Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." #: js/prefs.js:1353 msgid "Rescoring feeds..." @@ -3314,8 +3239,11 @@ msgid "Settings Profiles" msgstr "Einstellungsprofile" #: js/prefs.js:1416 -msgid "Remove selected profiles? Active and default profiles will not be removed." -msgstr "Ausgewählte Profile löschen? Das aktive und das Standardprofil werden nicht gelöscht." +msgid "" +"Remove selected profiles? Active and default profiles will not be removed." +msgstr "" +"Ausgewählte Profile löschen? Das aktive und das Standardprofil werden nicht " +"gelöscht." #: js/prefs.js:1419 msgid "Removing selected profiles..." @@ -3325,13 +3253,11 @@ msgstr "Ausgewählte Profile werden entfernt..." msgid "No profiles are selected." msgstr "Keine Profile ausgewählt." -#: js/prefs.js:1442 -#: js/prefs.js:1495 +#: js/prefs.js:1442 js/prefs.js:1495 msgid "Activate selected profile?" msgstr "Ausgewählte Profile entfernen?" -#: js/prefs.js:1458 -#: js/prefs.js:1511 +#: js/prefs.js:1458 js/prefs.js:1511 msgid "Please choose a profile to activate." msgstr "Bitte ein Profil zum Aktivieren auswählen." @@ -3343,8 +3269,7 @@ msgstr "Profil wird erstellt..." msgid "This will invalidate all previously generated feed URLs. Continue?" msgstr "Alle zuvor erstellten Feed-URLs werden ungültig. Fortfahren?" -#: js/prefs.js:1522 -#: js/prefs.js:1541 +#: js/prefs.js:1522 js/prefs.js:1541 msgid "Clearing URLs..." msgstr "Leere URLs..." @@ -3385,7 +3310,6 @@ msgid "Please enable mail plugin first." msgstr "Bitte erst das Mail-Plugin aktivieren." #: js/tt-rss.js:461 -#, fuzzy msgid "Please enable embed_original plugin first." msgstr "Bitte erst das \"Original einbetten\" Plugin aktivieren." @@ -3397,8 +3321,7 @@ msgstr "Artikel nach Tag auswählen" msgid "You can't unsubscribe from the category." msgstr "Sie können die Kategorie nicht abbestellen." -#: js/tt-rss.js:613 -#: js/tt-rss.js:765 +#: js/tt-rss.js:613 js/tt-rss.js:765 msgid "Please select some feed first." msgstr "Bitte erst einen Feed auswählen." @@ -3422,34 +3345,24 @@ msgstr "Neue Version verfügbar!" msgid "Cancel search" msgstr "Suche abbrechen" -#: js/viewfeed.js:440 -#: plugins/digest/digest.js:258 +#: js/viewfeed.js:440 plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Artikelmarkierung entfernen" -#: js/viewfeed.js:445 -#: plugins/digest/digest.js:260 +#: js/viewfeed.js:445 plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Artikel markieren" -#: js/viewfeed.js:478 -#: plugins/digest/digest.js:263 +#: js/viewfeed.js:478 plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Artikelveröffentlichung widerrufen" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 -#: plugins/mailto/init.js:7 +#: js/viewfeed.js:679 js/viewfeed.js:707 js/viewfeed.js:734 js/viewfeed.js:797 +#: js/viewfeed.js:831 js/viewfeed.js:951 js/viewfeed.js:994 +#: js/viewfeed.js:1047 js/viewfeed.js:2096 plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Keine Artikel ausgewählt." @@ -3479,8 +3392,11 @@ msgstr[0] "%d archivierten Artikel zurück verschieben?" msgstr[1] "%d archivierte Artikel zurück verschieben?" #: js/viewfeed.js:1008 -msgid "Please note that unstarred articles might get purged on next feed update." +msgid "" +"Please note that unstarred articles might get purged on next feed update." msgstr "" +"Bitte beachten Sie, das nicht markierte Artikel beim nächsten Update der " +"Feeds gelöscht werden könnten." #: js/viewfeed.js:1053 msgid "Mark %d selected article in %s as read?" @@ -3519,7 +3435,6 @@ msgid "Display article URL" msgstr "Zeige Artikel-URL an" #: js/viewfeed.js:1897 -#, fuzzy msgid "Toggle marked" msgstr "Markierung ein-/ausschalten" @@ -3577,10 +3492,10 @@ msgstr "Mehr laden..." #: plugins/embed_original/init.js:6 msgid "Sorry, your browser does not support sandboxed iframes." -msgstr "Entschuldigung, dein Browser unterstützt keine \"Sandbox\" für iframes." +msgstr "" +"Entschuldigung, dein Browser unterstützt keine \"Sandbox\" für iframes." -#: plugins/mailto/init.js:21 -#: plugins/mail/mail.js:21 +#: plugins/mailto/init.js:21 plugins/mail/mail.js:21 msgid "Forward article by email" msgstr "Artikel via E-Mail weiterleiten" @@ -3589,10 +3504,18 @@ msgid "Export Data" msgstr "Daten exportieren" #: plugins/import_export/import_export.js:40 -msgid "Finished, exported %d article. You can download the data here." -msgid_plural "Finished, exported %d articles. You can download the data here." -msgstr[0] "Fertig, %d Artikel exportiert. Hier herunterladen." -msgstr[1] "Fertig, %d Artikel exportiert. Hier herunterladen." +msgid "" +"Finished, exported %d article. You can download the data here." +msgid_plural "" +"Finished, exported %d articles. You can download the data here." +msgstr[0] "" +"Fertig, %d Artikel exportiert. Hier " +"herunterladen." +msgstr[1] "" +"Fertig, %d Artikel exportiert. Hier " +"herunterladen." #: plugins/import_export/import_export.js:93 msgid "Data Import" @@ -3608,10 +3531,9 @@ msgstr "Artikelnotiz wird gespeichert..." #: plugins/googlereaderimport/init.js:18 msgid "Google Reader Import" -msgstr "" +msgstr "Google Reader Import" #: plugins/googlereaderimport/init.js:42 -#, fuzzy msgid "Please choose a file first." msgstr "Bitte zuerst die Datei auswählen." @@ -3631,8 +3553,7 @@ msgstr "Ausgewählte Instanzen entfernen?" msgid "Removing selected instances..." msgstr "Ausgewählte Instanzen werden entfernt..." -#: plugins/instances/instances.js:139 -#: plugins/instances/instances.js:151 +#: plugins/instances/instances.js:139 plugins/instances/instances.js:151 msgid "No instances are selected." msgstr "Keine Instanzen ausgewählt." @@ -3645,8 +3566,12 @@ msgid "Share article by URL" msgstr "Artikel über URL teilen" #: plugins/updater/updater.js:58 -msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." -msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." +msgid "" +"Live updating is considered experimental. Backup your tt-rss directory " +"before continuing. Please type 'yes' to continue." +msgstr "" +"Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, " +"bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." #, fuzzy #~ msgid "Refresh" @@ -3679,7 +3604,9 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgstr "Fertig." #~ msgid "Enable the options you wish to apply using checkboxes on the right:" -#~ msgstr "Benutzen Sie die Auswahlkästchen auf der rechten Seite um die gewünschen Optionen anzuwenden:" +#~ msgstr "" +#~ "Benutzen Sie die Auswahlkästchen auf der rechten Seite um die gewünschen " +#~ "Optionen anzuwenden:" #~ msgid "New articles available in this feed (click to show)" #~ msgstr "Neue Artikel verfügbar (klicken zum Anzeigen)" @@ -3717,8 +3644,12 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgid "Back to feeds" #~ msgstr "Zurück zu den Feeds" -#~ msgid "This will clear your stored authentication information for Twitter. Continue?" -#~ msgstr "Dies wird Ihre gespeicherten Authentifizierungsinformationen für Twitter löschen. Fortfahren?" +#~ msgid "" +#~ "This will clear your stored authentication information for Twitter. " +#~ "Continue?" +#~ msgstr "" +#~ "Dies wird Ihre gespeicherten Authentifizierungsinformationen für Twitter " +#~ "löschen. Fortfahren?" #~ msgid "Clearing credentials..." #~ msgstr "Berechtigungen werden gelöscht..." @@ -3817,8 +3748,12 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgid "Focus search (if present)" #~ msgstr "Fokussierte Suche (wenn gewählt)" -#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." -#~ msgstr "Anmerkung: Abhängig von Ihren Tiny-Tiny-RSS-Einstellungen und Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." +#~ msgid "" +#~ "Note: not all actions may be available, depending on Tiny Tiny RSS " +#~ "configuration and your access level." +#~ msgstr "" +#~ "Anmerkung: Abhängig von Ihren Tiny-Tiny-RSS-Einstellungen und " +#~ "Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." #~ msgid "Open article in new tab" #~ msgstr "Artikel in neuem Reiter öffnen" @@ -3893,7 +3828,9 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgstr "Mit Twitter verbinden" #~ msgid "Could not connect to Twitter. Refresh the page or try again later." -#~ msgstr "Konnte nicht zu Twitter verbinden. Aktualisieren Sie die Seite oder versuchen es später erneut." +#~ msgstr "" +#~ "Konnte nicht zu Twitter verbinden. Aktualisieren Sie die Seite oder " +#~ "versuchen es später erneut." #~ msgid "Congratulations! You have successfully registered with Twitter." #~ msgstr "Glückwunsch! Sie haben sich erfolgreich mit Twitter verbunden." @@ -3917,7 +3854,8 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgstr "Keine Feedkategorien definiert." #~ msgid "Hint: you can drag feeds and categories around." -#~ msgstr "Hinweis: Sie können Feeds und Kategorien mit der Maus herumziehen." +#~ msgstr "" +#~ "Hinweis: Sie können Feeds und Kategorien mit der Maus herumziehen." #~ msgid "Subscribing using bookmarklet" #~ msgstr "Mit Bookmarklet abonnieren" @@ -3925,11 +3863,19 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgid "Twitter" #~ msgstr "Twitter" -#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." -#~ msgstr "Bevor Sie Ihre Twitter-Feeds aktualisieren können, müssen Sie diese Instanz von Tiny Tiny RSS bei Twitter registrieren." +#~ msgid "" +#~ "Before you can update your Twitter feeds, you must register this instance " +#~ "of Tiny Tiny RSS with Twitter.com." +#~ msgstr "" +#~ "Bevor Sie Ihre Twitter-Feeds aktualisieren können, müssen Sie diese " +#~ "Instanz von Tiny Tiny RSS bei Twitter registrieren." -#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." -#~ msgstr "Sie haben diese Instanz erfolgreich mit Twitter verbunden und sollten nun auf Ihre Twitter-Feeds zugreifen können." +#~ msgid "" +#~ "You have been successfully registered with Twitter.com and should be able " +#~ "to access your Twitter feeds." +#~ msgstr "" +#~ "Sie haben diese Instanz erfolgreich mit Twitter verbunden und sollten nun " +#~ "auf Ihre Twitter-Feeds zugreifen können." #~ msgid "Register with Twitter.com" #~ msgstr "Mit Twitter registrieren" @@ -3946,5 +3892,9 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgid "Filter Test Results" #~ msgstr "Filtertestergebnis" -#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." -#~ msgstr "Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch nächsten Feed mit ungelesenen Artikeln öffnen." +#~ msgid "" +#~ "When \"Mark as read\" button is clicked in toolbar, automatically open " +#~ "next feed with unread articles." +#~ msgstr "" +#~ "Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch " +#~ "nächsten Feed mit ungelesenen Artikeln öffnen." -- cgit v1.2.3 From f17cac6b26c4df018e8fda97925411d8267c1310 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 15:32:47 +0400 Subject: retire DEFAULT_ARTICLE_LIMIT, infinite scrolling is fast enough to make it superfluous --- classes/feeds.php | 2 +- classes/pref/prefs.php | 11 ++--------- include/db-prefs.php | 4 ---- include/functions.php | 2 +- js/viewfeed.js | 2 +- 5 files changed, 5 insertions(+), 16 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index 713460e28..778850fc4 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -796,7 +796,7 @@ class Feeds extends Handler_Protected { $feed = db_escape_string($this->link, $_REQUEST["feed"]); $method = db_escape_string($this->link, $_REQUEST["m"]); $view_mode = db_escape_string($this->link, $_REQUEST["view_mode"]); - $limit = (int) get_pref($this->link, "DEFAULT_ARTICLE_LIMIT"); + $limit = 30; @$cat_view = $_REQUEST["cat"] == "true"; @$next_unread_feed = db_escape_string($this->link, $_REQUEST["nuf"]); @$offset = db_escape_string($this->link, $_REQUEST["skip"]); diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index cc523092f..fba9f70d8 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -120,7 +120,7 @@ class Pref_Prefs extends Handler_Protected { global $access_level_names; $prefs_blacklist = array("STRIP_UNSAFE_TAGS", "REVERSE_HEADLINES", - "SORT_HEADLINES_BY_FEED_DATE"); + "SORT_HEADLINES_BY_FEED_DATE", "DEFAULT_ARTICLE_LIMIT"); /* "FEEDS_SORT_BY_UNREAD", "HIDE_READ_FEEDS", "REVERSE_HEADLINES" */ @@ -498,13 +498,6 @@ class Pref_Prefs extends Handler_Protected { 'dojoType="dijit.form.Select"'); - } else if ($pref_name == "DEFAULT_ARTICLE_LIMIT") { - - $limits = array(15, 30, 45, 60); - - print_select($pref_name, $value, $limits, - 'dojoType="dijit.form.Select"'); - } else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") { global $update_intervals_nodefault; @@ -528,7 +521,7 @@ class Pref_Prefs extends Handler_Protected { print ""; - } else if (array_search($pref_name, array('FRESH_ARTICLE_MAX_AGE', 'DEFAULT_ARTICLE_LIMIT', + } else if (array_search($pref_name, array('FRESH_ARTICLE_MAX_AGE', 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT')) !== false) { $regexp = ($type_name == 'integer') ? 'regexp="^\d*$"' : ''; diff --git a/include/db-prefs.php b/include/db-prefs.php index f6a78939b..1ee3d609a 100644 --- a/include/db-prefs.php +++ b/include/db-prefs.php @@ -166,10 +166,6 @@ $value = sprintf("%d", $value); } - if ($pref_name == 'DEFAULT_ARTICLE_LIMIT' && $value == 0) { - $value = 30; - } - if ($pref_name == 'USER_TIMEZONE' && $value == '') { $value = 'UTC'; } diff --git a/include/functions.php b/include/functions.php index c04e6a81a..92690cfbb 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1840,7 +1840,7 @@ foreach (array("ON_CATCHUP_SHOW_NEXT_FEED", "HIDE_READ_FEEDS", "ENABLE_FEED_CATS", "FEEDS_SORT_BY_UNREAD", "CONFIRM_FEED_CATCHUP", - "CDM_AUTO_CATCHUP", "FRESH_ARTICLE_MAX_AGE", "DEFAULT_ARTICLE_LIMIT", + "CDM_AUTO_CATCHUP", "FRESH_ARTICLE_MAX_AGE", "HIDE_READ_SHOWS_SPECIAL", "COMBINED_DISPLAY_MODE") as $param) { $params[strtolower($param)] = (int) get_pref($link, $param); diff --git a/js/viewfeed.js b/js/viewfeed.js index 48137a136..c1163eab7 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -64,7 +64,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) { vgroup_last_feed = reply['headlines-info']['vgroup_last_feed']; - if (parseInt(headlines_count) < getInitParam("default_article_limit")) { + if (parseInt(headlines_count) < 30) { _infscroll_disable = 1; } else { _infscroll_disable = 0; -- cgit v1.2.3 From 9eeb6d5e233006a35545917c9c9da95cbc53508a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 15:42:49 +0400 Subject: label_create: set default owner_uid --- include/labels.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/labels.php b/include/labels.php index 5ac8794d9..655b51555 100644 --- a/include/labels.php +++ b/include/labels.php @@ -173,7 +173,7 @@ db_query($link, "COMMIT"); } - function label_create($link, $caption, $fg_color = '', $bg_color = '', $owner_uid) { + function label_create($link, $caption, $fg_color = '', $bg_color = '', $owner_uid = false) { if (!$owner_uid) $owner_uid = $_SESSION['uid']; -- cgit v1.2.3 From dfad9d7a36f1efeafd4e3b5bf1f38dac7aad8de4 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:20:06 +0400 Subject: pref-prefs: don't use schema-defined help/desc/section names --- classes/pref/prefs.php | 102 +++++++++++++++++++++++++++++++----- include/localized_schema.php | 67 ----------------------- utils/update-schema-translations.sh | 23 -------- utils/update-translations.sh | 2 - 4 files changed, 88 insertions(+), 106 deletions(-) delete mode 100644 include/localized_schema.php delete mode 100755 utils/update-schema-translations.sh diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index fba9f70d8..d4fad41ac 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -1,12 +1,63 @@ pref_sections = array( + 1 => __('General'), + 2 => __('Interface'), + 3 => __('Advanced'), + 4 => __('Digest') + ); + + $this->pref_help = array( + "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate posts")), + "AUTO_ASSIGN_LABELS" => array(__("Assign articles to labels automatically"), __("")), + "BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list)")), + "CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("Mark articles as read automatically while you scroll article list.")), + "CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), __("")), + "COMBINED_DISPLAY_MODE" => array(__("Combined feed display"), __("Display expanded list of feed articles, instead of separate displays for headlines and article content")), + "CONFIRM_FEED_CATCHUP" => array(__("Confirm marking feed as read"), __("")), + "DEFAULT_ARTICLE_LIMIT" => array(__("Amount of articles to display at once"), __("")), + "DEFAULT_UPDATE_INTERVAL" => array(__("Default feed update interval"), __("")), + "DIGEST_CATCHUP" => array(__("Mark articles in e-mail digest as read"), __("")), + "DIGEST_ENABLE" => array(__("Enable email digest"), __("This option enables sending daily digest of new (and unread) headlines on your configured e-mail address")), + "DIGEST_PREFERRED_TIME" => array(__("Try to send digests around specified time"), __("Uses UTC timezone")), + "ENABLE_API_ACCESS" => array(__("Enable external API"), __("")), + "ENABLE_FEED_CATS" => array(__("Enable feed categories"), __("")), + "FEEDS_SORT_BY_UNREAD" => array(__("Sort feeds by unread articles count"), __("")), + "FRESH_ARTICLE_MAX_AGE" => array(__("Maximum age of fresh articles (in hours)"), __("")), + "HIDE_READ_FEEDS" => array(__("Hide feeds with no unread articles"), __("")), + "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds and labels when hiding read feeds"), __("")), + "LONG_DATE_FORMAT" => array(__("Long date format"), __("")), + "ON_CATCHUP_SHOW_NEXT_FEED" => array(__("On catchup show next feed"), __("Automatically open next feed with unread articles after marking one as read")), + "PURGE_OLD_DAYS" => array(__("Purge articles after this number of days (0 - disables)"), __("")), + "PURGE_UNREAD_ARTICLES" => array(__("Purge unread articles"), __("")), + "REVERSE_HEADLINES" => array(__("Reverse headline order (oldest first)"), __("")), + "SHORT_DATE_FORMAT" => array(__("Short date format"), __("")), + "SHOW_CONTENT_PREVIEW" => array(__("Show content preview in headlines list"), __("")), + "SORT_HEADLINES_BY_FEED_DATE" => array(__("Sort headlines by feed date"), __("Use feed-specified date to sort headlines instead of local import date.")), + "SSL_CERT_SERIAL" => array(__("Login with an SSL certificate"), __("Click to register your SSL client certificate with tt-rss")), + "STRIP_IMAGES" => array(__("Do not embed images in articles"), __("")), + "STRIP_UNSAFE_TAGS" => array(__("Strip unsafe tags from articles"), __("Strip all but most common HTML tags when reading articles.")), + "USER_CSS_THEME" => array(__("Select theme"), __("Select one of the available CSS themes")), + "USER_STYLESHEET" => array(__("Customize stylesheet"), __("Customize CSS stylesheet to your liking")), + "USER_TIMEZONE" => array(__("User timezone"), __("")), + "VFEED_GROUP_BY_FEED" => array(__("Group headlines in virtual feeds"), __("When this option is enabled, headlines in Special feeds and Labels are grouped by feeds")) + ); + } + function changepassword() { $old_pw = $_POST["old_password"]; @@ -416,18 +467,17 @@ class Pref_Prefs extends Handler_Protected { $access_query = 'true'; $result = db_query($this->link, "SELECT DISTINCT - ttrss_user_prefs.pref_name,short_desc,help_text,value,type_name, + ttrss_user_prefs.pref_name,value,type_name, ttrss_prefs_sections.order_id, - section_name,def_value,section_id + def_value,section_id FROM ttrss_prefs,ttrss_prefs_types,ttrss_prefs_sections,ttrss_user_prefs WHERE type_id = ttrss_prefs_types.id AND $profile_qpart AND section_id = ttrss_prefs_sections.id AND ttrss_user_prefs.pref_name = ttrss_prefs.pref_name AND $access_query AND - short_desc != '' AND owner_uid = ".$_SESSION["uid"]." - ORDER BY ttrss_prefs_sections.order_id,short_desc"); + ORDER BY ttrss_prefs_sections.order_id,pref_name"); $lnum = 0; @@ -441,12 +491,22 @@ class Pref_Prefs extends Handler_Protected { continue; } + $type_name = $line["type_name"]; + $pref_name = $line["pref_name"]; + $section_name = $this->getSectionName($line["section_id"]); + $value = $line["value"]; + + $short_desc = $this->getShortDesc($pref_name); + $help_text = $this->getHelpText($pref_name); + + if (!$short_desc) continue; + if ($_SESSION["profile"] && in_array($line["pref_name"], $profile_blacklist)) { continue; } - if ($active_section != $line["section_name"]) { + if ($active_section != $line["section_id"]) { if ($active_section != "") { print "
    "; @@ -454,24 +514,18 @@ class Pref_Prefs extends Handler_Protected { print ""; - $active_section = $line["section_name"]; + $active_section = $line["section_id"]; - print ""; + print ""; $lnum = 0; } print ""; - $type_name = $line["type_name"]; - $pref_name = $line["pref_name"]; - $value = $line["value"]; - $def_value = $line["def_value"]; - $help_text = $line["help_text"]; - print "', - - // Templates for a single date (ex: 13), and for a row for a week (ex: 20 21 22 23 24 25 26) - dateTemplateString: '', - weekTemplateString: '${d}${d}${d}${d}${d}${d}${d}', - - // value: Date - // The currently selected Date, initially set to invalid date to indicate no selection. - value: new Date(""), - // TODO: for 2.0 make this a string (ISO format) rather than a Date - - // datePackage: String - // JavaScript namespace to find calendar routines. If unspecified, uses Gregorian calendar routines - // at dojo/date and dojo/date/locale. - datePackage: "", - // TODO: for 2.0, replace datePackage with dateModule and dateLocalModule attributes specifying MIDs, - // or alternately just get rid of this completely and tell user to use module ID remapping - // via require - - // dayWidth: String - // How to represent the days of the week in the calendar header. See locale - dayWidth: "narrow", - - // tabIndex: String - // Order fields are traversed when user hits the tab key - tabIndex: "0", - - // currentFocus: Date - // Date object containing the currently focused date, or the date which would be focused - // if the calendar itself was focused. Also indicates which year and month to display, - // i.e. the current "page" the calendar is on. - currentFocus: new Date(), - - baseClass:"dijitCalendar", - - _isValidDate: function(/*Date*/ value){ - // summary: - // Runs various tests on the value, checking that it's a valid date, rather - // than blank or NaN. - // tags: - // private - return value && !isNaN(value) && typeof value == "object" && - value.toString() != this.constructor.prototype.value.toString(); - }, - - _getValueAttr: function(){ - // summary: - // Support get('value') - - // this.value is set to 1AM, but return midnight, local time for back-compat - if(this.value && !isNaN(this.value)){ - var value = new this.dateClassObj(this.value); - value.setHours(0, 0, 0, 0); - - // If daylight savings pushes midnight to the previous date, fix the Date - // object to point at 1am so it will represent the correct day. See #9366 - if(value.getDate() < this.value.getDate()){ - value = this.dateModule.add(value, "hour", 1); - } - return value; - }else{ - return null; - } - }, - - _setValueAttr: function(/*Date|Number*/ value, /*Boolean*/ priorityChange){ - // summary: - // Support set("value", ...) - // description: - // Set the current date and update the UI. If the date is disabled, the value will - // not change, but the display will change to the corresponding month. - // value: - // Either a Date or the number of seconds since 1970. - // tags: - // protected - if(typeof value == "string"){ - value = stamp.fromISOString(value); - } - value = this._patchDate(value); - - if(this._isValidDate(value) && !this.isDisabledDate(value, this.lang)){ - this._set("value", value); - - // Set focus cell to the new value. Arguably this should only happen when there isn't a current - // focus point. This will also repopulate the grid to new month/year if necessary. - this.set("currentFocus", value); - - // Mark the selected date - this._markSelectedDates([value]); - - if(this._created && (priorityChange || typeof priorityChange == "undefined")){ - this.onChange(this.get('value')); - } - }else{ - // clear value, and mark all dates as unselected - this._set("value", null); - this._markSelectedDates([]); - } - }, - - _patchDate: function(/*Date|Number*/ value){ - // summary: - // Convert Number into Date, or copy Date object. Then, round to nearest day, - // setting to 1am to avoid issues when DST shift occurs at midnight, see #8521, #9366) - if(value){ - value = new this.dateClassObj(value); - value.setHours(1, 0, 0, 0); - } - return value; - }, - - _setText: function(node, text){ - // summary: - // This just sets the content of node to the specified text. - // Can't do "node.innerHTML=text" because of an IE bug w/tables, see #3434. - // tags: - // private - while(node.firstChild){ - node.removeChild(node.firstChild); - } - node.appendChild(node.ownerDocument.createTextNode(text)); - }, - - _populateGrid: function(){ - // summary: - // Fills in the calendar grid with each day (1-31). - // Call this on creation, when moving to a new month. - // tags: - // private - - var month = new this.dateClassObj(this.currentFocus); - month.setDate(1); - - var firstDay = month.getDay(), - daysInMonth = this.dateModule.getDaysInMonth(month), - daysInPreviousMonth = this.dateModule.getDaysInMonth(this.dateModule.add(month, "month", -1)), - today = new this.dateClassObj(), - dayOffset = cldrSupplemental.getFirstDayOfWeek(this.lang); - if(dayOffset > firstDay){ dayOffset -= 7; } - - // Mapping from date (as specified by number returned from Date.valueOf()) to corresponding \n\t\n\t\n\t\n\t\n\n"}}); -define("dijit/CheckedMenuItem", [ - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.toggle - "./MenuItem", - "dojo/text!./templates/CheckedMenuItem.html", - "./hccss" -], function(declare, domClass, MenuItem, template){ - - // module: - // dijit/CheckedMenuItem - - return declare("dijit.CheckedMenuItem", MenuItem, { - // summary: - // A checkbox-like menu item for toggling on and off - - templateString: template, - - // checked: Boolean - // Our checked state - checked: false, - _setCheckedAttr: function(/*Boolean*/ checked){ - // summary: - // Hook so attr('checked', bool) works. - // Sets the class and state for the check box. - domClass.toggle(this.domNode, "dijitCheckedMenuItemChecked", checked); - this.domNode.setAttribute("aria-checked", checked ? "true" : "false"); - this._set("checked", checked); - }, - - iconClass: "", // override dijitNoIcon - - onChange: function(/*Boolean*/ /*===== checked =====*/){ - // summary: - // User defined function to handle check/uncheck events - // tags: - // callback - }, - - _onClick: function(evt){ - // summary: - // Clicking this item just toggles its state - // tags: - // private - if(!this.disabled){ - this.set("checked", !this.checked); - this.onChange(this.checked); - } - this.onClick(evt); - } - }); -}); diff --git a/lib/dijit/ColorPalette.js.uncompressed.js b/lib/dijit/ColorPalette.js.uncompressed.js deleted file mode 100644 index af406bec8..000000000 --- a/lib/dijit/ColorPalette.js.uncompressed.js +++ /dev/null @@ -1,161 +0,0 @@ -require({cache:{ -'url:dijit/templates/ColorPalette.html':"
    \n\t

    ".__($active_section)."

    ".$section_name."

    "; print ""; if ($help_text) print "
    ".__($help_text)."
    "; @@ -1007,6 +1061,26 @@ class Pref_Prefs extends Handler_Protected { } + private function getShortDesc($pref_name) { + if (isset($this->pref_help[$pref_name])) { + return $this->pref_help[$pref_name][0]; + } + return ""; + } + private function getHelpText($pref_name) { + if (isset($this->pref_help[$pref_name])) { + return $this->pref_help[$pref_name][1]; + } + return ""; + } + + private function getSectionName($id) { + if (isset($this->pref_sections[$id])) { + return $this->pref_sections[$id]; + } + + return ""; + } } ?> diff --git a/include/localized_schema.php b/include/localized_schema.php deleted file mode 100644 index 418c9d014..000000000 --- a/include/localized_schema.php +++ /dev/null @@ -1,67 +0,0 @@ - diff --git a/utils/update-schema-translations.sh b/utils/update-schema-translations.sh deleted file mode 100755 index d76fb03a4..000000000 --- a/utils/update-schema-translations.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -LC_ALL=C -LANG=C -LANGUAGE=C - -BASENAME=`basename $0` -TMPFILE="/tmp/$BASENAME-$$.tmp" -OUTFILE="include/localized_schema.php" - -cat schema/ttrss_schema_pgsql.sql | grep 'insert.*pref_name' | awk -F\' '{ print $8 }' > $TMPFILE -cat schema/ttrss_schema_pgsql.sql | grep 'insert.*pref_name' | awk -F\' '{ print $6 }' >> $TMPFILE - -echo " $OUTFILE -echo >> $OUTFILE -cat utils/localized_schema.txt >> $OUTFILE -echo >> $OUTFILE - -cat $TMPFILE | grep -v '^$' | sed "s/.*/__('&');/" >> $OUTFILE - -echo "?>" >> $OUTFILE - -rm $TMPFILE diff --git a/utils/update-translations.sh b/utils/update-translations.sh index c2e8ff54f..4b8dab6b9 100755 --- a/utils/update-translations.sh +++ b/utils/update-translations.sh @@ -1,8 +1,6 @@ #!/bin/sh TEMPLATE=messages.pot -./utils/update-schema-translations.sh - xgettext -kT_js_decl -kT_sprintf -kT_ngettext:1,2 -k__ -L PHP -o $TEMPLATE *.php include/*.php `find classes -iname '*.php'` `find plugins -iname '*.php'` xgettext --from-code utf-8 -k__ -knotify_info -knotify_progress -kngettext -L Java -j -o $TEMPLATE js/*.js `find plugins -iname '*.js'` -- cgit v1.2.3 From 923b5c8b11cde506838a2f071a1c07892992fb70 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:34:08 +0400 Subject: schema: remove unused prefs help_text/short_desc/section_name --- include/functions.php | 2 +- schema/ttrss_schema_mysql.sql | 166 +++++++++++++++--------------------------- schema/ttrss_schema_pgsql.sql | 155 +++++++++++++-------------------------- schema/versions/mysql/115.sql | 9 +++ schema/versions/pgsql/115.sql | 9 +++ 5 files changed, 128 insertions(+), 213 deletions(-) create mode 100644 schema/versions/mysql/115.sql create mode 100644 schema/versions/pgsql/115.sql diff --git a/include/functions.php b/include/functions.php index 92690cfbb..9c58f807a 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1,6 +1,6 @@ Date: Tue, 2 Apr 2013 16:38:12 +0400 Subject: remove blank string gettext invocations --- classes/pref/prefs.php | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index d4fad41ac..aa94939b3 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -22,38 +22,38 @@ class Pref_Prefs extends Handler_Protected { ); $this->pref_help = array( - "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate posts")), - "AUTO_ASSIGN_LABELS" => array(__("Assign articles to labels automatically"), __("")), + "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate articles")), + "AUTO_ASSIGN_LABELS" => array(__("Assign articles to labels automatically"), ""), "BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list)")), "CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("Mark articles as read automatically while you scroll article list.")), - "CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), __("")), + "CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), ""), "COMBINED_DISPLAY_MODE" => array(__("Combined feed display"), __("Display expanded list of feed articles, instead of separate displays for headlines and article content")), - "CONFIRM_FEED_CATCHUP" => array(__("Confirm marking feed as read"), __("")), - "DEFAULT_ARTICLE_LIMIT" => array(__("Amount of articles to display at once"), __("")), - "DEFAULT_UPDATE_INTERVAL" => array(__("Default feed update interval"), __("")), - "DIGEST_CATCHUP" => array(__("Mark articles in e-mail digest as read"), __("")), + "CONFIRM_FEED_CATCHUP" => array(__("Confirm marking feed as read"), ""), + "DEFAULT_ARTICLE_LIMIT" => array(__("Amount of articles to display at once"), ""), + "DEFAULT_UPDATE_INTERVAL" => array(__("Default feed update interval"), ""), + "DIGEST_CATCHUP" => array(__("Mark articles in e-mail digest as read"), ""), "DIGEST_ENABLE" => array(__("Enable email digest"), __("This option enables sending daily digest of new (and unread) headlines on your configured e-mail address")), "DIGEST_PREFERRED_TIME" => array(__("Try to send digests around specified time"), __("Uses UTC timezone")), - "ENABLE_API_ACCESS" => array(__("Enable external API"), __("")), - "ENABLE_FEED_CATS" => array(__("Enable feed categories"), __("")), - "FEEDS_SORT_BY_UNREAD" => array(__("Sort feeds by unread articles count"), __("")), - "FRESH_ARTICLE_MAX_AGE" => array(__("Maximum age of fresh articles (in hours)"), __("")), - "HIDE_READ_FEEDS" => array(__("Hide feeds with no unread articles"), __("")), - "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds and labels when hiding read feeds"), __("")), - "LONG_DATE_FORMAT" => array(__("Long date format"), __("")), + "ENABLE_API_ACCESS" => array(__("Enable external API"), ""), + "ENABLE_FEED_CATS" => array(__("Enable feed categories"), ""), + "FEEDS_SORT_BY_UNREAD" => array(__("Sort feeds by unread articles count"), ""), + "FRESH_ARTICLE_MAX_AGE" => array(__("Maximum age of fresh articles (in hours)"), ""), + "HIDE_READ_FEEDS" => array(__("Hide feeds with no unread articles"), ""), + "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds and labels when hiding read feeds"), ""), + "LONG_DATE_FORMAT" => array(__("Long date format"), ""), "ON_CATCHUP_SHOW_NEXT_FEED" => array(__("On catchup show next feed"), __("Automatically open next feed with unread articles after marking one as read")), - "PURGE_OLD_DAYS" => array(__("Purge articles after this number of days (0 - disables)"), __("")), - "PURGE_UNREAD_ARTICLES" => array(__("Purge unread articles"), __("")), - "REVERSE_HEADLINES" => array(__("Reverse headline order (oldest first)"), __("")), - "SHORT_DATE_FORMAT" => array(__("Short date format"), __("")), - "SHOW_CONTENT_PREVIEW" => array(__("Show content preview in headlines list"), __("")), + "PURGE_OLD_DAYS" => array(__("Purge articles after this number of days (0 - disables)"), ""), + "PURGE_UNREAD_ARTICLES" => array(__("Purge unread articles"), ""), + "REVERSE_HEADLINES" => array(__("Reverse headline order (oldest first)"), ""), + "SHORT_DATE_FORMAT" => array(__("Short date format"), ""), + "SHOW_CONTENT_PREVIEW" => array(__("Show content preview in headlines list"), ""), "SORT_HEADLINES_BY_FEED_DATE" => array(__("Sort headlines by feed date"), __("Use feed-specified date to sort headlines instead of local import date.")), "SSL_CERT_SERIAL" => array(__("Login with an SSL certificate"), __("Click to register your SSL client certificate with tt-rss")), - "STRIP_IMAGES" => array(__("Do not embed images in articles"), __("")), + "STRIP_IMAGES" => array(__("Do not embed images in articles"), ""), "STRIP_UNSAFE_TAGS" => array(__("Strip unsafe tags from articles"), __("Strip all but most common HTML tags when reading articles.")), "USER_CSS_THEME" => array(__("Select theme"), __("Select one of the available CSS themes")), "USER_STYLESHEET" => array(__("Customize stylesheet"), __("Customize CSS stylesheet to your liking")), - "USER_TIMEZONE" => array(__("User timezone"), __("")), + "USER_TIMEZONE" => array(__("User timezone"), ""), "VFEED_GROUP_BY_FEED" => array(__("Group headlines in virtual feeds"), __("When this option is enabled, headlines in Special feeds and Labels are grouped by feeds")) ); } -- cgit v1.2.3 From 274272b4bcd3a36e0e65880aceb9dd78de83ef79 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:38:18 +0400 Subject: rebase translations --- locale/ca_CA/LC_MESSAGES/messages.mo | Bin 26818 -> 25274 bytes locale/ca_CA/LC_MESSAGES/messages.po | 1203 +++++++++++++++++---------------- locale/cs_CZ/LC_MESSAGES/messages.mo | Bin 42958 -> 41830 bytes locale/cs_CZ/LC_MESSAGES/messages.po | 1201 +++++++++++++++++---------------- locale/de_DE/LC_MESSAGES/messages.mo | Bin 62612 -> 60446 bytes locale/de_DE/LC_MESSAGES/messages.po | 1205 +++++++++++++++++---------------- locale/es_ES/LC_MESSAGES/messages.mo | Bin 42939 -> 40631 bytes locale/es_ES/LC_MESSAGES/messages.po | 1207 +++++++++++++++++---------------- locale/fi_FI/LC_MESSAGES/messages.mo | Bin 40828 -> 39189 bytes locale/fi_FI/LC_MESSAGES/messages.po | 1202 +++++++++++++++++---------------- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 68803 -> 66557 bytes locale/fr_FR/LC_MESSAGES/messages.po | 1205 +++++++++++++++++---------------- locale/hu_HU/LC_MESSAGES/messages.mo | Bin 57227 -> 55026 bytes locale/hu_HU/LC_MESSAGES/messages.po | 1207 +++++++++++++++++---------------- locale/it_IT/LC_MESSAGES/messages.mo | Bin 40386 -> 38201 bytes locale/it_IT/LC_MESSAGES/messages.po | 1206 +++++++++++++++++---------------- locale/ja_JP/LC_MESSAGES/messages.mo | Bin 27406 -> 26531 bytes locale/ja_JP/LC_MESSAGES/messages.po | 1211 +++++++++++++++++---------------- locale/lv_LV/LC_MESSAGES/messages.mo | Bin 49387 -> 47333 bytes locale/lv_LV/LC_MESSAGES/messages.po | 1207 +++++++++++++++++---------------- locale/nb_NO/LC_MESSAGES/messages.mo | Bin 25423 -> 23967 bytes locale/nb_NO/LC_MESSAGES/messages.po | 1203 +++++++++++++++++---------------- locale/nl_NL/LC_MESSAGES/messages.mo | Bin 54679 -> 52560 bytes locale/nl_NL/LC_MESSAGES/messages.po | 1205 +++++++++++++++++---------------- locale/pl_PL/LC_MESSAGES/messages.mo | Bin 64999 -> 62755 bytes locale/pl_PL/LC_MESSAGES/messages.po | 1207 +++++++++++++++++---------------- locale/pt_BR/LC_MESSAGES/messages.mo | Bin 7311 -> 7022 bytes locale/pt_BR/LC_MESSAGES/messages.po | 1205 +++++++++++++++++---------------- locale/ru_RU/LC_MESSAGES/messages.mo | Bin 41926 -> 39705 bytes locale/ru_RU/LC_MESSAGES/messages.po | 1212 +++++++++++++++++----------------- locale/sv_SE/LC_MESSAGES/messages.mo | Bin 51878 -> 49890 bytes locale/sv_SE/LC_MESSAGES/messages.po | 1205 +++++++++++++++++---------------- locale/zh_CN/LC_MESSAGES/messages.mo | Bin 37932 -> 35984 bytes locale/zh_CN/LC_MESSAGES/messages.po | 1208 +++++++++++++++++---------------- messages.pot | 1023 ++++++++++++++-------------- 35 files changed, 10707 insertions(+), 10815 deletions(-) diff --git a/locale/ca_CA/LC_MESSAGES/messages.mo b/locale/ca_CA/LC_MESSAGES/messages.mo index b881a24b2..106af69a1 100644 Binary files a/locale/ca_CA/LC_MESSAGES/messages.mo and b/locale/ca_CA/LC_MESSAGES/messages.mo differ diff --git a/locale/ca_CA/LC_MESSAGES/messages.po b/locale/ca_CA/LC_MESSAGES/messages.po index ed6d6948d..536f98b60 100644 --- a/locale/ca_CA/LC_MESSAGES/messages.po +++ b/locale/ca_CA/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2009-11-19 09:40+0100\n" "Last-Translator: Alfred Galitó \n" "Language-Team: Català \n" @@ -251,8 +251,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Ha fallat la sortida de prova de SQL, reviseu la base configuració de la bases de dades i de PHP" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -262,10 +262,10 @@ msgstr "Ha fallat la sortida de prova de SQL, reviseu la base configuració de l #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -281,86 +281,85 @@ msgstr "Ha fallat la sortida de prova de SQL, reviseu la base configuració de l #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "S'està obrint, preneu paciència..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Redueix la llista de canals" -#: index.php:171 +#: index.php:169 #, fuzzy msgid "Show articles" msgstr "Articles mémorisés" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptatiu" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Tots els articles" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Marcats" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publicats" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Per llegir" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Per llegir" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignora la puntuació" -#: index.php:184 +#: index.php:182 #, fuzzy msgid "Sort articles" msgstr "Articles mémorisés" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Per defecte" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Marca el canal com a llegit" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -369,114 +368,114 @@ msgstr "Marca el canal com a llegit" msgid "Mark as read" msgstr "Marca'l com a llegit" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Tots els articles" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Hi ha una nova versió de Tiny Tiny RSS!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Accions..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Preferències" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Cerca..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Accions sobre els canals:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Subscriviu-vos al canal" -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Edita aquest canal..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Canvia la puntuació del canal" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Dóna't de baixa" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Tots els canals" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Mostra/amaga els canals llegits" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Altres accions:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "" -#: index.php:243 +#: index.php:241 #, fuzzy msgid "Show tag cloud..." msgstr "Núvol d'etiquetes" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Canvia al mode de reordenació de categories" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Crea una etiqueta" -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Crea un filtre..." -#: index.php:248 +#: index.php:246 #, fuzzy msgid "Keyboard shortcuts help" msgstr "Dreceres de teclat" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -485,8 +484,8 @@ msgstr "Surt" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Preferències" @@ -511,8 +510,8 @@ msgid "Filters" msgstr "Filtres" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -583,10 +582,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "La base de dades de Tiny Tiny RSS està actualitzada." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -603,624 +602,367 @@ msgstr[1] "Articles marcats" msgid "No feeds found." msgstr "No s'ha trobat cap canal." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Especial" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Tots els canals" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Articles marcats" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Articles publicats" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Articles nous" -#: include/functions.php:1813 +#: include/functions.php:1814 #, fuzzy msgid "Archived articles" msgstr "Articles mémorisés" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navegació" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Canals generats" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Mostra el contingut original de l'article" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Mostra el contingut original de l'article" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Mostra el diàleg de cerca" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Tots els articles" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Commuta els marcats" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Commuta els publicats" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Commuta els no llegits" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Edita les etiquetes" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Publica l'article" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Obre l'article en una finestra nova" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 #, fuzzy msgid "Mark below as read" msgstr "Marca'l com a llegit" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 #, fuzzy msgid "Mark above as read" msgstr "Marca'l com a llegit" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Fet!" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Seleccioneu un article mitjançant el ratolí." -#: include/functions.php:1899 +#: include/functions.php:1900 #, fuzzy msgid "Email article" msgstr "Tots els articles" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Buida els articles" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Canvia al mode de reordenació de categories" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Accions actives de l'article" -#: include/functions.php:1904 +#: include/functions.php:1905 #, fuzzy msgid "Select all articles" msgstr "Buida els articles" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Purga els articles per llegir" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Marca'l com a destacat" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Purga els articles per llegir" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Accions actives de l'article" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Buida els articles" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Canal" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Actualitza els canals actius" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Mostra/amaga els canals llegits" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Subscriu-te al canal" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Edita el canal" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "S'ha acabat l'actualització dels canals." -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Marca tots els canals com a llegits" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Clica-hi per a reduir la categoria" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Canvia al mode de reordenació de categories" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Canvia al mode de reordenació de categories" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Vés a..." -#: include/functions.php:1924 +#: include/functions.php:1925 #, fuzzy msgid "Fresh" msgstr "Actualitza" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Núvol d'etiquetes" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Altres:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Crea una etiqueta" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Crea un filtre" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Redueix la barra lateral" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Mostra el diàleg de cerca" -#: include/functions.php:2418 +#: include/functions.php:2419 #, fuzzy, php-format msgid "Search results: %s" msgstr "Resultats de la cerca" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 #, fuzzy msgid "Click to play" msgstr "Feu clic per editar" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "sense etiqueta" -#: include/functions.php:3059 +#: include/functions.php:3060 #: classes/feeds.php:686 msgid "Edit tags for this article" msgstr "Edita les etiquetes d'aquest article" -#: include/functions.php:3088 +#: include/functions.php:3089 #: classes/feeds.php:642 #, fuzzy msgid "Originally from:" msgstr "Mostra el contingut original de l'article" -#: include/functions.php:3101 +#: include/functions.php:3102 #: classes/feeds.php:655 #: classes/pref/feeds.php:540 #, fuzzy msgid "Feed URL" msgstr "Canal" -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Tanca la finestra" - -#: include/functions.php:3368 -#, fuzzy -msgid "(edit note)" -msgstr "edita la nota" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "tipus desconegut" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "Adjuncions:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Títol" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Títol o contingut" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Enllaç" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Contingut" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Data de l'article" - -#: include/localized_schema.php:9 -#, fuzzy -msgid "Delete article" -msgstr "Buida els articles" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Marca'l com a destacat" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publica l'article" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Assigna etiquetes" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Assigna-li l'etiqueta" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "General" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interfície" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avançat" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Aquesta opció és útil si rebeu informació de diferents canals de tipus «multicanal» amb informació que pot coincidir. Si està desactivat només mostra els articles repetits un sol cop." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Affiche les articles sous la forme d'une liste étendue, au lieu de deux listes séparées (une pour les en-têtes et une pour le contenu)" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Aquesta opció habilita l'enviament diari d'un resum de les capçaleres noves (i no llegides) a l'adreça electrònica especificada en la configuració de l'usuari." - -#: include/localized_schema.php:25 -#, fuzzy -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Aquesta opció permet marcar els articles com a llegits automàticament en mode combinat (excepte en el canal d'articles Frescos) mentre desplaceu la barra." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Elimina les etiquetes HTML més freqüents en llegir els articles." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Quan s'autodetectin etiquetes en els articles, aquestes etiquetes no s'utilitzaran (fes una llista separada per comes)" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes per canals." - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Purga els articles vells al cap d'aquest nombre de dies (0 - desactiva la purga)" - -#: include/localized_schema.php:35 -#, fuzzy -msgid "Default interval between feed updates" -msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" - -#: include/localized_schema.php:36 -#, fuzzy -msgid "Amount of articles to display at once" -msgstr "No s'han trobat articles per a mostrar." - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Permet la duplicació d'articles" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Utiliser les catégories de flux" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Mostra el contingut en la llista de capçaleres" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Format curt de data" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Format llarg de data" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Mostra els canals combinats" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Amaga els canals que no tinguin missatges per llegir." - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Salta automàticament al canal següent" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Ordena els canals per articles no llegits" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Habilita el resum diari de capçaleres per correu electrònic." - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Demana la confirmació quan es marqui un canal com a llegit" - -#: include/localized_schema.php:49 -#, fuzzy -msgid "Automatically mark articles as read" -msgstr "En mode combinat expandeix els articles automàticament." - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Elimina les etiquetes dels articles que no siguin segures." - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Llista negra d'etiquetes" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Temps màxim per als articles marcats com a frescos (en hores)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Marca tots els articles enviat en el resum via adreça electrònica com a llegits" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "En mode combinat expandeix els articles automàticament." - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Purga els articles per llegir" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Mostra els canals especials quan s'amaguin els canals reals." - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Agrupa les capçaleres en canals virtuals" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "No mostris imatges en els articles" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -#, fuzzy -msgid "Customize stylesheet" -msgstr "URL de la fulla d'estils personalitzada." - -#: include/localized_schema.php:62 -#, fuzzy -msgid "Sort headlines by feed date" -msgstr "Ordena els canals per articles no llegits" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Tanca la finestra" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "" +#: include/functions.php:3369 +#, fuzzy +msgid "(edit note)" +msgstr "edita la nota" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "tipus desconegut" -#: include/localized_schema.php:65 +#: include/functions.php:3660 #, fuzzy -msgid "Assign articles to labels automatically" -msgstr "Marca els articles com a llegits automàticament." - -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Seleccioneu una interfície" +msgid "Attachments" +msgstr "Adjuncions:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1253,7 +995,7 @@ msgstr "Fitxer:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 #, fuzzy msgid "Default profile" msgstr "Nombre maximal d'articles par défaut" @@ -1272,7 +1014,7 @@ msgstr "" msgid "Log in" msgstr "Registreu-vos" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "No s'ha pogut validar la sessió (IP incorrecta)" @@ -1289,7 +1031,7 @@ msgstr "Etiquetes per aquest article (separades per comes):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1310,7 +1052,7 @@ msgstr "Desa" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1548,7 +1290,7 @@ msgstr "Selecciona:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1568,7 +1310,7 @@ msgstr "Inverteix" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1657,7 +1399,8 @@ msgid "No starred articles found to display." msgstr "No hi ha articles marcats per mostrar." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "No s'han trobat articles per a mostrar. Podeu assignar articles a etiquetes manualment (mireu el menú Accions) o utilitzeu un filtre." #: classes/feeds.php:744 @@ -1713,7 +1456,7 @@ msgid "Login" msgstr "Entra" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1944,7 +1687,7 @@ msgstr "[tt-rss] Notificació de canvi de contrasenya" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2124,7 +1867,7 @@ msgid "Save rule" msgstr "Desa" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Add rule" msgstr "S'està afegint la categoria..." @@ -2143,7 +1886,7 @@ msgid "Save action" msgstr "Quadre d'accions" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "Accions dels canals" @@ -2153,247 +1896,459 @@ msgstr "Accions dels canals" msgid "[No caption]" msgstr "Descriptif" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "General" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfície" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avançat" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permet la duplicació d'articles" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "Marca els articles com a llegits automàticament." + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Llista negra d'etiquetes" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Quan s'autodetectin etiquetes en els articles, aquestes etiquetes no s'utilitzaran (fes una llista separada per comes)" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "En mode combinat expandeix els articles automàticament." + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Aquesta opció permet marcar els articles com a llegits automàticament en mode combinat (excepte en el canal d'articles Frescos) mentre desplaceu la barra." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "En mode combinat expandeix els articles automàticament." + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Mostra els canals combinats" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Affiche les articles sous la forme d'une liste étendue, au lieu de deux listes séparées (une pour les en-têtes et une pour le contenu)" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Demana la confirmació quan es marqui un canal com a llegit" + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "No s'han trobat articles per a mostrar." + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Interval per defecte" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Marca tots els articles enviat en el resum via adreça electrònica com a llegits" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Habilita el resum diari de capçaleres per correu electrònic." + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Aquesta opció habilita l'enviament diari d'un resum de les capçaleres noves (i no llegides) a l'adreça electrònica especificada en la configuració de l'usuari." + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Utiliser les catégories de flux" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Ordena els canals per articles no llegits" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Temps màxim per als articles marcats com a frescos (en hores)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Amaga els canals que no tinguin missatges per llegir." + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Mostra els canals especials quan s'amaguin els canals reals." + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Format llarg de data" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Salta automàticament al canal següent" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Purga els articles vells al cap d'aquest nombre de dies (0 - desactiva la purga)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Purga els articles per llegir" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Inverteix l'ordre de les capçaleres (les més antigues les primeres)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Format curt de data" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Mostra el contingut en la llista de capçaleres" + +#: classes/pref/prefs.php:50 +#, fuzzy +msgid "Sort headlines by feed date" +msgstr "Ordena els canals per articles no llegits" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "No mostris imatges en els articles" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Elimina les etiquetes dels articles que no siguin segures." + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Elimina les etiquetes HTML més freqüents en llegir els articles." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Seleccioneu una interfície" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +#, fuzzy +msgid "Customize stylesheet" +msgstr "URL de la fulla d'estils personalitzada." + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Agrupa les capçaleres en canals virtuals" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes per canals." + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "El camp de contrasenya antiga no pot estar buit." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "El camp de contrasenya nova no pot estar buit." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Les contrasenyes no coincideixen." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "S'ha desat la configuració" -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Es desconeix l'opció %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 #, fuzzy msgid "Your personal data has been saved." msgstr "S'ha modificat la contrasenya." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticació" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Dades personals" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "Adreça electrònica" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Nivell d'accés" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 #, fuzzy msgid "Save data" msgstr "Desa" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "La contrasenya actual és la predeterminada,\n" "\t\t\t\t\t\t penseu en modificar-la." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Contrasenya antiga" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nova contrasenya" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Confirmeu la contrasenya" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Canvia la contrasenya" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "El nom d'usuari o la contrasenya és incorrecte" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(Desactivat)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Activat" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 #, fuzzy msgid "Customize" msgstr "URL de la fulla d'estils personalitzada." -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 #, fuzzy msgid "Register" msgstr "Registrat" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Desa la configuració" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 #, fuzzy msgid "Manage profiles" msgstr "Crea un filtre" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Torna als paràmetres per defecte" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "description" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Esborra les dades del canal" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Habilita les icones dels canals." -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "El nom d'usuari o la contrasenya és incorrecte" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 #, fuzzy msgid "Create profile" msgstr "Crea un filtre" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 #, fuzzy msgid "(active)" msgstr "Adaptatiu" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 #, fuzzy msgid "Remove selected profiles" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 #, fuzzy msgid "Activate profile" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" @@ -2497,26 +2452,26 @@ msgstr "S'estan purgant els canals seleccionats..." msgid "Batch subscribe" msgstr "Dóna't de baixa" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "Catégorie :" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "S'està afegint la categoria..." -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "Edita les categories" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Edita les categories" + #: classes/pref/feeds.php:1309 #, fuzzy msgid "More actions..." @@ -2828,72 +2783,72 @@ msgstr "Torna a Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "Data de l'article" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "Exporta en format OPML" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importeu" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 #, fuzzy msgid "Could not import: incorrect schema version." msgstr "No s'ha pogut trobar el fitxer d'esquema necessari, es necessita la versió:" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Edita les etiquetes" msgstr[1] "Edita les etiquetes" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "Ja s'ha importat" msgstr[1] "Ja s'ha importat" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "No heu seleccionat cap canal." msgstr[1] "No heu seleccionat cap canal." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 #, fuzzy msgid "Prepare data" msgstr "Desa" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -3093,160 +3048,150 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -#, fuzzy -msgid "Date syntax appears to be correct:" -msgstr "La contrasenya antiga és incorrecta." - -#: js/functions.js:624 -#, fuzzy -msgid "Date syntax is incorrect." -msgstr "La contrasenya antiga és incorrecta." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 #, fuzzy msgid "Upload complete." msgstr "Articles mémorisés" -#: js/functions.js:742 +#: js/functions.js:692 #, fuzzy msgid "Remove stored feed icon?" msgstr "Elimina les dades emmagatzemades" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "S'està eliminant el canal..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "No s'ha trobat el canal." -#: js/functions.js:774 +#: js/functions.js:724 #, fuzzy msgid "Please select an image file to upload." msgstr "Si us plau, seleccioneu un canal." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "S'està obrint, preneu paciència..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Si us plau, escriviu un títol per a l'etiqueta:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "No s'ha pogut crear l'etiqueta: Títol desconegut." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Subscriviu-vos al canal" -#: js/functions.js:868 +#: js/functions.js:818 #, fuzzy msgid "Subscribed to %s" msgstr "Subscrit als canals:" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "No s'ha pogut subscriure: no s'ha especificat la URL del canal." -#: js/functions.js:933 +#: js/functions.js:883 #, fuzzy msgid "You are already subscribed to this feed." msgstr "No esteu subscrit a cap canal." -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "Filtres" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "Accions dels canals" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Crea un filtre" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Subscriviu-vos al canal" -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Us voleu donar de baixa de %s ?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "S'està eliminant el canal..." -#: js/functions.js:1373 +#: js/functions.js:1323 #, fuzzy msgid "Please enter category title:" msgstr "Si us plau, escriviu una nota per aquest article:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "S'està intentant canviar l'adreça..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "No podeu editar aquest tipus de canal." -#: js/functions.js:1610 +#: js/functions.js:1560 #, fuzzy msgid "Edit Feed" msgstr "Edita el canal" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "S'està desant el canal..." -#: js/functions.js:1648 +#: js/functions.js:1598 #, fuzzy msgid "More Feeds" msgstr "Més canals" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3257,28 +3202,28 @@ msgstr "Més canals" msgid "No feeds are selected." msgstr "No heu seleccionat cap canal." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 #, fuzzy msgid "Feeds with update errors" msgstr "Erreurs de mise à jour" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 #, fuzzy msgid "Remove selected feeds?" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "S'estan suprimint els filtres seleccionats..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Ajuda" @@ -3655,147 +3600,157 @@ msgstr "S'estan canviant la puntuació dels articles" msgid "New version available!" msgstr "Hi ha una nova versió de Tiny Tiny RSS!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Cancel·la" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Treu la marca de l'article" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Marca l'article" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Deixa de publicar l'article" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publica l'article" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "No hi ha cap article seleccionat." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" msgstr[1] "Esteu segur que voleu eliminar els articles seleccionats de l'etiqueta?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Articles marcats" msgstr[1] "Articles marcats" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" msgstr[1] "Esteu segur que voleu marcar els %d articles seleccionats de %s com a llegits?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 #, fuzzy msgid "Edit article Tags" msgstr "Edita les etiquetes" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "S'estan desant les etiquetes de l'article" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "No hi ha cap article seleccionat." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "No s'han trobat articles per a marcar." -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" msgstr[1] "Esteu segur que voleu marcar %d article(s) com a llegit(s) ?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 #, fuzzy msgid "Open original article" msgstr "Mostra el contingut original de l'article" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "afficher les étiquettes" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Commuta els marcats" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Assigna-li l'etiqueta" + +#: js/viewfeed.js:1938 #, fuzzy msgid "Remove label" msgstr "Esteu segur que voleu suprimir les etiquetes seleccionades?" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 #, fuzzy msgid "Playing..." msgstr "S'està carregant la llista de canals..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 #, fuzzy msgid "Click to pause" msgstr "Feu clic per editar" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Si us plau, escriviu una nota per aquest article:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Si us plau, escriviu una nota per aquest article:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Tots els articles" @@ -3919,6 +3874,46 @@ msgstr "Marca l'article" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Títol" + +#~ msgid "Title or Content" +#~ msgstr "Títol o contingut" + +#~ msgid "Link" +#~ msgstr "Enllaç" + +#~ msgid "Content" +#~ msgstr "Contingut" + +#~ msgid "Article Date" +#~ msgstr "Data de l'article" + +#, fuzzy +#~ msgid "Delete article" +#~ msgstr "Buida els articles" + +#~ msgid "Set starred" +#~ msgstr "Marca'l com a destacat" + +#~ msgid "Assign tags" +#~ msgstr "Assigna etiquetes" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Aquesta opció és útil si rebeu informació de diferents canals de tipus «multicanal» amb informació que pot coincidir. Si està desactivat només mostra els articles repetits un sol cop." + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La contrasenya antiga és incorrecta." + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "La contrasenya antiga és incorrecta." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Actualitza" diff --git a/locale/cs_CZ/LC_MESSAGES/messages.mo b/locale/cs_CZ/LC_MESSAGES/messages.mo index 6148ffe04..81506fd75 100644 Binary files a/locale/cs_CZ/LC_MESSAGES/messages.mo and b/locale/cs_CZ/LC_MESSAGES/messages.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po index c19045a1c..cb90c3220 100644 --- a/locale/cs_CZ/LC_MESSAGES/messages.po +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-31 18:03+0200\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech \n" @@ -248,8 +248,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkontrolujte nastavení databáze a PHP" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -259,10 +259,10 @@ msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkon #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -278,83 +278,82 @@ msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkon #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Načítám, čekejte prosím..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Sbalit seznam kanálů" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Zobrazit články" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptivní" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Všechny články" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "S hvězdičkou" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publikováno" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Nepřečteno" -#: index.php:179 +#: index.php:177 msgid "Unread First" msgstr "Nejprve nepřečtené" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "S poznámkou" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorovat hodnocení" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Seřadit články" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Výchozí" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "Nejprve nejnovější" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "Nejprve nejstarší" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Označit kanál jako přečtený" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -363,110 +362,110 @@ msgstr "Označit kanál jako přečtený" msgid "Mark as read" msgstr "Označit jako přečtené" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Všechny články" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "Starší než jeden den" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "Starší než jeden týden" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "Starší než dva týdny" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Chyba při komunikaci se serverem." -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Je dostupná nová verze Tiny Tiny RSS." -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Činnosti..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Nastavení..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Hledat..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Činnosti kanálů:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Přihlásit se k odběru..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Upravit kanál..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Přehodnotit kanál" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Zrušit odběr" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Všechny kanály:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Zobrazit/Skrýt přečtené kanály" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Ostatní činnosti:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Přepnout na souhrn..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Zobrazit seznam značek..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Přepnout širokoúhlý režim" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Vybrat podle značek..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Vytvořit štítek..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Vytvořit filtr..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Nápověda ke klávesovým zkratkám" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -475,8 +474,8 @@ msgstr "Odhlásit se" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Nastavení" @@ -501,8 +500,8 @@ msgid "Filters" msgstr "Filtry" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -572,10 +571,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Skript aktualizace dat Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -593,574 +592,328 @@ msgstr[2] "%d archivovaných článků" msgid "No feeds found." msgstr "Nenalezeny žádné kanály." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Speciální" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Všechny kanály" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Články s hvězdičkou" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publikované články" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Nové články" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Archivované články" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Nedávno přečtené" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigace" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Otevřít následující kanál" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Otevřít předchozí kanál" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Otevřít následující článek" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Otevřít předchozí článek" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Otevřít následující článek (neposouvat dlouhé články)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Otevřít předchozí článek (neposouvat dlouhé články)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Zobrazit dialog hledání" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Článek" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Přepnout hvězdičku" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Přepnout publikováno" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Přepnout přečteno" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Upravit značky" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Otevřít v novém okně" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Označit níže jako přečtené" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Označit výše jako přečtené" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Posunout dolů" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Posunout nahoru" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Vybrat článek pod kurzorem" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Odeslat článek e-mailem" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Zavřít/sbalit článek" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Přepnout vložený originál" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Výběr článků" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Vybrat všechny články" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Vybrat nepřečtené" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Vybrat s hvězdičkou" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Vybrat publikované" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Obrátit výběr" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Zrušit výběr" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Kanál" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Obnovit současný kanál" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Zobrazit/Skrýt přečtené kanály" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Přihlásit se k odběru" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Upravit kanál" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Ladit aktualizaci kanálů" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Označit všechny kanály za přečtené" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Rozbalit/sbalit aktuální kategorii" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Přepnout kombinovaný režim" -#: include/functions.php:1921 +#: include/functions.php:1922 msgid "Toggle auto expand in combined mode" msgstr "Přepnout automatické rozbalení kombinovaném režimu" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Přejít na" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Nové" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Seznam značek" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Ostatní" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Vytvořit štítek" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Vytvořit filtr" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Rozbalit/sbalit postranní lištu" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Zobrazit nápovědu" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Výsledky hledání: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Klikněte pro přehrání" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 -msgid "Play" -msgstr "Přehrát" - -#: include/functions.php:3027 -msgid " - " -msgstr " - " - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "žádné značky" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Upravit značky pro článek" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Původně z:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "URL kanálu" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Zavřít toto okno" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(upravit poznámku)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "neznámý typ" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Přílohy" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Název" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Nadpis nebo obsah" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Odkaz" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Obsah" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Datum článku" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Smazat článek" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Nastavit hvězdičku" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publikovat článek" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Přiřadit značky" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Přiřadit štítek" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Upravit hodnocení" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Obecné" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Rozhraní" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Pokročilé" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Tato volba je užitečná pro sledování několika agregátorů s částečně prolínající databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých zdrojů a zobrazí je jako jeden." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Umožňuje odesílání denních souhrnů nových (a nepřečtených) článků na vaší nastavenou e-mailovou adresu" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Používá časovou zónu UTC" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "Vybrat jeden z dostupných motivů CSS" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Vymazat články podle stáří ve dnech (0 - nikdy nemazat)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Výchozí interval mezi aktualizacemi kanálů" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Počet naráz zobrazovaných článků" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Povolit duplicitní příspěvky" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Krátký formát data" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Dlouhý formát data" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "Skrýt kanály bez nepřečtených článků" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Řadit kanály dle počtu nepřečtených článků" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Obrácené řazení nadpisů (nejstarší jako první)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Povolit e-mailový souhrn" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Potvrdit označení kanálu jako přečteného" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Automaticky označit články jako přečtené" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Odebrat nebezpečné značky z článků" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Zakázané značky" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximální stáří nových článků (v hodinách)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Označit články v e-mailovém souhrnu jako přečtené" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Nevkládat obrázky do článků" +#: include/functions.php:2911 +#: js/viewfeed.js:1968 +msgid "Play" +msgstr "Přehrát" -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Povolit externí API" +#: include/functions.php:3028 +msgid " - " +msgstr " - " -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Časová zóna uživatele" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "žádné značky" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Upravit soubor motivu" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Upravit značky pro článek" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Původně z:" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Přihlásit s certifikátem SSL" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "URL kanálu" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Pokusit se odeslat souhrn v zadaný čas" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Zavřít toto okno" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(upravit poznámku)" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Zvolit motiv" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "neznámý typ" + +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Přílohy" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1191,7 +944,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Výchozí profil" @@ -1209,7 +962,7 @@ msgstr "Zapamatovat" msgid "Log in" msgstr "Přihlásit" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Nezdařilo se ověřit sezení (neplatné IP)" @@ -1225,7 +978,7 @@ msgstr "Značky článku (oddělené čárkami):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1246,7 +999,7 @@ msgstr "Uložit" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1469,7 +1222,7 @@ msgstr "Vybrat:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1489,7 +1242,7 @@ msgstr "Invertovat" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1571,7 +1324,7 @@ msgid "No starred articles found to display." msgstr "Nenalezeny žádné články s hvězdičkou k zobrazení." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "" #: classes/feeds.php:744 @@ -1625,7 +1378,7 @@ msgid "Login" msgstr "Přihlášení" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1845,7 +1598,7 @@ msgstr "[tt-rss] Oznámení o změně hesla" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2012,7 +1765,7 @@ msgid "Save rule" msgstr "" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Přidat pravidlo" @@ -2029,7 +1782,7 @@ msgid "Save action" msgstr "" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Přidat činnost" @@ -2038,228 +1791,429 @@ msgstr "Přidat činnost" msgid "[No caption]" msgstr "Titulek" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Obecné" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Rozhraní" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Pokročilé" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Povolit duplicitní příspěvky" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Zakázané značky" + +#: classes/pref/prefs.php:27 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Automaticky označit články jako přečtené" + +#: classes/pref/prefs.php:28 +msgid "Mark articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Potvrdit označení kanálu jako přečteného" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Počet naráz zobrazovaných článků" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Výchozí interval" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Označit články v e-mailovém souhrnu jako přečtené" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Povolit e-mailový souhrn" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Umožňuje odesílání denních souhrnů nových (a nepřečtených) článků na vaší nastavenou e-mailovou adresu" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Pokusit se odeslat souhrn v zadaný čas" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Používá časovou zónu UTC" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Povolit externí API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Řadit kanály dle počtu nepřečtených článků" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximální stáří nových článků (v hodinách)" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "Skrýt kanály bez nepřečtených článků" + +#: classes/pref/prefs.php:42 +msgid "Show special feeds and labels when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Dlouhý formát data" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Vymazat články podle stáří ve dnech (0 - nikdy nemazat)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Obrácené řazení nadpisů (nejstarší jako první)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Krátký formát data" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Přihlásit s certifikátem SSL" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Nevkládat obrázky do článků" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Odebrat nebezpečné značky z článků" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Zvolit motiv" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "Vybrat jeden z dostupných motivů CSS" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Upravit soubor motivu" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Časová zóna uživatele" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Staré heslo nemůže být prázdné." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Nové heslo nemůže být prázdné." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Zadaná hesla nejsou shodná." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Nastavení bylo uloženo." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Neznámá možnost: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Vaše osobní data byla uložena." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Osobní data / ověření" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Osobní informace" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Celé jméno" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Úroveň přístupu" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Uložit data" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Vaše heslo má výchozí hodnotu, změňte jej prosím." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "Změněna hesla zakáže heslo na jedno použití." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Staré heslo" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nové heslo" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Potvrdit heslo" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Změnit heslo" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Heslo na jedno použití / Ověření" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Hesla na jedno použití jsou povolena. Zadejte své současné heslo pro zakázání." -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Zadejte své heslo" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Zakázat HJP" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Povolit HJP" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Přizpůsobit" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Registrovat" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Vyčistit" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuální čas na serveru: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Uložit nastavení" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Spravovat profily" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Obnovit výchozí hodnoty" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Moduly" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Systémové moduly" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Modul" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Popis" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Verze" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "více informací" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Smazat data" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Uživatelské moduly" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Povolit vybrané moduly" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Špatné heslo" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Vytvořit profil" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktivní)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Odstranit vybrané profily" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Aktivovat profil" @@ -2353,22 +2307,22 @@ msgstr "Upravit vybrané kanály" msgid "Batch subscribe" msgstr "Dávkové zahájení odběru" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorie" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Přidat kategorii" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Zobrazit/Skrýt prázdné kategorie" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Odstranit vybrané" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Zobrazit/Skrýt prázdné kategorie" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Další činnost..." @@ -2649,39 +2603,39 @@ msgstr "" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importovat" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Dokončeno: " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " @@ -2689,7 +2643,7 @@ msgstr[0] "zpracován %d článek, " msgstr[1] "zpracovány %d články, " msgstr[2] "zpracováno %d článků, " -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " @@ -2697,7 +2651,7 @@ msgstr[0] "%d importován, " msgstr[1] "%d importovány, " msgstr[2] "%d importováno, " -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." @@ -2705,15 +2659,15 @@ msgstr[0] "vytvořen %d kanál." msgstr[1] "vytvořeny %d kanály." msgstr[2] "vytvořeno %d kanálů." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2892,142 +2846,134 @@ msgstr "" msgid "close" msgstr "zavřít" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Odeslání dokončeno." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "" -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "" -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "" -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Odesílám, čekejte prosím..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Přihlásit se k odběru" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Zahájen odběr %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Zadaná URL nevypadá platně." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Tento kanál již odebíráte." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Upravit činnost" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Vytvořit filtr" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "" -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Zrušit odběr %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Odebírám kanál..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Zadejte prosím název kategorie:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Zkouším změnit adresu..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Nemůžete upravit tento typ kanálu." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Upravit kanál" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Ukládám data..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Více kanálů" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3038,25 +2984,25 @@ msgstr "Více kanálů" msgid "No feeds are selected." msgstr "Nejsou vybrány žádné kanály." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Odstranit vybrané kanály?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Odebírám vybrané kanály..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Nápověda" @@ -3402,137 +3348,147 @@ msgstr "" msgid "New version available!" msgstr "Je dostupná nová verze." -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Zrušit hledání" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Odebrat článku hvězdičku" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Přidat článku hvězdičku" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publikovat článek" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nejsou vybrány žádné články." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Smazat %d vybraný článek v %s?" msgstr[1] "Smazat %d vybrané články v %s?" msgstr[2] "Smazat %d vybraných článků v %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Smazat %d vybraný článek?" msgstr[1] "Smazat %d vybrané články?" msgstr[2] "Smazat %d vybraných článků?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Archivovat %d vybraný článek v %s?" msgstr[1] "Archivovat %d vybrané články v %s?" msgstr[2] "Archivovat %d vybraných článků v %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Přesunout zpět %d archivovaný článek?" msgstr[1] "Přesunout zpět %d archivované články?" msgstr[2] "Přesunout zpět %d archivovaných článků?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Označit %d článek v %s jako přečtený?" msgstr[1] "Označit %d články v %s jako přečtené?" msgstr[2] "Označit %d článků v %s jako přečtené?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Upravit značky článku" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Ukládám značky článku..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Není vybrán žádný článek." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Nenalezeny žádné články k označení" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Označit %d článek jako přečtený?" msgstr[1] "Označit %d články jako přečtené?" msgstr[2] "Označit %d článků jako přečtené?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Otevřít původní článek" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Zobrazit URL článku" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 msgid "Toggle marked" msgstr "" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Přiřadit štítek" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Odstranit štítek" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Přehrává se..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Kliknutím pozastavit" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Zadejte prosím nové hodnocení vybraných článků:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Zadejte prosím nové hodnocení článku:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "URL článku:" @@ -3639,6 +3595,39 @@ msgstr "Sdílet článek pomocí URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Název" + +#~ msgid "Title or Content" +#~ msgstr "Nadpis nebo obsah" + +#~ msgid "Link" +#~ msgstr "Odkaz" + +#~ msgid "Content" +#~ msgstr "Obsah" + +#~ msgid "Article Date" +#~ msgstr "Datum článku" + +#~ msgid "Delete article" +#~ msgstr "Smazat článek" + +#~ msgid "Set starred" +#~ msgstr "Nastavit hvězdičku" + +#~ msgid "Assign tags" +#~ msgstr "Přiřadit značky" + +#~ msgid "Modify score" +#~ msgstr "Upravit hodnocení" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Tato volba je užitečná pro sledování několika agregátorů s částečně prolínající databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých zdrojů a zobrazí je jako jeden." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Výchozí interval mezi aktualizacemi kanálů" + #, fuzzy #~ msgid "Refresh" #~ msgstr "Nové" diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index b24d3b402..edf2df9bf 100755 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index bb9ddf7e0..8c880ca3e 100755 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-25 17:14+0100\n" "Last-Translator: Joschasa \n" "Language-Team: \n" @@ -252,8 +252,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -263,10 +263,10 @@ msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PH #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -282,84 +282,83 @@ msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PH #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Ladevorgang, bitte warten..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Feedliste verbergen" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Artikel anzeigen" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptiv" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Alle Artikel" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Markiert" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Veröffentlicht" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Ungelesen" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Ungelesen" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Bewertung ignorieren" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Artikel sortieren" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Standard" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Feed als gelesen markieren" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -368,110 +367,110 @@ msgstr "Feed als gelesen markieren" msgid "Mark as read" msgstr "Als gelesen markieren" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Alle Artikel" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Kommunikationsfehler mit Server" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Neue Version von Tiny Tiny RSS verfügbar!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Aktionen..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Einstellungen..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Suchen..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Feed-Aktionen:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feed abonnieren..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Feed bearbeiten..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Feed neu bewerten" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Feed abbestellen" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Alle Feeds:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Gelesene zeigen/verstecken" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Andere Aktionen:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Zur Zusammenfassung wechseln..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Tagwolke anzeigen..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Breitbild-Modus umschalten" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Artikel nach Tag filtern.." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Label erstellen..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Filter erstellen..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Tastaturkürzel..." -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -480,8 +479,8 @@ msgstr "Abmelden" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Einstellungen" @@ -506,8 +505,8 @@ msgid "Filters" msgstr "Filter" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -577,10 +576,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Skript zum Updaten von Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -597,582 +596,335 @@ msgstr[1] "%d archivierte Artikel" msgid "No feeds found." msgstr "Keine Feeds gefunden." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Sonderfeeds" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alle Feeds" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Markierte Artikel" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Veröffentlichte Artikel" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Neue Artikel" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Archivierte Artikel" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Kürzlich gelesen" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigation" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Nächsten Feed öffnen" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Vorherigen Feed öffnen" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Nächsten Artikel öffnen" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Vorherigen Artikel öffnen" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Nächsten Artikel laden (lange Artikel werden nicht gescrollt)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Vorherigen Artikel laden (lange Artikel werden nicht gescrollt)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Suchdialog anzeigen" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artikel" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Markierung ein-/ausschalten" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Veröffentlichung ein-/ausschalten" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Gelesen-Status umschalten" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Tags bearbeiten" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Ausgewählte Artikel verbergen" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Gelesene Artikel verbergen" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "In neuem Fenster öffnen" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Untere als gelesen markieren" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Obige als gelesen markieren" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Nach unten scrollen" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Nach oben scrollen" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Artikel unter Mauszeiger auswählen" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Artikel per E-Mail versenden" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Artikel schließen" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "\"Original einbetten\" umschalten" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Artikelauswahl" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Alle Artikel auswählen" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Ungelesene Artikel auswählen" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Markierte Artikel auswählen" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Veröffentlichte Artikel auswählen" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Auswahl umkehren" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Auswahl aufheben" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Feed" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Aktuellen Feed aktualisieren" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Gelesene Feeds zeigen/verstecken" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Feed abonnieren" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Feed bearbeiten" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Schlagzeilensortierung umkehren" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Aktualisierung im Diagnose-Modus durchführen" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Alle Feeds als gelesen markieren" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Aktuelle Kategorie ein-/ausklappen:" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Gehe zu" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Neu" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tagwolke" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Sonstiges" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Label erstellen" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Filter erstellen" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Seitenleiste ein-/ausklappen" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Hilfe anzeigen" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Suchergebnisse: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Zum Abspielen klicken" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Abspielen" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " -msgstr " - " - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "Keine Tags" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Tags für diesen Artikel bearbeiten" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Original von:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Feed URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Fenster schließen" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(Notiz bearbeiten)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "unbekannter Typ" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Anhänge" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titel" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titel oder Inhalt" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Link" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Inhalt" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Artikeldatum" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Artikel löschen" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Markierung setzen" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Artikel veröffentlichen" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Tags zuweisen" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Label zuweisen" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Bewertung ändern" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Allgemein" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Oberfläche" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Erweiterte Einstellungen" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für Schlagzeilen und Artikelinhalt" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed als gelesen markiert wurde" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue (und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Benutze feed-spezifisches Datum statt des lokalen Importdatums um Schlagzeilen zu sortieren." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Klicken um Ihr SSL Clientzertifikat bei tt-rss zu registrieren" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Benutzt UTC Zeitzone" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Alte Artikel nach dieser Anzahl an Tagen löschen (0 - deaktivert)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Standard Intervall zwischen Feed-Aktualisierungen" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Duplikate zulassen" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Feedkategorien aktivieren" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Kurzes Datumsformat" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Langes Datumsformat" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinierte Feed-Anzeige" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Feeds ohne unglesene Nachrichten verbergen" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Den nächsten Feed anzeigen" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Aktiviere E-Mail-Zusammenfassung" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Bestätigung um Feed als gelesen zu markieren" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Artikel automatisch als gelesen markieren" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Unsichere Tags aus Artikeln entfernen" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Gesperrte Tags" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximales Alter neuer Artikel (in Stunden)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Artikel im Kombinierten Modus automatisch aufklappen" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Ungelesene Artikel löschen" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Schlagzeilen in virtuellen Feeds gruppieren" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Keine Bilder in Artikeln einbetten" +msgstr " - " -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Externe API aktivieren" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "Keine Tags" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Zeitzone des Benutzers" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Tags für diesen Artikel bearbeiten" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Benutzerdefiniertes Stylesheet" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Original von:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Feeds nach Schlagzeilendatum sortieren" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Feed URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Mit SSL-Zertifikat anmelden" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Fenster schließen" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Zusammenfassungen zu einer bestimmten Uhrzeit zu senden" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(Notiz bearbeiten)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Artikel den Labeln automatisch zuordnen" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "unbekannter Typ" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Thema auswählen" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Anhänge" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1203,7 +955,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Standardprofil" @@ -1221,7 +973,7 @@ msgstr "" msgid "Log in" msgstr "Anmelden" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Sitzung konnte nicht validiert werden (falsche IP)" @@ -1237,7 +989,7 @@ msgstr "Tags für diesen Artikel (durch Komma getrennt):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1258,7 +1010,7 @@ msgstr "Speichern" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1482,7 +1234,7 @@ msgstr "Auswahl:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1502,7 +1254,7 @@ msgstr "Umkehren" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1584,7 +1336,8 @@ msgid "No starred articles found to display." msgstr "Keine markierten Artikel zum Anzeigen gefunden." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." #: classes/feeds.php:744 @@ -1638,7 +1391,7 @@ msgid "Login" msgstr "Benutzername" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1858,7 +1611,7 @@ msgstr "[tt-rss] Benachrichtigung: Passwort geändert" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2027,7 +1780,7 @@ msgid "Save rule" msgstr "Regel speichern" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Regel hinzufügen" @@ -2044,7 +1797,7 @@ msgid "Save action" msgstr "Aktion speichern" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Aktion hinzufügen" @@ -2053,228 +1806,433 @@ msgstr "Aktion hinzufügen" msgid "[No caption]" msgstr "Titel" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Allgemein" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Oberfläche" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Erweiterte Einstellungen" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Duplikate zulassen" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Artikel den Labeln automatisch zuordnen" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Gesperrte Tags" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Artikel automatisch als gelesen markieren" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Artikel im Kombinierten Modus automatisch aufklappen" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinierte Feed-Anzeige" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für Schlagzeilen und Artikelinhalt" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Bestätigung um Feed als gelesen zu markieren" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Standard-Intervall" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Aktiviere E-Mail-Zusammenfassung" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue (und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Zusammenfassungen zu einer bestimmten Uhrzeit zu senden" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Benutzt UTC Zeitzone" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Externe API aktivieren" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Feedkategorien aktivieren" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximales Alter neuer Artikel (in Stunden)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Feeds ohne unglesene Nachrichten verbergen" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Langes Datumsformat" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Den nächsten Feed anzeigen" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed als gelesen markiert wurde" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Alte Artikel nach dieser Anzahl an Tagen löschen (0 - deaktivert)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Ungelesene Artikel löschen" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Kurzes Datumsformat" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Feeds nach Schlagzeilendatum sortieren" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Benutze feed-spezifisches Datum statt des lokalen Importdatums um Schlagzeilen zu sortieren." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Mit SSL-Zertifikat anmelden" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klicken um Ihr SSL Clientzertifikat bei tt-rss zu registrieren" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Keine Bilder in Artikeln einbetten" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Unsichere Tags aus Artikeln entfernen" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Thema auswählen" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Benutzerdefiniertes Stylesheet" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Zeitzone des Benutzers" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Schlagzeilen in virtuellen Feeds gruppieren" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Altes Passwort darf nicht leer sein." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Neues Passwort darf nicht leer sein." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Die eingegebenen Passwörter stimmen nicht überein." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Funktion vom Authentifizierungsmodul nicht unterstützt." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Die Einstellungen wurden gespeichert." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Unbekannte Option: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Ihre persönlichen Daten wurden gespeichert." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Persönliche Daten / Authentifizierung" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Persönliche Daten" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Vollständiger Name" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-Mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Zugriffsberechtigung" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Speichern" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Sie nutzen das Standard Passwort, bitte ändern Sie es." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "Das Ändern des aktuellen Passworts deaktiviert Einmalpasswörter." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Altes Passwort" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Neues Passwort" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Passwort bestätigen" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Passwort ändern" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Einmalpasswörter (OTP) / Authentifikator" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese zu deaktivieren." -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Geben Sie Ihr Passwort ein" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Einmalpasswörter ausschalten" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort ändern, wird diese Funktion automatisch ausgeschaltet." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Scannen Sie den folgenden Code mit Ihrem Authentifikator:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern jetzt aktivieren" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Einmalpasswörter einschalten" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "Einige Einstellungen sind nur im Standardprofil verfügbar." -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Anpassen" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Registrieren" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Löschen" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuelle Serverzeit: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Einstellungen speichern" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Profile verwalten" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Auf Standardwerte zurücksetzen" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "System-Plugins" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Beschreibung" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Daten löschen" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Benutzer-Plugins" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Ausgewählte Plugins aktivieren" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Falsches Passwort" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Profil erstellen" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktiv)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Ausgewählte Profile entfernen" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Profil aktivieren" @@ -2368,22 +2326,22 @@ msgstr "Bearbeite ausgewählte Feeds" msgid "Batch subscribe" msgstr "Mehrere Feeds abonnieren" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorien" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Kategorie anlegen" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Zeige/Verstecke leere Kategorien" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Ausgewählte Kategorien löschen" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Zeige/Verstecke leere Kategorien" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Mehr Aktionen..." @@ -2664,68 +2622,68 @@ msgstr "Abonnieren in Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu teilen" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Import und Export" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Artikelarchiv" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "Die markierten und archivierten Artikel können zur Aufbewahrung oder Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Meine Daten exportieren" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importieren" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Import fehlgeschlagen: Falsche Schemaversion" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Import fehlgeschlagen: Unbekanntes Dateiformat" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Beendet: " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "%d Artikel verarbeitet, " msgstr[1] "%d Artikel verarbeitet, " -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "%d importiert, " msgstr[1] "%d importiert, " -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "%d Feed erstellt." msgstr[1] "%d Feeds erstellt." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Konnte XML-Datei nicht laden." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Bereite Daten vor" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "Datei konnte nicht hochgeladen werden. Möglicherweise muss upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" @@ -2907,142 +2865,134 @@ msgstr "Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Die Datumssyntax scheint korrekt zu sein:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Die Datumssyntax ist falsch." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Upload fertig." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Gespeichertes Feed-Symbol entfernen?" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "Feedsymbol wird entfernt." -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "Feedsymbol entfernt." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Bitte eine Bilddatei zum Hochladen auswählen." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Neues Symbol für diesen Feed hochladen?" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Lade hoch, bitte warten..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Bitte einen Label-Titel eingeben:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Kann das Label nicht hinzufügen: fehlender Titel." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Feed abonnieren" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "%s abonniert" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Die angegebene URL scheint ungültig zu sein." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Die angegebene URL scheint keine Feeds zu enthalten." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Die angegebene URL konnte nicht heruntergeladen werden: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Sie haben diesen Feed bereits abonniert." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Regel bearbeiten" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Aktion bearbeiten" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Filter erstellen" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "Abonnement zurückgesetzt." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "%s abbestellen?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Feed wird entfernt..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Bitte geben Sie den Kategorietitel ein:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Neue Veröffentlichungsadresse für diesen Feed erzeugen?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Versuche, die Adresse zu ändern..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Sie können diese Art von Feed nicht bearbeiten." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Feed bearbeiten" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Speichere Daten..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Weitere Feeds" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3053,25 +3003,25 @@ msgstr "Weitere Feeds" msgid "No feeds are selected." msgstr "Keine Feeds ausgewählt." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten Artikeln werden nicht gelöscht" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Feeds mit Aktualisierungsfehlern" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Ausgewählte Feeds entfernen?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Ausgewählte Feeds werden entfernt..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Hilfe" @@ -3418,132 +3368,142 @@ msgstr "Artikel werden neu bewertet..." msgid "New version available!" msgstr "Neue Version verfügbar!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Suche abbrechen" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Artikelmarkierung entfernen" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Artikel markieren" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Artikelveröffentlichung widerrufen" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Artikel veröffentlichen" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Keine Artikel ausgewählt." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "%d ausgewählten Artikel in %s löschen?" msgstr[1] "%d ausgewählte Artikel in %s löschen?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "%d ausgewählten Artikel löschen?" msgstr[1] "%d ausgewählte Artikel löschen?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "%d ausgewählten Artikel in %s archivieren?" msgstr[1] "%d ausgewählte Artikel in %s archivieren?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "%d archivierten Artikel zurück verschieben?" msgstr[1] "%d archivierte Artikel zurück verschieben?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "%d ausgewählten Artikel in %s als gelesen markieren?" msgstr[1] "%d ausgewählte Artikel in %s als gelesen markieren?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Artikel-Tags bearbeiten" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Artikel-Tags werden gespeichert..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Kein Artikel ausgewählt." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Keine Artikel zum markieren gefunden" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "%d Artikel als gelesen markieren?" msgstr[1] "%d Artikel als gelesen markieren?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Originalartikel öffnen" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Zeige Artikel-URL an" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Markierung ein-/ausschalten" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Label zuweisen" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Label entfernen" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Abspielen..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Zum Pausieren klicken" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Bitte geben Sie eine neue Bewertung für die ausgewählten Artikel ab:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Bitte geben Sie eine neue Bewertung für diesen Artikel ab:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Artikel-URL:" @@ -3648,6 +3608,45 @@ msgstr "Artikel über URL teilen" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Title or Content" +#~ msgstr "Titel oder Inhalt" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Content" +#~ msgstr "Inhalt" + +#~ msgid "Article Date" +#~ msgstr "Artikeldatum" + +#~ msgid "Delete article" +#~ msgstr "Artikel löschen" + +#~ msgid "Set starred" +#~ msgstr "Markierung setzen" + +#~ msgid "Assign tags" +#~ msgstr "Tags zuweisen" + +#~ msgid "Modify score" +#~ msgstr "Bewertung ändern" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Standard Intervall zwischen Feed-Aktualisierungen" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Die Datumssyntax scheint korrekt zu sein:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Die Datumssyntax ist falsch." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Neu" diff --git a/locale/es_ES/LC_MESSAGES/messages.mo b/locale/es_ES/LC_MESSAGES/messages.mo index 01b092907..9a936d2e6 100644 Binary files a/locale/es_ES/LC_MESSAGES/messages.mo and b/locale/es_ES/LC_MESSAGES/messages.mo differ diff --git a/locale/es_ES/LC_MESSAGES/messages.po b/locale/es_ES/LC_MESSAGES/messages.po index 1321b2a8f..eb9ba2b9a 100644 --- a/locale/es_ES/LC_MESSAGES/messages.po +++ b/locale/es_ES/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2012-10-25 00:12+0100\n" "Last-Translator: DavidM \n" "Language-Team: Español \n" @@ -247,8 +247,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "La prueba de escape SQL ha fallado. Por favor, revise la configuración de su base de datos y PHP." #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -258,10 +258,10 @@ msgstr "La prueba de escape SQL ha fallado. Por favor, revise la configuración #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -277,84 +277,83 @@ msgstr "La prueba de escape SQL ha fallado. Por favor, revise la configuración #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Cargando. Por favor, espere..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Colapsar la lista de fuentes" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Mostrar artículos" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptable" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Todos" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Favoritos" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publicados" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Sin leer" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Sin leer" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorar la puntuación" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Ordenar artículos" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Por defecto" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Marcar fuente como leída" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -363,112 +362,112 @@ msgstr "Marcar fuente como leída" msgid "Mark as read" msgstr "Marcar como leído" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Todos" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "¡Nueva versión de Tiny Tiny RSS disponible!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Acciones..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Preferencias" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Buscar..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Acciones de la fuente:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Suscribirse a una fuente..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Editar esta fuente..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Reiniciar la puntuación" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Cancelar la suscripción" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Todas las fuentes:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Ocultar/Mostrar fuentes leídas" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Otras acciones:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Modo resumen..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Nube de etiquetas..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Cambiar a modo de reordenación de categorías" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Seleccionar por etiquetas..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Crear marcador..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Crear filtro..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Ayuda para atajos de teclado" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -477,8 +476,8 @@ msgstr "Cerrar sesión" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Preferencias" @@ -503,8 +502,8 @@ msgid "Filters" msgstr "Filtros" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -575,10 +574,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "La base de datos de Tiny Tiny RSS está actualizada." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -595,606 +594,357 @@ msgstr[1] "%d artículos archivados" msgid "No feeds found." msgstr "No se han encontrado fuentes." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Especial" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Todas las fuentes" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Favoritos" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publicados" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Recientes" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Artículos archivados" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Leídos recientemente" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navegación" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Fuente generada" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Abrir artículo original" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Abrir artículo original" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Mostrar el diálogo de búsqueda" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Todos" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Alternar favoritos" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Alternar publicados" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Alternar no leídos" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Editar etiquetas" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Descartar artículos seleccionados" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Publicar artículo" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Abrir el artículo en una nueva pestaña o ventana" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Marcar artículos posteriores como leídos" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Marcar artículos anteriores como leídos" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Hecho." -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Seleccionar el artículo que esté bajo el cursor del ratón" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Enviar artículo por correo" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Cerrar artículo" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Cambiar a modo de reordenación de categorías" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Invertir selección de artículos" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Seleccionar todos los artículos" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Seleccionar artículos sin leer" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Marcar como favorito" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Seleccionar artículos publicados" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Invertir selección de artículos" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Deseleccionar todos los artículos" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Fuente" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Actualizar la fuente activa" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Ocultar/Mostrar fuentes leídas" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Suscribirse a una fuente" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Editar fuente" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Invertir orden de titulares" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Se han actualizado todas las fuentes." -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Marcar todas las fuentes como leídas" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Plegar la categoría" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Cambiar a modo de reordenación de categorías" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Cambiar a modo de reordenación de categorías" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Ir a..." -#: include/functions.php:1924 +#: include/functions.php:1925 #, fuzzy msgid "Fresh" msgstr "Refrescar" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Nube de etiquetas" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Otro:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Crear marcador" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Crear filtro" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Colapsar la barra lateral" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Mostrar el diálogo de búsqueda" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Resultados de búsqueda: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Clic para reproducir" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Reproducir" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "sin etiquetas" -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Editar las etiquetas de este artículo" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Original de:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "URL de la fuente" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Cerrar esta ventana" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(editar nota)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "tipo desconocido" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Adjuntos" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Título" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Título o contenido" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Enlace" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Contenido" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Fecha del artículo" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Borrar artículo" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Marcar como favorito" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publicar artículo" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Asignar etiquetas" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Asignar marcador" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Modificar puntuación" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "General" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interfaz" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avanzado" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Esta opción es útil cuando está leyendo varios agregadores de tipo \"planeta\" con bases de usuarios parcialmente coincidentes. Cuando está desactivado, fuerza a que los mismos artículos que hayan sido publicados por varias fuentes aparezcan una sola vez." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Muestra una lista expandida de los artículos de la fuente, en lugar de mostrar por separado los títulos y contenidos de los artículos." - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Abrir automáticamente la siguiente fuente con artículos sin leer, después de marcar una fuente como leída" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Esta opción permite el envío diario de un recopilatorio de los titulares nuevos o sin leer a la dirección de correo que haya indicado en la configuración" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Esta opción permite que al desplazarse por la lista de artículos, los artículos se vayan marcando como leídos automáticamente." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Quitar etiquetas HTML, salvo las más comunes, cuando se esté leyendo los artículos." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Cuando esté activada la función de autodetectar etiquetas en los artículos, no se incluirán estas etiquetas (lista de etiquetas separadas por comas)" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Cuando esta opción está habilitada, los titulares en fuentes especiales y marcadores son agrupados por fuentes" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Personalizar la hoja de estilo CSS" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Usar fecha especificada en la fuente para ordenar los titulares en lugar de la fecha local de importación." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Clic para registrar el certificado de su cliente SSL con tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Usa la zona horaria UTC" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Purgar artículos después de este número de días (0 - desactivado)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Intervalo por defecto entre actualizaciones de las fuentes" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Número de artículos que se muestran simultáneamente" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Permitir artículos duplicados" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Habilitar categorías de fuentes" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Mostrar una vista previa del contenido en la lista de titulares" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Formato de fecha corto" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Formato de fecha largo" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Despliegue combinado de la fuente" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Ocultar las fuentes que no tengan mensajes sin leer" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Al ponerse al corriente, mostrar la siguiente fuente" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Ordenar las fuentes por número de artículos sin leer" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Invertir el orden de los titulares (los más antiguos primero)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Activar los correos recopilatorios" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Confirmar al marcar una fuente como leída" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Marcar como leídos los artículos automáticamente" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Quitar las etiquetas inseguras de los artículos" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Etiquetas añadidas a la lista negra" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Antigüedad máxima de los artículos recientes (en horas)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Marcar como leídos los artículos de los correos de recopilación" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Expandir automáticamente los artículos en el modo combinado" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Purgar artículos sin leer" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Mostrar las fuentes especiales cuando se oculten las fuentes leídas" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Agrupar los titulares en fuentes virtuales" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "No mostrar imágenes en los artículos" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Habilitar API externa" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Zona horaria del usuario" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Personalizar hoja de estilo" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Editar las etiquetas de este artículo" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Ordenar titulares por fecha de la fuente" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Original de:" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Iniciar sesión con certificado SSL" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "URL de la fuente" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Intentar enviar resúmenes alrededor de la hora seleccionada" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Cerrar esta ventana" -#: include/localized_schema.php:65 -#, fuzzy -msgid "Assign articles to labels automatically" -msgstr "Marcar los artículos como leídos automáticamente" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(editar nota)" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Seleccionar plantilla" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "tipo desconocido" + +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Adjuntos" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1226,7 +976,7 @@ msgstr "Perfil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Perfil por defecto" @@ -1244,7 +994,7 @@ msgstr "" msgid "Log in" msgstr "Iniciar sesión" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "No se pudo validar la sesión (IP incorrecta)" @@ -1260,7 +1010,7 @@ msgstr "Etiquetas para este artículo (separadas por comas):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1281,7 +1031,7 @@ msgstr "Guardar" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1514,7 +1264,7 @@ msgstr "Seleccionar:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1534,7 +1284,7 @@ msgstr "Invertir" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1619,7 +1369,8 @@ msgid "No starred articles found to display." msgstr "No se han encontrado artículos favoritos." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "No se han encontrado artículos que mostrar. Si lo desea, puede asignar artículos a los marcadores manualmente (ver arriba el menú Acciones) o usar un filtro." #: classes/feeds.php:744 @@ -1674,7 +1425,7 @@ msgid "Login" msgstr "Iniciar sesión" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1894,7 +1645,7 @@ msgstr "[tt-rss] Notificación de cambio de contraseña" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2073,7 +1824,7 @@ msgid "Save rule" msgstr "Guardar" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Añadir regla" @@ -2091,7 +1842,7 @@ msgid "Save action" msgstr "Acciones del panel" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Añadir acción" @@ -2100,242 +1851,449 @@ msgstr "Añadir acción" msgid "[No caption]" msgstr "Opciones" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "General" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfaz" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avanzado" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permitir artículos duplicados" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "Marcar los artículos como leídos automáticamente" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Etiquetas añadidas a la lista negra" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Cuando esté activada la función de autodetectar etiquetas en los artículos, no se incluirán estas etiquetas (lista de etiquetas separadas por comas)" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Marcar como leídos los artículos automáticamente" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Esta opción permite que al desplazarse por la lista de artículos, los artículos se vayan marcando como leídos automáticamente." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Expandir automáticamente los artículos en el modo combinado" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Despliegue combinado de la fuente" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Muestra una lista expandida de los artículos de la fuente, en lugar de mostrar por separado los títulos y contenidos de los artículos." + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Confirmar al marcar una fuente como leída" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Número de artículos que se muestran simultáneamente" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Intervalo por defecto" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Marcar como leídos los artículos de los correos de recopilación" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Activar los correos recopilatorios" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Esta opción permite el envío diario de un recopilatorio de los titulares nuevos o sin leer a la dirección de correo que haya indicado en la configuración" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Intentar enviar resúmenes alrededor de la hora seleccionada" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Usa la zona horaria UTC" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Habilitar API externa" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Habilitar categorías de fuentes" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Ordenar las fuentes por número de artículos sin leer" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Antigüedad máxima de los artículos recientes (en horas)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Ocultar las fuentes que no tengan mensajes sin leer" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Mostrar las fuentes especiales cuando se oculten las fuentes leídas" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Formato de fecha largo" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Al ponerse al corriente, mostrar la siguiente fuente" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Abrir automáticamente la siguiente fuente con artículos sin leer, después de marcar una fuente como leída" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Purgar artículos después de este número de días (0 - desactivado)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Purgar artículos sin leer" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Invertir el orden de los titulares (los más antiguos primero)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Formato de fecha corto" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Mostrar una vista previa del contenido en la lista de titulares" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Ordenar titulares por fecha de la fuente" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Usar fecha especificada en la fuente para ordenar los titulares en lugar de la fecha local de importación." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Iniciar sesión con certificado SSL" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Clic para registrar el certificado de su cliente SSL con tt-rss" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "No mostrar imágenes en los artículos" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Quitar las etiquetas inseguras de los artículos" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Quitar etiquetas HTML, salvo las más comunes, cuando se esté leyendo los artículos." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Seleccionar plantilla" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Personalizar hoja de estilo" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalizar la hoja de estilo CSS" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Zona horaria del usuario" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Agrupar los titulares en fuentes virtuales" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Cuando esta opción está habilitada, los titulares en fuentes especiales y marcadores son agrupados por fuentes" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "La antigua contraseña no puede dejarse en blanco." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "La nueva contraseña no puede dejarse en blanco." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Las contraseñas introducidas no coinciden." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "La configuración ha sido guardada." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Opción desconocida: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 #, fuzzy msgid "Your personal data has been saved." msgstr "Se ha programado la actualización de la categoría." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticación" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Datos personales" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "Correo electrónico" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Nivel de acceso" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 #, fuzzy msgid "Save data" msgstr "Guardar" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 #, fuzzy msgid "Your password is at default value, please change it." msgstr "Su contraseña tiene el valor por defecto. Por favor, modifíquela." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Antigua contraseña" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nueva contraseña" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Confirme la nueva contraseña" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Cambiar contraseña" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "Nombre de usuario o contraseña incorrecta" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(desactivado)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Habilitado" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 #, fuzzy msgid "Customize" msgstr "Personalizar hoja de estilo" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 #, fuzzy msgid "Register" msgstr "Registrado" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Guardar la configuración" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 #, fuzzy msgid "Manage profiles" msgstr "Crear perfil" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Opciones por defecto" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "Selección" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Limpiar los datos de la fuente" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Habilitar los iconos de la fuente" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "Nombre de usuario o contraseña incorrecta" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Aquí puede cambiar los colores, fuentes y diseño de su tema actual mediante código CSS. Puede utilizar este archivo como referencia." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Crear perfil" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(activo)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Borrar los perfiles seleccionados" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Activar perfil" @@ -2436,26 +2394,26 @@ msgstr "Purgando la fuente seleccionada..." msgid "Batch subscribe" msgstr "Suscripción en lote" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "Volver a categorizar" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "Añadiendo categoría de fuentes..." -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "Editar categorías" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "¿Borrar fuentes seleccionadas?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Editar categorías" + #: classes/pref/feeds.php:1309 #, fuzzy msgid "More actions..." @@ -2758,70 +2716,70 @@ msgstr "Volver a Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "Fecha del artículo" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "Exportar OPML" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importar" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Fallo de la importación: la versión del esquema es incorrecta." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Fallo de la importación: no se reconoce el formato del documento." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Editar nota del artículo" msgstr[1] "Editar nota del artículo" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "Ya importado." msgstr[1] "Ya importado." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "No se ha seleccionado ninguna fuente." msgstr[1] "No se ha seleccionado ninguna fuente." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "No se pudo cargar documento XML." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Preparar datos" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, fuzzy, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "No se puedo cargar el archivo. Puede ser necesario ajustar el parámetro upload_max_filesize en PHP.ini (valor actual = %s)" @@ -3016,147 +2974,139 @@ msgstr "¿Está seguro de que quiere reportar esta excepción a tt-rss.org? El i msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Sintaxis de fecha parece correcta:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Sintaxis de fecha es incorrecta." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "¿Borrar el icono de la fuente?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Eliminando la fuente..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Fuente no encontrada." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Seleccione un archivo de imagen para cargar." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "¿Cargar un nuevo icono para esta fuente?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Cargando. Por favor, espere..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Por favor, introduzca el nombre del marcador:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "No se puede crear el marcador: falta nombre." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Suscribirse a fuente" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Se ha suscrito a %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "La URL especificada parece ser inválida." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "La URL especificada no parece contener fuentes." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "No se pudo cargar la URL especificada: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Ya está suscrito a esta fuente." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Editar regla" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Editar acción" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Crear filtro" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "¿Restaurar suscripción? Tiny Tiny RSS volverá a intentar suscribirse al hub de notificaciones en la siguiente actualización de fuentes." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Suscribirse a una fuente..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "¿Cancelar la suscripción a %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Eliminando la fuente..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Introduzca el nombre de la categoría:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "¿Generar nueva dirección de sindicación para esta fuente?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Intentando cambiar la dirección..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "No puede editar esta clase de fuente." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Editar fuente" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Guardando fuente..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Más fuentes" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3167,26 +3117,26 @@ msgstr "Más fuentes" msgid "No feeds are selected." msgstr "No se han seleccionado fuentes." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "¿Eliminar las fuentes seleccionadas del archivo? Las fuentes con artículos archivados no serán eliminadas." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Fuentes con errores de actualización" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "¿Borrar fuentes seleccionadas?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Eliminando los filtros seleccionados..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Ayuda" @@ -3545,142 +3495,152 @@ msgstr "Reiniciando la puntuación de los artículos..." msgid "New version available!" msgstr "¡Nueva versión disponible!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Cancelar" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Quitar el artículo de los favoritos" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Marcar el artículo como favorito" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Despublicar artículo" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publicar artículo" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "No se han seleccionado artículos." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "¿Borrar %d artículos seleccionados en %s?" msgstr[1] "¿Borrar %d artículos seleccionados en %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "¿Borrar %d artículos seleccionados?" msgstr[1] "¿Borrar %d artículos seleccionados?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "¿Archivar %d artículos seleccionados en %s?" msgstr[1] "¿Archivar %d artículos seleccionados en %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "¿Mover %d artículos archivados a su fuente original?" msgstr[1] "¿Mover %d artículos archivados a su fuente original?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "¿Marcar %d artículos seleccionados de %s como leídos?" msgstr[1] "¿Marcar %d artículos seleccionados de %s como leídos?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Editar las etiquetas del artículo" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Guardando las etiquetas del artículo..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "No se ha seleccionado ningún artículo." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "No se han encontrado artículos que marcar" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "¿Marcar %d artículo(s) como leído(s)?" msgstr[1] "¿Marcar %d artículo(s) como leído(s)?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Abrir artículo original" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Mostrar artículos" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Alternar favoritos" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Asignar marcador" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Borrar marcador" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Reproduciendo..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Clic para pausar" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Por favor, introduzca una nota para este artículo:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Por favor, introduzca una nota para este artículo:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Todos" @@ -3791,6 +3751,45 @@ msgstr "Compartir artículo mediante URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "La actualización en vivo es una característica experimental. Haga una copia de seguridad de la carpeta de tt-rss antes de continuar. Escriba 'yes' para continuar." +#~ msgid "Title" +#~ msgstr "Título" + +#~ msgid "Title or Content" +#~ msgstr "Título o contenido" + +#~ msgid "Link" +#~ msgstr "Enlace" + +#~ msgid "Content" +#~ msgstr "Contenido" + +#~ msgid "Article Date" +#~ msgstr "Fecha del artículo" + +#~ msgid "Delete article" +#~ msgstr "Borrar artículo" + +#~ msgid "Set starred" +#~ msgstr "Marcar como favorito" + +#~ msgid "Assign tags" +#~ msgstr "Asignar etiquetas" + +#~ msgid "Modify score" +#~ msgstr "Modificar puntuación" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Esta opción es útil cuando está leyendo varios agregadores de tipo \"planeta\" con bases de usuarios parcialmente coincidentes. Cuando está desactivado, fuerza a que los mismos artículos que hayan sido publicados por varias fuentes aparezcan una sola vez." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervalo por defecto entre actualizaciones de las fuentes" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Sintaxis de fecha parece correcta:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Sintaxis de fecha es incorrecta." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Refrescar" diff --git a/locale/fi_FI/LC_MESSAGES/messages.mo b/locale/fi_FI/LC_MESSAGES/messages.mo index 7809ba6c9..ffbe2aafe 100644 Binary files a/locale/fi_FI/LC_MESSAGES/messages.mo and b/locale/fi_FI/LC_MESSAGES/messages.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/messages.po b/locale/fi_FI/LC_MESSAGES/messages.po index 85d0f8ebb..f15ff82a3 100644 --- a/locale/fi_FI/LC_MESSAGES/messages.po +++ b/locale/fi_FI/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.7.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-04-01 14:49+0200\n" "Last-Translator: Arto Tolonen \n" "Language-Team: \n" @@ -247,8 +247,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -258,10 +258,10 @@ msgstr "" #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -277,83 +277,82 @@ msgstr "" #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Ladataan, odota..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Sulje syötelista" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Näytä artikkelit" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Mukautuva" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Kaikki artikkelit" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Tähti" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Julkinen" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Lukematon" -#: index.php:179 +#: index.php:177 msgid "Unread First" msgstr "Lukemattomat ensin" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "Huomattavat" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ohita pisteytys" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Järjestä artikkelit" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Oletus" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "Uusin ensin" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "Vanhin ensin" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Merkitse syöte luetuksi" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -362,110 +361,110 @@ msgstr "Merkitse syöte luetuksi" msgid "Mark as read" msgstr "Merkitse luetuiksi" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Kaikki artikkelit" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "1pv vanhemmat" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "1vk vanhemmat" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "2vk vanhemmat" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Serveriin ei saada yhteyttä" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Uusi versio Tiny Tiny RSS:stä saatavilla!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Toiminnot..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Asetukset" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Etsi..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Syötetoiminnot:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Tilaa syöte..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Muokkaa tätä syötettä" -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Uudelleenpisteytä syöte" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Peruuta syötetilaus" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Kaikki syötteet" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Piilota/näytä luetut syötteet" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Muut toiminnot" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Vaihda tiivistelmään..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Näytä tagipilvi" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Vaihda näkymä" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Valitse tageilla" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Luo tunniste..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Luo suodatin..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Näytä pikanäppäimet" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -474,8 +473,8 @@ msgstr "Kirjaudu ulos" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Asetukset" @@ -500,8 +499,8 @@ msgid "Filters" msgstr "Suodattimet" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -571,10 +570,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "" #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -591,574 +590,328 @@ msgstr[1] "" msgid "No feeds found." msgstr "Syötteitä ei löytynyt." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Erikoiset" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Kaikki syötteet" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Tähdellä merkityt syötteet" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Julkiset artikkelit" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Tuoreet artikkelit" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Arkistoidut artikkelit" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Viimeksi luetut" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Valikko" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Avaa seuraava syöte" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Avaa edellinen syöte" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Avaa seuraava artikkeli" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Avaa edellinen artikkeli" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Avaa seuraava artikkeli (älä vieritä pitkiä artikkeleita)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Avaa edellinen artikkeli (älä vieritä pitkiä artikkeleita)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Etsi..." -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artikkeli" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Lisää/Poista tähti" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Vaihda julkinen-tilaa" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Vaihda luettu/lukematon" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Muokkaa tageja" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "Piilota valittu" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "Piilota luettu" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Avaa uudessa ikkunassa" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Merkitse alla olevat luetuiksi" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Merkitse yllä olevat luetuiksi" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Vieritä alas" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Vieritä ylös" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Valitse kursorin alla oleva artikkeli" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Lähetä artikkeli sähköpostilla" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Piilota/näytä artikkeli" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Vaihda alkuperäinen liitetty" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Artikkelin valinta" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Valitse kaikki artikkelit" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Valitse lukematon" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Valitse tähdellä merkityt" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Valitse julkaistu" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Vaihda valittujen tila" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Poista valinnat" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Syöte" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Päivitä tämänhetkinen syöte" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Piilota/näytä luetut syötteet" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Tilaa syöte" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Muokkaa syötettä" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Käännä otsikot" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Syötteen päivitys (Debug)" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Merkitse kaikki syötteet luetuiksi" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Piilota/näytä tämänhetkinen kansio" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Vaihda yhdistety tila" -#: include/functions.php:1921 +#: include/functions.php:1922 msgid "Toggle auto expand in combined mode" msgstr "Vaihda automaattilaajennus tiivistemuodossa" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Mene" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Päivitä" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tagipilvi" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Muu" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Luo tunniste" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Luo suodatin" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Piilota/näytä sivupalkki" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Näytä ohjeikkuna" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Hakutulokset: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "" -#: include/functions.php:3027 -msgid " - " -msgstr " - " - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "ei tageja" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Muokkaa tämän artikkelin tageja" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Syötteen URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Sulje" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "tuntematon tyyppi" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Litteet" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Otsikko" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Otsikko tai sisältö" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Linkki" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Sisältö" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Artikkelin pvm" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Poista artikkeli" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Merkitse tähdellä" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Julkista artikkeli" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Liitä tageja" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Liitä tunniste" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Muokkaa pisteytystä" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Yleinen" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Lisäasetukset" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "" - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Näytä artikkelilista laajennettuna, erillisten otsikko- ja artikkelinäkymien sijasta" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Avaa automaattisesti seuraava lukemattomia artikkeleita sisältävä syöte kun viimeinen on merkitty luetuksi" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Sähköpostiisi lähetetään päivittäin otsikot uusista (ja lukemattomista) artikkeleista" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Artikkelit merkitään automaattisesti luetuiksi kun artikkelilistaa vieritetään." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Poista kaikki erikoiset HTML tagit syötteistä." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Näitä tageja ei liitetä automaattisesti (lista pilkulla erotettuna)" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Otsikot Erikoissyötteissä ja Tunnisteissa ryhmitellään syötteittäin" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Muokkaa lukijaa mieleiseksesi CSS-tyylisivuilla" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Klikkaa rekisteröidäksesi SSL-sertifikaatti tt-rss:ään " - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Käyttää UTC-aikavyöhykettä" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "Valitse CSS-teema" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Siivoa artikkelit näin monen päivän päästä (0 - poissa käytöstä)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Oletusaikaväli syötepäivityksille" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Kerralla näytettävien artikkeleiden määrä" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Salli tuplapostaukset" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Käytä syötekansioita" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Näytä sisällön esikatselu otsikkolistassa" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Lyhyt päiväysformaatti" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Pitkä päiväysformaatti" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Yhdistetty syötenäkymä" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "Piilota syötteet joissa ei ole lukemattomia artikkeleita" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Näytä automaattisesti seuraava syöte" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Järjestä syötteet lukemattomien artikkelimäärien mukaan" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Käännä otsikkojärjestys (vanhimmat ensin)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Aktivoi email-tiivistelmän lähetys" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Varmista syötteen merkitseminen luetuksi" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Merkitse syötteet automaattisesti luetuksi" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Poista vaaralliset tagit artikkeleista" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Estetyt tagit" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maksimi-ikä tuoreille artikkeleille (tunneissa)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Merkitse email-tiivestelmässä lähetetyt artikkelit luetuksi" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Laajenna artikkelit automaattisesti yhdistelmänäkymässä" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Siivoa lukemattomat artikkelit" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Näytä erikoissyötteet kun luetut artikkelit piilotetaan" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Ryhmittele otsikot virtuaalisyötteiksi" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Älä liitä kuvia artikkeleihin" +#: include/functions.php:3028 +msgid " - " +msgstr " - " -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Aktivoi ulkoinen API" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "ei tageja" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Käyttäjän aikavyöhyke" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Muokkaa tämän artikkelin tageja" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Muokkaa CSS-tyylisivua" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Järjestä otsikot syötteen päivämäärän mukaan" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Syötteen URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Kirjaudu SSL-sertificaatilla" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Sulje" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Lähetä kooste määriteltynä aikana (noin aika)" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Liitä tunnisteet artikkeleihin automaattisesti" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "tuntematon tyyppi" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Valitse teema" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Litteet" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1189,7 +942,7 @@ msgstr "Profiili:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Oletusprofiili" @@ -1207,7 +960,7 @@ msgstr "Muista kirjautumiseni" msgid "Log in" msgstr "Kirjaudu sisään" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "" @@ -1223,7 +976,7 @@ msgstr "Tämän syötteen tagit (pilkulla erotettuna)" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1244,7 +997,7 @@ msgstr "Talleta" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1467,7 +1220,7 @@ msgstr "Valitse" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1487,7 +1240,7 @@ msgstr "Käännä" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1569,7 +1322,8 @@ msgid "No starred articles found to display." msgstr "Tähdellä merkittyjä artikkeleita ei ole näytettäväksi" #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Ei näytettäviä artikkeleita. Voit merkitä artikkeleita tunnisteilla käsin (Toiminnot-valikko yläreunassa) tai käytää suodattimia." #: classes/feeds.php:744 @@ -1623,7 +1377,7 @@ msgid "Login" msgstr "Käyttäjätunnus" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1843,7 +1597,7 @@ msgstr "" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2010,7 +1764,7 @@ msgid "Save rule" msgstr "Talleta sääntö" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Lisää sääntö" @@ -2027,7 +1781,7 @@ msgid "Save action" msgstr "Talleta toiminto" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Lisää toiminto" @@ -2036,228 +1790,432 @@ msgstr "Lisää toiminto" msgid "[No caption]" msgstr "Nimi" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Yleinen" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Lisäasetukset" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Salli tuplapostaukset" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Liitä tunnisteet artikkeleihin automaattisesti" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Estetyt tagit" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Näitä tageja ei liitetä automaattisesti (lista pilkulla erotettuna)" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Merkitse syötteet automaattisesti luetuksi" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Artikkelit merkitään automaattisesti luetuiksi kun artikkelilistaa vieritetään." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Laajenna artikkelit automaattisesti yhdistelmänäkymässä" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Yhdistetty syötenäkymä" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Näytä artikkelilista laajennettuna, erillisten otsikko- ja artikkelinäkymien sijasta" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Varmista syötteen merkitseminen luetuksi" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Kerralla näytettävien artikkeleiden määrä" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Oletusaikaväli" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Merkitse email-tiivestelmässä lähetetyt artikkelit luetuksi" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Aktivoi email-tiivistelmän lähetys" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Sähköpostiisi lähetetään päivittäin otsikot uusista (ja lukemattomista) artikkeleista" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Lähetä kooste määriteltynä aikana (noin aika)" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Käyttää UTC-aikavyöhykettä" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Aktivoi ulkoinen API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Käytä syötekansioita" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Järjestä syötteet lukemattomien artikkelimäärien mukaan" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maksimi-ikä tuoreille artikkeleille (tunneissa)" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "Piilota syötteet joissa ei ole lukemattomia artikkeleita" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Näytä erikoissyötteet kun luetut artikkelit piilotetaan" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Pitkä päiväysformaatti" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Näytä automaattisesti seuraava syöte" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Avaa automaattisesti seuraava lukemattomia artikkeleita sisältävä syöte kun viimeinen on merkitty luetuksi" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Siivoa artikkelit näin monen päivän päästä (0 - poissa käytöstä)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Siivoa lukemattomat artikkelit" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Käännä otsikkojärjestys (vanhimmat ensin)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Lyhyt päiväysformaatti" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Näytä sisällön esikatselu otsikkolistassa" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Järjestä otsikot syötteen päivämäärän mukaan" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Kirjaudu SSL-sertificaatilla" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klikkaa rekisteröidäksesi SSL-sertifikaatti tt-rss:ään " + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Älä liitä kuvia artikkeleihin" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Poista vaaralliset tagit artikkeleista" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Poista kaikki erikoiset HTML tagit syötteistä." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Valitse teema" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "Valitse CSS-teema" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Muokkaa CSS-tyylisivua" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Muokkaa lukijaa mieleiseksesi CSS-tyylisivuilla" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Käyttäjän aikavyöhyke" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Ryhmittele otsikot virtuaalisyötteiksi" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Otsikot Erikoissyötteissä ja Tunnisteissa ryhmitellään syötteittäin" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Vanha salasana ei voi olla tyhjä" -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Uusi salasana ei voi olla tyhjä" -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Syötetyt salasanat eivät täsmää" -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Konfiguraatio tallennettu." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Tuntematon valinta: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Sinun tiedot on tallennettu" -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Omat tiedot / Tunnistautuminen" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Omat tiedot" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Koko nimi" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "Email" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Käyttäjäoikeudet" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Talleta tiedot" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Käytät vieläkin oletussalasanaa, kannattaa vaihtaa." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "Salasanan vaihtaminen poistaa kertakäyttösalasanatunnistautumisen käytöstä." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Vanha salasana" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Uusi salasana" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Vahvista salasana" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Vaihda salasana" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Syötä salasanasi" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Poista OTP käytöstä" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Aktivoi kertakäyttösalasana" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Muokkaa" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Rekisteröi" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Tyhjennä" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Serverin aika: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Talleta asetukset" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Hallitse profiileita" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Palauta oletusarvot" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Lisäosat" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Päivitä sivu aktivoidaksesi lisäosiin tehdyt muutokset." -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Järjetelmän lisäosat" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Lisäosa" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Kuvaus" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Versio" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Tekijä" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "lisätietoja" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Tyhjennä tiedot" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Käyttäjän lisäosat" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Aktivoi valitut lisäosat" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Väärä salasana" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Luo profiili" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktiivinen)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Poista valitut profiilit" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Aktivoi profiili" @@ -2351,22 +2309,22 @@ msgstr "Muokkaa valittuja syötteitä" msgid "Batch subscribe" msgstr "Tilaa useita" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kansiot" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Lisää kansio" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Piilota/näytä tyhjät kansiot" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Poista valittu" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Piilota/näytä tyhjät kansiot" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Lisää toimintoja" @@ -2647,68 +2605,68 @@ msgstr "" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Tuo ja vie" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Artikkeliarkisto" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Vie tietoni" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Tuo" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Valmis: " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2887,142 +2845,134 @@ msgstr "" msgid "close" msgstr "sulje" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Päiväysformaatti on oikein:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Päiväysformaatti on väärin." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Lataus valmis." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Poista suosikkikuvake?" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "Poistetaan suosikkikuvake" -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "Suosikkikuvake poistettu." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Valitse kuvatiedosto." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Lataa uusi suosikkikuvake tälle syötteelle?" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Ladataan, odota..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Syötä tunnisteen nimi" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Tunnistetta ei luotu: Tyhjä nimi." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Tilaa syöte" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Syöte tilattu: %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Syöttämäsi URL ei ole oikein" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Syöttämäsi URL ei sisällä syötteitä" -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "URL:n lataus epäonnistui: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Olet jo tilannut tämän syötteen" -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Muokkaa sääntöä" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Muokkaa toimintoa" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Luo suodatin" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "" -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Lopeta tämän syötteen tilaus: %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Poistetaan syötteet..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Syötä kansion nimi:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Vaihdetaan osoitetta..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Et voi muokata tämäntyyppistä syötettä." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Muokkaa syötettä" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Talletetaan tiedot..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Lisää syötteitä" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3033,25 +2983,25 @@ msgstr "Lisää syötteitä" msgid "No feeds are selected." msgstr "Yhtään syötettä ei ole valittuna" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Virheelliset syötteet" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Poistetaanko valitut syötteet?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Poistetaan valitut syötteet..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Apua" @@ -3397,131 +3347,141 @@ msgstr "Uudelleenpisteytetään artikkelit..." msgid "New version available!" msgstr "Uusi versio saatavilla!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Peruuta haku" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Poista tähti artikkelista" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Merkitse artikkeli tähdellä" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Aseta artikkeli yksityiseksi" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Julkista artikkeli" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Yhtään artikkelia ei ole valittuna" -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Arkistoi %d valittu artikkeli syötteestä %s?" msgstr[1] "Arkistoi %d valittua artikkelia syötteestä %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Siirretäänkö %d arkistoitu artikkeli takaisin?" msgstr[1] "Siirretäänkö %d arkistoitua artikkelia takaisin?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Muokkaa artikkelin tageja" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Talletetaan artikkelin tagit..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Yhtään artikkelia ei ole valittuna." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Artikkeleita ei ole merkittäväksi" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Avaa alkuperäinen artikkeli" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Näytä artikkelin URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 msgid "Toggle marked" msgstr "Käännä valitun merkintä" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Liitä tunniste" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Poista tunniste" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "" -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Anna uusi pistemäärä valituille artikkeleille:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Anna uusi pistemäärä tälle artikkelille:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Artikkelin URL:" @@ -3625,6 +3585,42 @@ msgstr "" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Otsikko" + +#~ msgid "Title or Content" +#~ msgstr "Otsikko tai sisältö" + +#~ msgid "Link" +#~ msgstr "Linkki" + +#~ msgid "Content" +#~ msgstr "Sisältö" + +#~ msgid "Article Date" +#~ msgstr "Artikkelin pvm" + +#~ msgid "Delete article" +#~ msgstr "Poista artikkeli" + +#~ msgid "Set starred" +#~ msgstr "Merkitse tähdellä" + +#~ msgid "Assign tags" +#~ msgstr "Liitä tageja" + +#~ msgid "Modify score" +#~ msgstr "Muokkaa pisteytystä" + +#~ msgid "Default interval between feed updates" +#~ msgstr "Oletusaikaväli syötepäivityksille" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Päiväysformaatti on oikein:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Päiväysformaatti on väärin." + #~ msgid "Refresh" #~ msgstr "Päivitä" diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index bc426c41c..b89c0617e 100644 Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index c9a497180..95db79a8e 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-04-01 10:18+0100\n" "Last-Translator: Raphael Rochet \n" "Language-Team: French\n" @@ -251,8 +251,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Le test d'échappement SQL a échoué, veuillez vérifier votre configuration de base de données et de PHP" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -262,10 +262,10 @@ msgstr "Le test d'échappement SQL a échoué, veuillez vérifier votre configur #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -281,83 +281,82 @@ msgstr "Le test d'échappement SQL a échoué, veuillez vérifier votre configur #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Chargement en cours, veuillez patienter..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Contracter la liste des flux" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Afficher les articles" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptatif" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Tous les articles" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Remarquables" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publiés" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Non lus" -#: index.php:179 +#: index.php:177 msgid "Unread First" msgstr "Non lus en premier" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "Avec annotation" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorer le score" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Classer les articles" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Utiliser la valeur par défaut" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "Les plus récents en premier" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "Les plus anciens en premier" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Marquer le flux comme lu" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -366,110 +365,110 @@ msgstr "Marquer le flux comme lu" msgid "Mark as read" msgstr "Marquer comme lu" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Tous les articles" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "Âgé d'au moins un jour" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "Âgé d'au moins une semaine" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "Âgé d'au moins deux semaines" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Un problème de communication avec le serveur est survenu." -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Une nouvelle version de Tiny Tiny RSS est disponible !" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Actions..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Configuration..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Rechercher..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Actions sur ce flux :" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "S'abonner au flux..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Modifier ce flux..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Recalculer le score du flux" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Se désabonner" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Tous les flux :" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Masquer/afficher les flux lus" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Autres actions :" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Basculer en mode résumé..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Afficher le nuage de tags..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Basculer le mode écran large" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Sélectionner par tags..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Créer une étiquette..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Créer un filtre..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Aide sur les raccourcis clavier" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -478,8 +477,8 @@ msgstr "Déconnexion" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Configuration" @@ -504,8 +503,8 @@ msgid "Filters" msgstr "Filtres" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -575,10 +574,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Script de mise à jour des données de Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -595,574 +594,328 @@ msgstr[1] "%d articles archivés" msgid "No feeds found." msgstr "Aucun flux trouvé." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Spécial" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Tous les flux" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Articles remarquables" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Articles publiés" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Nouveaux articles" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Articles archivés" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Lus récemment" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigation" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Ouvrir le flux suivant" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Ouvrir le flux précédent" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Ouvrir l'article suivant" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Ouvrir l'article précédent" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Ouvrir l'article suivant (ne pas faire défiler les articles longs)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Ouvrir l'article précédent (ne pas faire défiler les articles longs)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Afficher la fenêtre de recherche" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Article" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Marquer comme (non) remarquable" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Marquer comme (non) publié" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Marquer comme (non) lu" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Modifier les tags" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "Ecarter la sélection" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "Ecarter les articles lus" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Ouvrir dans une nouvelle fenêtre" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Marquer les articles en-dessous comme lus" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Marquer les articles au-dessus comme lus" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Défiler vers le bas" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Défiler vers le haut" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Sélectionner l'article sous le curseur" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Envoyer l'article par mail" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Contracter l'article" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Basculer l'intégration de l'article original" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Sélection d'article" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Sélectionner tous les articles" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Sélectionner les articles non-lus" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Sélectionner les articles remarquables" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Sélectionner les articles publiés" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Inverser la sélection" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Tout désélectionner" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Flux" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Actualiser le flux actif" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Masquer/afficher les flux lus" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "S'abonner au flux" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Modifier le flux" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Inverser l'ordre des en-têtes" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Déboguer les mises à jour" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Marquer tous les flux comme lus" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Étendre/contracter la catégorie" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Basculer le mode combiné" -#: include/functions.php:1921 +#: include/functions.php:1922 msgid "Toggle auto expand in combined mode" msgstr "Basculer le développement automatique en mode combiné" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Aller à" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Nouveaux" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Nuage de tags" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Autre" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Créer une étiquette" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Créer un filtre" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Ouvrir/fermer la barre latérale" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Afficher la fenêtre d'aide" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Résultats de recherche: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Cliquez pour lancer la lecture" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Lecture" -#: include/functions.php:3027 -msgid " - " -msgstr " - " - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "aucun tag" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Modifier les tags pour cet article" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Origine :" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "URL du flux" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Fermer cette fenêtre" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(modifier l'annotation)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "type inconnu" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Fichier attaché" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titre" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titre ou contenu" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Lien" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Contenu" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Date de l'article" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Supprimer l'article" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Marquer comme remarquable" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publier l'article" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Assigner des tags" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Assigner l'étiquette" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Modifier le score" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Général" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interface" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avancé" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Cette option est utile si vous lisez des articles venant d'agrégateurs de type «planet», dans lesquels certains flux se recoupent largement. Lorsque cette option est désactivée, les articles en double sont affichés en un seul exemplaire." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Affiche les articles sous la forme d'une liste étendue, au lieu de deux listes séparées (une pour les en-têtes et une pour le contenu)" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Sauter automatiquement au flux suivant après en marquer un comme lu" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Cette option active l'envoi d'une synthèse quotidienne (digest) des en-têtes nouveaux et non lus à l'adresse électronique donnée" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Cette option permet de marquer automatiquement les articles comme lus lorsque vous naviguez dans la liste d'articles." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Élimine toutes les balises HTML sauf les plus courantes lors de la lecture des articles." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Lors de l'auto-détection des tags dans les articles, ces tags ne seront pas utilisés (séparés par des virgules)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Avec cette option activée, les entêtes dans les flux spéciaux et par étiquettes sont regroupés par flux" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Personnaliser les feuilles de style CSS" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Utiliser les dates spécifiées dans le flux pour trier les en-têtes au lieu des dates importées localement." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Cliquez pour enregistrer votre certificat client SSL dans tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Utilise l'heure GMT" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "Sélectionnez un des thèmes CSS disponibles" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Purger les articles plus vieux que le nombre de jours donné (0 pour ne jamais purger)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Intervalle par défaut entre les mises à jour de flux" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Nombre d'articles à afficher" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Permettre les articles en double" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Utiliser les catégories de flux" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Donner un aperçu du contenu dans la liste des en-têtes" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Format de date court" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Format de date long" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Affichage combiné des flux" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "Masquer les flux sans article non lu" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Sauter automatiquement au flux suivant" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Trier les flux par nombre d'articles non lus" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Inverser l'order des en-têtes (les plus anciens en premier)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Activer la synthèse quotidienne par courrier électronique" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Demander confirmation pour marquer un flux comme lu" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Automatiquement marquer les articles comme lus" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Éliminer les tags non sûrs des articles" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Tags exclus" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Ancienneté maximale pour un nouvel article (en heures)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Marquer tous les articles du compte-rendu par email comme lus" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Développer automatiquement les articles en affichage combiné" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Purger les articles non lus" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Afficher les flux spéciaux en masquant les flux lus" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Regrouper les entêtes dans des flux virtuels" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Ne pas intégrer les images" +#: include/functions.php:3028 +msgid " - " +msgstr " - " -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Activer les API externes" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "aucun tag" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Fuseau horaire de l'utilisateur" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Modifier les tags pour cet article" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Personnaliser la feuille de style" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Origine :" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Trier les en-têtes par date de flux" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "URL du flux" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Connexion avec un certificat SSL" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Fermer cette fenêtre" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Essayer d'envoyer le résumé à l'heure précisée" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(modifier l'annotation)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Assigner des étiquettes aux articles automatiquement" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "type inconnu" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Sélectionner un thème" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Fichier attaché" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1193,7 +946,7 @@ msgstr "Profil :" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Profil par défaut" @@ -1211,7 +964,7 @@ msgstr "Se souvenir de moi" msgid "Log in" msgstr "Se connecter" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Echec de la validation de la session (adresse IP incorrecte)" @@ -1227,7 +980,7 @@ msgstr "Tags pour cet article (séparés par des virgules) :" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1248,7 +1001,7 @@ msgstr "Enregistrer" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1471,7 +1224,7 @@ msgstr "Sélectionner :" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1491,7 +1244,7 @@ msgstr "Inverse" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1573,7 +1326,8 @@ msgid "No starred articles found to display." msgstr "Aucun article remarquable à afficher." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Aucun article à afficher. Vous pouvez assigner des étiquettes aux articles manuellement (voir les actions du menu ci-dessus) ou utiliser un filtre." #: classes/feeds.php:744 @@ -1627,7 +1381,7 @@ msgid "Login" msgstr "Se connecter" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1847,7 +1601,7 @@ msgstr "[tt-rss] Notification de changement de mot passe" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2014,7 +1768,7 @@ msgid "Save rule" msgstr "Enregistrer" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Ajouter une règle" @@ -2031,7 +1785,7 @@ msgid "Save action" msgstr "Enregistrer" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Ajouter une action" @@ -2039,228 +1793,432 @@ msgstr "Ajouter une action" msgid "[No caption]" msgstr "[Pas de titre]" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Général" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avancé" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permettre les articles en double" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Assigner des étiquettes aux articles automatiquement" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Tags exclus" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Lors de l'auto-détection des tags dans les articles, ces tags ne seront pas utilisés (séparés par des virgules)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Automatiquement marquer les articles comme lus" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Cette option permet de marquer automatiquement les articles comme lus lorsque vous naviguez dans la liste d'articles." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Développer automatiquement les articles en affichage combiné" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Affichage combiné des flux" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Affiche les articles sous la forme d'une liste étendue, au lieu de deux listes séparées (une pour les en-têtes et une pour le contenu)" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Demander confirmation pour marquer un flux comme lu" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Nombre d'articles à afficher" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Fréquence de mise à jour par défaut" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Marquer tous les articles du compte-rendu par email comme lus" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Activer la synthèse quotidienne par courrier électronique" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Cette option active l'envoi d'une synthèse quotidienne (digest) des en-têtes nouveaux et non lus à l'adresse électronique donnée" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Essayer d'envoyer le résumé à l'heure précisée" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Utilise l'heure GMT" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Activer les API externes" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Utiliser les catégories de flux" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Trier les flux par nombre d'articles non lus" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Ancienneté maximale pour un nouvel article (en heures)" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "Masquer les flux sans article non lu" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Afficher les flux spéciaux en masquant les flux lus" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Format de date long" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Sauter automatiquement au flux suivant" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Sauter automatiquement au flux suivant après en marquer un comme lu" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Purger les articles plus vieux que le nombre de jours donné (0 pour ne jamais purger)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Purger les articles non lus" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Inverser l'order des en-têtes (les plus anciens en premier)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Format de date court" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Donner un aperçu du contenu dans la liste des en-têtes" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Trier les en-têtes par date de flux" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Utiliser les dates spécifiées dans le flux pour trier les en-têtes au lieu des dates importées localement." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Connexion avec un certificat SSL" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Cliquez pour enregistrer votre certificat client SSL dans tt-rss" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Ne pas intégrer les images" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Éliminer les tags non sûrs des articles" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Élimine toutes les balises HTML sauf les plus courantes lors de la lecture des articles." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Sélectionner un thème" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "Sélectionnez un des thèmes CSS disponibles" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Personnaliser la feuille de style" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personnaliser les feuilles de style CSS" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Fuseau horaire de l'utilisateur" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Regrouper les entêtes dans des flux virtuels" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Avec cette option activée, les entêtes dans les flux spéciaux et par étiquettes sont regroupés par flux" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "L'ancien mot de passe ne peut pas être vide." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Le nouveau mot de passe ne peut pas être vide." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Les mots de passe saisie ne sont pas identiques." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Fonction non supportée par le module d'identification." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "La configuration a été enregistrée." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Option inconnue : %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Vos données personnelles ont été sauvegardées." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Données personnelles / Authentification" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Données personelles" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Nom complet" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "Adresse électronique" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Permissions" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Enregistrer les données" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Votre mot de passe est celui par défaut, veuillez le modifier." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "Changer votre mot de passe actuel désactivera les mots de passe à usage unique." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Ancien mot de passe" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nouveau mot de passe" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Confirmation du mot de passe" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Modifier le mot de passe" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Mots de passe à usage unique / Identificateur" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Les mots de passe à usage unique sont actuellement activés. Entrez votre mot de passe actuel ci-dessous pour les désactiver." -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Entrez votre mot de passe" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Désactiver les mots de passe à usage unique" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Vous aurez besoin d'un Identificateur compatible pour utiliser ceci. Changer votre mot de passe le désactivera automatiquement." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Scanner le code suivant avec l'application identificateur :" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "J'ai scanné le code et je veux activer les mots de passe à usage unique" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Activer les mots de passe à usage unique" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "Certaines options ne ne disponibles que dans le profil par défaut." -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Personnaliser" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "S'inscrire" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Effacer" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Heure du serveur : %s (GMT)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Enregistrer la configuration" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Gérer les profils" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Revenir aux valeurs par défaut" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Vous devrez relancer Tiny Tiny RSS pour que les changements apportés aux plugins prennent effet." -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "Téléchargez plus de plugins sur le forum ou le wiki de Tiny Tiny RSS." -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Plugins systèmes" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Description" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Auteur" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "plus d'info" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Purger les données" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Plugins utilisateur" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Activer les plugins sélectionnés" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Mot de passe incorrect" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Vous pouvez redéfinir les couleurs, les polices et la mise en page du thème actuellement sélectionné à l'aide de vos propres instructions CSS ici. Ce fichier peut être utilisé comme base de départ." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Création d'un profil" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(actif)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Supprimer les profils sélectionnés" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Activer le profil" @@ -2354,22 +2312,22 @@ msgstr "Modifier les flux sélectionnés" msgid "Batch subscribe" msgstr "Abonnement par lots" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Catégories" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Ajouter une catégorie" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Masquer/afficher les catégories vides" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Supprimer les flux sélectionnés" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Masquer/afficher les catégories vides" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Autres actions..." @@ -2650,68 +2608,68 @@ msgstr "S'abonner dans Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Utilisez ce bookmarklet pour publier des pages avec Tiny Tiny RSS" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Importer et exporter" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Archive" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "Vous pouvez exporter et importer vos articles remarquables et archivés afin de les sauvegarder ou pour les transférer entre deux instances de tt-rss." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Exporter mes données" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importer" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Import impossible : version du schéma incorrecte." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Import impossible : format de document non reconnu." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Fini : " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "%d article traité, " msgstr[1] "%d articles traités, " -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "%d importé, " msgstr[1] "%d importés, " -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "%d flux créé." msgstr[1] "%d flux créés." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Impossible de charger le document XML." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Préparer les données" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "Envoi du fichier impossible. Vous devriez peut-être modifier la valeur de upload_max_filesize dans PHP.ini (valeur courante : %s)" @@ -2890,142 +2848,134 @@ msgstr "Êtes-vous sûr de vouloir signaler cette erreur sur tt-rss.org ? Le rap msgid "close" msgstr "fermer" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "La syntaxe des dates semble être correcte :" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "La syntaxe des dates est incorrecte." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "Erreur expliquée" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Envoi terminé." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Supprimer l'icône de flux stockée ?" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "Suppression de l'icône du flux..." -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "Icône du flux supprimée." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Veuillez sélectionner une image à envoyer." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Envoyer une nouvelle icône pour ce flux ?" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Envoi en cours, veuillez patienter..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Veuillez saisir le libellé de l'étiquette :" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Impossible de créer une étiquette : libellé manquant." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "S'abonner au flux" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Abonné à %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "L'URL spécifiée semble invalide." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "L'URL spécifiée ne semble pas contenir de flux." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "L'URL spécifiée n'a pas pu être téléchargée : %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Vous êtes déjà abonné à ce flux." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Modifier la règle" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Modifier l'action" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Créer un filtre" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Réinitialiser l'inscription ? Tiny Tiny RSS essayera de se réinscrire au hub de notification lors de la prochaine mise à jour du flux." -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "Abonnement réinitialisé." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Se désabonner de %s ?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Suppression du flux..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Veuillez saisir un titre pour cette catégorie :" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Générer une nouvelle adresse d'abonnement pour ce flux ?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Changement de l'adresse..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Vous ne pouvez pas modifier ce type de flux." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Modifier le flux" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Enregistrement des données..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "D'autres flux" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3036,25 +2986,25 @@ msgstr "D'autres flux" msgid "No feeds are selected." msgstr "Aucun flux sélectionné." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Supprimer les flux sélectionnés de l'archive ? Les flux contenant des articles stockés ne seront pas supprimés." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Flux avec des erreurs de mise à jour" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Supprimer les flux sélectionnés ?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Suppression des flux sélectionnés..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Aide" @@ -3400,132 +3350,142 @@ msgstr "Recalcul des scores des articles..." msgid "New version available!" msgstr "Une nouvelle version est disponible !" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Annuler la recherche" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Ne plus marquer comme remarquable" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Marquer comme remarquable" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Ne plus publier l'article" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publier l'article" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Aucun article sélectionné." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Supprimer %d article sélectionné de %s ?" msgstr[1] "Supprimer les %d articles sélectionnés de %s ?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Supprimer %d article sélectionné ?" msgstr[1] "Supprimer les %d articles sélectionnés ?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Archiver %d article sélectionné de %s ?" msgstr[1] "Archiver les %d articles sélectionnés de %s ?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Restaurer %d article archivé ?" msgstr[1] "Restaurer %d articles archivés ?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "Veuillez noter que les articles non marqués risquent d'être purgés à la prochaine mise à jour du flux." -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Marquer %d article sélectionné de %s comme lu ?" msgstr[1] "Marquer %d articles sélectionnés de %s comme lus ?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Modifier les tags de l'article" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Sauvegarde des tags de l'article..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Aucun article sélectionné." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Aucun article à marquer" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Marquer %d article comme lu ?" msgstr[1] "Marquer %d articles comme lus ?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Ouvrir l'article original" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Afficher l'URL" # Same as 'starred" ? -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 msgid "Toggle marked" msgstr "Marquer comme (non) remarquable" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Assigner l'étiquette" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Supprimer l'étiquette" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Lecture..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Cliquez pour mettre en pause" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Nouveau score des articles sélectionnés :" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Nouveau score pour cet article :" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "URL de l'article :" @@ -3629,6 +3589,45 @@ msgstr "Partager l'article par URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "La mise à jour en direct est expérimentale. Veuillez sauvegarder votre dossier tt-rss avant de continuer. Tapez « yes » pour continuer." +#~ msgid "Title" +#~ msgstr "Titre" + +#~ msgid "Title or Content" +#~ msgstr "Titre ou contenu" + +#~ msgid "Link" +#~ msgstr "Lien" + +#~ msgid "Content" +#~ msgstr "Contenu" + +#~ msgid "Article Date" +#~ msgstr "Date de l'article" + +#~ msgid "Delete article" +#~ msgstr "Supprimer l'article" + +#~ msgid "Set starred" +#~ msgstr "Marquer comme remarquable" + +#~ msgid "Assign tags" +#~ msgstr "Assigner des tags" + +#~ msgid "Modify score" +#~ msgstr "Modifier le score" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Cette option est utile si vous lisez des articles venant d'agrégateurs de type «planet», dans lesquels certains flux se recoupent largement. Lorsque cette option est désactivée, les articles en double sont affichés en un seul exemplaire." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervalle par défaut entre les mises à jour de flux" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La syntaxe des dates semble être correcte :" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "La syntaxe des dates est incorrecte." + #~ msgid "Refresh" #~ msgstr "Actualiser" diff --git a/locale/hu_HU/LC_MESSAGES/messages.mo b/locale/hu_HU/LC_MESSAGES/messages.mo index cbb853060..140f8a9a2 100644 Binary files a/locale/hu_HU/LC_MESSAGES/messages.mo and b/locale/hu_HU/LC_MESSAGES/messages.mo differ diff --git a/locale/hu_HU/LC_MESSAGES/messages.po b/locale/hu_HU/LC_MESSAGES/messages.po index 4f0e2e63f..673fc2d0a 100644 --- a/locale/hu_HU/LC_MESSAGES/messages.po +++ b/locale/hu_HU/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-26 12:00+0100\n" "Last-Translator: Zoltan Faludi \n" "Language-Team: HUNGARIAN\n" @@ -250,8 +250,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL eszképelési teszt sikertelen, ellenőrizze az adatbázis és a PHP bállításokat" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -261,10 +261,10 @@ msgstr "SQL eszképelési teszt sikertelen, ellenőrizze az adatbázis és a PHP #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -280,84 +280,83 @@ msgstr "SQL eszképelési teszt sikertelen, ellenőrizze az adatbázis és a PHP #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Betöltés, kérem várjon..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Hírcsatornalista összecsukása" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Hírek megjelenítése" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptív" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Minden hír" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Csillagozott" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publikált" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Olvasatlan" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Olvasatlan" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Pontozás memmőzése" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Hírek rendezése" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Alapértelmezett" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Hírcsatorna megjelölése olvasottként" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -366,110 +365,110 @@ msgstr "Hírcsatorna megjelölése olvasottként" msgid "Mark as read" msgstr "Megjelölés olvasottként" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Az összes hír" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Kommunikációs probléma a szerverrel" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "A Tiny Tiny RSS-nek elérhető egy újabb verziója!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Műveletek" -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Beállítások..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Keresés..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Műveletek hírcsatornákkal:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feliratkozás hírcsatornára..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Hírcsatorna szerkesztése..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Hírcsatorna újrapontozása" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Leiratkozás" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Az összes hírcsatorna:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Olvasottak rejtése/mutatása" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Egyéb műveletek:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Váltás áttekintő módba..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Címkefelhő megjelenítése..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Szélesvásznú mód váltása" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Kijelölés címkék alapján" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Új címke létrehozása..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Szűrő létrehozása..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Billentyűparancsok súgója" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -478,8 +477,8 @@ msgstr "Kijelentkezés" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Beállítások" @@ -504,8 +503,8 @@ msgid "Filters" msgstr "Szűrők" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -575,10 +574,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "A Tiny Tiny RSS adatbázis frissítő szkript." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -595,578 +594,331 @@ msgstr[1] "%d archivált hír" msgid "No feeds found." msgstr "Nem található hírcsatorna." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Kiemelt" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Összes hírcsatorna" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Csillagozott hírek" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publikált hírek" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Friss hírek" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Archivált hírek" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Legutóbb olvasott" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigáció" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Következő hírcsatorna megnyitása" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Előző hírcsatorna megnyitása" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Következő hír megnyitása" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Előző hír megjelenítése" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Következő hír megnyitása (nem görgeti a hosszú híreket)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Előző hír megnyitása (nem görgeti a hosszú híreket)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Keresőmező megjelenítése" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Hír" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Csillagoz" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Publikált" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Olvasatlannak jelöl" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Címkék szerkesztése" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Eltávolítja a kijelölt híreket a címke alól?" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Látható olvasott hírek elrejtése" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Megnyitás új ablakban" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Olvasottnak jel ez alatt" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Olvasottnak jel ez fölött" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Legördítés" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Felgördítés" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Az kurzor alatti hír kiválasztása" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Hír küldése emailben" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Hír bezárása" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Eredeti megjelenítésének váltása" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Hír kijelölés" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Minden hír kijelölése" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Olvasatlan hírek kijelölése" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Csillagozott hírek kijelölése" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Publikált hírek kijlölése" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Fordított kijelölés" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Kijelölés eltávolítása" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Hírcsatorna" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Aktuális hírcsatorna frissítése" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Olvasott hírcsatornák rejtése/mutatása" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Feliratkozás hírcsatornára" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Hírcsatorna szerkesztése" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Címek fordított sorrendben" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Hírcsatorna frissítés hibakaresés" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Minden hírcsatornát olvasottként jelöl" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Kategória kinyitás/összecsukás" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Váltás kombinált módba" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Váltás kombinált módba" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Ugrás ide" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Friss" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Címkefelhő" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Egyéb" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Címke létrehozása" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Szűrő létrehozása" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Oldalsáv megjelenítés/elrejtés" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Súgó ablak megjelenítése" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Keresési eredmények: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Kattintson a lejátszáshoz" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Lejátszás" -#: include/functions.php:3027 -msgid " - " -msgstr "-" - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "nincs címke" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Címkék hozzáadása a hírhez" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Eredeti innen:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Hírcsatorna URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Ablak bezárása" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(jegyzet szerkesztése)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "ismeretlen hírcsatornatípus" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Csatolmányok:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Cím" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Cím vagy tartalom" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Link" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Tartalom" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Hír dátuma" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Hír törlése" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Csillagoz" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Hír publikálása" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Címke hozzáadása" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Címke hozzáadása" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Pontszám módosítás" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Általános" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Kezelőfelület" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Speciális" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Ez az opció akkor hasznos, amikor sok planet típusú hírgyűjtőt olvas részben átfedő felhasználó bázissal. Ha ki van kapcsolva, akkor arra törekszik, hogy ugyanaz a hír csak egyszer jelenjen meg." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "A hír címének és tartalmának külön való megjelenítése helyett jelentísen emg egy kombinált listát a hírek címével és tartalmával együtt." - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automatikusan megnyitja a következő olvasatlan híreket tartalmazó hírcsatornát miután egyet megjelöl olvasottként" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Itt engedélyezheti a friss és olvasatlan cikkek napi elküldését a megadott e-mail címére.." - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Ez a beállítás lehetővé teszi a hírek automatikus olvasottnak jelölését a hír lista görgetése közben." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Hírek olvasásakor távolítsa el a a HTML kódokat a leggyakrabban használtak kivételével." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Ha a program megtalája ezeket a címkéket a hírekben, kihagyja őket (lista, elemek vesszővel elválasztva)" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Ha ezt a beállítást engedélyezi, a Kiemelt hírcsatornákban és a Címkékben szereplő címeket a program hírcsatornák alapján csoportosítja." - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Saját ízlése szerint testreszabhatja a CSS stíluslapot" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "A helyi import dátum helyett használja a hírcsatornában megadott dátumot a címek rendezéséhez." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Az SSL ügyfél tanúsítvány regisztrációjához kattintson ide." - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "UTC időzónát használ" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Hírek törlése ennyi nap után (0 - nincs törlés)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Hírcsatorna frissítések közti idő" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Ennyi hír jelenjen meg egyszerre" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Dupla postok engedélyezése" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Hírcsatornák kategorizálásának engedélyezése" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "A hírelőzetes mutatása a hírcímek listájában" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Dátum/idő rövid formátuma" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Dátum/idő hosszú formátuma" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinált hírcsatorna-megjelenítés" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Olvasatlan hírekkel nem rendelkező hírcsatorna elrejtése" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Hírcsatorna végén mutassa a következő hírcsatornát" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Hírcsatornák rendezése olvasatlan hírek száma alapján" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Fordított hírcím-sorrend (régiebbiek előbb)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Hírösszefoglaló e-mail elküldésének engedélyezése" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Megerősítés hírcsatornák olvasottként jelölésekor" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Hírek megjelölése olvasottként automatikusan" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Nem biztonságos kódok eltávolítása a hírekből" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Feketelistás címkék" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Meddig legyen friss egy hír (órákban megadva)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Az email összefoglalóban elküldött hírek megjelölése hírek olvasottként" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Hírek automatikus szétnyitása kombinált üzemmódban" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Régi hírek törlésekor törölje az olvasatlanokat is" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Különleges hírcsatornák mutatása olvasott hírcsatornák rejtésekor" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Hírcímek csoportosítása virtuális hírcsatornákba" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Ne jelenítse meg a képeket a hírekben" +#: include/functions.php:3028 +msgid " - " +msgstr "-" -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Külső API engedélyezése" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "nincs címke" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Felhasználó időzónája" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Címkék hozzáadása a hírhez" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Stíluslap testreszabása" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Eredeti innen:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Címek rendezése hírcsatorna dátuma alapján" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Hírcsatorna URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Belépés SSL tanúsítvánnyal" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Ablak bezárása" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "A kivonatot megpróbálja a megadott időben elküldeni" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(jegyzet szerkesztése)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Címkék automatikus hozzárendelése a hírekhez" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "ismeretlen hírcsatornatípus" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Stílusválasztó" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Csatolmányok:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1198,7 +950,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Alapértelmezett profil" @@ -1216,7 +968,7 @@ msgstr "" msgid "Log in" msgstr "Belépés" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Nem sikerült érvényesíteni a munkamenetet (érvénytelen IP)" @@ -1232,7 +984,7 @@ msgstr "A hír címkéi (vesszőkkel elválasztva):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1253,7 +1005,7 @@ msgstr "Mentés" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1478,7 +1230,7 @@ msgstr "Kiválasztás:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1498,7 +1250,7 @@ msgstr "Fordított" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1580,7 +1332,8 @@ msgid "No starred articles found to display." msgstr "Nincs megjeleníthető csillagozott hír." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "" "A jelenlegi címke alá nincs besorolva egy hír sem.\n" "Címkék alá híreket besorolhat manuálisan (lásd a fenti Műveletek menüt) vagy a besoroláshoz használhat Szűrőket." @@ -1636,7 +1389,7 @@ msgid "Login" msgstr "Belépés" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1860,7 +1613,7 @@ msgstr "[tt-rss] Értesítés jelszó megváltoztatásáról." #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2029,7 +1782,7 @@ msgid "Save rule" msgstr "Szabály mentés" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Szabály hozzáadás" @@ -2046,7 +1799,7 @@ msgid "Save action" msgstr "Művelet mentés" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Művelet hozzáadás" @@ -2055,228 +1808,433 @@ msgstr "Művelet hozzáadás" msgid "[No caption]" msgstr "Cím" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Általános" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Kezelőfelület" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Speciális" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Dupla postok engedélyezése" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Címkék automatikus hozzárendelése a hírekhez" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Feketelistás címkék" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Ha a program megtalája ezeket a címkéket a hírekben, kihagyja őket (lista, elemek vesszővel elválasztva)" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Hírek megjelölése olvasottként automatikusan" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Ez a beállítás lehetővé teszi a hírek automatikus olvasottnak jelölését a hír lista görgetése közben." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Hírek automatikus szétnyitása kombinált üzemmódban" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinált hírcsatorna-megjelenítés" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "A hír címének és tartalmának külön való megjelenítése helyett jelentísen emg egy kombinált listát a hírek címével és tartalmával együtt." + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Megerősítés hírcsatornák olvasottként jelölésekor" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Ennyi hír jelenjen meg egyszerre" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Frissítési intervallum:" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Az email összefoglalóban elküldött hírek megjelölése hírek olvasottként" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Hírösszefoglaló e-mail elküldésének engedélyezése" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Itt engedélyezheti a friss és olvasatlan cikkek napi elküldését a megadott e-mail címére.." + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "A kivonatot megpróbálja a megadott időben elküldeni" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "UTC időzónát használ" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Külső API engedélyezése" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Hírcsatornák kategorizálásának engedélyezése" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Hírcsatornák rendezése olvasatlan hírek száma alapján" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Meddig legyen friss egy hír (órákban megadva)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Olvasatlan hírekkel nem rendelkező hírcsatorna elrejtése" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Különleges hírcsatornák mutatása olvasott hírcsatornák rejtésekor" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Dátum/idő hosszú formátuma" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Hírcsatorna végén mutassa a következő hírcsatornát" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatikusan megnyitja a következő olvasatlan híreket tartalmazó hírcsatornát miután egyet megjelöl olvasottként" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Hírek törlése ennyi nap után (0 - nincs törlés)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Régi hírek törlésekor törölje az olvasatlanokat is" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Fordított hírcím-sorrend (régiebbiek előbb)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Dátum/idő rövid formátuma" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "A hírelőzetes mutatása a hírcímek listájában" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Címek rendezése hírcsatorna dátuma alapján" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "A helyi import dátum helyett használja a hírcsatornában megadott dátumot a címek rendezéséhez." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Belépés SSL tanúsítvánnyal" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Az SSL ügyfél tanúsítvány regisztrációjához kattintson ide." + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Ne jelenítse meg a képeket a hírekben" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Nem biztonságos kódok eltávolítása a hírekből" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Hírek olvasásakor távolítsa el a a HTML kódokat a leggyakrabban használtak kivételével." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Stílusválasztó" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Stíluslap testreszabása" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Saját ízlése szerint testreszabhatja a CSS stíluslapot" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Felhasználó időzónája" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Hírcímek csoportosítása virtuális hírcsatornákba" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Ha ezt a beállítást engedélyezi, a Kiemelt hírcsatornákban és a Címkékben szereplő címeket a program hírcsatornák alapján csoportosítja." + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "A régi jelszó mező nem maradhat üresen." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Az új jelszó mező nem maradhat üresen." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "A megadott jelszavak nem egyeznek." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "A hitelesítési modul nem támogatja ezt a funkciót." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Beállítások elmentve." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Ismeretlen beállítás: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "A személyes adatai el lettek mentve." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Személyes adatok / Azonosítás" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Személyes adatok" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Teljes név" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Hozzáférési szint" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Adatok mentése" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "A jelszava még az alapértelmezett, kérem változtassa meg." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Régi jelszó" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Új jelszó" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Jelszó még egyszer" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Jelszó megváltoztatása" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Egyszer használatos jelszavak / Hitelesítő" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Adja meg a jelszavát" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "OTP letiltása" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Ennek a használatához egy kompatibilis Hitelesítőre van szükség. A jelszó módosítása automatikusan letiltja az OTP-t." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Szkennelje be a következő kódot a Hitelesítő alkalmazással:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Beszkenneltem a kódot és be szeretném kapcsolni az OTP-t" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "OTP engedélyezése" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Testreszabás" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Regisztráció" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Töröl" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuális szerveridő: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Beállítások mentése" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Profilok kezelése" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Alapértelmezett beállítások" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Beépülők" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Rendszer beépülők" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Beépülő" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Leírás" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Verzió" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Szerző" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Adatok törlése" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Felhasználói beépülők" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Kiválasztott beépülők engedélyezése" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Érvénytelen jelszó" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Egyéni CSS deklarációkkal itt felülbírálhatja a kiválasztott téma színeit, betűtípusait és elrendezését. Ez a fájl használható kiindulásként." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Profil létrehozás" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktív)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Eltávolítja a kiválasztott profilokat?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Profil aktiválás" @@ -2370,22 +2328,22 @@ msgstr "Kijelölt hírcsatornák szerkeztése" msgid "Batch subscribe" msgstr "Kötegelt feliratkozás" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategóriák" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Kategória hozzáadás" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Üres kategóriák elrejtése/megjelenítése" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Kijelölt eltávolítása" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Üres kategóriák elrejtése/megjelenítése" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "További műveletek..." @@ -2670,68 +2628,68 @@ msgstr "Feliratkozás a Tiny Tiny RSS-ben?" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Import és export" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Hír archívum" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "A biztonság kedvéért exportálhatja és importálhatja a csillagozott és az archivált híreket a tt-rss költözések között." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Adataim expotálása" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importálás" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Nem sikerült az importálás: érvénytelen séma verzió." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Nem sikerült az importálás: ismeretlen dokumentum formátum." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Megjegyzés" msgstr[1] "Megjegyzés" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Nincs kiválasztott hírcsatorna." msgstr[1] "Nincs kiválasztott hírcsatorna." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Az XML dokumentum nem tölthető be." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Adatok előkészítése" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, fuzzy, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2915,147 +2873,139 @@ msgstr "Biztos, hogy be akarja jelenteni ezt a hibát a tt-rss.org oldalon? A je msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "A dátum szintaxisa helyesnek tűnik:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "A dátum szintaxisa helytelen." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Eltávolítja a hírcsatorna tárolt ikonját?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Eltávolítja a hírcsatorna tárolt ikonját?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Hírcsatorna nem található" -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Kérem válasszon egy feltöltendő képet." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Új ikon tölt fel ehhez a hírcsatornához?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Betöltés, kérem várjon..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Adja meg címke nevét:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Címke létrehozása sikertelen: nincs megadva név." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Feliratkozás hírcsatornára" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Feliratkozva ide: %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "A megadott URL érvénytelennek tűnik." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "A megadott URL nem tartalmaz hírcsatornákat." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "A megadott URL nem tölthető be: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Már feliratkozott erre a hírcsatornára." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Szabály szerkesztése" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Művelet szerkesztése" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Szűrő létrehozás" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Feliratkozás visszaállítása? a következő frissítéskor Tiny Tiny RSS megpróbál automatikusan újra feliratkozni." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Feliratkozás hírcsatornára..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Leiratkozik innen: %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Adja meg a kategória címét:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Új hírszolgáltatási cím generálásása ehhez a hírcsatornához?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Ezt a hírcsatornatípust nem szerkesztheted." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Hírcsatorna szerkesztése" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Adatok mentése" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "További hírcsatornák" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3066,26 +3016,26 @@ msgstr "További hírcsatornák" msgid "No feeds are selected." msgstr "Nincs kiválasztott hírcsatorna." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Eltávolítja a kijelölt hírcsatornákat az archívumból? A tárolt hírekkel rendelkező hírcsatornák nem lesznek törölve." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Hírcsatornák frissítési hibával" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Eltávolítja a kiválasztott hírcsatornákat?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Eltávolítja a kiválasztott hírcsatornákat?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Súgó" @@ -3454,139 +3404,149 @@ msgstr "Hírek újrapontszámozása" msgid "New version available!" msgstr "Új verzió érhető el." -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Keresés megszakítása" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Csillagot levesz a hírről" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Hír csillagozása" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Publikálás visszavonása" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Hír publikálása" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nincsen kiválasztott hír." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "%d kijelölt hír törlése innen: %s?" msgstr[1] "%d kijelölt hír törlése innen: %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Törli a %d kijelölt hírt?" msgstr[1] "Törli a %d kijelölt hírt?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "%d kijelölt hír archiválása inne: %s?" msgstr[1] "%d kijelölt hír archiválása inne: %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "%d archivált hír visszaállítása?" msgstr[1] "%d archivált hír visszaállítása?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "%d kijelölt hír megjelölése olvasottként itt: %s?" msgstr[1] "%d kijelölt hír megjelölése olvasottként itt: %s?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Hír címkéinek szerkesztése" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Hír címkéinek szerkesztése" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Nincs kiválasztott hír." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Nincs megjelölendő hír." -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "%d hír megjelölése olvasottként?" msgstr[1] "%d hír megjelölése olvasottként?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Eredeti hír megjelenítése" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "URL megjelenítése" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Csillagoz" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Címke hozzáadása" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Címke eltávolítás" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Lejátszás..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Kattintson a megállításhoz" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Adjon meg egy új pontszámot a kijelölt hírekhez:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Adjon meg egy új pontszámot a hírhez:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Hír URL:" @@ -3696,6 +3656,45 @@ msgstr "Megosztás URL-el" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Az élő frissítés még kisérleti fázisban van. A folytatás előtt mentse el a tt-rss könyvtárának tartalmát. A folytatáshoz írja be a 'yes' szót." +#~ msgid "Title" +#~ msgstr "Cím" + +#~ msgid "Title or Content" +#~ msgstr "Cím vagy tartalom" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Content" +#~ msgstr "Tartalom" + +#~ msgid "Article Date" +#~ msgstr "Hír dátuma" + +#~ msgid "Delete article" +#~ msgstr "Hír törlése" + +#~ msgid "Set starred" +#~ msgstr "Csillagoz" + +#~ msgid "Assign tags" +#~ msgstr "Címke hozzáadása" + +#~ msgid "Modify score" +#~ msgstr "Pontszám módosítás" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Ez az opció akkor hasznos, amikor sok planet típusú hírgyűjtőt olvas részben átfedő felhasználó bázissal. Ha ki van kapcsolva, akkor arra törekszik, hogy ugyanaz a hír csak egyszer jelenjen meg." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Hírcsatorna frissítések közti idő" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "A dátum szintaxisa helyesnek tűnik:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "A dátum szintaxisa helytelen." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Friss" diff --git a/locale/it_IT/LC_MESSAGES/messages.mo b/locale/it_IT/LC_MESSAGES/messages.mo index e0f5c57d0..b4c423d1a 100644 Binary files a/locale/it_IT/LC_MESSAGES/messages.mo and b/locale/it_IT/LC_MESSAGES/messages.mo differ diff --git a/locale/it_IT/LC_MESSAGES/messages.po b/locale/it_IT/LC_MESSAGES/messages.po index 809e6fe20..ad9c46bb7 100644 --- a/locale/it_IT/LC_MESSAGES/messages.po +++ b/locale/it_IT/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2012-02-14 08:31+0000\n" "Last-Translator: gothfox \n" "Language-Team: LANGUAGE \n" @@ -255,8 +255,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Test di sanitizzazione dell'SQL fallito; controllare il database e la configurazione del PHP" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -266,10 +266,10 @@ msgstr "Test di sanitizzazione dell'SQL fallito; controllare il database e #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -285,84 +285,83 @@ msgstr "Test di sanitizzazione dell'SQL fallito; controllare il database e #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Caricamento, attendere prego..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Contrai elenco notiziari" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Mostra articoli" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adattivo" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Tutti gli articoli" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Con stella" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Pubblicati" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Non letti" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Non letti" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignora punteggio" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Ordina articoli" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Predefinito" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Segna notiziario come letto" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -371,112 +370,112 @@ msgstr "Segna notiziario come letto" msgid "Mark as read" msgstr "Segna come letto" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Tutti gli articoli" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "È disponibile la nuova versione di Tiny Tiny RSS." -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Azioni..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Preferenze" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Cerca..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Azioni notiziari:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Sottoscrivi il notiziario..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Modifica questo notiziario..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Cambia punteggio notiziario" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Annulla sottoscrizione" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Tutti i notiziari:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Visualizza/Nascondi notiziari letti" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Altre azioni:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Passa al sommario..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Mostra nuvola etichette..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Inverti con stella" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Crea etichetta..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Crea filtro..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Aiuto scorciatoie da tastiera" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -485,8 +484,8 @@ msgstr "Esci" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Preferenze" @@ -511,8 +510,8 @@ msgid "Filters" msgstr "Filtri" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -583,10 +582,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Il database di Tiny Tiny RSS è aggiornato." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -603,606 +602,356 @@ msgstr[1] "%d articoli archiviati" msgid "No feeds found." msgstr "Nessun notiziario trovato." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Speciale" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Tutti i notiziari" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Articoli con stella" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Articoli pubblicati" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Articoli nuovi" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Articoli archiviati" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigazione" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Su lettura passare al prossimo notiziario" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Apri articolo di origine" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Apri articolo di origine" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Mostra il dialogo di ricerca" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Tutti gli articoli" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Inverti con stella" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Inverti pubblicati" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Inverti non letti" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Modifica etichette" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Rimuovi gli articoli selezionati" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Rimuovi articoli letti" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Aprire gli articoli in una nuova finestra" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Fatto tutto." -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Seleziona l'articolo sotto il cursore del mouse" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Cambio punteggio degli articoli" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Inverti pubblicati" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Azioni sull'articolo attivo" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Inverti non letti" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Imposta con stella" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Articoli pubblicati" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Selezione:" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Notiziario" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Aggiorna notiziario attivo" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Visualizza/Nascondi notiziari letti" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Sottoscrivi il notiziario" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Modifica notiziario" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Invertire l'ordine dei sommari" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Disabilitare aggiornamenti" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Segna tutti i notiziari come letti" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Mettere nella categoria:" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Inverti pubblicati" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Inverti pubblicati" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Vai a..." -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Nuvola etichette" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Altri notiziari" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Crea etichetta" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Crea filtro" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Contrai la barra laterale" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Mostra il dialogo di ricerca" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Fare clic per riprodurre" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Riproduci" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "nessuna etichetta" -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Modifica le etichette per questo articolo" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Originariamente da:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "URL del notiziario" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Chiudi questa finestra" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(modifica note)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "tipo sconosciuto" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "Allegati:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titolo" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titolo o contenuto" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Collegamento" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Contenuto" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Data dell'articolo" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Elimina articolo" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Imposta con stella" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Pubblica articolo" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Assegna etichette" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Assegna etichetta" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Questa opzione è utile quando si stanno leggendo vari aggregatori di tipo «planet» con utenti che collidono parzialmente. Quando disabilitata forza le stesse notizie da differenti notiziari ad apparire una volta sola." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Visualizza un elenco espanso di articoli di notiziario, invece di visualizzazioni separate per sommario e contenuto dell'articolo" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Questa opzione abilita l'invio del un riassunto giornaliero dei sommari nuovi (e non letti) all'indirizzo email configurato" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Questa opzione abilita la segnatura automatica degli articoli come letti quando si scorre l'elenco articoli." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Toglie tutte le etichette HTML più comuni durante la lettura degli articoli." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Quando è attiva l'individuazioni automatica delle etichette negli articoli, queste etichette non saranno applicate (elenco separato da virgola)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Quando questa opzione è abilitata, i sommari nei notiziari speciali e nelle etichette vengono raggruppati per notiziario" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Personalizza a piacimento il foglio di stile CSS" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Utilizzare per l'ordinamento dei sommari la data specificata dal notiziario invece della data di importazione in locale." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Fare clic per registrare il certificato SSL client su tt-rss" - -#: include/localized_schema.php:32 -#, fuzzy -msgid "Uses UTC timezone" -msgstr "Fuso orario dell'utente" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Eliminare le notizie vecchie dopo questo numero di giorni (0 - disabilitato)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Numero di articoli da visualizzare alla volta" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Permettere articoli duplicati" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Abilitare le categorie dei notiziari" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Mostrare l'anteprima del contenuto nell'elenco del sommario" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Formato data corta" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Formato data lunga" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Visualizzazione combinata di notiziari" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Nascondere i notiziari senza messaggi non letti" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Su lettura passare al prossimo notiziario" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Ordinare i notiziari per numero di articoli non letti" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Invertire l'ordine del sommario (prima i più vecchi)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Abilitare email riassunto" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Richiedere conferma segnatura del notiziario come letto" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Segnare automaticamente gli articoli come letti" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Togliere le etichette non buone dagli articoli" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Etichette in lista nera" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Età massima degli articoli nuovi (in ore)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Segna gli articoli del riassunto email come letti" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Espandere automaticamente gli articoli nella modalità combinata" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Eliminare articoli non letti" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Mostrare i notiziari speciali quando vengono nascosti i notiziari letti" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Raggruppare i sommari in notiziari virtuali" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Non mostrare le immagini negli articoli" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Abilita API esterna" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Fuso orario dell'utente" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Modifica le etichette per questo articolo" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Personalizza il foglio di stile" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Originariamente da:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Ordinare i sommari per data del notiziario" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "URL del notiziario" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Accesso con un certificato SSL" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Chiudi questa finestra" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(modifica note)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "tipo sconosciuto" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Seleziona tema" +#: include/functions.php:3660 +#, fuzzy +msgid "Attachments" +msgstr "Allegati:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1234,7 +983,7 @@ msgstr "Profilo:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Profilo predefinito" @@ -1252,7 +1001,7 @@ msgstr "" msgid "Log in" msgstr "Accedi" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "La validazione della sessione è fallita (IP non corretto)" @@ -1268,7 +1017,7 @@ msgstr "Etichette per questo articolo (separate da virgole):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1289,7 +1038,7 @@ msgstr "Salva" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1521,7 +1270,7 @@ msgstr "Seleziona:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1541,7 +1290,7 @@ msgstr "Inverti" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1626,7 +1375,8 @@ msgid "No starred articles found to display." msgstr "Nessun articolo con stella trovato da visualizzare." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Nessun articolo trovato da visualizzare. Si possono assegnare manualmente gli articoli alle etichette (vedere il menù «Azioni» sopra) o utilizzare un filtro." #: classes/feeds.php:744 @@ -1681,7 +1431,7 @@ msgid "Login" msgstr "Accesso" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1902,7 +1652,7 @@ msgstr "[tt-rss] Notifica di cambio password" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2074,7 +1824,7 @@ msgid "Save rule" msgstr "Salva" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "" @@ -2092,7 +1842,7 @@ msgid "Save action" msgstr "Riquadro azioni" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "Azioni notiziari" @@ -2102,235 +1852,443 @@ msgstr "Azioni notiziari" msgid "[No caption]" msgstr "Intestazione" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permettere articoli duplicati" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Etichette in lista nera" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Quando è attiva l'individuazioni automatica delle etichette negli articoli, queste etichette non saranno applicate (elenco separato da virgola)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Segnare automaticamente gli articoli come letti" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Questa opzione abilita la segnatura automatica degli articoli come letti quando si scorre l'elenco articoli." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Espandere automaticamente gli articoli nella modalità combinata" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Visualizzazione combinata di notiziari" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Visualizza un elenco espanso di articoli di notiziario, invece di visualizzazioni separate per sommario e contenuto dell'articolo" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Richiedere conferma segnatura del notiziario come letto" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Numero di articoli da visualizzare alla volta" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Intervallo predefinito" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Segna gli articoli del riassunto email come letti" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Abilitare email riassunto" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Questa opzione abilita l'invio del un riassunto giornaliero dei sommari nuovi (e non letti) all'indirizzo email configurato" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +#, fuzzy +msgid "Uses UTC timezone" +msgstr "Fuso orario dell'utente" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Abilita API esterna" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Abilitare le categorie dei notiziari" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Ordinare i notiziari per numero di articoli non letti" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Età massima degli articoli nuovi (in ore)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Nascondere i notiziari senza messaggi non letti" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Mostrare i notiziari speciali quando vengono nascosti i notiziari letti" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Formato data lunga" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Su lettura passare al prossimo notiziario" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Eliminare le notizie vecchie dopo questo numero di giorni (0 - disabilitato)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Eliminare articoli non letti" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Invertire l'ordine del sommario (prima i più vecchi)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Formato data corta" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Mostrare l'anteprima del contenuto nell'elenco del sommario" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Ordinare i sommari per data del notiziario" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Utilizzare per l'ordinamento dei sommari la data specificata dal notiziario invece della data di importazione in locale." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Accesso con un certificato SSL" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Fare clic per registrare il certificato SSL client su tt-rss" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Non mostrare le immagini negli articoli" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Togliere le etichette non buone dagli articoli" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Toglie tutte le etichette HTML più comuni durante la lettura degli articoli." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Seleziona tema" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Personalizza il foglio di stile" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Personalizza a piacimento il foglio di stile CSS" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Fuso orario dell'utente" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Raggruppare i sommari in notiziari virtuali" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Quando questa opzione è abilitata, i sommari nei notiziari speciali e nelle etichette vengono raggruppati per notiziario" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "La vecchia password non può essere vuota." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "La nuova password non può essere vuota." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Le password inserite non corrispondono." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "La configurazione è stata salvata." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Opzione sconosciuta: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "I dati personali sono stati salvati." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticazione" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Nome completo" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "Email" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Livello di accesso" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Salva dati" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "La password è impostata al valore predefinito: cambiarla." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Vecchia password" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nuova password" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Conferma password" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Cambia password" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "Nome utente o password sbagliati" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "Disabilitare aggiornamenti" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Abilitato" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Personalizza" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Registro" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Pulisci" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Salva configurazione" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Gestisci profili" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Reimposta ai valori predefiniti" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Pulisci i dati del notiziario" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Abilitare le categorie dei notiziari" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "Nome utente o password sbagliati" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Si possono cambiare i colori, i caratteri e la disposizione del tema correntemente selezionato attraverso le dichiarazioni CSS personalizzate. Questo file può essere utilizzato come base." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Crea profilo" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(attivo)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Rimuovi i profili selezionati" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Attiva profilo" @@ -2425,19 +2383,14 @@ msgstr "Modifica i notiziari selezionati" msgid "Batch subscribe" msgstr "" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "Categorie notiziario" -#: classes/pref/feeds.php:1289 -#, fuzzy -msgid "Add category" -msgstr "Modifica categorie" - #: classes/pref/feeds.php:1291 #, fuzzy -msgid "(Un)hide empty categories" +msgid "Add category" msgstr "Modifica categorie" #: classes/pref/feeds.php:1295 @@ -2445,6 +2398,11 @@ msgstr "Modifica categorie" msgid "Remove selected" msgstr "Rimuovere i notiziari selezionati?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Modifica categorie" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Altre azioni..." @@ -2741,69 +2699,69 @@ msgstr "Sottoscrive in Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "Data dell'articolo" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importa" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Modifica note articolo" msgstr[1] "Modifica note articolo" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "già importato." msgstr[1] "già importato." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Nessun notiziario selezionato." msgstr[1] "Nessun notiziario selezionato." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2991,150 +2949,142 @@ msgstr "Si vuole notificare questa eccezione a tt-rss.org? La notifica includer msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "La sintassi della data appare con corretta:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "La sintassi della data non è corretta." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Rimuovi le icone salvate dei notiziari?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Rimuovi le icone salvate dei notiziari?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Notiziario non trovato." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Selezionare un file immagine da caricare." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Caricare una nuova icona per questo notiziario?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Caricamento, attendere prego..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Inserire l'intestazione dell'etichetta:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Impossibile creare l'etichetta: intestazione mancante." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Sottoscrivi il notiziario" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Sottoscrizione effettuata a «%s»" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "L'URL specifica sembra essere non valido." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "L'URL specificato non sembra contenere alcun notiziario." -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "Impossibile scaricare l'URL specificato." -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "La sottoscrizione a questo notiziario è già stata effettuata." -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "Modifica filtro" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "Azioni notiziari" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Crea filtro" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Reimpostare la sottoscrizione? Tiny Tiny RSS proverà ancora al prossimo aggiornamento del notiziario a sottoscrivere il centro notifiche." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Sottoscrivi il notiziario..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Annullare la sottoscrizione a «%s»?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Inserire il titolo della categoria:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Generare un nuovo indirizzo per questo notiziario?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Impossibile modificare questo tipo di notiziario." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Modifica notiziario" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Salva dati" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Altri notiziari" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3145,26 +3095,26 @@ msgstr "Altri notiziari" msgid "No feeds are selected." msgstr "Nessun notiziario selezionato." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Rimuovere i notiziari selezionati dall'archivio? I notiziari con articoli archiviati non saranno rimossi." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Notiziari con errori di aggiornamento" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Rimuovere i notiziari selezionati?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Rimuovere i notiziari selezionati?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "" @@ -3540,143 +3490,153 @@ msgstr "Cambio punteggio degli articoli" msgid "New version available!" msgstr "Nuova versione disponibile." -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Annulla" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Togli la stella all'articolo" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Metti la stella all'articolo" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Non pubblicare articolo" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Pubblica articolo" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nessun articolo selezionato." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Eliminare i %d articoli selezionati in «%s»?" msgstr[1] "Eliminare i %d articoli selezionati in «%s»?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Eliminare i %d articoli selezionati?" msgstr[1] "Eliminare i %d articoli selezionati?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Archiviare i %d articoli selezionati in «%s»?" msgstr[1] "Archiviare i %d articoli selezionati in «%s»?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Spostare %d articoli archiviati indietro?" msgstr[1] "Spostare %d articoli archiviati indietro?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Segnare %d articoli selezionati in «%s» come letti?" msgstr[1] "Segnare %d articoli selezionati in «%s» come letti?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Modifica etichette articolo" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Modifica etichette articolo" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Nessun articolo selezionato." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Nessun articolo trovato da segnare" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Segnare %d articolo/i come letto/i?" msgstr[1] "Segnare %d articolo/i come letto/i?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Apri articolo di origine" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Visualizza URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Inverti con stella" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Assegna etichetta" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Rimuovi etichetta" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "In riproduzione..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Fare clic per mettere in pausa" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Eliminare i %d articoli selezionati?" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Inserire il titolo della categoria:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Tutti gli articoli" @@ -3787,6 +3747,42 @@ msgstr "Metti la stella all'articolo" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Titolo" + +#~ msgid "Title or Content" +#~ msgstr "Titolo o contenuto" + +#~ msgid "Link" +#~ msgstr "Collegamento" + +#~ msgid "Content" +#~ msgstr "Contenuto" + +#~ msgid "Article Date" +#~ msgstr "Data dell'articolo" + +#~ msgid "Delete article" +#~ msgstr "Elimina articolo" + +#~ msgid "Set starred" +#~ msgstr "Imposta con stella" + +#~ msgid "Assign tags" +#~ msgstr "Assegna etichette" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Questa opzione è utile quando si stanno leggendo vari aggregatori di tipo «planet» con utenti che collidono parzialmente. Quando disabilitata forza le stesse notizie da differenti notiziari ad apparire una volta sola." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "La sintassi della data appare con corretta:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "La sintassi della data non è corretta." + #, fuzzy #~ msgid "(%d feed)" #~ msgid_plural "(%d feeds)" diff --git a/locale/ja_JP/LC_MESSAGES/messages.mo b/locale/ja_JP/LC_MESSAGES/messages.mo index ecce7b8b9..3d64e943e 100644 Binary files a/locale/ja_JP/LC_MESSAGES/messages.mo and b/locale/ja_JP/LC_MESSAGES/messages.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/messages.po b/locale/ja_JP/LC_MESSAGES/messages.po index f9c41da65..ab9a8b4cf 100644 --- a/locale/ja_JP/LC_MESSAGES/messages.po +++ b/locale/ja_JP/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss unstable\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-25 06:48+0900\n" "Last-Translator: skikuta \n" "Language-Team: \n" @@ -248,8 +248,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQLのエスケープ処理のテストに失敗しました。データベースとPHPの設定を確認してください。" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -259,10 +259,10 @@ msgstr "SQLのエスケープ処理のテストに失敗しました。データ #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -278,86 +278,85 @@ msgstr "SQLのエスケープ処理のテストに失敗しました。データ #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "読み込みんでいます。しばらくお待ちください..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "フィード一覧を閉じる" -#: index.php:171 +#: index.php:169 #, fuzzy msgid "Show articles" msgstr "記事を保管しました" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "すべての記事" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "お気に入り" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "公開済み" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "未読" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "未読" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "スコア計算の無効化" -#: index.php:184 +#: index.php:182 #, fuzzy msgid "Sort articles" msgstr "記事を保管しました" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "標準" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "マークしたフィードを既読にする" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -366,114 +365,114 @@ msgstr "マークしたフィードを既読にする" msgid "Mark as read" msgstr "既読にする" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "すべての記事" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "サーバーとの通信に問題が発生しました。" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Tiny Tiny RSS の新しいバージョンが利用できます!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "操作..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "設定" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "検索..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "フィード操作" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "フィードを購読する..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "フィードを編集する..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "フィードのスコアを再計算しています..." -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "購読をやめる" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "すべてのフィード:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "読んだフィードを隠す/再表示する" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "その他の操作:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "ダイジェストに移行..." -#: index.php:243 +#: index.php:241 #, fuzzy msgid "Show tag cloud..." msgstr "タグクラウド" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "カテゴリーの並び替えモードの切り替え" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "タグで選択..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "ラベルを作成する..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "フィルターを作成しています..." -#: index.php:248 +#: index.php:246 #, fuzzy msgid "Keyboard shortcuts help" msgstr "キーボードショートカット" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -482,8 +481,8 @@ msgstr "ログアウト" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "設定" @@ -508,8 +507,8 @@ msgid "Filters" msgstr "フィルター" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -580,10 +579,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS のデータベースを更新しました。" #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -600,623 +599,367 @@ msgstr[1] "お気に入りの記事" msgid "No feeds found." msgstr "フィードがありません。" -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "特別" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "すべてのフィード" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "お気に入りの記事" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "公開済みの記事" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "新しい記事" -#: include/functions.php:1813 +#: include/functions.php:1814 #, fuzzy msgid "Archived articles" msgstr "未読記事" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "最近読んだ" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "ナビゲーション" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "次のフィードを開く" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "前のフィードを開く" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "次の記事を開く" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "前の記事を開く" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "次の記事を開く(スクロールしない)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "前の記事を開く(スクロールしない)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "検索ダイアログを表示する" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "すべての記事" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "お気に入りを切り替える" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "公開を切り替える" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "未読に切り替える" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "タグを編集する" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "ラベルから選択した記事を削除しますか?" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "公開記事" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "新しいウィンドウで記事を開く" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 #, fuzzy msgid "Mark below as read" msgstr "既読にする" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 #, fuzzy msgid "Mark above as read" msgstr "既読にする" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "下にスクロール" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "上にスクロール" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "マウスカーソルの下の記事を選択する" -#: include/functions.php:1899 +#: include/functions.php:1900 #, fuzzy msgid "Email article" msgstr "すべての記事" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "記事を消去する" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "カテゴリーの並び替えモードの切り替え" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "有効な記事の操作" -#: include/functions.php:1904 +#: include/functions.php:1905 #, fuzzy msgid "Select all articles" msgstr "記事を消去する" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "未読記事を削除する" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "お気に入りに設定する" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "未読記事を削除する" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "有効な記事の操作" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "記事を消去する" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "フィード" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "有効なフィードの更新" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "読んだフィードを隠す/再表示する" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "フィードを購読する" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "フィードを編集する" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "ヘッドラインの逆順 (古いものが上)" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "すべてのフィードを更新しました。" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "すべてのフィードを既読に設定する" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "カテゴリーの開閉" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "カテゴリーの並び替えモードの切り替え" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "カテゴリーの並び替えモードの切り替え" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "移動..." -#: include/functions.php:1924 +#: include/functions.php:1925 #, fuzzy msgid "Fresh" msgstr "再描画" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "タグクラウド" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "その他:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "ラベルを作成する" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "フィルターを作成する" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "サイドバーを縮小する" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "検索ダイアログを表示する" -#: include/functions.php:2418 +#: include/functions.php:2419 #, fuzzy, php-format msgid "Search results: %s" msgstr "検索結果" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 #, fuzzy msgid "Click to play" msgstr "クリックで表示" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "表示" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "タグがありません" -#: include/functions.php:3059 +#: include/functions.php:3060 #: classes/feeds.php:686 msgid "Edit tags for this article" msgstr "この記事のタグを編集する" -#: include/functions.php:3088 +#: include/functions.php:3089 #: classes/feeds.php:642 #, fuzzy msgid "Originally from:" msgstr "元の記事内容を表示する" -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -#, fuzzy -msgid "Feed URL" -msgstr "フィード" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "このウィンドウを閉じる" - -#: include/functions.php:3368 -#, fuzzy -msgid "(edit note)" -msgstr "ノートの編集" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "未知の種類" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "添付:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "題名" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "題名か内容" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "リンク" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "内容" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "記事の日付" - -#: include/localized_schema.php:9 -#, fuzzy -msgid "Delete article" -msgstr "記事を消去する" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "お気に入りに設定する" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "公開記事" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "タグの割り当て" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "ラベルの割り当て" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "スコアを変更する" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "全体" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "インターフェース" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "高度" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "" - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "この日数よりあとの古い投稿を削除する (0 は無効です)" - -#: include/localized_schema.php:35 -#, fuzzy -msgid "Default interval between feed updates" -msgstr "フィードの更新までの標準間隔 (単位:分)" - -#: include/localized_schema.php:36 -#, fuzzy -msgid "Amount of articles to display at once" -msgstr "表示する記事が見つかりません。" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "複製投稿の許可" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "フィードカテゴリーを有効にする" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "ヘッドライン一覧に内容のプレビューを表示する" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "短い日付の形式" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "完全な日付の形式" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "フィード表示の組み合わせ" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "未読でないメッセージとフィードを隠す" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "次のフィードの表示をキャッチアップする" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "未読記事数によるフィードの並び替え" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "ヘッドラインの逆順 (古いものが上)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "電子メールでのダイジェストを有効にする" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "既読としてフィードのマーキングについて確認する" - -#: include/localized_schema.php:49 -#, fuzzy -msgid "Automatically mark articles as read" -msgstr "組み合わせモードで記事を自動的に展開する" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "記事から安全でないタグを取り除く" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "ブラックリスト化したタグ" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "新規記事としての取り扱い期限 (単位: 時間)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "既読として電子メールのダイジェストに含まれる記事を設定する" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "組み合わせモードで記事を自動的に展開する" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "未読記事を削除する" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "仮想フィードのグループヘッドライン" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "記事内に画像を表示しない" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -#, fuzzy -msgid "Customize stylesheet" -msgstr "ユーザースタイルシートの URL" - -#: include/localized_schema.php:62 -#, fuzzy -msgid "Sort headlines by feed date" -msgstr "未読記事数によるフィードの並び替え" - -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +#, fuzzy +msgid "Feed URL" +msgstr "フィード" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "このウィンドウを閉じる" -#: include/localized_schema.php:65 +#: include/functions.php:3369 #, fuzzy -msgid "Assign articles to labels automatically" -msgstr "自動的に既読として記事をマークする" +msgid "(edit note)" +msgstr "ノートの編集" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "テーマを選択する" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "未知の種類" + +#: include/functions.php:3660 +#, fuzzy +msgid "Attachments" +msgstr "添付:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1249,7 +992,7 @@ msgstr "ファイル:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 #, fuzzy msgid "Default profile" msgstr "標準の記事制限" @@ -1268,7 +1011,7 @@ msgstr "" msgid "Log in" msgstr "ログイン" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "セッションの検査に失敗しました (IP が正しくない)" @@ -1285,7 +1028,7 @@ msgstr "この記事のタグ (カンマで区切ります):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1306,7 +1049,7 @@ msgstr "保存" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1545,7 +1288,7 @@ msgstr "選択:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1565,7 +1308,7 @@ msgstr "反転" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1654,7 +1397,8 @@ msgid "No starred articles found to display." msgstr "表示するお気に入りの記事が見つかりませんでした。" #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "表示する記事が見つかりません。手動でラベルに記事を割り当てるか(上の操作メニューを参照します)、フィルターを使うことができます。" #: classes/feeds.php:744 @@ -1710,7 +1454,7 @@ msgid "Login" msgstr "ログイン" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1941,7 +1685,7 @@ msgstr "[tt-rss] パスワード変更通知" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2122,7 +1866,7 @@ msgid "Save rule" msgstr "保存" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Add rule" msgstr "フィードカテゴリーを追加しています..." @@ -2141,7 +1885,7 @@ msgid "Save action" msgstr "パネル操作" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "フィード操作" @@ -2150,246 +1894,455 @@ msgstr "フィード操作" msgid "[No caption]" msgstr "[キャプションなし]" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "全体" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "インターフェース" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "高度" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "複製投稿の許可" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "自動的に既読として記事をマークする" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "ブラックリスト化したタグ" + +#: classes/pref/prefs.php:27 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "組み合わせモードで記事を自動的に展開する" + +#: classes/pref/prefs.php:28 +msgid "Mark articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "組み合わせモードで記事を自動的に展開する" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "フィード表示の組み合わせ" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "既読としてフィードのマーキングについて確認する" + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "表示する記事が見つかりません。" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "更新の間隔" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "既読として電子メールのダイジェストに含まれる記事を設定する" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "電子メールでのダイジェストを有効にする" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "フィードカテゴリーを有効にする" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "未読記事数によるフィードの並び替え" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "新規記事としての取り扱い期限 (単位: 時間)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "未読でないメッセージとフィードを隠す" + +#: classes/pref/prefs.php:42 +msgid "Show special feeds and labels when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "完全な日付の形式" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "次のフィードの表示をキャッチアップする" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "この日数よりあとの古い投稿を削除する (0 は無効です)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "未読記事を削除する" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "ヘッドラインの逆順 (古いものが上)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "短い日付の形式" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "ヘッドライン一覧に内容のプレビューを表示する" + +#: classes/pref/prefs.php:50 +#, fuzzy +msgid "Sort headlines by feed date" +msgstr "未読記事数によるフィードの並び替え" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "記事内に画像を表示しない" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "記事から安全でないタグを取り除く" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "テーマを選択する" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +#, fuzzy +msgid "Customize stylesheet" +msgstr "ユーザースタイルシートの URL" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "仮想フィードのグループヘッドライン" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "古いパスワードを空にできません。" -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "新しいパスワードを空にできません。" -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "パスワードが一致しません。" -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "設定を保存しました。" -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "不明なオプション: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 #, fuzzy msgid "Your personal data has been saved." msgstr "パスワードを変更しました。" -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "認証" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "個人データ" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "電子メール" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "アクセスレベル" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 #, fuzzy msgid "Save data" msgstr "保存" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "パスワードが標準のままです。\n" " 変更してください。" -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "現在のパスワード" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "新しいパスワード" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "新しいパスワード(確認)" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "パスワードを変更する" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "ユーザー名かパスワードが正しくありません" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(無効です)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "有効にする" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 #, fuzzy msgid "Customize" msgstr "ユーザースタイルシートの URL" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 #, fuzzy msgid "Register" msgstr "登録済み" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "設定を保存する" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 #, fuzzy msgid "Manage profiles" msgstr "フィルターを作成する" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "標準に戻す" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "説明" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "フィードデータの消去" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "フィードアイコンを有効にする" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "ユーザー名かパスワードが正しくありません" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 #, fuzzy msgid "Create profile" msgstr "フィルターを作成する" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(有効)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 #, fuzzy msgid "Remove selected profiles" msgstr "選択されたプロファイルを削除しますか?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 #, fuzzy msgid "Activate profile" msgstr "プロファイルを有効にする" @@ -2494,26 +2447,26 @@ msgstr "選択したフィードを削除しています..." msgid "Batch subscribe" msgstr "購読をやめる" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "カテゴリー:" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "フィードカテゴリーを追加しています..." -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "カテゴリーの編集" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "選択されたフィルターを削除しますか?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "カテゴリーの編集" + #: classes/pref/feeds.php:1309 #, fuzzy msgid "More actions..." @@ -2820,72 +2773,72 @@ msgstr "Tiny Tiny RSS に戻る" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "記事の日付" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "OPML エクスポート" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "インポート" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 #, fuzzy msgid "Could not import: incorrect schema version." msgstr "必要なスキーマファイルを見つけられませんでした。次のバージョンが必要です:" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "タグを編集する" msgstr[1] "タグを編集する" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "既にインポート済みです。" msgstr[1] "既にインポート済みです。" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "フィードは選択されていません。" msgstr[1] "フィードは選択されていません。" -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 #, fuzzy msgid "Prepare data" msgstr "保存" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -3086,161 +3039,151 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -#, fuzzy -msgid "Date syntax appears to be correct:" -msgstr "古いパスワードが不正確です。" - -#: js/functions.js:624 -#, fuzzy -msgid "Date syntax is incorrect." -msgstr "古いパスワードが不正確です。" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 #, fuzzy msgid "Upload complete." msgstr "更新済み記事" -#: js/functions.js:742 +#: js/functions.js:692 #, fuzzy msgid "Remove stored feed icon?" msgstr "保存したデータを削除する" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "フィードを削除しています..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "フィードが見つかりません。" -#: js/functions.js:774 +#: js/functions.js:724 #, fuzzy msgid "Please select an image file to upload." msgstr "フィードをひとつ選択してください" -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "読み込みんでいます。しばらくお待ちください..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "ラベルのキャプションを入力してください:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "ラベルが作成できません: キャプションが見当たりません。" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "フィードを購読する" -#: js/functions.js:868 +#: js/functions.js:818 #, fuzzy msgid "Subscribed to %s" msgstr "フィードを購読する:" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "購読できません: フィード URL が入力されていません。" -#: js/functions.js:933 +#: js/functions.js:883 #, fuzzy msgid "You are already subscribed to this feed." msgstr "カテゴリーから購読をやめることができません。" -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "フィルター" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "フィード操作" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "フィルターを作成する" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "フィードを購読する..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "%s の購読をやめますか?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "フィードを削除しています..." -#: js/functions.js:1373 +#: js/functions.js:1323 #, fuzzy msgid "Please enter category title:" msgstr "このアーティクルのノートを入力してください:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "アドレスの変更を試みています..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 #, fuzzy msgid "You can't edit this kind of feed." msgstr "フィードのこの種類を消去できません。" -#: js/functions.js:1610 +#: js/functions.js:1560 #, fuzzy msgid "Edit Feed" msgstr "フィードを編集する" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "フィードを保存しています..." -#: js/functions.js:1648 +#: js/functions.js:1598 #, fuzzy msgid "More Feeds" msgstr "さらなるフィード" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3251,28 +3194,28 @@ msgstr "さらなるフィード" msgid "No feeds are selected." msgstr "選択されたフィードはありません。" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 #, fuzzy msgid "Feeds with update errors" msgstr "フィードエディター" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 #, fuzzy msgid "Remove selected feeds?" msgstr "選択されたフィルターを削除しますか?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "選択されたフィルターを削除しています..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "ヘルプ" @@ -3648,147 +3591,157 @@ msgstr "記事のスコアを再計算しています..." msgid "New version available!" msgstr "Tiny Tiny RSS の新しいバージョンが利用できます!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "取り消し" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "記事のお気に入りを解除する" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "記事をお気に入りにする" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "非公開記事" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "公開記事" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "記事は選択されていません。" -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "選択した %d 件の記事を「%s」に設定しますか?" msgstr[1] "選択した %d 件の記事を「%s」に設定しますか?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "ラベルから選択した記事を削除しますか?" msgstr[1] "ラベルから選択した記事を削除しますか?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "選択した %d 件の記事を「%s」に設定しますか?" msgstr[1] "選択した %d 件の記事を「%s」に設定しますか?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "お気に入りの記事" msgstr[1] "お気に入りの記事" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "選択した %d 件の記事を「%s」に設定しますか?" msgstr[1] "選択した %d 件の記事を「%s」に設定しますか?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 #, fuzzy msgid "Edit article Tags" msgstr "タグを編集する" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "記事のタグを保存しています..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "選択された記事はありません。" -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "マークした記事が見つかりません" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "%d 件のマークした記事を既読として設定しますか?" msgstr[1] "%d 件のマークした記事を既読として設定しますか?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 #, fuzzy msgid "Open original article" msgstr "元の記事内容を表示する" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "タグの表示" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "お気に入りを切り替える" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "ラベルの割り当て" + +#: js/viewfeed.js:1938 #, fuzzy msgid "Remove label" msgstr "選択したラベルを削除しますか?" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 #, fuzzy msgid "Playing..." msgstr "フィード一覧を読み込んでいます..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 #, fuzzy msgid "Click to pause" msgstr "編集するにはクリック" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "このアーティクルのノートを入力してください:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "このアーティクルのノートを入力してください:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "すべての記事" @@ -3912,6 +3865,46 @@ msgstr "記事をお気に入りにする" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "題名" + +#~ msgid "Title or Content" +#~ msgstr "題名か内容" + +#~ msgid "Link" +#~ msgstr "リンク" + +#~ msgid "Content" +#~ msgstr "内容" + +#~ msgid "Article Date" +#~ msgstr "記事の日付" + +#, fuzzy +#~ msgid "Delete article" +#~ msgstr "記事を消去する" + +#~ msgid "Set starred" +#~ msgstr "お気に入りに設定する" + +#~ msgid "Assign tags" +#~ msgstr "タグの割り当て" + +#~ msgid "Modify score" +#~ msgstr "スコアを変更する" + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "フィードの更新までの標準間隔 (単位:分)" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "古いパスワードが不正確です。" + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "古いパスワードが不正確です。" + #, fuzzy #~ msgid "Refresh" #~ msgstr "再描画" diff --git a/locale/lv_LV/LC_MESSAGES/messages.mo b/locale/lv_LV/LC_MESSAGES/messages.mo index 520a5706c..16fcc959b 100644 Binary files a/locale/lv_LV/LC_MESSAGES/messages.mo and b/locale/lv_LV/LC_MESSAGES/messages.mo differ diff --git a/locale/lv_LV/LC_MESSAGES/messages.po b/locale/lv_LV/LC_MESSAGES/messages.po index 0e5fd6626..75c64e329 100644 --- a/locale/lv_LV/LC_MESSAGES/messages.po +++ b/locale/lv_LV/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-18 22:55+0300\n" "Last-Translator: Valdis Vītoliņš \n" "Language-Team: \n" @@ -253,8 +253,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Neizdevās SQL izņēmumu tests, pārbaudiet jūsu datu bāzes un PHP iestatījumus" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -264,10 +264,10 @@ msgstr "Neizdevās SQL izņēmumu tests, pārbaudiet jūsu datu bāzes un PHP ie #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -283,84 +283,83 @@ msgstr "Neizdevās SQL izņēmumu tests, pārbaudiet jūsu datu bāzes un PHP ie #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Ielādē, lūdzu gaidiet..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Sakļaut barotņu sarakstu" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Rādīt rakstus" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptīvs" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Visus rakstus" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Zvaigžņotos" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publicētos" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Nelasītos" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Nelasītos" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorēt novērtējumu" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Kārtot rakstus" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Noklusētais" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Atzīmēt barotni kā lasītu" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -369,112 +368,112 @@ msgstr "Atzīmēt barotni kā lasītu" msgid "Mark as read" msgstr "Atzīmēt kā lasītu" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Visi raksti" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Ir pieejama jauna Tiny Tiny RSS versija!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Darbības" -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Iestatījumi" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Meklēt" -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Barotnes darbības" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonēt barotni..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Rediģēt šo barotni..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Pārvērtēt barotni" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Atteikties" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Visas barotnes:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "(Ne)rādīt lasītās barotnes" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Citas darbības:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Pārslēgties uz īssavilkumu..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Radīt birku mākoni..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Pārslēgt zvaigžņošanu" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Atlasīt pēc iezīmēm..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Izveidot iezīmi" -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Izveidot filtru..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Isinājumtaustiņu palīdzība" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -483,8 +482,8 @@ msgstr "Atteikties" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Iestatījumi" @@ -509,8 +508,8 @@ msgid "Filters" msgstr "Filtri" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -580,10 +579,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS datu atjaunošanas skripts." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -600,604 +599,356 @@ msgstr[1] "%d arhivēti raksti" msgid "No feeds found." msgstr "Neatradu barotnes." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Īpaši" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Visas barotnes" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Zvaigžņotie raksti" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publicētie raksti" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Jaunākie raksti" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Arhivētie raksti" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Nesen lasītie raksti" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigācija" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Pēc noķeršanas rādīt nākamo barotni" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Atvērt sākotnējo rakstu" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Atvērt sākotnējo rakstu" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Rādīt meklēšanas logu" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Visus rakstus" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Pārslēgt zvaigžņošanu" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Pārslēgt publicēšanu" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Pārslēgt nelasītu" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Rediģēt iezīmes" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Atmest atlasītos rakstus" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Atmest lasītos rakstus" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Atvērt rakstu jaunā logā" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Iezīmēt lejup kā lasītus" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Iezīmēt augšup kā lasītus" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Viss izdarīts." -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Iezīmēt rakstu zem peles kursora" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Nosūtīt rakstu uz e-pastu" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Aizvērt rakstu" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Pārslēgt publicēšanu" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Apgriezt rakstu iezīmēšanu" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Iezīmēt visus rakstus" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Iezīmēt nelasītos rakstus" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Uzlikt zvaigzni" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Iezīmēt publicētos rakstus" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Apgriezt rakstu iezīmēšanu" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Neatzīmēt rakstus" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Barotne" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Atjaunot aktīvo barotni" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "(Ne)rādīt lasītās barotnes" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Abonēt barotni" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Rediģēt barotni" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Apgriezt virsrakstu secību" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Atslēgt atjaunojumus" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Atzīmēt visas barotnes kā lasītas" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Ievietot kategorijā:" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Pārslēgt publicēšanu" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Pārslēgt publicēšanu" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Doties uz..." -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Iezīmju mākonis" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Citas barotnes" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Izveidot etiķeti" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Izveidot filtru" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Sakļaut sānjoslu" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Rādīt meklēšanas logu" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Meklēšanas rezultāti: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Klikšķiniet, lai atskaņotu" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Atskaņot" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " -msgstr "–" - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "nav iezīmju" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Rediģēt šī raksta iezīmes" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Sākotnējais no:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Barotnes URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Aizvērt šo logu" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(rediģēt piezīmi)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "nezināms tips" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Pielikumi" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Virsraksts" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Virsraksts vai saturs" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Saite" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Saturs" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Raksta datums" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Dzēst rakstu" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Uzlikt zvaigzni" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publicēt rakstu" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Pievienot iezīmi" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Pievienot etiķeti" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Mainīt novērtējumu" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Vispārīgi" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Saskarne" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Paplašināti" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Šī ir vērtīga iespēja, ja izmantojat planētas tipa agregatorus ar parklājošiem datiem. Kad tas ir atslēgts, tas no visām līdzīgām barotnēm parāda tikai vienu unikālu rakstu." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Atsevišķa virsraksta un satura vietā parāda paplašinātu barotnes rakstu sarakstu" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automātiski atver nākamo barotni, kad vienā visi raksti ir atzīmēti kā lasīti" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Šī iespēja ļauj nosūtīt ikdienas jauno (vai nelasīto) rakstu īssavilkumu uz norādīto e-pasta adresi" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Šī iespēja ļauj automātiski atzīmēt rakstu kā lasītu, kad jūs pārtinat tā saturu." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Lasot rakstus, atmest visus, izņemot pašus svarīgākos HTML tagus." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Kad tiek automātiski noteikti rakstu tagi, šie tagi netiks piemēroti (ar komatu atdalīts saraksts)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Ja šī iespēja ir ieslēgta, īpašo barotņu un iezīmju virsraksti tiek grupēti pēc barotnēm" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Pielāgot CSS stilu lapu" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Kārtošanai izmantot barotnē norādīto raksta laiku nevis tā importēšanas laiku" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Klikšķiniet, lai reģistrētu jūsu klienta SSL sertifikātu tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Izmanto UTC laika zonu" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Dzēst rakstus pēc norādītā dienu skaita (0 – atceļ)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Noklusētais barotņu atjaunošanas intervāls " - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Vienlaicīgi parādīto rakstu skaits" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Atļaut dublētus ziņojumus" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Iespējot barotņu kategorijas" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Rādīt virsrakstu sarakstā satura priekšskatījumu" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Īsais datumu formāts" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Garais datumu formāts" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinēts barotņu skatījums" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Slēpt barotnes ar izlasītiem ziņojumiem" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Pēc noķeršanas rādīt nākamo barotni" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Kārtot barotnes pēc nelasīto ziņu skaita" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Apgriezt virsrakstu secību (vecākos vispirms)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Iespējot īssavilkuma sūtīšanu pa e-pastu" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Apstiprināt barotnes atzīmēšanu kā izlasītu" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Automātiski atzīmēt rakstus kā izlasītus" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Izdzrest nedrošos tagus no rakstiem" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Tagu melnais saraksts" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maksimālais svaigo rakstu laiks (stundās)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Atzīmēt īssavilkuma rakstus e-pastā kā lasītus" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Automātiski rādīt rakstus kombinētajā režīmā" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Dzēst nelasītos rakstus" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Rādīt īpašās barotnes kad tiek slēptas izlasītās" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Apvienot virsrakstus virtuālās barotnēs" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Nerādīt rakstos attēlus" +msgstr "–" -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Iespējot ārēju API" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "nav iezīmju" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Lietotāja laika zona" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Rediģēt šī raksta iezīmes" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Pielāgot stilu lapu" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Sākotnējais no:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Kārtot virsrakstus pēc barotnes laika" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Barotnes URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Pieteikties ar SSL sertifikātu" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Aizvērt šo logu" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Censties nosūtīt īssavilkumus ap norādīto laiku" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(rediģēt piezīmi)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Pievienot rakstu iezīmes automātiski" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "nezināms tips" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Izvēlieties tēmu" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Pielikumi" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1229,7 +980,7 @@ msgstr "Profils:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Noklusētais profils" @@ -1247,7 +998,7 @@ msgstr "" msgid "Log in" msgstr "Pieteikties" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Neizdevās validēt sesiju (mainījusies IP adrese)" @@ -1263,7 +1014,7 @@ msgstr "Šī raksta iezīmes (atdalītas ar komatiem):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1284,7 +1035,7 @@ msgstr "Saglabāt" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1509,7 +1260,7 @@ msgstr "Iezīmēt:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1529,7 +1280,7 @@ msgstr "Apgriezt" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1613,7 +1364,8 @@ msgid "No starred articles found to display." msgstr "Nav zvaigžņotu rakstu, ko rādīt." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Netika atrasti parādāmi raksti. Jūs varat pievienot rakstus etiķetēm manuāli (skatiet darbību izvēlni), vai arī ar filtru." #: classes/feeds.php:744 @@ -1667,7 +1419,7 @@ msgid "Login" msgstr "Pieteikšanās" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1891,7 +1643,7 @@ msgstr "[tt-rss] paroles maiņas paziņojums" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2060,7 +1812,7 @@ msgid "Save rule" msgstr "Saglabāt likumu" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Pievienot likumu" @@ -2077,7 +1829,7 @@ msgid "Save action" msgstr "Saglabāt darbību" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Pievienot darbību" @@ -2086,230 +1838,436 @@ msgstr "Pievienot darbību" msgid "[No caption]" msgstr "Uzraksts" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Vispārīgi" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Saskarne" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Paplašināti" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Atļaut dublētus ziņojumus" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Pievienot rakstu iezīmes automātiski" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Tagu melnais saraksts" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Kad tiek automātiski noteikti rakstu tagi, šie tagi netiks piemēroti (ar komatu atdalīts saraksts)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Automātiski atzīmēt rakstus kā izlasītus" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Šī iespēja ļauj automātiski atzīmēt rakstu kā lasītu, kad jūs pārtinat tā saturu." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Automātiski rādīt rakstus kombinētajā režīmā" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinēts barotņu skatījums" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Atsevišķa virsraksta un satura vietā parāda paplašinātu barotnes rakstu sarakstu" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Apstiprināt barotnes atzīmēšanu kā izlasītu" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Vienlaicīgi parādīto rakstu skaits" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Noklusētais intervāls" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Atzīmēt īssavilkuma rakstus e-pastā kā lasītus" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Iespējot īssavilkuma sūtīšanu pa e-pastu" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Šī iespēja ļauj nosūtīt ikdienas jauno (vai nelasīto) rakstu īssavilkumu uz norādīto e-pasta adresi" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Censties nosūtīt īssavilkumus ap norādīto laiku" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Izmanto UTC laika zonu" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Iespējot ārēju API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Iespējot barotņu kategorijas" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Kārtot barotnes pēc nelasīto ziņu skaita" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maksimālais svaigo rakstu laiks (stundās)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Slēpt barotnes ar izlasītiem ziņojumiem" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Rādīt īpašās barotnes kad tiek slēptas izlasītās" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Garais datumu formāts" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Pēc noķeršanas rādīt nākamo barotni" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automātiski atver nākamo barotni, kad vienā visi raksti ir atzīmēti kā lasīti" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Dzēst rakstus pēc norādītā dienu skaita (0 – atceļ)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Dzēst nelasītos rakstus" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Apgriezt virsrakstu secību (vecākos vispirms)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Īsais datumu formāts" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Rādīt virsrakstu sarakstā satura priekšskatījumu" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Kārtot virsrakstus pēc barotnes laika" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Kārtošanai izmantot barotnē norādīto raksta laiku nevis tā importēšanas laiku" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Pieteikties ar SSL sertifikātu" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klikšķiniet, lai reģistrētu jūsu klienta SSL sertifikātu tt-rss" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Nerādīt rakstos attēlus" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Izdzrest nedrošos tagus no rakstiem" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Lasot rakstus, atmest visus, izņemot pašus svarīgākos HTML tagus." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Izvēlieties tēmu" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Pielāgot stilu lapu" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Pielāgot CSS stilu lapu" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Lietotāja laika zona" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Apvienot virsrakstus virtuālās barotnēs" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Ja šī iespēja ir ieslēgta, īpašo barotņu un iezīmju virsraksti tiek grupēti pēc barotnēm" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Vecā parole nedrīkst būt tukša" -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Jaunā parole nedrīkst būt tukša" -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Ievadītās paroles nav vienādas." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Funkiju neatbalsta autentifikācijas modulis." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Iestatījumi ir saglabāti." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Nezināma iespēja %s." -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Jūsu personīgie dati ir saglabāti." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Personīgie dati/autentifikācija" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Personīgie dati" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Vārds un uzvārds" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-pasts" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Pieejas līmenis" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Saglabāt datus" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Jums ir norādīta noklusētā parole, lūdzu nomainiet to." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Vecā parole" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Jaunā parole" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Apstipriniet paroli" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Nomainīt paroli" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Vienreizlietojamā parole/autentifikācija" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Ievadiet savu paroli" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Atslēgt vienreizlietojamo paroli" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Lai to lietotu, jums būs nepieciešams savietojams autentifikators. Jūsu paroles maiņa automātiski atslēgs vienreizlietojamo paroli." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Ar autentifikācijas moduli noskenējiet sekojošo kodu:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Esmu noskenējis šo kodu un vēlos iespējot vienreizlietojamo paroli" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Iespējot vienreizlietojamo paroli" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Pielāgot" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Reģistrēt" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Attīrīt" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Tekošā laika zona ir: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Saglabāt iestatījumus" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Pārvaldīt profilus" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Atstatīt uz noklusētajiem" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Dzēst barotņu datus" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Iespējot barotņu kategorijas" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Nepareiza parole" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Jūs varat aizstāt krāsas, fontus un izklājumu, šobrīd izmantotā CSS vietā izmantojot savus pielāgojumus. Paraugu varat ņemt no šī faila." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Izveidot profilu" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktīvs)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Dzēst iezīmētos profilus" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Aktivizēt profilu" @@ -2403,22 +2361,22 @@ msgstr "Rediģēt izvēlētās barotnes" msgid "Batch subscribe" msgstr "Pasūtījuma pakotne" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorijas" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Pievienot kategoriju" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "(Ne)slēpt tukšās kategorijas" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Dzēst izvēlētās" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "(Ne)slēpt tukšās kategorijas" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Papildu iespējas..." @@ -2706,68 +2664,68 @@ msgstr "Pasūtīt Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Izmantojiet grāmatzīmes lai publicētu izvēlētās lapas Tiny Tiny RSS" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Imports un eksports" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Raksta arhīvs" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "Jūs varat eksportēt un importēt jūsu zvaigžņotos un arhivētos rakstus, lai saglabātu tos pārejot uz citu tt-rss instanci." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Eksportēt manus datus" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Imports" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Neizdevās importēt: nepareiza shēmas versija." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Neizdevās importēt: neatpazīts dokumenta formāts." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Rediģēt raksta piezīmes" msgstr[1] "Rediģēt raksta piezīmes" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Nav izvēlēta barotne." msgstr[1] "Nav izvēlēta barotne." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Neizdevās ielādēt XML dokumentu." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Sagatavo datus" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, fuzzy, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2951,147 +2909,139 @@ msgstr "Vai tiešām vēlaties ziņot par šo izņēmumu tt-rss.org? Ziņojumā msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Datuma sintakse ir pareiza:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Datuma sintakse ir nepareiza." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Dzēst saglabāto barotnes ikonu?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Dzēst saglabāto barotnes ikonu?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Barotne netika atrasta." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Lūdzu norādiet augšuplādējamo attēla failu." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Augšuplādēt šai barotnei jaunu ikonu?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Ielādē, lūdzu gaidiet..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Lūdzu ievadiet etiķetes uzrakstu:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Neizdevās izveidot etiķeti: nav uzraksta." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Pasūtīt barotni" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Pasūtīta barotne %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Norādītais URL ir nepareizs." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Norādītajā URL nav nevienas barotnes." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Neizdevās lejuplādēt norādīto URL: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Jūs jau esat pasūtījis šo barotni." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Rediģēt likumu" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Rediģēt darbību" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Izveidot filtru" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Atstatīt pasūtīšanu? Tiny Tiny RSS mēģinās savākt informāciju no šīs barotnes kārtējā atjaunojuma laikā." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Abonēt barotni..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Atteikt pasūtījumu %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Lūdzu ievadiet kategorijas virsrakstu:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Izveidot jaunu šīs barotnes sindikācijas adresi?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Jūs nevarat rediģēt šāda veida barotni." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Rediģēt barotni" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Saglabāt datus" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Vairāk barotnes" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3102,26 +3052,26 @@ msgstr "Vairāk barotnes" msgid "No feeds are selected." msgstr "Nav izvēlēta barotne" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Dzēst izvēlētās barotnes no arhīva? Barotnes, kurās ir raksti, netiks dzēstas." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Barotnes ar atjaunošanas kļūdām" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Dzēst izvēlētās barotnes?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Dzēst izvēlētās barotnes?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Palīdzība" @@ -3491,140 +3441,150 @@ msgstr "Pārvērtēt rakstus" msgid "New version available!" msgstr "Ir pieejama jauna versija!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Atcelt meklēšanu" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Atzvaigžņot rakstu" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Zvaigžņot rakstu" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Atpublicēt rakstu" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publicēt rakstu" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nav norādīts raksts." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Dzēst %d izvēlētos rakstus %s?" msgstr[1] "Dzēst %d izvēlētos rakstus %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Dzēst %d izvēlētos rakstus?" msgstr[1] "Dzēst %d izvēlētos rakstus?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Arhivēt %d izvēlētos rakstus %s?" msgstr[1] "Arhivēt %d izvēlētos rakstus %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Pārvietot %d arhivētos rakstus atpakaļ?" msgstr[1] "Pārvietot %d arhivētos rakstus atpakaļ?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Atzīmēt %d izvēlētos rakstus %s kā lasītus?" msgstr[1] "Atzīmēt %d izvēlētos rakstus %s kā lasītus?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Rediģēt rakstu iezīmes" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Rediģēt rakstu iezīmes" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Nav izvēlēts raksts." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Nav atrasti iezīmējamie raksti" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Iezīmēt %d rakstus kā lasītus?" msgstr[1] "Iezīmēt %d rakstus kā lasītus?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Atvērt sākotnējo rakstu" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Parādīt URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Pārslēgt zvaigžņošanu" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Pievienot etiķeti" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Dzēst etiķeti" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Atskaņo..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Klikšķiniet, lai apturētu" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Ievadiet jauno vērtējumu izvēlētajiem rakstiem:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Ievadiet jaunu vērtējumu šim rakstam:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Visus rakstus" @@ -3746,6 +3706,45 @@ msgstr "Kopīgot ar URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Lūdzu neaizveriet logu līdz ir pabeigta atjaunošana. Pirms turpināt, izveidojiet jūsu tt-rss mapes rezerves kopiju." +#~ msgid "Title" +#~ msgstr "Virsraksts" + +#~ msgid "Title or Content" +#~ msgstr "Virsraksts vai saturs" + +#~ msgid "Link" +#~ msgstr "Saite" + +#~ msgid "Content" +#~ msgstr "Saturs" + +#~ msgid "Article Date" +#~ msgstr "Raksta datums" + +#~ msgid "Delete article" +#~ msgstr "Dzēst rakstu" + +#~ msgid "Set starred" +#~ msgstr "Uzlikt zvaigzni" + +#~ msgid "Assign tags" +#~ msgstr "Pievienot iezīmi" + +#~ msgid "Modify score" +#~ msgstr "Mainīt novērtējumu" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Šī ir vērtīga iespēja, ja izmantojat planētas tipa agregatorus ar parklājošiem datiem. Kad tas ir atslēgts, tas no visām līdzīgām barotnēm parāda tikai vienu unikālu rakstu." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Noklusētais barotņu atjaunošanas intervāls " + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Datuma sintakse ir pareiza:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Datuma sintakse ir nepareiza." + #, fuzzy #~ msgid "(%d feed)" #~ msgid_plural "(%d feeds)" diff --git a/locale/nb_NO/LC_MESSAGES/messages.mo b/locale/nb_NO/LC_MESSAGES/messages.mo index 0bc2eca86..75faeaf3b 100644 Binary files a/locale/nb_NO/LC_MESSAGES/messages.mo and b/locale/nb_NO/LC_MESSAGES/messages.mo differ diff --git a/locale/nb_NO/LC_MESSAGES/messages.po b/locale/nb_NO/LC_MESSAGES/messages.po index 6924e2bb7..7314b877e 100644 --- a/locale/nb_NO/LC_MESSAGES/messages.po +++ b/locale/nb_NO/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS 1.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2009-05-02 00:10+0100\n" "Last-Translator: Christian Lomsdalen \n" "Language-Team: Norwegian Bokmål \n" @@ -254,8 +254,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine." #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -265,10 +265,10 @@ msgstr "SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine. #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -284,86 +284,85 @@ msgstr "SQL escaping testen feilen, sjekk database og PHP konfigurasjonene dine. #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "laster, vennligst vent" -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Skjul nyhetskanalsslisten" -#: index.php:171 +#: index.php:169 #, fuzzy msgid "Show articles" msgstr "Lagrede artikler" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Tilpasset" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Alle artikler" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Favoritter" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publisert" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Ulest" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Ulest" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorer poenggivning" -#: index.php:184 +#: index.php:182 #, fuzzy msgid "Sort articles" msgstr "Lagrede artikler" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Standard" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Marker nyhetsstrøm som lest" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -372,114 +371,114 @@ msgstr "Marker nyhetsstrøm som lest" msgid "Mark as read" msgstr "Marker som lest" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Alle artikler" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Handlinger..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Innstillinger" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Søk..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Nyhetsstrømshandlinger:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonner på nyhetsstrøm..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Rediger nyhetsstrømmen..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Sett poeng på nytt for nyhetskanalene" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Avabonner" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Alle nyhetsstrømmer:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Skjul/vis leste nyhetsstrømmer" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Andre handlinger:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "" -#: index.php:243 +#: index.php:241 #, fuzzy msgid "Show tag cloud..." msgstr "Tag-sky" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Tillatt endringer i kategorirekkefølgen?" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Lag merkelapp..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Lag filter..." -#: index.php:248 +#: index.php:246 #, fuzzy msgid "Keyboard shortcuts help" msgstr "Tastatursnarveier" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -488,8 +487,8 @@ msgstr "Logg ut" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Innstillinger" @@ -514,8 +513,8 @@ msgid "Filters" msgstr "Filtre" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -586,10 +585,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS-databasen er oppdatert" #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -606,624 +605,367 @@ msgstr[1] "Favorittartikler" msgid "No feeds found." msgstr "Ingen nyhetsstrømmer ble funnet." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Snarveier" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alle Nyhetsstrømmer" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Favorittartikler" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publiserte artikler" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Ferske artikler" -#: include/functions.php:1813 +#: include/functions.php:1814 #, fuzzy msgid "Archived articles" msgstr "Lagrede artikler" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigasjon" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Generert nyhetsstrøm" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Vis opprinnelig artikkelinnhold" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Vis opprinnelig artikkelinnhold" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Vis søkevinduet" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Alle artikler" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Sett som favoritt" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Sett som publisert" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Sett som ulest" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Endre stikkord" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Fjerne merkede artikler fra merkelappen?" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Publiser artiklen" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Åpne artikkel i nytt nettleservindu" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 #, fuzzy msgid "Mark below as read" msgstr "Marker som lest" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 #, fuzzy msgid "Mark above as read" msgstr "Marker som lest" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Alt ferdig." -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Velg artikkelen under musepekeren" -#: include/functions.php:1899 +#: include/functions.php:1900 #, fuzzy msgid "Email article" msgstr "Alle artikler" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Fjern artikler" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Tillatt endringer i kategorirekkefølgen?" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Handlinger for aktive artikler" -#: include/functions.php:1904 +#: include/functions.php:1905 #, fuzzy msgid "Select all articles" msgstr "Fjern artikler" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Slett uleste artikler" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Sett som favorittartikkel" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Slett uleste artikler" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Handlinger for aktive artikler" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Fjern artikler" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Nyhetsstrøm" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Oppdater aktive nyhetsstrømmer" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Skjul/vis leste nyhetsstrømmer" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Abonner på nyhetsstrøm" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Rediger nyhetsstrømmen" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Motsatt titteloversikt (eldste først)" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Alle nyhetsstrømmer er oppdatert" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Marker alle nyhetsstrømmer som lest" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Velg for å slå sammen kategorien" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Tillatt endringer i kategorirekkefølgen?" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Tillatt endringer i kategorirekkefølgen?" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Gå til..." -#: include/functions.php:1924 +#: include/functions.php:1925 #, fuzzy msgid "Fresh" msgstr "Oppdater" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tag-sky" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Andre:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Lag merkelapp" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Lag filter" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Skjul nyhetskanalsslisten" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Vis søkevinduet" -#: include/functions.php:2418 +#: include/functions.php:2419 #, fuzzy, php-format msgid "Search results: %s" msgstr "Søkeresultat" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 #, fuzzy msgid "Click to play" msgstr "Trykk for å endre" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr "-" -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "Ingen stikkord" -#: include/functions.php:3059 +#: include/functions.php:3060 #: classes/feeds.php:686 msgid "Edit tags for this article" msgstr "Rediger stikkordene for denne artikkelen" -#: include/functions.php:3088 +#: include/functions.php:3089 #: classes/feeds.php:642 #, fuzzy msgid "Originally from:" msgstr "Vis opprinnelig artikkelinnhold" -#: include/functions.php:3101 +#: include/functions.php:3102 #: classes/feeds.php:655 #: classes/pref/feeds.php:540 #, fuzzy msgid "Feed URL" msgstr "Nyhetsstrøm" -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Lukk dette vinduet" - -#: include/functions.php:3368 -#, fuzzy -msgid "(edit note)" -msgstr "Rediger notat" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "Ukjent type" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "Vedlegg:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Tittel" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Tittel eller innhold" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Lenke" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Innhold" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Artikkeldato" - -#: include/localized_schema.php:9 -#, fuzzy -msgid "Delete article" -msgstr "Fjern artikler" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Sett som favorittartikkel" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publiser artiklen" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Tildel stikkord" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Tildel stikkord" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Generelt" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Grensesnitt" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avansert" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Dette valget er brukervennlig hvis du leser flere globale nyhetsstrømssamlere som har delvis overlappende brukerbase. Når denne er avskrudd kan samme post fra flere forskjellige nyhetsstrømmer vises på en gang." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Viser en utvidet liste over nyhetsstrømsartikler isteden for en separat visning av titler og artikler." - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Dette valget muliggjør utsendingen av daglige sammendrag over nye (og uleste) tittler til din e-postadresse" - -#: include/localized_schema.php:25 -#, fuzzy -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Dette valge muliggjør markeringen av artikler som leste automatisk i kombinert modus, mens du blar i artikkellisten (med unntak for ferske artikler nyhetsstrømmen)." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Fjern alle HTML-koder utenom de mest vanlige når artikler leses." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Når stikkord blir automatisk funnet i artikler skal følgende stikkord ikke bli oppdaget (komma-separert liste)" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Med dette valget haket av så vil overskriftene i spesielle nyhetskanaler og merkelapper grupperes etter nyhetskanalene" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Slett gamle poster etter så mange dager (0 - fjerner denne funksjonen)" - -#: include/localized_schema.php:35 -#, fuzzy -msgid "Default interval between feed updates" -msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" - -#: include/localized_schema.php:36 -#, fuzzy -msgid "Amount of articles to display at once" -msgstr "Ingen artikler funnet som kan vises" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Tillatt duplikate artikler" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Tillatt kategorisering av nyhetsstrømmer" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Vis innholdsforhåndsvisning i titteloversikten" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Kort datoformat" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Langt datoformat" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinert nyhetsstrømsvisning" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Skjul nyhetsstrømmer med ingen uleste meldinger" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Ved oppdatering vis neste nyhetsstrøm" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Motsatt titteloversikt (eldste først)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Tillatt e-postsammendrag" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Bekreft markeringen av nyhetsstrøm som lest" - -#: include/localized_schema.php:49 -#, fuzzy -msgid "Automatically mark articles as read" -msgstr "Utvid artikler automatisk i kombinert modus" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Fjern utrygge html-koder fra artiklene" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Svartelistede stikkord" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maksimal alder på ferske artikler (i timer)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Marker artikler i e--postsammendrag som leste" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Utvid artikler automatisk i kombinert modus" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Slett uleste artikler" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Vis snarveier selv om leste nyhetskanaler skjules" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Grupper overskriftene i virtuelle nyhetskanaler" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Ikke vis bilder i artiklene" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -#, fuzzy -msgid "Customize stylesheet" -msgstr "URL til brukerbestemt utseendemal (CSS)" - -#: include/localized_schema.php:62 -#, fuzzy -msgid "Sort headlines by feed date" -msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Lukk dette vinduet" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "" +#: include/functions.php:3369 +#, fuzzy +msgid "(edit note)" +msgstr "Rediger notat" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "Ukjent type" -#: include/localized_schema.php:65 +#: include/functions.php:3660 #, fuzzy -msgid "Assign articles to labels automatically" -msgstr "Marker artikler som leste automatisk" - -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Velg utseende" +msgid "Attachments" +msgstr "Vedlegg:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1256,7 +998,7 @@ msgstr "Fil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 #, fuzzy msgid "Default profile" msgstr "Standard artikkelbegrensning" @@ -1275,7 +1017,7 @@ msgstr "" msgid "Log in" msgstr "Logg inn" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Sesjonen kunne ikke valideres (feil IP)" @@ -1292,7 +1034,7 @@ msgstr "Denne artikkelens stikkord (separert med kommaer):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1313,7 +1055,7 @@ msgstr "Lagre" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1551,7 +1293,7 @@ msgstr "Velg:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1571,7 +1313,7 @@ msgstr "Motsatt" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1660,7 +1402,8 @@ msgid "No starred articles found to display." msgstr "Ingen markerte artikler som kan vises" #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Ingen artikler ble funnet. Du kan gi artikler merkelapper manuelt (se aksjon-menyen ovenfor) eller bruke et filter." #: classes/feeds.php:744 @@ -1716,7 +1459,7 @@ msgid "Login" msgstr "Logg inn" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1947,7 +1690,7 @@ msgstr "[tt-rss] Varsel om endring av passord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2127,7 +1870,7 @@ msgid "Save rule" msgstr "Lagre" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Add rule" msgstr "Legger til kategori for nyhetsstrømmer" @@ -2146,7 +1889,7 @@ msgid "Save action" msgstr "Panelhandlinger" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "Nyhetsstrømshandlinger" @@ -2155,247 +1898,459 @@ msgstr "Nyhetsstrømshandlinger" msgid "[No caption]" msgstr "Ingen bildetekst" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generelt" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Grensesnitt" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avansert" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Tillatt duplikate artikler" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "Marker artikler som leste automatisk" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Svartelistede stikkord" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Når stikkord blir automatisk funnet i artikler skal følgende stikkord ikke bli oppdaget (komma-separert liste)" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "Utvid artikler automatisk i kombinert modus" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Dette valge muliggjør markeringen av artikler som leste automatisk i kombinert modus, mens du blar i artikkellisten (med unntak for ferske artikler nyhetsstrømmen)." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Utvid artikler automatisk i kombinert modus" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinert nyhetsstrømsvisning" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Viser en utvidet liste over nyhetsstrømsartikler isteden for en separat visning av titler og artikler." + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Bekreft markeringen av nyhetsstrøm som lest" + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "Ingen artikler funnet som kan vises" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Standard intervall:" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Marker artikler i e--postsammendrag som leste" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Tillatt e-postsammendrag" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Dette valget muliggjør utsendingen av daglige sammendrag over nye (og uleste) tittler til din e-postadresse" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Tillatt kategorisering av nyhetsstrømmer" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maksimal alder på ferske artikler (i timer)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Skjul nyhetsstrømmer med ingen uleste meldinger" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Vis snarveier selv om leste nyhetskanaler skjules" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Langt datoformat" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Ved oppdatering vis neste nyhetsstrøm" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Slett gamle poster etter så mange dager (0 - fjerner denne funksjonen)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Slett uleste artikler" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Motsatt titteloversikt (eldste først)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Kort datoformat" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Vis innholdsforhåndsvisning i titteloversikten" + +#: classes/pref/prefs.php:50 +#, fuzzy +msgid "Sort headlines by feed date" +msgstr "Sorter nyhetsstrømer ut i fra antall uleste artikler" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Ikke vis bilder i artiklene" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Fjern utrygge html-koder fra artiklene" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Fjern alle HTML-koder utenom de mest vanlige når artikler leses." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Velg utseende" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +#, fuzzy +msgid "Customize stylesheet" +msgstr "URL til brukerbestemt utseendemal (CSS)" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Grupper overskriftene i virtuelle nyhetskanaler" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Med dette valget haket av så vil overskriftene i spesielle nyhetskanaler og merkelapper grupperes etter nyhetskanalene" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Gammelt passord kan ikke være blankt." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Nytt passord kan ikke vært blankt." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Innskrivne passord matcher ikke." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Konfigurasjonen er lagret." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Ukjent valg: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 #, fuzzy msgid "Your personal data has been saved." msgstr "Passord har blitt endret." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "Autentifisering" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Personlig informasjon" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-post" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Tilgangsnivå" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 #, fuzzy msgid "Save data" msgstr "Lagre" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "Passordet ditt er et standardpassord, \n" "\t\t\t\t\t\tVennligst bytt." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Gammelt passord" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nytt passord" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Bekreft passord" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Endre passord" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "Feil brukernavn og/eller passord" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(Avskrudd)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Tillatt" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 #, fuzzy msgid "Customize" msgstr "URL til brukerbestemt utseendemal (CSS)" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 #, fuzzy msgid "Register" msgstr "Registrert" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Lagre konfigurasjonen" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 #, fuzzy msgid "Manage profiles" msgstr "Lag filter" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Tilbake til standard" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "beskrivelse" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Slett nyhetsstrømsdata" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Bruk nyhetsstrømsikoner" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "Feil brukernavn og/eller passord" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 #, fuzzy msgid "Create profile" msgstr "Lag filter" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 #, fuzzy msgid "(active)" msgstr "Tilpasset" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 #, fuzzy msgid "Remove selected profiles" msgstr "Fjerne valgte filtre?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 #, fuzzy msgid "Activate profile" msgstr "Fjerne valgte filtre?" @@ -2499,26 +2454,26 @@ msgstr "Sletter den valgte nyhetsstrømmen..." msgid "Batch subscribe" msgstr "Avabonner" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "Kategori:" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "Legger til kategori for nyhetsstrømmer" -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "Rediger kategorier" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "Fjerne valgte filtre?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Rediger kategorier" + #: classes/pref/feeds.php:1309 #, fuzzy msgid "More actions..." @@ -2830,72 +2785,72 @@ msgstr "Returner til Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "Artikkeldato" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "Eksporter OPML" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importer" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 #, fuzzy msgid "Could not import: incorrect schema version." msgstr "Kunne ikke finne den nødvendige skjemafilen, nødvendig versjon:" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Endre Stikkord" msgstr[1] "Endre Stikkord" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "Allerede importert." msgstr[1] "Allerede importert." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Ingen valgt nyhetsstrøm" msgstr[1] "Ingen valgt nyhetsstrøm" -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 #, fuzzy msgid "Prepare data" msgstr "Lagre" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -3096,160 +3051,150 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -#, fuzzy -msgid "Date syntax appears to be correct:" -msgstr "Gammelt passord er feil" - -#: js/functions.js:624 -#, fuzzy -msgid "Date syntax is incorrect." -msgstr "Gammelt passord er feil" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 #, fuzzy msgid "Upload complete." msgstr "Oppdaterte artikler" -#: js/functions.js:742 +#: js/functions.js:692 #, fuzzy msgid "Remove stored feed icon?" msgstr "Fjern lagrede data" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Fjerner nyhetsstrøm..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Nyhetsstrømmen ble ikke funnet" -#: js/functions.js:774 +#: js/functions.js:724 #, fuzzy msgid "Please select an image file to upload." msgstr "Vennligst velg en nyhetsstrøm" -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "laster, vennligst vent" -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Vennligst skriv inn merkelappstekst:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Kan ikke skape merkelapp, mangler overskrift." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Abonner på nyhetsstrøm" -#: js/functions.js:868 +#: js/functions.js:818 #, fuzzy msgid "Subscribed to %s" msgstr "Abonnerer på følgende nyhetsstrømmer:" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "Kan ikke abonnere: Ingen nyhetsstrømsadresse er blitt gitt" -#: js/functions.js:933 +#: js/functions.js:883 #, fuzzy msgid "You are already subscribed to this feed." msgstr "Du kan ikke fjerne abonnement fra kategorien." -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "Filtre" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "Nyhetsstrømshandlinger" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Lag filter" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Abonner på nyhetsstrøm..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Fjerne abonnement på %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Fjerner nyhetsstrøm..." -#: js/functions.js:1373 +#: js/functions.js:1323 #, fuzzy msgid "Please enter category title:" msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Prøver å endre adressen..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Du kan ikke endre denne typen nyhetsstrøm" -#: js/functions.js:1610 +#: js/functions.js:1560 #, fuzzy msgid "Edit Feed" msgstr "Rediger nyhetsstrømmen" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Lagrer Nyhetsstrøm" -#: js/functions.js:1648 +#: js/functions.js:1598 #, fuzzy msgid "More Feeds" msgstr "Flere nyhetsstrømmer" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3260,28 +3205,28 @@ msgstr "Flere nyhetsstrømmer" msgid "No feeds are selected." msgstr "Ingen nyhetsstrømmer er valgt" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 #, fuzzy msgid "Feeds with update errors" msgstr "Oppdateringsfeil" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 #, fuzzy msgid "Remove selected feeds?" msgstr "Fjerne valgte filtre?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Fjerner valgte filtre..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Hjelp" @@ -3657,147 +3602,157 @@ msgstr "Endrer poengsummen for artiklene..." msgid "New version available!" msgstr "Ny versjon av Tiny Tiny Rss er tilgjengelig!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Avbryt" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Fjern favorittmerkingen fra artiklen" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Marker artikkel som favoritt" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Fjern publiseringen av artikkelen." -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publiser artiklen" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Ingen artikler er valgt." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Marker %d valgte artikler i %s som leste?" msgstr[1] "Marker %d valgte artikler i %s som leste?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Fjerne merkede artikler fra merkelappen?" msgstr[1] "Fjerne merkede artikler fra merkelappen?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Marker %d valgte artikler i %s som leste?" msgstr[1] "Marker %d valgte artikler i %s som leste?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Favorittartikler" msgstr[1] "Favorittartikler" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Marker %d valgte artikler i %s som leste?" msgstr[1] "Marker %d valgte artikler i %s som leste?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 #, fuzzy msgid "Edit article Tags" msgstr "Endre Stikkord" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Lagrer artikkelens kategorier..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Ingen artikkel er valgt." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Ingen artikler funnet som kan markeres" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Marker %d artikkel/artikler som leste?" msgstr[1] "Marker %d artikkel/artikler som leste?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 #, fuzzy msgid "Open original article" msgstr "Vis opprinnelig artikkelinnhold" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Vis stikkord" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Sett som favoritt" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Tildel stikkord" + +#: js/viewfeed.js:1938 #, fuzzy msgid "Remove label" msgstr "Fjerne merkede merkelapper?" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 #, fuzzy msgid "Playing..." msgstr "Laster nyhetsstrømmer..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 #, fuzzy msgid "Click to pause" msgstr "Trykk for å endre" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Vennligst skriv inn et notat for denne artikkelen:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Alle artikler" @@ -3921,6 +3876,46 @@ msgstr "Marker artikkel som favoritt" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Tittel" + +#~ msgid "Title or Content" +#~ msgstr "Tittel eller innhold" + +#~ msgid "Link" +#~ msgstr "Lenke" + +#~ msgid "Content" +#~ msgstr "Innhold" + +#~ msgid "Article Date" +#~ msgstr "Artikkeldato" + +#, fuzzy +#~ msgid "Delete article" +#~ msgstr "Fjern artikler" + +#~ msgid "Set starred" +#~ msgstr "Sett som favorittartikkel" + +#~ msgid "Assign tags" +#~ msgstr "Tildel stikkord" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Dette valget er brukervennlig hvis du leser flere globale nyhetsstrømssamlere som har delvis overlappende brukerbase. Når denne er avskrudd kan samme post fra flere forskjellige nyhetsstrømmer vises på en gang." + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Gammelt passord er feil" + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Gammelt passord er feil" + #, fuzzy #~ msgid "Refresh" #~ msgstr "Oppdater" diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo index cd231e42c..b714b764d 100644 Binary files a/locale/nl_NL/LC_MESSAGES/messages.mo and b/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po index 9e77ca7ff..a289fb6b2 100644 --- a/locale/nl_NL/LC_MESSAGES/messages.po +++ b/locale/nl_NL/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TT-RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-23 11:28+0100\n" "Last-Translator: Dingoe \n" "Language-Team: translations \n" @@ -258,8 +258,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL escaping test mislukt. Controleer uw database en de PHP configuratie" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -269,10 +269,10 @@ msgstr "SQL escaping test mislukt. Controleer uw database en de PHP configuratie #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -288,85 +288,84 @@ msgstr "SQL escaping test mislukt. Controleer uw database en de PHP configuratie #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Aan 't laden, even wachten aub..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Feedlijst inklappen" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Toon artikelen" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Aangepast" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Alle artikelen" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Met ster" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Gepubliceerd" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Ongelezen" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Ongelezen" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Score negeren" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Artikelen sorteren" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Standaard" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 #, fuzzy msgid "Mark feed as read" msgstr "Markeer alle feeds als gelezen" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -375,110 +374,110 @@ msgstr "Markeer alle feeds als gelezen" msgid "Mark as read" msgstr "Markeren als gelezen" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Alle artikelen" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "communicatieprobleem met de server." -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Er is een nieuwe versie van Tiny Tiny RSS beschikbaar!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Acties..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Voorkeuren…" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "zoeken..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Feed acties:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Abonneren op feed..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Bewerk deze feed..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Feed opnieuw score geven" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Abonnement opzeggen" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Alle feeds:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Toon/Verberg gelezen feeds" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "andere acties:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Omschakelen naar samenvatting…" -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Toon tagwolk..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Wisselen breedbeeld modus" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Selectie met tags..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Aanmaken label…" -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Aanmaken filter…" -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Hulp bij sneltoetscombinaties" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -487,8 +486,8 @@ msgstr "Afmelden" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Voorkeuren" @@ -513,8 +512,8 @@ msgid "Filters" msgstr "Filters" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -584,10 +583,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS data update script." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -604,577 +603,329 @@ msgstr[1] "%d gearchiveerde artikelen" msgid "No feeds found." msgstr "Geen feeds gevonden." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Speciaal" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alle feeds" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Artikelen met ster" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Gepubliceerde artikelen" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Nieuwe artikelen" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Gearchiveerde artikelen" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Recent gelezen" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigatie" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Open volgende feed" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Open voorgaande feed" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Open volgende artikel" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Open voorgaand artikel" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Open volgend artikel (lange artikelen niet scrollen)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Open vorig artikel (lange artikelen niet scrollen)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "toon zoekdialoogvenster" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artikel" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "In/uitschakelen sterren" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "In/uitschakelen gepubliceerd" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "In/uitschakelen gelezen" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Bewerk tags" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "Geselecteerde negeren" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "Gelezene negeren" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "open in nieuw venster" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Hieronder markeren als gelezen" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "hierboven markeren als gelezen" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Omlaag scrollen" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Omhoog scrollen" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Selecteer artikel onder de cursor" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "E-mail artikel" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Sluiten/inklappen artikel" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "In/uitschakelen origineel insluiten" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Artikelselectie" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Selecteer alle artikelen" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Selecteer ongelezen" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Selecteer met ster" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Selecteer gepubliceerde" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Omdraaien selectie" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Deselecteer alles" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Feed" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Ververs huidige feed" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Toon/Verberg gelezen feeds" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Abonneer op feed" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Bewerk feed" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Draai kopteksten om" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Debug feed update" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Markeer alle feeds als gelezen" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Uit/Inklappen huidige categorie" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "In/uitschakelen gecombineerde modus" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "In/uitschakelen gecombineerde modus" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Ga naar" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Nieuw" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tag wolk" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Andere" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Aanmaken label" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Aanmaken filter" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Uit/Inklappen zijbalk" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Toon helpdialoogvenster" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "zoekresultaten: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Klik om af te spelen" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Afspelen" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "geen tags" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Bewerk tags voor dit artikel" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Oorspronkelijk uit:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Feed URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Sluit dit venster" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(bewerk notitie)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "Onbekend type" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Bijlagen" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titel" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titel of inhoud" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Koppeling" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Inhoud" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Datum artikel" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Verwijder artikel" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Ster toevoegen" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Artikel publiceren" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Tags toevoegen" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Labels toevoegen" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "verander de score" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Algemeen" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interface" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Geavanceerd" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Deze optie is nuttig als u verscheidene planet-type nieuws aggregators leest met een ten dele overeenkomende gebruikersgroep. Indien uitgeschakeld forceert het berichten van verschillende feeds slechts eenmaal te verschijnen." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Uitgeklapte lijst van artikelen weergeven in plaats van afzonderlijke weergave van kopteksten en artikelinhoud" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automatisch volgende feed met ongelezen artikelen openen nadat er een is gemarkeerd als gelezen" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Deze optie schakelt het verzenden in van een dagelijkse samenvatting van nieuwe (en ongelezen) kopteksten naar het door u ingestelde e-mailadres" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Deze optie schakelt het automatisch markeren als gelezen van artikelen in, terwijl u door de artikellijst scrolt." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Verwijder alles behalve de meest algemene HTML tags bij het lezen van artikelen." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Wanneer tags automatisch worden gedetecteerd in artikelen, zullen deze tags niet worden toegekend (komma-gescheiden lijst)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek en Labels gegroepeerd per feed" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Aanpassen CSS opmaakmodel aan uw voorkeur" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Door feed gespecificeerde data gebruiken om kopteksten te sorteren in plaats van lokaal geïmporteerde data." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Klik om uw SSL cliëntcertificaat te registreren bij tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Gebruikt UTC tijdzone" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Permanent verwijderen van artikelen na dit aantal dagen (0 - zet dit uit)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Standaard interval voor feed updates" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Aantal tegelijkertijd weer te geven artikelen " - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "toestaan dubbele berichten" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Inschakelen feed categorieën" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "toon voorbeeld van inhoud in lijst van kopteksten" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Korte datumformaat" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Lang datumformaat" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Gecombineerde feed weergave" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Feeds zonder ongelezen artikelen verbergen" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "toon volgende feed na bijwerken" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Sorteer feeds op aantal ongelezen artikelen" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Draai de koptekst volgorde om (oudste eerst)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Inschakelen e-mail samenvatting" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Bevestigen feed markeren als gelezen" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Artikelen automatisch als gelezen markeren" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Verwijder onveilige tags uit artikelen" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Op de zwarte lijst geplaatste tags" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximum leeftijd van nieuwe artikelen (uren) " - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Markeer artikelen in e-mail samenvatting als gelezen" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Artikelen automatisch uitklappen in gecombineerde modus" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Ongelezen artikelen permanent verwijderen" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Toon speciale feeds bij verbergen gelezen feeds" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Kopteksten in virtuele feeds groeperen" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Afbeeldingen niet insluiten in artikelen" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Inschakelen externe API" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "geen tags" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Gebruiker's tijdzone" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Bewerk tags voor dit artikel" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Aanpassen opmaakmodel" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Oorspronkelijk uit:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Sorteer kopteksten op feed datum" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Feed URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Aanmelden met een SSL-certificaat" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Sluit dit venster" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Tracht samenvattingen te verzenden rond een bepaalde tijd" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(bewerk notitie)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Artikelen automatisch toekennen aan labels" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "Onbekend type" -#: include/localized_schema.php:66 -#, fuzzy -msgid "Select theme" -msgstr "Selecteer met ster" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Bijlagen" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1206,7 +957,7 @@ msgstr "Profiel:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Standaard profiel" @@ -1224,7 +975,7 @@ msgstr "" msgid "Log in" msgstr "Aanmelden" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "De sessie kon niet worden gevalideerd (onjuist IP)" @@ -1240,7 +991,7 @@ msgstr "Tags voor dit artikel (komma gescheiden):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1261,7 +1012,7 @@ msgstr "Opslaan" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1486,7 +1237,7 @@ msgstr "Selecteer:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1506,7 +1257,7 @@ msgstr "Omkeren" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1588,7 +1339,8 @@ msgid "No starred articles found to display." msgstr "Er zijn geen artikelen met ster gevonden om weer te geven." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Geen artikelen gevonden voor weergave. U kunt artikelen handmatig aan labels toekennen (zie het Actie menu hierboven) of een filter gebruiken." #: classes/feeds.php:744 @@ -1642,7 +1394,7 @@ msgid "Login" msgstr "LoginID" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1866,7 +1618,7 @@ msgstr "[tt-rss] Melding verandering van wachtwoord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2035,7 +1787,7 @@ msgid "Save rule" msgstr "Regel opslaan" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "regel toevoegen" @@ -2052,7 +1804,7 @@ msgid "Save action" msgstr "Actie opslaan" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Actie toevoegen" @@ -2061,228 +1813,434 @@ msgstr "Actie toevoegen" msgid "[No caption]" msgstr "Onderschrift" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Algemeen" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Geavanceerd" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "toestaan dubbele berichten" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Artikelen automatisch toekennen aan labels" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Op de zwarte lijst geplaatste tags" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Wanneer tags automatisch worden gedetecteerd in artikelen, zullen deze tags niet worden toegekend (komma-gescheiden lijst)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Artikelen automatisch als gelezen markeren" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Deze optie schakelt het automatisch markeren als gelezen van artikelen in, terwijl u door de artikellijst scrolt." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Artikelen automatisch uitklappen in gecombineerde modus" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Gecombineerde feed weergave" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Uitgeklapte lijst van artikelen weergeven in plaats van afzonderlijke weergave van kopteksten en artikelinhoud" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Bevestigen feed markeren als gelezen" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Aantal tegelijkertijd weer te geven artikelen " + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Standaard interval" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Markeer artikelen in e-mail samenvatting als gelezen" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Inschakelen e-mail samenvatting" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Deze optie schakelt het verzenden in van een dagelijkse samenvatting van nieuwe (en ongelezen) kopteksten naar het door u ingestelde e-mailadres" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Tracht samenvattingen te verzenden rond een bepaalde tijd" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Gebruikt UTC tijdzone" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Inschakelen externe API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Inschakelen feed categorieën" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Sorteer feeds op aantal ongelezen artikelen" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximum leeftijd van nieuwe artikelen (uren) " + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Feeds zonder ongelezen artikelen verbergen" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Toon speciale feeds bij verbergen gelezen feeds" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Lang datumformaat" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "toon volgende feed na bijwerken" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatisch volgende feed met ongelezen artikelen openen nadat er een is gemarkeerd als gelezen" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Permanent verwijderen van artikelen na dit aantal dagen (0 - zet dit uit)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Ongelezen artikelen permanent verwijderen" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Draai de koptekst volgorde om (oudste eerst)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Korte datumformaat" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "toon voorbeeld van inhoud in lijst van kopteksten" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Sorteer kopteksten op feed datum" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Door feed gespecificeerde data gebruiken om kopteksten te sorteren in plaats van lokaal geïmporteerde data." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Aanmelden met een SSL-certificaat" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klik om uw SSL cliëntcertificaat te registreren bij tt-rss" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Afbeeldingen niet insluiten in artikelen" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Verwijder onveilige tags uit artikelen" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Verwijder alles behalve de meest algemene HTML tags bij het lezen van artikelen." + +#: classes/pref/prefs.php:54 +#, fuzzy +msgid "Select theme" +msgstr "Selecteer met ster" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Aanpassen opmaakmodel" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Aanpassen CSS opmaakmodel aan uw voorkeur" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Gebruiker's tijdzone" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Kopteksten in virtuele feeds groeperen" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek en Labels gegroepeerd per feed" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Oud wachtwoord kan niet leeg zijn." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Nieuw wachtwoord kan niet leeg zijn." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Ingevulde wachtwoorden komen niet overeen." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Functie niet ondersteund door authenticatiemodule." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "De configuratie is opgeslagen." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Onbekende optie: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Uw persoonlijke gegevens zijn opgeslagen." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Persoonlijke gegevens / Authenticatie" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Persoonlijke gegevens" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "volledige naam" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Toegangsniveau" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Gegevens opslaan" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Uw wachtwoord staat op de standaard waarde. Verander het aub." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Oud wachtwoord" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nieuw wachtwoord" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Bevestigen wachtwoord" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Wijzig wachtwoord" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "eenmalig wachtwoord / Authenticator" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Vul uw wachtwoord in" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "EWW (Eenmalig wachtwoord) uitschakelen" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "U heeft een compatibele Authenticator nodig om dit te gebruiken. Veranderen van wachtwoord schakelt automatisch EWW uit." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Scan de volgende code met de Authenticator applicatie:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Ik heb de code gescanned en wil nu EWW inschakelen" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Inschakelen EWW" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Aanpassen" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Registreren" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Wissen" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Huidige servertijd: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Configuratie opslaan" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Profielbeheer" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Terugzetten naar de standaardwaarden" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Plug-ins" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Systeem plug-ins" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Plug-in" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Omschrijving" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Versie" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Auteur" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Wis data" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Gebruiker's plug-ins" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Geselecteerd plug-ins inschakelen" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Onjuist wachtwoord" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "U kunt door de CSS-declaraties aan te passen de kleuren, lettertypen en lay-out van uw huidige thema hier aanpassen. Dit bestand kan als richtlijn worden gebruikt." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Maak profiel" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(actief)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Verwijder geselecteerde profielen" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Activeer profiel" @@ -2376,22 +2334,22 @@ msgstr "Bewerk geselecteerde feeds" msgid "Batch subscribe" msgstr "Batchmatig abonneren" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Categorieën" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Categorie toevoegen" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Verberg/Toon lege categorieën" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Verwijder geselecteerde" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Verberg/Toon lege categorieën" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Meer acties…" @@ -2676,68 +2634,68 @@ msgstr "Abonneren in Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Gebruik deze bookmarklet om arbitraire pagina's met Tiny Tiny RSS te publiceren" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Import en export" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Artikelarchief" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "U kunt uw gearchiveerde of artikelen met ster exporteren en importeren om veilig te bewaren wanneer u migreert tussen tt-rss instanties." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Exporteer mijn data" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importeren" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Kon niet importeren: onjuiste schema versie." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Kon niet importeren: onbekend documentformaat." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Bewerk artikel notitie" msgstr[1] "Bewerk artikel notitie" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Geen feeds geselecteerd." msgstr[1] "Geen feeds geselecteerd." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Kon XML-document niet laden." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Voorbereiden data" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, fuzzy, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2921,147 +2879,139 @@ msgstr "Weet u zeker dat u deze uitzondering wilt rapporteren aan tt-rss.org? He msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Data syntax lijkt correct:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Data syntax is onjuist." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Opgeslagen feed pictogram verwijderen?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Opgeslagen feed pictogram verwijderen?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Feed niet gevonden." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Selecteer aub een afbeeldingsbestand om te uploaden." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Nieuw pictogram voor deze feed uploaden?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Aan 't laden, even wachten aub..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Geeft een onderschrift voor label:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Kan geen label aanmaken: onderschrift ontbreekt" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Abonneren op feed" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Geabonneerd op %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Gespecificeerde URL lijkt ongeldig te zijn." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Gespecificeerde URL lijkt geen feeds te bevatten." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Kon de gespecificeerde URL: %s niet downloaden" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "U bent al geabonneerd op deze feed." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Bewerk regel" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Bewerk actie" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Filter aanmaken" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Abonnement opnieuw instellen? Tiny Tiny RSS zal proberen zich opnieuw op de notification hub te abonneren bij de volgende feed update." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Abonneren op feed..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Abonnement opzeggen voor %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Vul titel van categorie in aub:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "nieuw syndicatie-adres voor deze feed genereren?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "U kunt dit type feed niet bewerken." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Bewerken feed" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Gegevens opslaan" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Meer feeds" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3072,26 +3022,26 @@ msgstr "Meer feeds" msgid "No feeds are selected." msgstr "Er zijn geen feeds geselecteerd." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Geselecteerde feeds uit het archief verwijderen? Feeds met opgeslagen artikelen zullen niet worden verwijderd." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Feeds met update fouten" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Geselecteerde feeds verwijderen?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Geselecteerde feeds verwijderen?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Help" @@ -3460,139 +3410,149 @@ msgstr "Artikelen nieuwe score geven" msgid "New version available!" msgstr "Nieuwe versie beschikbaar!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Zoeken annuleren" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Ster weghalen bij artikel" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Geef artikel een ster" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Ongepubliceerd artikel" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Artikel publiceren" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Geen artikelen geselecteerd." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Verwijder %d geselecteerde artikelen in %s?" msgstr[1] "Verwijder %d geselecteerde artikelen in %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Verwijder %d geselecteerde artikelen?" msgstr[1] "Verwijder %d geselecteerde artikelen?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "%d geselecteerd artikelen archiveren in %s?" msgstr[1] "%d geselecteerd artikelen archiveren in %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "%d gearchiveerde artikelen terugzetten?" msgstr[1] "%d gearchiveerde artikelen terugzetten?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Markeer %d geselecteerde artikelen in %s als gelezen?" msgstr[1] "Markeer %d geselecteerde artikelen in %s als gelezen?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Bewerken artikel tags" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Bewerken artikel tags" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Geen artikel geselecteerd." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Geen artikelen gevonden om te markeren" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Markeer %d artikel(en) als gelezen?" msgstr[1] "Markeer %d artikel(en) als gelezen?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Open origineel artikel" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Toon artikel URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "In/uitschakelen sterren" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Labels toevoegen" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Label verwijderen" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "aan 't afspelen..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Klik voor pauze" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Geef aub een nieuwe score voor de geselecteerde artikelen:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Geef aub een nieuwe score voor dit artikel:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Artikel URL:" @@ -3702,6 +3662,45 @@ msgstr "Deel artikel via URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Live updaten is nog experimenteel. Maak een back-up van uw tt-rss map alvorens door te gaan. Typ 'ja' om door te gaan. " +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Title or Content" +#~ msgstr "Titel of inhoud" + +#~ msgid "Link" +#~ msgstr "Koppeling" + +#~ msgid "Content" +#~ msgstr "Inhoud" + +#~ msgid "Article Date" +#~ msgstr "Datum artikel" + +#~ msgid "Delete article" +#~ msgstr "Verwijder artikel" + +#~ msgid "Set starred" +#~ msgstr "Ster toevoegen" + +#~ msgid "Assign tags" +#~ msgstr "Tags toevoegen" + +#~ msgid "Modify score" +#~ msgstr "verander de score" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Deze optie is nuttig als u verscheidene planet-type nieuws aggregators leest met een ten dele overeenkomende gebruikersgroep. Indien uitgeschakeld forceert het berichten van verschillende feeds slechts eenmaal te verschijnen." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Standaard interval voor feed updates" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Data syntax lijkt correct:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Data syntax is onjuist." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Nieuw" diff --git a/locale/pl_PL/LC_MESSAGES/messages.mo b/locale/pl_PL/LC_MESSAGES/messages.mo index 90991481b..fcd0b9f40 100644 Binary files a/locale/pl_PL/LC_MESSAGES/messages.mo and b/locale/pl_PL/LC_MESSAGES/messages.mo differ diff --git a/locale/pl_PL/LC_MESSAGES/messages.po b/locale/pl_PL/LC_MESSAGES/messages.po index 402443e0a..cf25f91d1 100644 --- a/locale/pl_PL/LC_MESSAGES/messages.po +++ b/locale/pl_PL/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-25 13:25+0100\n" "Last-Translator: Mirosław Lach \n" "Language-Team: Polish (http://www.transifex.com/projects/p/tt-rss/language/pl/)\n" @@ -249,8 +249,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "Test escape'owania SQL nie powiódł się. Sprawdź konfigurację swojej bazy danych i PHP." #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -260,10 +260,10 @@ msgstr "Test escape'owania SQL nie powiódł się. Sprawdź konfigurację swojej #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -279,84 +279,83 @@ msgstr "Test escape'owania SQL nie powiódł się. Sprawdź konfigurację swojej #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Trwa ładowanie, proszę czekać..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Rozwiń listę kanałów" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Pokaż artykuły" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptacyjny" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Wszystkie artykuły" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Oznaczone gwiazdką" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Opublikowane" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Nieprzeczytane" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Nieprzeczytane" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignoruj punktację" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Sortuj artykuły" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Domyślne" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Oznacz kanał jako przeczytany" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -365,110 +364,110 @@ msgstr "Oznacz kanał jako przeczytany" msgid "Mark as read" msgstr "Oznacz jako przeczytane" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Wszystkie artykuły" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Problem w komunikacji z serwerem." -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Dostępna jest nowa wersja Tiny Tiny RSS!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Działania..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Ustawienia..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Szukaj..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Działania dla kanałów:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Prenumeruj kanał..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Edytuj ten kanał..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Przelicz punktację kanału" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Wypisz się" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Wszystkie kanały:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Pokaż/Ukryj przeczytane kanały" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Inne działania:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Przełącz na przegląd..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Pokaż chmurę tagów..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Przełącz tryb szerokoekranowy" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Wybierz używając tagów..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Utwórz etykietę..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Utwórz filtr..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "O skrótach klawiszowych" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -477,8 +476,8 @@ msgstr "Wyloguj" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Ustawienia" @@ -503,8 +502,8 @@ msgid "Filters" msgstr "Filtry" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -574,10 +573,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Skrypt aktualizacji danych Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -595,576 +594,329 @@ msgstr[2] "%d zarchiwizowanych artykułów" msgid "No feeds found." msgstr "Nie znaleziono kanałów." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Specjalne" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Wszystkie kanały" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Artykuły oznaczone gwiazdką" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Opublikowane artykuły" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Świeże artykuły" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Zarchiwizowane artykuły" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Ostatnio czytane" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Nawigacja" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Przejdź do następnego kanału" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Otwórz poprzedni kanał" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Otwórz następny artykuł" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Otwórz poprzedni artykuł" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Otwórz następny artykuł (nie przewijaj długich artykułów)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Otwórz poprzeni artykół (nie przewijaj długich artykułów)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Otwórz okno wyszukiwania" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artykuł" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Przełącz oznaczenie gwiazdką" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Przełącz flagę publikacji" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Przełącz flagę \"przeczytano\"" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Edytuj tagi" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "Odrzuć wybrane" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "Odrzuć przeczytane" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Otwórz w nowym oknie" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Oznacz poniższe jako przeczytane" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Oznacz powyższe jako przeczytane" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Przewiń w dół" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Przewiń do góry" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Wybierz artykuł pod kursorem" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Prześlij artykuł emailem" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Zamknij/zwiń artykuł" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Przełącza flagę \"wbuduj oryginalny artykuł\"" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Wybór artykułów" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Wybierz wszystkie artykuły" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Wybierz nieprzeczytane" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Wybierz oznaczone gwiazdką" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Wybierz opublikowane" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Odwróć zaznaczenie" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Odznacz wszystko" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Kanał" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Odśwież bieżący kanał" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Pokaż/Ukryj przeczytane kanały" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Prenumeruj kanał" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Edytuj kanał" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Odwróć kolejność nagłówków" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Testuj aktualizację kanałów" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Oznacz wszystkie kanały jako przeczytane" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Zwiń/rozwiń bieżącą kategorię" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Przełącz tryb scalony" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Przełącz tryb scalony" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Idź do" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Świeży" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Chmura tagów" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Inne" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Utwórz etykietę" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Utwórz filtr" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Zwin/rozwiń pasek boczny" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Otwórz okno pomocy" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Wyniki wyszukiwania: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Wciśnij aby odtworzyć" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Odtwórz" -#: include/functions.php:3027 -msgid " - " -msgstr " - " - -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "brak tagów" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Edytuj tagi dla tego artykułu" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Oryginał pochodzi z:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Adres kanału" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Zamknij to okno" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(edytuj notatkę)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "nieznany typ" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Załączniki" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Tytuł" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Tytuł lub Treść" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Łącze" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Treść" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Dane artykułu" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Usuń artykuł" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Oznacz gwiazdką" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Opublikuj" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Przypisz tagi" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Przypisz etykietę" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Zmień punktację" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Ogólne" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interfejs" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Zaawansowane" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Opcja ta jest przydatna gdy czytasz kilka globalnych, grupujących artykuły z różnych źródeł, kanałów RSS mających częściowo pokrywającą się grupę użytkowników. Gdy wyłączona, powoduje iż ten sam artykuł pochodzący z różnych kanałów będzie wyświetlony tylko raz." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Wyświetl rozwiniętą listę artykułów z kanału zamiast osobnych okien dla nagłówków i treści" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Automatycznie otwórz kolejny kanał z nieprzeczytanymi artykułami po oznaczeniu poprzedniego jako przeczytany" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Opcja powoduje włączenie wysyłania na Twój adres email codziennych podsumowań zawierających nagłówki nowych (i nieprzeczytanych) artykułów." - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Opcja uruchamia automatyczne oznaczanie artykułów jako przeczytanych podczas przewijania listy artykułów." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Podczas czytania artykułu usuń wszystkie poza najpopularniejszymi znaczniki HTML." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Podczas automatycznego wykrywania tagów wymienione obok tagi nie zostaną zastosowane (kolejne tagi oddzielaj przecinkiem)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Gdy ta opcja jest zaznaczona, nagłówki w kanałach specjalnych i widoku etykiet grupowane są według kanałów." - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Dostosuj arkusz styli CSS wedle swojego uznania" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Użyj do sortowania nagłówków daty artykułu z kanału zamiast lokalnej daty zaimportowania artykułu." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Kliknij aby zarejestrować swój certyfikat klienta SSL w tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Używa strefy UTC" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Usuń artykuły po X dniach (0 - wyłącza)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Domyślny czas pomiędzy aktualizacjami kanału" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Ilość artykułów do wyświetlenia za jednym razem" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Zezwalaj na powielanie artykułów" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Włącz kategorie kanałów" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Wyświetl podgląd treści w widoku nagłówków" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Krótki format daty" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Długi format daty" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Tryb zintegrowany widoku kanału" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Ukryj kanały nie zawierające nieprzeczytanych artykułów" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Przejdź do następnego kanału po zakończeniu lektury ostatniego artykułu" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Sortuj kanały według liczby nieprzeczytanych artykułów" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Odwrotny porządek nagłówków (najstarsze pierwsze)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Włącz przegląd artykułów wysyłany emailem" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Potwierdź oznaczanie kanału jako przeczytanego" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Automatycznie oznacz artykuły jako przeczytane" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Usuń niebezpieczne tagi z artykułów" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Czarna lista tagów" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Przez ile czasu uznawać artykuł za świeży (w godzinach)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Oznacz jako przeczytane artykuły przesłane emailem jako przegląd" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Automatycznie powiększ okno artykułu w trybie zintegrowanym" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Czyszczenie nieprzeczytanych artykułów" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Pokaż kanały specjalne gdy włączone ukrywanie przeczytanych kanałów." - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Grupuj nagłówki w wirtualnych kanałach" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Nie osadzaj obrazków w artykułach" +#: include/functions.php:3028 +msgid " - " +msgstr " - " -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Włącz zewnętrzne API" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "brak tagów" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Strefa czasowa użytkownika" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Edytuj tagi dla tego artykułu" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Dostosuj arkusz styli" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Oryginał pochodzi z:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Sortuj nagłówki według daty kanału" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Adres kanału" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Logowanie z wykorzystaniem certyfikatu SSL" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Zamknij to okno" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Spróbuj wysłać podsumowanie w pobliżu wskazanej godziny" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(edytuj notatkę)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Automatycznie przypisz etykiety do artykułów" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "nieznany typ" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Wybierz styl" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Załączniki" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1195,7 +947,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Domyślny profil" @@ -1213,7 +965,7 @@ msgstr "" msgid "Log in" msgstr "Zaloguj" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Nie powiodła się weryfikacja sesji (nieprawidłowy adres IP)" @@ -1229,7 +981,7 @@ msgstr "Tagi dla tego artykułu (oddzielone przecinkami):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1250,7 +1002,7 @@ msgstr "Zapisz" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1474,7 +1226,7 @@ msgstr "Wybierz: " #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1494,7 +1246,7 @@ msgstr "Odwróć" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1576,7 +1328,8 @@ msgid "No starred articles found to display." msgstr "Nie znaleziono artykułów oznaczonych gwiazdką." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Nie znaleziono artykułów. Możesz ręcznie przypisać artykuły do etykiet (zobacz menu Akcje powyżej) lub wykorzystać do tego celu filtry." #: classes/feeds.php:744 @@ -1630,7 +1383,7 @@ msgid "Login" msgstr "Nazwa użytkownika" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1850,7 +1603,7 @@ msgstr "[tt-rss] Informacja o zmianie hasła" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2020,7 +1773,7 @@ msgid "Save rule" msgstr "Zapisz regułę" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Dodaj regułę" @@ -2037,7 +1790,7 @@ msgid "Save action" msgstr "Zapisz działanie" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Dodaj działania" @@ -2046,228 +1799,433 @@ msgstr "Dodaj działania" msgid "[No caption]" msgstr "Opis" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Ogólne" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interfejs" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Zaawansowane" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Zezwalaj na powielanie artykułów" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Automatycznie przypisz etykiety do artykułów" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Czarna lista tagów" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Podczas automatycznego wykrywania tagów wymienione obok tagi nie zostaną zastosowane (kolejne tagi oddzielaj przecinkiem)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Automatycznie oznacz artykuły jako przeczytane" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Opcja uruchamia automatyczne oznaczanie artykułów jako przeczytanych podczas przewijania listy artykułów." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Automatycznie powiększ okno artykułu w trybie zintegrowanym" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Tryb zintegrowany widoku kanału" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Wyświetl rozwiniętą listę artykułów z kanału zamiast osobnych okien dla nagłówków i treści" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Potwierdź oznaczanie kanału jako przeczytanego" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Ilość artykułów do wyświetlenia za jednym razem" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Domyślna częstotliwość" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Oznacz jako przeczytane artykuły przesłane emailem jako przegląd" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Włącz przegląd artykułów wysyłany emailem" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Opcja powoduje włączenie wysyłania na Twój adres email codziennych podsumowań zawierających nagłówki nowych (i nieprzeczytanych) artykułów." + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Spróbuj wysłać podsumowanie w pobliżu wskazanej godziny" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Używa strefy UTC" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Włącz zewnętrzne API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Włącz kategorie kanałów" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Sortuj kanały według liczby nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Przez ile czasu uznawać artykuł za świeży (w godzinach)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Ukryj kanały nie zawierające nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Pokaż kanały specjalne gdy włączone ukrywanie przeczytanych kanałów." + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Długi format daty" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Przejdź do następnego kanału po zakończeniu lektury ostatniego artykułu" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatycznie otwórz kolejny kanał z nieprzeczytanymi artykułami po oznaczeniu poprzedniego jako przeczytany" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Usuń artykuły po X dniach (0 - wyłącza)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Czyszczenie nieprzeczytanych artykułów" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Odwrotny porządek nagłówków (najstarsze pierwsze)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Krótki format daty" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Wyświetl podgląd treści w widoku nagłówków" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Sortuj nagłówki według daty kanału" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Użyj do sortowania nagłówków daty artykułu z kanału zamiast lokalnej daty zaimportowania artykułu." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Logowanie z wykorzystaniem certyfikatu SSL" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Kliknij aby zarejestrować swój certyfikat klienta SSL w tt-rss" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Nie osadzaj obrazków w artykułach" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Usuń niebezpieczne tagi z artykułów" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Podczas czytania artykułu usuń wszystkie poza najpopularniejszymi znaczniki HTML." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Wybierz styl" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Dostosuj arkusz styli" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Dostosuj arkusz styli CSS wedle swojego uznania" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Strefa czasowa użytkownika" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Grupuj nagłówki w wirtualnych kanałach" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Gdy ta opcja jest zaznaczona, nagłówki w kanałach specjalnych i widoku etykiet grupowane są według kanałów." + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Stare hasło nie może być puste." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Nowe hasło nie może być puste." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Wprowadzone hasła są różne." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Metoda nie wspierana przez mechanizm uwierzytelniający." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Konfiguracja została zapisana." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Nieznana opcja: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Dwoje dane osobiste zostały zapisane." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Dane osobiste / Uwierzytelnianie" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Informacje osobiste" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Nazwa" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Poziom dostępu" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Zapisz dane" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Używasz domyślnego hasła, zmień je proszę." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "Zmiana Twojego bieżącego hasła spowoduje wyłączenie mechanizmu OTP." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Stare hasło" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nowe hasło" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Potwierdź hasło" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Zmień hasło" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "Hasło jednorazowe / Uwierzytelnianie" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Hasła jednorazowe są obecnie włączone. Wprowadź swoje obecne hasło aby je wyłączyć." -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Wprowadź hasło" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Wyłącz hasła jednorazowe" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Potrzebujesz właściwego modułu uwierzytelniającego aby użyć tej funkcji. Zmiana hasła spowoduje automatyczne wyłączenie OTP." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Zeskanuj poniższy kod przy użyciu aplikacji uwierzytelniającej:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Zeskanowałem kod i chciałbym włączyć OTP." -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Włącz hasła jednorazowe" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "Niektóre ustawienia dostępne są jedynie dla domyślnego profilu." -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Dostosuj" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Zarejestruj" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Wyczyść" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Czas serwera to: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Zapisz konfigurację" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Zarządzaj profilami" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Przywróć domyślne" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Wtyczki" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Musisz przeładować Tiny Tiny RSS aby zastosować zmiany we wtyczkach." -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Wtyczki systemowe" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Wtyczka" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Opis" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Wersja" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Wyczyść dane" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Wtyczki użytkowników" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Włącz wybrane wtyczki" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Nieprawidłowe hasło" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Możesz nadpisać ustawienia kolorów, czcionek i układu wybranego stylu przy użyciu własnych deklaracji CSS. Ten plik może posłużyć jako przykład." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Utwórz profil" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktywny)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Usuń wybrane profile" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Aktywuj profil" @@ -2361,22 +2319,22 @@ msgstr "Edytuj wybrane kanały" msgid "Batch subscribe" msgstr "Prenumerata wsadowa" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorie" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Dodaj kategorię" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Pokaż/Ukryj puste kategorie" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Usuń wybrane" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Pokaż/Ukryj puste kategorie" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Więcej działań..." @@ -2657,39 +2615,39 @@ msgstr "Prenumeruj w Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Użyj tej Skryptozakładki aby publikować dowolne strony używając Tiny Tiny RSS" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Import i eksport" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Archiwum artykułów" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "Możesz eksportować i importować artykuły oznaczone gwiazdką oraz zarchiwizowane dla zachowania lub na czas migracji pomiędzy instalacjami tt-rss." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Eksportuj moje dane" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importuj" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Nieudany import: nieprawidłowa wersja schematu." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Nieudany import: nierozpoznany typ dokumentu." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Zakończono: " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " @@ -2697,7 +2655,7 @@ msgstr[0] "%d artykuł przetworzony." msgstr[1] "%d artykuły przetworzone." msgstr[2] "%d artykułów przetworzonych." -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " @@ -2705,7 +2663,7 @@ msgstr[0] "%d zaimportowany." msgstr[1] "%d zaimportowane." msgstr[2] "%d zaimportowanych." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." @@ -2713,15 +2671,15 @@ msgstr[0] "%d kanał utworzony." msgstr[1] "%d kanały utworzone." msgstr[2] "%d kanałów utworzonych." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Nie udało się wczytać dokumentu XML." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Przygotuj dane" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "Nie udało się wgrać pliku. Możliwe, że będziesz musiał dostosować wartość parametru upload_max_filesize (maksymalny rozmiar przesyłanego pliku) w PHP.ini (obecna wartość = %s)" @@ -2903,142 +2861,134 @@ msgstr "Czy jesteś pewien, że chcesz zgłosić ten wyjątek do tt-rss.org? Zg msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Format daty wygląda na poprawną:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Format daty jest niepoprawny." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Przesyłanie ukończone." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Usuń zapisaną ikonę kanału." -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "Usuwanie ikony kanału..." -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "Ikona kanału usunięta." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Wybierz obrazek do wysłania." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Wgrać nową ikonę dla tego kanału?" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Trwa ładowanie, proszę czekać..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Proszę wprowadzić opis etykiety:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Nie udało się utworzyć etykiety: brak opisu." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Prenumeruj kanał" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Zaprenumerowano kanał %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Wprowadzony adres jest niepoprawny." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Wprowadzony adres nie zawiera żadnych kanałów." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Nie udało się pobrać wprowadzonego adresu: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Prenumerujesz już ten kanał." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Edytuj regułę" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Edytuj działanie" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Utwórz filtr" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Zresetować prenumeraty? Tiny Tiny RSS spróbuje zaprenumerować powiadomienia przy następnej aktualizacji." -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "Zresetowano prenumerate." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Zakończyć prenumeratę %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Usuwanie kanału..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Wprowadź tytuł kategorii:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Wygenerowań nowy adres do dzielenia się tym kanałem?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Próbuje zmienić adres..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Nie możesz edytować kanału tego typu." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Edytuj kanał" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Zapisywanie danych..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Więcej kanałów" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3049,25 +2999,25 @@ msgstr "Więcej kanałów" msgid "No feeds are selected." msgstr "Nie wybrano żadnego kanału." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Usunąć wybrane kanały z archiwum? Kanały z zachowanymi artykułami nie zostaną usunięte." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Kanały z błędami aktualizacji" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Usunąć wybrane kanały?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Usuwanie wybranych kanałów..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Pomoc" @@ -3413,138 +3363,148 @@ msgstr "Przeliczanie punktacji kanałów..." msgid "New version available!" msgstr "Dostępna jest nowa wersja!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Anuluj wyszukiwanie" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Usuń oznaczenie gwiazdką" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Oznacz artykuł gwiazdką" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Anuluj publikacje artykułu" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Opublikuj" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nie wybrano żadnych artykułów" -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Usunąć %d zaznaczony artykuł z %s?" msgstr[1] "Usunąć %d zaznaczone artykuły z %s?" msgstr[2] "Usunąć %d zaznaczonych artykułów z %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Usunąć %d zaznaczony artykuł?" msgstr[1] "Usunąć %d zaznaczone artykuły?" msgstr[2] "Usunąć %d zaznaczonych artykułów?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Zarchiwizować %d zaznaczony artykuł z %s?" msgstr[1] "Zarchiwizować %d zaznaczone artykuły z %s?" msgstr[2] "Zarchiwizować %d zaznaczonych artykułów z %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Przywrócić %d zarchiwizowany artykuł?" msgstr[1] "Przywrócić %d zarchiwizowane artykuły?" msgstr[2] "Przywrócić %d zarchiwizowanych artykułów?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Oznaczyć %d wybrany artykuł z %s jako przeczytany?" msgstr[1] "Oznaczyć %d wybrane artykuły z %s jako przeczytane?" msgstr[2] "Oznaczyć %d wybranych artykułów z %s jako przeczytane?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Edytuj tagi artykułu" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Zapisuję tagi artykułu..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Nie wybrano żadnego artykułu." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Nie znaleziono artykułów do oznaczenia" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Oznaczyć %d artykuł jako przeczytany?" msgstr[1] "Oznaczyć %d artykuły jako przeczytane?" msgstr[2] "Oznaczyć %d artykułów jako przeczytane?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Otwórz oryginalny artykuł" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Wyświetl adres artykułu" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Przełącz oznaczenie gwiazdką" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Przypisz etykietę" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Usuń etykietę" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Odtwarzam..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Kliknij aby zapauzować" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Wprowadź nową punktację dla wybranych artykułów:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Wprowadź nową punktację dla tego artykułu:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Adres artykułu:" @@ -3652,6 +3612,45 @@ msgstr "Udostępnij artykuł" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Aktualizacja \"na żywo\" jest uznawana za funkcję eksperymentalną. Wykonaj kopię swojego katalogu tt-rss przed kontynuowaniem. Wpisz 'yes' aby kontynuować." +#~ msgid "Title" +#~ msgstr "Tytuł" + +#~ msgid "Title or Content" +#~ msgstr "Tytuł lub Treść" + +#~ msgid "Link" +#~ msgstr "Łącze" + +#~ msgid "Content" +#~ msgstr "Treść" + +#~ msgid "Article Date" +#~ msgstr "Dane artykułu" + +#~ msgid "Delete article" +#~ msgstr "Usuń artykuł" + +#~ msgid "Set starred" +#~ msgstr "Oznacz gwiazdką" + +#~ msgid "Assign tags" +#~ msgstr "Przypisz tagi" + +#~ msgid "Modify score" +#~ msgstr "Zmień punktację" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Opcja ta jest przydatna gdy czytasz kilka globalnych, grupujących artykuły z różnych źródeł, kanałów RSS mających częściowo pokrywającą się grupę użytkowników. Gdy wyłączona, powoduje iż ten sam artykuł pochodzący z różnych kanałów będzie wyświetlony tylko raz." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Domyślny czas pomiędzy aktualizacjami kanału" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Format daty wygląda na poprawną:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Format daty jest niepoprawny." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Świeży" diff --git a/locale/pt_BR/LC_MESSAGES/messages.mo b/locale/pt_BR/LC_MESSAGES/messages.mo index 92452a764..43aebbd4f 100644 Binary files a/locale/pt_BR/LC_MESSAGES/messages.mo and b/locale/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/messages.po b/locale/pt_BR/LC_MESSAGES/messages.po index f477e1359..81ba0caf9 100644 --- a/locale/pt_BR/LC_MESSAGES/messages.po +++ b/locale/pt_BR/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.2.14.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2007-10-24 00:47-0200\n" "Last-Translator: Marcelo Jorge VIeira (metal) \n" "Language-Team: Portuguese/Brazil\n" @@ -250,8 +250,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -261,10 +261,10 @@ msgstr "" #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -280,88 +280,87 @@ msgstr "" #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "" -#: index.php:168 +#: index.php:166 #, fuzzy msgid "Collapse feedlist" msgstr "Todos os feeds" -#: index.php:171 +#: index.php:169 #, fuzzy msgid "Show articles" msgstr "Favoritos" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Favoritos" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publicado" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Não Lido" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Não Lido" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "" -#: index.php:184 +#: index.php:182 #, fuzzy msgid "Sort articles" msgstr "Favoritos" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Padrão" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 #, fuzzy msgid "Mark feed as read" msgstr "Marcar como lido" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -370,120 +369,120 @@ msgstr "Marcar como lido" msgid "Mark as read" msgstr "Marcar como lido" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 #, fuzzy msgid "All articles" msgstr "Favoritos" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Ações..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Preferências" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "" -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Ações do Feed:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 #, fuzzy msgid "Subscribe to feed..." msgstr "Removendo o Feed..." -#: index.php:233 +#: index.php:231 #, fuzzy msgid "Edit this feed..." msgstr "Editar" -#: index.php:234 +#: index.php:232 #, fuzzy msgid "Rescore feed" msgstr "Removendo o Feed..." -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Todos os Feeds:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Outras ações:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "" -#: index.php:243 +#: index.php:241 #, fuzzy msgid "Show tag cloud..." msgstr "núvem de tags" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Remover as categorias selecionadas?" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "" -#: index.php:246 +#: index.php:244 #, fuzzy msgid "Create label..." msgstr "Criar um usuário" -#: index.php:247 +#: index.php:245 #, fuzzy msgid "Create filter..." msgstr "Criar um usuário" -#: index.php:248 +#: index.php:246 #, fuzzy msgid "Keyboard shortcuts help" msgstr "  Criar filtro" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -492,8 +491,8 @@ msgstr "Sair" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Preferências" @@ -521,8 +520,8 @@ msgid "Filters" msgstr "Arquivo:" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -595,10 +594,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "" #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -616,626 +615,371 @@ msgstr[1] "Favoritos" msgid "No feeds found." msgstr "Sem Feeds para exibir." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Especial" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Todos os feeds" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "" -#: include/functions.php:1813 +#: include/functions.php:1814 #, fuzzy msgid "Archived articles" msgstr "Favoritos" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 #, fuzzy msgid "Navigation" msgstr "Salvar configuração" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Favoritos" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Favoritos" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 #, fuzzy msgid "Show search dialog" msgstr "Favoritos" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Feed não encontrado." -#: include/functions.php:1887 +#: include/functions.php:1888 #, fuzzy msgid "Toggle starred" msgstr "Marcar como favorito" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 #, fuzzy msgid "Toggle published" msgstr "Publicado" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "" -#: include/functions.php:1890 +#: include/functions.php:1891 #, fuzzy msgid "Edit tags" msgstr "Editar Tags" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Remover os filtros selecionados?" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Favoritos" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 #, fuzzy msgid "Mark below as read" msgstr "Marcar como lido" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 #, fuzzy msgid "Mark above as read" msgstr "Marcar como lido" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Favoritos" -#: include/functions.php:1899 +#: include/functions.php:1900 #, fuzzy msgid "Email article" msgstr "Favoritos" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Favoritos" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Remover as categorias selecionadas?" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Favoritos" -#: include/functions.php:1904 +#: include/functions.php:1905 #, fuzzy msgid "Select all articles" msgstr "Favoritos" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Favoritos" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Marcar como favorito" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Favoritos" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Favoritos" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Favoritos" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Feed" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Favoritos" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Favoritos" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 #, fuzzy msgid "Edit feed" msgstr "Editar" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Remover as categorias selecionadas?" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Desabilitar updates" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 #, fuzzy msgid "Mark all feeds as read" msgstr "Marcando todos os feeds como lidos..." -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Salvando categoria..." -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Remover as categorias selecionadas?" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Remover as categorias selecionadas?" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Núvem de tags" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Onde:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Todos os feeds" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Favoritos" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 #, fuzzy msgid "Click to play" msgstr "Favoritos" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "" -#: include/functions.php:3027 +#: include/functions.php:3028 #, fuzzy msgid " - " msgstr " - por " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "sem tags" -#: include/functions.php:3059 +#: include/functions.php:3060 #: classes/feeds.php:686 #, fuzzy msgid "Edit tags for this article" msgstr "Favoritos" -#: include/functions.php:3088 +#: include/functions.php:3089 #: classes/feeds.php:642 #, fuzzy -msgid "Originally from:" -msgstr "Favoritos" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -#, fuzzy -msgid "Feed URL" -msgstr "Feed" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Fechar esta janela" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "" - -#: include/functions.php:3601 -#, fuzzy -msgid "unknown type" -msgstr "Erro desconhecido" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "Conteúdo" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Título" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Título ou Conteúdo" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Link" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Conteúdo" - -#: include/localized_schema.php:7 -#, fuzzy -msgid "Article Date" -msgstr "Feed não encontrado." - -#: include/localized_schema.php:9 -#, fuzzy -msgid "Delete article" -msgstr "Favoritos" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Marcar como favorito" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "" - -#: include/localized_schema.php:13 -#, fuzzy -msgid "Assign tags" -msgstr "sem tags" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Geral" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interface" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avançado" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "" - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "" - -#: include/localized_schema.php:35 -#, fuzzy -msgid "Default interval between feed updates" -msgstr "Padrão" - -#: include/localized_schema.php:36 -#, fuzzy -msgid "Amount of articles to display at once" -msgstr "Sem Feeds para exibir." - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Permitir publicações duplicadas" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Formato de data curto" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Formato de data longo" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Confirme marcando o Feed como lido" - -#: include/localized_schema.php:49 -#, fuzzy -msgid "Automatically mark articles as read" -msgstr "Marcando todos os feeds como lidos..." - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "" - -#: include/localized_schema.php:53 -#, fuzzy -msgid "Mark articles in e-mail digest as read" -msgstr "Marcando todos os feeds como lidos..." - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Favoritos" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "" +msgid "Originally from:" +msgstr "Favoritos" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +#, fuzzy +msgid "Feed URL" +msgstr "Feed" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Fechar esta janela" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" +#: include/functions.php:3369 +msgid "(edit note)" msgstr "" -#: include/localized_schema.php:65 +#: include/functions.php:3604 #, fuzzy -msgid "Assign articles to labels automatically" -msgstr "Remover os filtros selecionados?" +msgid "unknown type" +msgstr "Erro desconhecido" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Selecionar o tema" +#: include/functions.php:3660 +#, fuzzy +msgid "Attachments" +msgstr "Conteúdo" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1268,7 +1012,7 @@ msgstr "Arquivo:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 #, fuzzy msgid "Default profile" msgstr "Padrão" @@ -1288,7 +1032,7 @@ msgstr "" msgid "Log in" msgstr "Login" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "" @@ -1305,7 +1049,7 @@ msgstr "" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1326,7 +1070,7 @@ msgstr "Salvar" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1561,7 +1305,7 @@ msgstr "Selecione:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1582,7 +1326,7 @@ msgstr "(Inverso)" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1676,7 +1420,7 @@ msgid "No starred articles found to display." msgstr "Sem Feeds para exibir." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "" #: classes/feeds.php:744 @@ -1734,7 +1478,7 @@ msgid "Login" msgstr "Login" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1976,7 +1720,7 @@ msgstr "" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2162,7 +1906,7 @@ msgid "Save rule" msgstr "Salvar" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "" @@ -2181,7 +1925,7 @@ msgid "Save action" msgstr "Ações do Feed:" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "Ações do Feed:" @@ -2191,247 +1935,453 @@ msgstr "Ações do Feed:" msgid "[No caption]" msgstr "Opções:" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Geral" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avançado" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Permitir publicações duplicadas" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "Remover os filtros selecionados?" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Automatically mark articles as read" +msgstr "Marcando todos os feeds como lidos..." + +#: classes/pref/prefs.php:28 +msgid "Mark articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Confirme marcando o Feed como lido" + +#: classes/pref/prefs.php:32 +#, fuzzy +msgid "Amount of articles to display at once" +msgstr "Sem Feeds para exibir." + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Padrão" + +#: classes/pref/prefs.php:34 +#, fuzzy +msgid "Mark articles in e-mail digest as read" +msgstr "Marcando todos os feeds como lidos..." + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Marcando todos os feeds como lidos..." + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Show special feeds and labels when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Formato de data longo" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Formato de data curto" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Favoritos" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Selecionar o tema" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "A senha antiga não pode ser vazia." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "A nova senha não pode ser vazia." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "As senhas informadas não conferem." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 #, fuzzy msgid "The configuration was saved." msgstr "Salvar configuração" -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "" -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 #, fuzzy msgid "Personal data" msgstr "Salvar" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 #, fuzzy msgid "Access level" msgstr "Nível de acesso:" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 #, fuzzy msgid "Save data" msgstr "Salvar" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "Sua senha é a padrão, \n" "\t\t\t\t\t\tvocê deve mudá-la." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Senha antiga" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Senha nova" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Confirmar senha" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Mudar senha" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "Mudar senha" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(Desativado)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Ativado" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 #, fuzzy msgid "Register" msgstr "Remover as categorias selecionadas?" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Salvar configuração" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 #, fuzzy msgid "Manage profiles" msgstr "Criar um usuário" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 #, fuzzy msgid "Reset to defaults" msgstr "Usar o padrão" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "descrição" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Salvando o Feed..." -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Editar categorias" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "Senha nova" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 #, fuzzy msgid "Create profile" msgstr "Criar um usuário" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 #, fuzzy msgid "Remove selected profiles" msgstr "Remover os filtros selecionados?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 #, fuzzy msgid "Activate profile" msgstr "Remover os filtros selecionados?" @@ -2537,26 +2487,26 @@ msgstr "Removendo filtros selecionados…" msgid "Batch subscribe" msgstr "" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "Categoria:" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "Adicionando o Feed..." -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "Editar categorias" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "Remover os filtros selecionados?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Editar categorias" + #: classes/pref/feeds.php:1309 #, fuzzy msgid "More actions..." @@ -2859,71 +2809,71 @@ msgstr "Removendo o Feed..." msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "Feed não encontrado." -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "Exportar OPML" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importar" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Editar Tags" msgstr[1] "Editar Tags" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Nenhum feed foi selecionado." msgstr[1] "Nenhum feed foi selecionado." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 #, fuzzy msgid "Prepare data" msgstr "Salvar" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -3122,161 +3072,151 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -#, fuzzy -msgid "Date syntax appears to be correct:" -msgstr "Senha antiga incorreta" - -#: js/functions.js:624 -#, fuzzy -msgid "Date syntax is incorrect." -msgstr "Senha antiga incorreta" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 #, fuzzy msgid "Remove stored feed icon?" msgstr "Remover as categorias selecionadas?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Removendo o Feed..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Feed não encontrado." -#: js/functions.js:774 +#: js/functions.js:724 #, fuzzy msgid "Please select an image file to upload." msgstr "Por favor selecione um feed." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "" -#: js/functions.js:793 +#: js/functions.js:743 #, fuzzy msgid "Please enter label caption:" msgstr "Último Login" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "" -#: js/functions.js:841 +#: js/functions.js:791 #, fuzzy msgid "Subscribe to Feed" msgstr "Removendo o Feed..." -#: js/functions.js:868 +#: js/functions.js:818 #, fuzzy msgid "Subscribed to %s" msgstr "Removendo o Feed..." -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "" -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "Arquivo:" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "Ações do Feed:" -#: js/functions.js:1126 +#: js/functions.js:1076 #, fuzzy msgid "Create Filter" msgstr "Criar um usuário" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Removendo o Feed..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 #, fuzzy msgid "Unsubscribe from %s?" msgstr "Removendo o Feed..." -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Removendo o Feed..." -#: js/functions.js:1373 +#: js/functions.js:1323 #, fuzzy msgid "Please enter category title:" msgstr "Salvando categoria..." -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 #, fuzzy msgid "Trying to change address..." msgstr "Tentando alterar senha ..." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "" -#: js/functions.js:1610 +#: js/functions.js:1560 #, fuzzy msgid "Edit Feed" msgstr "Editar" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Salvando o Feed..." -#: js/functions.js:1648 +#: js/functions.js:1598 #, fuzzy msgid "More Feeds" msgstr "Removendo o Feed..." -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3287,28 +3227,28 @@ msgstr "Removendo o Feed..." msgid "No feeds are selected." msgstr "Nenhum feed foi selecionado." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 #, fuzzy msgid "Feeds with update errors" msgstr "Atualizar" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 #, fuzzy msgid "Remove selected feeds?" msgstr "Remover os filtros selecionados?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Removendo filtros selecionados…" -#: js/functions.js:1902 +#: js/functions.js:1852 #, fuzzy msgid "Help" msgstr "Olá," @@ -3704,154 +3644,164 @@ msgstr "Favoritos" msgid "New version available!" msgstr "" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Cancelar" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 #, fuzzy msgid "Unstar article" msgstr "Favoritos" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 #, fuzzy msgid "Star article" msgstr "Favoritos" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 #, fuzzy msgid "Unpublish article" msgstr "Publicado" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 #, fuzzy msgid "No articles are selected." msgstr "Nenhum filtro foi selecionado." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Favoritos" msgstr[1] "Favoritos" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Remover os filtros selecionados?" msgstr[1] "Remover os filtros selecionados?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Favoritos" msgstr[1] "Favoritos" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Favoritos" msgstr[1] "Favoritos" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Marcando todos os feeds como lidos..." msgstr[1] "Marcando todos os feeds como lidos..." -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 #, fuzzy msgid "Edit article Tags" msgstr "Editar Tags" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Salvando categoria..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 #, fuzzy msgid "No article is selected." msgstr "Nenhum filtro foi selecionado." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 #, fuzzy msgid "No articles found to mark" msgstr "Sem Feeds para exibir." -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Marcando todos os feeds como lidos..." msgstr[1] "Marcando todos os feeds como lidos..." -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 #, fuzzy msgid "Open original article" msgstr "Favoritos" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Favoritos" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Marcar como favorito" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "" + +#: js/viewfeed.js:1938 #, fuzzy msgid "Remove label" msgstr "Remover" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 #, fuzzy msgid "Playing..." msgstr "Salvando o Feed..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 #, fuzzy msgid "Click to pause" msgstr "Favoritos" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Remover os filtros selecionados?" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Salvando categoria..." -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Feed não encontrado." @@ -3975,6 +3925,45 @@ msgstr "Favoritos" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Título" + +#~ msgid "Title or Content" +#~ msgstr "Título ou Conteúdo" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Content" +#~ msgstr "Conteúdo" + +#, fuzzy +#~ msgid "Article Date" +#~ msgstr "Feed não encontrado." + +#, fuzzy +#~ msgid "Delete article" +#~ msgstr "Favoritos" + +#~ msgid "Set starred" +#~ msgstr "Marcar como favorito" + +#, fuzzy +#~ msgid "Assign tags" +#~ msgstr "sem tags" + +#, fuzzy +#~ msgid "Default interval between feed updates" +#~ msgstr "Padrão" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Senha antiga incorreta" + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Senha antiga incorreta" + #, fuzzy #~ msgid "(%d feed)" #~ msgid_plural "(%d feeds)" diff --git a/locale/ru_RU/LC_MESSAGES/messages.mo b/locale/ru_RU/LC_MESSAGES/messages.mo index 1ab69e72c..9be7b4269 100644 Binary files a/locale/ru_RU/LC_MESSAGES/messages.mo and b/locale/ru_RU/LC_MESSAGES/messages.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/messages.po b/locale/ru_RU/LC_MESSAGES/messages.po index e5dac1af1..31c36c302 100644 --- a/locale/ru_RU/LC_MESSAGES/messages.po +++ b/locale/ru_RU/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2009-05-29 14:38+0300\n" "Last-Translator: Max Kamashev \n" "Language-Team: Русский \n" @@ -252,8 +252,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "неудавшийся тест экранирования SQL, проверьте вашу базу данных и конфигурацию PHP" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -263,10 +263,10 @@ msgstr "неудавшийся тест экранирования SQL, пров #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -282,84 +282,83 @@ msgstr "неудавшийся тест экранирования SQL, пров #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Идет загрузка..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Свернуть список каналов" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Показать статьи" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Адаптивно" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Все статьи" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Отмеченные" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Опубликован" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Новые" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Новые" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Игнорировать Оценки" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Сортировать статьи" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "По умолчанию" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Отметить канал как прочитанный" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -368,112 +367,112 @@ msgstr "Отметить канал как прочитанный" msgid "Mark as read" msgstr "Как прочитанные" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Все статьи" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Доступная новая версия Tiny Tiny RSS!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Действия..." -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "Настройки" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Поиск..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Действия над каналами:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Подписаться на канал..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Редактировать канал..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Заново оценить канал" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Отписаться" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Все каналы:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Показать/скрыть прочитанные" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Другие действия:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Перейти в дайджест..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Показать облако тегов..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "Переключить изменение режима категории" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Выбрать по тегам..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Создать метку..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Создать фильтр..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Горячие клавиши" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -482,8 +481,8 @@ msgstr "Выход" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Настройки" @@ -508,8 +507,8 @@ msgid "Filters" msgstr "Фильтры" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -580,10 +579,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS база данных обновлена." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -601,612 +600,360 @@ msgstr[2] "Отмеченные" msgid "No feeds found." msgstr "Каналы не найдены." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Особые" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Все каналы" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Отмеченные" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Опубликованные" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Свежие" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Архив статей" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Навигация" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "Генерировать канал" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "Показать оригинальное содержимое статьи" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "Показать оригинальное содержимое статьи" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Показать диалог поиска" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "Все статьи" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Изм. отмеченное" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Отметить / снять отметку" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Прочитано / не прочитано" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Редактировать теги" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Скрыть выбранные статьи" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Опубликовать" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "Открыть статью в новом окне" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Отметить статьи ниже как прочитанные" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Отметить статьи выше как прочитанные" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "Всё выполнено." -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Выбрать статью под курсором мыши" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Отправить по почте" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Закрыть статью" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Переключить изменение режима категории" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "Инвертировать выделение" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Выбрать все статьи" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "Выбрать непрочитанные статьи" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "Отметить" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "Выбрать непрочитанные статьи" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "Инвертировать выделение" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "Очистить выделение статей" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Канал" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "Обновить активный канал" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "Показать/скрыть прочитанные" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Подписаться на канал" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Редактировать канал" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Обратный порядок заголовков" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "Все каналы обновлены." -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Отметить все каналы как прочитанные" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "Щёлкните, чтобы развернуть категорию" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "Переключить изменение режима категории" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Переключить изменение режима категории" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "Перейти к.." -#: include/functions.php:1924 +#: include/functions.php:1925 #, fuzzy msgid "Fresh" msgstr "Обновить" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Облако тегов" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "Другой:" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Создать метку" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Создать фильтр" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "Развернуть боковую панель" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "Показать диалог поиска" -#: include/functions.php:2418 +#: include/functions.php:2419 #, fuzzy, php-format msgid "Search results: %s" msgstr "Результаты поиска" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Щёлкните для проигрывания" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Играть" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "нет тегов" -#: include/functions.php:3059 +#: include/functions.php:3060 #: classes/feeds.php:686 msgid "Edit tags for this article" msgstr "Редактировать теги статьи" -#: include/functions.php:3088 +#: include/functions.php:3089 #: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Оригинал:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -#, fuzzy -msgid "Feed URL" -msgstr "Канал" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Закрыть это окно" - -#: include/functions.php:3368 -#, fuzzy -msgid "(edit note)" -msgstr "править заметку" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "неизвестный тип" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "Вложения:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Заголовок" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Заголовок или содержимое" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Ссылка" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Содержимое" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Дата Статьи" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Удалить статью" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Отметить" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Опубликовать" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Применить теги" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Применить метку" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Изменить оценку" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Общие" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Интерфейс" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Расширенные" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Эта опция полезна, если вы читаете несколько агрегаторов типа \"планета\" с пересекающимися статьями. Когда запрещено, статья показывается лишь один раз." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Показывать развёрнутый список статей, вместо разделения экрана на заголовки и содержимое статей" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Эта опция разрешает отправку ежедневного обзора новых (и непрочитанных) заголовков на ваш адрес электронной почты" - -#: include/localized_schema.php:25 -#, fuzzy -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Эта опция разрешает автоматически отмечать статьи как прочитанные в комбинированном режиме (исключение для специального канала \"Свежие статьи\" ), пока вы прокручиваете список статей." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Вырезать все, кроме основных HTML тегов при показе статей." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Когда автоопределение тегов в статьях, эти теги не будут применяться (список значений, разделённых запятыми)." - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Когда эта опция включена, заголовки в Особом канале и Метки группируются по каналам" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -#, fuzzy -msgid "Uses UTC timezone" -msgstr "Часовой пояс" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Стирать статьи старше этого количества дней (0 - выключает)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Интервал между обновлениями каналов по умолчанию (в минутах)" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Количество статей на странице" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Разрешить дубликаты статей" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Включить категории каналов" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Показать предпросмотр содержимого в списке заголовков" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Короткий формат даты" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Длинный формат даты" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Комбинированный режим отображения" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Спрятать каналы без непрочитанных статей" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Показывать следующий канал при отметке как прочитанный" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Сортировать каналы по количеству непрочитанных статей" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Обратный порядок заголовков (старые впереди)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Включить почтовый дайджест" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Подтвердить отметку каналка как прочитанный" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Автоматически помечать статьи как прочитанные" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Вырезать небезопасные теги из статей" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Черный список тегов" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Максимальный возраст свежих статей (в часах)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Отметить все статьи в e-mail дайджесте как прочитанные?" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Автоматически раскрывать статьи в комбинированном режиме" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Очистить непрочитанные статьи" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Показывать специальные каналы, когда скрываются прочитанные каналы" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Группировать заголовки в виртуальные каналы" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Не показывать изображения в статьях" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Часовой пояс" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Изменить пользовательские стили" - -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Сортировать каналы по дате, указанной в канале" +msgid "Originally from:" +msgstr "Оригинал:" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Вход с помощью SSL сертификата" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +#, fuzzy +msgid "Feed URL" +msgstr "Канал" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Закрыть это окно" -#: include/localized_schema.php:65 +#: include/functions.php:3369 #, fuzzy -msgid "Assign articles to labels automatically" -msgstr "Отмечать статьи как прочитанные автоматически" +msgid "(edit note)" +msgstr "править заметку" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Выбор темы" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "неизвестный тип" + +#: include/functions.php:3660 +#, fuzzy +msgid "Attachments" +msgstr "Вложения:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1238,7 +985,7 @@ msgstr "Профиль:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Профиль по умолчанию" @@ -1256,7 +1003,7 @@ msgstr "" msgid "Log in" msgstr "Войти" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Ошибка проверки сессии (некорректный IP)" @@ -1272,7 +1019,7 @@ msgstr "Теги для этой статьи (разделенные запят #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1293,7 +1040,7 @@ msgstr "Сохранить" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1531,7 +1278,7 @@ msgstr "Выбрать:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1551,7 +1298,7 @@ msgstr "Инвертировать" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1636,7 +1383,8 @@ msgid "No starred articles found to display." msgstr "Не найдено отмеченных статей" #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Нет статей для показа. Вы можете присвоить метку вручную (смотрите выше меню Действия) или используйте фильтр." #: classes/feeds.php:744 @@ -1691,7 +1439,7 @@ msgid "Login" msgstr "Пользователь:" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1915,7 +1663,7 @@ msgstr "[tt-rss] Уведомление о смене пароля" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2089,7 +1837,7 @@ msgid "Save rule" msgstr "Сохранить" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Add rule" msgstr "Добавить метку..." @@ -2108,7 +1856,7 @@ msgid "Save action" msgstr "Действия над каналами" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "Действия над каналом" @@ -2117,239 +1865,448 @@ msgstr "Действия над каналом" msgid "[No caption]" msgstr "[Нет заголовка]" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Общие" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Интерфейс" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Расширенные" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Разрешить дубликаты статей" + +#: classes/pref/prefs.php:26 +#, fuzzy +msgid "Assign articles to labels automatically" +msgstr "Отмечать статьи как прочитанные автоматически" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Черный список тегов" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Когда автоопределение тегов в статьях, эти теги не будут применяться (список значений, разделённых запятыми)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Автоматически помечать статьи как прочитанные" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Эта опция разрешает автоматически отмечать статьи как прочитанные в комбинированном режиме (исключение для специального канала \"Свежие статьи\" ), пока вы прокручиваете список статей." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Автоматически раскрывать статьи в комбинированном режиме" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Комбинированный режим отображения" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Показывать развёрнутый список статей, вместо разделения экрана на заголовки и содержимое статей" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Подтвердить отметку каналка как прочитанный" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Количество статей на странице" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Интервал обновления:" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Отметить все статьи в e-mail дайджесте как прочитанные?" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Включить почтовый дайджест" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Эта опция разрешает отправку ежедневного обзора новых (и непрочитанных) заголовков на ваш адрес электронной почты" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +#, fuzzy +msgid "Uses UTC timezone" +msgstr "Часовой пояс" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Включить категории каналов" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Сортировать каналы по количеству непрочитанных статей" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Максимальный возраст свежих статей (в часах)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Спрятать каналы без непрочитанных статей" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Показывать специальные каналы, когда скрываются прочитанные каналы" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Длинный формат даты" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Показывать следующий канал при отметке как прочитанный" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Стирать статьи старше этого количества дней (0 - выключает)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Очистить непрочитанные статьи" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Обратный порядок заголовков (старые впереди)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Короткий формат даты" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Показать предпросмотр содержимого в списке заголовков" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Сортировать каналы по дате, указанной в канале" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Вход с помощью SSL сертификата" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Не показывать изображения в статьях" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Вырезать небезопасные теги из статей" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Вырезать все, кроме основных HTML тегов при показе статей." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Выбор темы" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Изменить пользовательские стили" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Часовой пояс" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Группировать заголовки в виртуальные каналы" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Когда эта опция включена, заголовки в Особом канале и Метки группируются по каналам" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Старый пароль не может быть пустым." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Новый пароль не может быть пустым." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Пароли не совпадают." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Конфигурация сохранена." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Неизвестная опция: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 #, fuzzy msgid "Your personal data has been saved." msgstr "Пароль был изменен." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "Авторизация" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Личные данные" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Полное имя" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Уровень доступа:" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Сохранить" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Используется пароль по умолчанию, пожалуйста, измените его." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Старый пароль" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Новый пароль" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Подтверждение пароля" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Изменить пароль" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "Некорректное имя пользователя или пароль" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "(Отключен)" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "Включен" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 #, fuzzy msgid "Customize" msgstr "Изменить пользовательские стили" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Регистрация" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Сохранить конфигурацию" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Управление профилями" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Сбросить настройки" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 #, fuzzy msgid "Description" msgstr "описание" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "Очистить данные канала." -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "Разрешить иконки каналов" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "Некорректное имя пользователя или пароль" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Создать профиль" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 #, fuzzy msgid "(active)" msgstr "Адаптивно" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Удалить выбранные профили?" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Активировать профиль" @@ -2444,25 +2401,25 @@ msgstr "Редактировать выбранные каналы" msgid "Batch subscribe" msgstr "Отписаться" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Категории" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 #, fuzzy msgid "Add category" msgstr "Добавить категорию..." -#: classes/pref/feeds.php:1291 -#, fuzzy -msgid "(Un)hide empty categories" -msgstr "Редактировать категории" - #: classes/pref/feeds.php:1295 #, fuzzy msgid "Remove selected" msgstr "Удалить выбранные фильтры?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "Редактировать категории" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Действия..." @@ -2770,40 +2727,40 @@ msgstr "Вернуться к Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Архив статей" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 #, fuzzy msgid "Export my data" msgstr "Экспортировать данные" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Импортировать" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Не могу импортировать данные: некорректная версия схемы." -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Не могу импортировать данные: неизвестынй формат данных." -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " @@ -2811,7 +2768,7 @@ msgstr[0] "Редактировать заметку" msgstr[1] "Редактировать заметку" msgstr[2] "Редактировать заметку" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " @@ -2819,7 +2776,7 @@ msgstr[0] "уже импортирован." msgstr[1] "уже импортирован." msgstr[2] "уже импортирован." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." @@ -2827,16 +2784,16 @@ msgstr[0] "Канал не выбран." msgstr[1] "Канал не выбран." msgstr[2] "Канал не выбран." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Не могу загрузить XML документ." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 #, fuzzy msgid "Prepare data" msgstr "Сохранить" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -3031,160 +2988,150 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -#, fuzzy -msgid "Date syntax appears to be correct:" -msgstr "Старый пароль неправилен." - -#: js/functions.js:624 -#, fuzzy -msgid "Date syntax is incorrect." -msgstr "Старый пароль неправилен." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 #, fuzzy msgid "Upload complete." msgstr "Обновлённые статьи" -#: js/functions.js:742 +#: js/functions.js:692 #, fuzzy msgid "Remove stored feed icon?" msgstr "Удалить сохранённые данные" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Канал удаляется..." -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Канал не найден." -#: js/functions.js:774 +#: js/functions.js:724 #, fuzzy msgid "Please select an image file to upload." msgstr "Пожалуйста выберите только один канал." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Идет загрузка..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Пожалуйста, введите заголовок метки:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Не могу создать метку: отсутствует заголовок." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Подписаться на канал" -#: js/functions.js:868 +#: js/functions.js:818 #, fuzzy msgid "Subscribed to %s" msgstr "Подписаны каналы:" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "Не могу подписаться: нет URL" -#: js/functions.js:933 +#: js/functions.js:883 #, fuzzy msgid "You are already subscribed to this feed." msgstr "Нельзя отписаться от категории." -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "Фильтры" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "Действия над каналом" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Создать фильтр" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Подписаться на канал..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Отписаться от %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Канал удаляется..." -#: js/functions.js:1373 +#: js/functions.js:1323 #, fuzzy msgid "Please enter category title:" msgstr "Пожалуйста, укажите заметку для статьи:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Попытка изменить адрес.." -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Вы не можете редактировать этот канал." -#: js/functions.js:1610 +#: js/functions.js:1560 #, fuzzy msgid "Edit Feed" msgstr "Редактировать канал" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Идёт сохранение..." -#: js/functions.js:1648 +#: js/functions.js:1598 #, fuzzy msgid "More Feeds" msgstr "Больше каналов" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3195,28 +3142,28 @@ msgstr "Больше каналов" msgid "No feeds are selected." msgstr "Нет выбранных каналов." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 #, fuzzy msgid "Feeds with update errors" msgstr "Ошибки обновления" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 #, fuzzy msgid "Remove selected feeds?" msgstr "Удалить выбранные фильтры?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Выбранные фильтры удаляются..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Помощь" @@ -3585,44 +3532,50 @@ msgstr "Переоценка статей..." msgid "New version available!" msgstr "Доступная новая версия Tiny Tiny RSS!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "Отмена" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Не отмеченные" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Отмеченные" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Не публиковать" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Опубликовать" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Нет выбранных статей." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" @@ -3630,7 +3583,7 @@ msgstr[0] "Отметить %d выбранные статьи в %s как пр msgstr[1] "Отметить %d выбранные статьи в %s как прочитанные?" msgstr[2] "Отметить %d выбранные статьи в %s как прочитанные?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" @@ -3638,7 +3591,7 @@ msgstr[0] "Удалить %d выбранных статей?" msgstr[1] "Удалить %d выбранных статей?" msgstr[2] "Удалить %d выбранных статей?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" @@ -3646,7 +3599,7 @@ msgstr[0] "Архивировать %d выбранных статей в %s?" msgstr[1] "Архивировать %d выбранных статей в %s?" msgstr[2] "Архивировать %d выбранных статей в %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" @@ -3654,11 +3607,11 @@ msgstr[0] "Переместить %d архивированных статей msgstr[1] "Переместить %d архивированных статей назад?" msgstr[2] "Переместить %d архивированных статей назад?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" @@ -3666,23 +3619,23 @@ msgstr[0] "Отметить %d выбранные статьи в %s как пр msgstr[1] "Отметить %d выбранные статьи в %s как прочитанные?" msgstr[2] "Отметить %d выбранные статьи в %s как прочитанные?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Редактировать теги" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Сохранить теги статьи..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Статья не выбрана" -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Статей для отметки не найдено." -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" @@ -3690,43 +3643,47 @@ msgstr[0] "Отметить %d статью(ей) как прочитанные? msgstr[1] "Отметить %d статью(ей) как прочитанные?" msgstr[2] "Отметить %d статью(ей) как прочитанные?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Показать оригинальное содержимое статьи" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "показать теги" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Изм. отмеченное" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Применить метку" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Удалить метку" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Проигрываю..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Пауза" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "Пожалуйста, укажите заметку для статьи:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "Пожалуйста, укажите заметку для статьи:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Все статьи" @@ -3849,6 +3806,47 @@ msgstr "Расшарить статью по ссылке" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "Заголовок" + +#~ msgid "Title or Content" +#~ msgstr "Заголовок или содержимое" + +#~ msgid "Link" +#~ msgstr "Ссылка" + +#~ msgid "Content" +#~ msgstr "Содержимое" + +#~ msgid "Article Date" +#~ msgstr "Дата Статьи" + +#~ msgid "Delete article" +#~ msgstr "Удалить статью" + +#~ msgid "Set starred" +#~ msgstr "Отметить" + +#~ msgid "Assign tags" +#~ msgstr "Применить теги" + +#~ msgid "Modify score" +#~ msgstr "Изменить оценку" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Эта опция полезна, если вы читаете несколько агрегаторов типа \"планета\" с пересекающимися статьями. Когда запрещено, статья показывается лишь один раз." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Интервал между обновлениями каналов по умолчанию (в минутах)" + +#, fuzzy +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Старый пароль неправилен." + +#, fuzzy +#~ msgid "Date syntax is incorrect." +#~ msgstr "Старый пароль неправилен." + #, fuzzy #~ msgid "Refresh" #~ msgstr "Обновить" diff --git a/locale/sv_SE/LC_MESSAGES/messages.mo b/locale/sv_SE/LC_MESSAGES/messages.mo index ddf0126c1..adc937c0a 100644 Binary files a/locale/sv_SE/LC_MESSAGES/messages.mo and b/locale/sv_SE/LC_MESSAGES/messages.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/messages.po b/locale/sv_SE/LC_MESSAGES/messages.po index c757bbf2b..e3fcb60a6 100644 --- a/locale/sv_SE/LC_MESSAGES/messages.po +++ b/locale/sv_SE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2013-03-20 16:42+0100\n" "Last-Translator: wahlis\n" "Language-Team: \n" @@ -259,8 +259,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -270,10 +270,10 @@ msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PH #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -289,84 +289,83 @@ msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PH #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Laddar, vänta..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Öppna kanallistan" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Visa artiklarna" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptivt" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Alla artiklar" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "Stjärnmärkta" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "Publicerade" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Olästa" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "Olästa" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Ignorera poängsättningen" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Sortera artiklarna" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Standard" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Flagga kanal som läst" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -375,110 +374,110 @@ msgstr "Flagga kanal som läst" msgid "Mark as read" msgstr "Markera som lästa" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Alla artiklar" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Kommunikationsproblem med servern." -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Ny version av Tiny Tiny RSS finns att ladda ner!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Aktiviteter..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Inställningar..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Sök..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Kanalaktiviteter:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Prenumerera på kanal..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Redigera kanal..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Beräkna kanalens poäng på nytt" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Avbeställ kanalen" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Alla kanaler:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Dölj lästa kanaler" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Andra aktiviteter:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Byt läge till sammanfattning..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Visa taggmoln..." -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Växla widescreenläge" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Välj artiklar från tagg..." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Skapa etikett..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Skapa filter..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Hjälp för kortkommandon..." -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -487,8 +486,8 @@ msgstr "Utloggning" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "Inställningar" @@ -513,8 +512,8 @@ msgid "Filters" msgstr "Filter" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -584,10 +583,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Skript för att uppdatera Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -604,583 +603,335 @@ msgstr[1] "%d arkiverade artiklar" msgid "No feeds found." msgstr "Inga kanaler funna." -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Specialkanaler" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alla kanaler" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Stjärnmärkta artiklar" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Publicerade artiklar" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Nya artiklar" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Arkiverade artiklar" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Nyligen lästa" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigation" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Öppna nästa kanal" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Öppna föregående kanal" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Öppna näst artikel" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Öppna föregående artikel" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Öppna nästa artikel (skrolla inte långa artiklar)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Öppna föregående artikel (skrolla inte långa artiklar)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Visa sökdialogen" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artikel" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Växla stjärnmarkering" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Växla publicering" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Växla olästa" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Redigera taggar" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "Avvisa markerade" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "Avvisa lästa" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "Öppna i nytt fönster" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Märk nedanstående som lästa" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Märk ovanstående som lästa" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Skrolla ned" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Skrolla upp" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "Välj markerad artikel" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Skicka artikel med e-post" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "Stäng artikel" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "Växla visa orginal" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Artikelval" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Välj alla" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Välj olästa" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Välj markerade" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Välj publicerade" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Invertera val" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Avmarkera allt" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Kanal" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Uppdatera aktuell kanal" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Växla visning av lästa kanaler" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Prenumerera på kanal" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Redigera kanal" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "Omvänd sortering på rubrik" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Debugga kanaluppdatering" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Märk alla kanaler som lästa" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Öppna/stäng aktuell kategori:" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Växla komboläge" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "Växla komboläge" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Gå till" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Nya" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Taggmoln" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Övriga" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Skapa etikett" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Skapa filter" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Växla sidomeny" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Hjälpfönster" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Sökresultat: %s" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Klicka för att starta" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Start" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 -msgid "no tags" -msgstr "Inga taggar" - -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Redigera taggar för denna artikel" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Ursprungligen från:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "Kanal-URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Stäng fönstret" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(Redigera notering)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "Okänd typ" - -#: include/functions.php:3657 -msgid "Attachments" -msgstr "Bilagor" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titel" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titel eller innehåll" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Länk" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Innehåll" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Artikeldatum" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Radera artikel" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Stjärnmarkera" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publicera artikel" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Tagga" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Ange etikett" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Redigera poäng" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Generellt" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Interface" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Avancerat" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "Detta är användbart när du läser flera sammanslagna kanaler som har delvis samma användarbas. När inaktiverad så visas samma artikel från flera olika kanaler endast en gång." - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "Visa expanderad lista med artiklar, istället för olika visningar för rubriker och artikeltext" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "Öppna automatiskt nästa kanal som har olästa artiklar efter att du markerat en som läst" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Skicka dagliga sammanställningar över nya (och olästa) rubriker till din e-post" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "Markera artiklar som lästa automatisk när du skrollar artikellistan" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Ta bort alla utom de vanligast HTML-taggarna från artiklarna." - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "Använd inte följande taggar för automatisk taggning av artiklar (komma-separerad lista" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "Anpassa CSS Stylesheet" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "Sortera efer kanaldatum istället för efter importdatum" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Registerar ditt SSL klientcertifikat i tt-rss" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Använd UTC-tid" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Radera artikel efter X dagar (0 - deaktiverar)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Standardintervall mellan kanaluppdateringar" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Visa XX artiklar per gång" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Tillåt dubbletter" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Aktivera kategorier" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Förhandsgranska text i rubriklistan" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Korta datum" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Långa datum" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinerad kanalvisning" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "Dölj feeds utan olästa artiklar" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Visa nästa kanal när vi är ikapp" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Sortera kanal efter antal olästa artiklar" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Omvänd sortering (äldsta överst)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Aktivera e-postsammanfattning" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Bekräfta markera kanal som läst" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Märk artiklar som lästa automatiskt" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Ta bort osäkra taggar från artiklar" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Svartlistade taggar" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maxålder för nya artiklar (i timmar)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Flagga artiklar i e-postsammanfattning som lästa" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Expandera artiklar automatiskt i kombinerat läge" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Radera olästa artiklar" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Visa specialkanaler när lästa feeds är dolda" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Gruppera rubriker i virtuella kanaler" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "Baka inte in bilder i artiklar" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Aktivera externt API" +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 +msgid "no tags" +msgstr "Inga taggar" -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Användarens tidszon" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Redigera taggar för denna artikel" -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Anpassa stylesheet" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Ursprungligen från:" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Sortera rubriker efter kanalens datum" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "Kanal-URL" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Logga in med SSL-certifikat" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Stäng fönstret" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Skicka sammanfattningar kring klockan" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(Redigera notering)" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Ange etiketter för artiklar per automatik" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "Okänd typ" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Välj tema" +#: include/functions.php:3660 +msgid "Attachments" +msgstr "Bilagor" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1212,7 +963,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "Standardprofil" @@ -1230,7 +981,7 @@ msgstr "" msgid "Log in" msgstr "Logga in" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Kunde inte verifiera session (fel IP)" @@ -1246,7 +997,7 @@ msgstr "Taggar för denna artikel (kommaseparerade):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1267,7 +1018,7 @@ msgstr "Spara" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1492,7 +1243,7 @@ msgstr "Markera:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1512,7 +1263,7 @@ msgstr "Invertera" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1594,7 +1345,8 @@ msgid "No starred articles found to display." msgstr "Hittade inga stjärnmarkerade artiklar." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "Hittade inga artiklar att visa. Du kan ge artiklar etiketter manuellt (Se aktiviteter-menyn ovan) eller genom att använd ett filter" #: classes/feeds.php:744 @@ -1648,7 +1400,7 @@ msgid "Login" msgstr "Användarnamn" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1868,7 +1620,7 @@ msgstr "[tt-rss] Info: Nytt lösenord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2037,7 +1789,7 @@ msgid "Save rule" msgstr "Spara regel" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "Tillämpa regel" @@ -2054,7 +1806,7 @@ msgid "Save action" msgstr "Spara aktivitet" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Add action" msgstr "Lägg till aktivitet" @@ -2063,228 +1815,434 @@ msgstr "Lägg till aktivitet" msgid "[No caption]" msgstr "Titel" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Generellt" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Interface" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Avancerat" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Tillåt dubbletter" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Ange etiketter för artiklar per automatik" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Svartlistade taggar" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "Använd inte följande taggar för automatisk taggning av artiklar (komma-separerad lista" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Märk artiklar som lästa automatiskt" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "Markera artiklar som lästa automatisk när du skrollar artikellistan" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Expandera artiklar automatiskt i kombinerat läge" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinerad kanalvisning" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Visa expanderad lista med artiklar, istället för olika visningar för rubriker och artikeltext" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Bekräfta markera kanal som läst" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Visa XX artiklar per gång" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "Standardintervall" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Flagga artiklar i e-postsammanfattning som lästa" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "Aktivera e-postsammanfattning" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Skicka dagliga sammanställningar över nya (och olästa) rubriker till din e-post" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Skicka sammanfattningar kring klockan" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Använd UTC-tid" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "Aktivera externt API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Aktivera kategorier" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Sortera kanal efter antal olästa artiklar" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maxålder för nya artiklar (i timmar)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "Dölj feeds utan olästa artiklar" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "Visa specialkanaler när lästa feeds är dolda" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Långa datum" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Visa nästa kanal när vi är ikapp" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Öppna automatiskt nästa kanal som har olästa artiklar efter att du markerat en som läst" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Radera artikel efter X dagar (0 - deaktiverar)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Radera olästa artiklar" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Omvänd sortering (äldsta överst)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Korta datum" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Förhandsgranska text i rubriklistan" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Sortera rubriker efter kanalens datum" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Sortera efer kanaldatum istället för efter importdatum" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Logga in med SSL-certifikat" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Registerar ditt SSL klientcertifikat i tt-rss" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "Baka inte in bilder i artiklar" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Ta bort osäkra taggar från artiklar" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Ta bort alla utom de vanligast HTML-taggarna från artiklarna." + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "Välj tema" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Anpassa stylesheet" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "Anpassa CSS Stylesheet" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "Användarens tidszon" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Gruppera rubriker i virtuella kanaler" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "Föregående lösenord kan inte vara tomt." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "Nytt lösenord får inte vara tomt." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "Lösenorden stämmer inte överens." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "Funktionen stöds inte av autenticeringsmodulen." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "Konfigurationen sparad." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "Okänt alternativ: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "Dina personliga data sparas." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "Personlig info / Authenticering" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "Personlig info" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "Fullständigt namn" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "E-post" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "Behörighetsnivå" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "Spara" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "Byt lösenord." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "Gammalt lösenord" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "Nytt lösenord" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "Bekräfta lösenord" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "Byt lösenord" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "(OTP) / Authentifikator" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 msgid "Enter your password" msgstr "Ange lösenord" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "Stäng av OTP" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Du behöver en kompatible Authenticator för att använda detta. Byter du lösenord inaktiverar automatiskt OTP" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "Läs in följande QR-kod med Authenticatorn:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "Jag har läst av bilden och vill aktivera OTP" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "Aktivera OTP" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "Anpassa" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "Registrera" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "Rensa" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuell servertid: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "Spara konfiguration" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "Hantera profiler" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "Återställ till standard" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "Systemplugins" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "Beskrivning" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "Av" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 msgid "Clear data" msgstr "Rensa data" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "Användarplugins" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "Aktivera valda plugins" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "Felaktigt lösenord" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "Skapa profil" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(aktiva)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "Radera markerade profiler" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "Aktivera profil" @@ -2378,22 +2336,22 @@ msgstr "Redigera valda kanaler" msgid "Batch subscribe" msgstr "Massprenumerera" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorier" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Lägg till kategorier" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Växla visning av tomma kategorier" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Ta bort valda kategorier" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Växla visning av tomma kategorier" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Fler aktiviteter..." @@ -2675,68 +2633,68 @@ msgstr "Prenumerera i Tiny Tiny RSS" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "Använd denna bookmarklet för att publicera webbsidor genom Tiny Tiny RSS" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Importera och exportera" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Artikelarkiv" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "Du kan importera och exportera dina stjärnmärkta och arkiverad artiklar så att du har en backup eller för att flytta mellan tt-rss instanser." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Exportera min data" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importera" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Kunde inte importera: inkorrekt version av databasschema" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Kunde inte importera: okänt filformat" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "Redigera artikelkommentar" msgstr[1] "Redigera artikelkommentar" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "är redan importerad." msgstr[1] "är redan importerad." -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "Ingen kanal vald." msgstr[1] "Ingen kanal vald." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Kunde inte ladda XML-filen." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Förbered data" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, fuzzy, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2920,147 +2878,139 @@ msgstr "Vill du rapportera detta fel till tt-rss.org? Rapporten kommer innehåll msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Datumsyntaxen verkar vara korrekt:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Datumsyntaxen är felaktig." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Radera sparad ikon för kanalen?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "Radera sparad ikon för kanalen?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "Hittar inte kanal." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Välj en bild att ladda upp." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Ladda upp ny ikon för denna kanal?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "Laddar, vänta..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Ange etikett-titel:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Kan inte skapa etikett. Titel saknas" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Prenumerera på kanal" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "Prenumererar nu på %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Den angivna URLen verkar vara felaktig." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Den angivna URLen verkar inte innehålla någon kanal." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Kunde inte ladda ned följande URL: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Du prenumererar redan på denna kanal." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Redigera regel" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Redigera aktivitet" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Skapa filter" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "Återställ prenumeration? Tiny Tiny RSS kommer försöka prenumerera på notifikationshubben igen vid nästa kanaluppdatering." -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "Prenumerera på kanal..." -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Säg upp prenumeration på %s?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Ange kategorititel:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Skapa ny syndikeringsadress för denna kanal?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Denna typ av kanal kan inte redigeras." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Redigera kanal" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "Spara" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Fler kanaler" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3071,26 +3021,26 @@ msgstr "Fler kanaler" msgid "No feeds are selected." msgstr "Ingen kanal vald." -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "Radera markerade kanaler från arkivet? Kanaler med sparade artiklar kommer inte raderas.." -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Kanaler med uppdateringsfel" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Radera markerade kanaler?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "Radera markerade kanaler?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Hjälp" @@ -3460,140 +3410,150 @@ msgstr "Poängsätt på nytt" msgid "New version available!" msgstr "Ny version tillgänglig!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Avbryt sökning" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Ta bort stjärnmarkering från artikeln" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Stjärnmärk artikeln" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Avpublicera artikeln" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publicera artikel" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Inga artiklar valda." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Radera %d markerade artiklar i %s?" msgstr[1] "Radera %d markerade artiklar i %s?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Radera %d markerade artiklar?" msgstr[1] "Radera %d markerade artiklar?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Arkivera %d markerade artiklar i %s?" msgstr[1] "Arkivera %d markerade artiklar i %s?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Flyta tillbaka %d arkiverade artiklar?" msgstr[1] "Flyta tillbaka %d arkiverade artiklar?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Flagga %d markerade artiklar i %s som lästa?" msgstr[1] "Flagga %d markerade artiklar i %s som lästa?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Redigera artikeltaggar" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "Redigera artikeltaggar" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Ingen artikel vald." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Hittade inga artiklar att flagga" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Flagga %d artiklar som lästa?" msgstr[1] "Flagga %d artiklar som lästa?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Öppna orginalartikeln" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "Visa artikelns URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "Växla stjärnmarkering" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Ange etikett" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Radera etikett" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Spelar..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Klicka för att pausa" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Ange ny poäng för markerade artiklar:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Ange ny poäng för denna artikel:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "Artikel URL" @@ -3704,6 +3664,45 @@ msgstr "Dela artikel via URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Liveuppdatering är en experimentell funktion. Gör backup på din tt-rss-katalog innan du fortsätter. Skriv 'ja' för att fortsätta." +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Title or Content" +#~ msgstr "Titel eller innehåll" + +#~ msgid "Link" +#~ msgstr "Länk" + +#~ msgid "Content" +#~ msgstr "Innehåll" + +#~ msgid "Article Date" +#~ msgstr "Artikeldatum" + +#~ msgid "Delete article" +#~ msgstr "Radera artikel" + +#~ msgid "Set starred" +#~ msgstr "Stjärnmarkera" + +#~ msgid "Assign tags" +#~ msgstr "Tagga" + +#~ msgid "Modify score" +#~ msgstr "Redigera poäng" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Detta är användbart när du läser flera sammanslagna kanaler som har delvis samma användarbas. När inaktiverad så visas samma artikel från flera olika kanaler endast en gång." + +#~ msgid "Default interval between feed updates" +#~ msgstr "Standardintervall mellan kanaluppdateringar" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Datumsyntaxen verkar vara korrekt:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Datumsyntaxen är felaktig." + #~ msgid "Updated" #~ msgstr "Uppdaterade" diff --git a/locale/zh_CN/LC_MESSAGES/messages.mo b/locale/zh_CN/LC_MESSAGES/messages.mo index 63ddec233..861b39165 100644 Binary files a/locale/zh_CN/LC_MESSAGES/messages.mo and b/locale/zh_CN/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/messages.po b/locale/zh_CN/LC_MESSAGES/messages.po index 0bf4c0479..0357a2775 100644 --- a/locale/zh_CN/LC_MESSAGES/messages.po +++ b/locale/zh_CN/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: 2012-02-14 08:32+0000\n" "Last-Translator: Sai \n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/tt-rss/language/zh_CN/)\n" @@ -252,8 +252,8 @@ msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "SQL 脱出测试失败,请检查您的数据库和 PHP 设置。" #: index.php:135 -#: index.php:154 -#: index.php:273 +#: index.php:152 +#: index.php:271 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -263,10 +263,10 @@ msgstr "SQL 脱出测试失败,请检查您的数据库和 PHP 设置。" #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:808 -#: js/functions.js:1244 -#: js/functions.js:1379 -#: js/functions.js:1691 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -282,84 +282,83 @@ msgstr "SQL 脱出测试失败,请检查您的数据库和 PHP 设置。" #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:774 -#: js/viewfeed.js:1245 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "读取中,请稍候……" -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "收缩侧边栏" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "显示文章" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "自动适应" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "全部文章" -#: index.php:176 -#: include/functions.php:1925 +#: index.php:174 +#: include/functions.php:1926 #: classes/feeds.php:106 msgid "Starred" msgstr "加星标的" -#: index.php:177 -#: include/functions.php:1926 +#: index.php:175 +#: include/functions.php:1927 #: classes/feeds.php:107 msgid "Published" msgstr "已发布" -#: index.php:178 +#: index.php:176 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "未读" -#: index.php:179 +#: index.php:177 #, fuzzy msgid "Unread First" msgstr "未读" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "忽略评分" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "排序文章" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "默认" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "标记信息源为已读" -#: index.php:195 -#: index.php:237 -#: include/functions.php:1915 -#: include/localized_schema.php:10 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -368,112 +367,112 @@ msgstr "标记信息源为已读" msgid "Mark as read" msgstr "标记为已读" -#: index.php:196 -#: include/functions.php:1811 -#: include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "全部文章" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Tiny Tiny RSS 有新版本啦!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "动作" -#: index.php:229 +#: index.php:227 #, fuzzy msgid "Preferences..." msgstr "偏好设置" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "搜索" -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "信息源操作:" -#: index.php:232 +#: index.php:230 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "订阅信息源" -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "编辑信息源" -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "为信息源重新评分" -#: index.php:235 +#: index.php:233 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1304 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "取消订阅" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "全部信息源:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "隐藏(显示)已读信息" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "其他操作:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "切换至摘要模式" -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "显示标签云" -#: index.php:244 -#: include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 #, fuzzy msgid "Toggle widescreen mode" msgstr "锁定加星标的项" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "通过自定义标签选择" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "创建预定义标签" -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "创建过滤器" -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "快捷键帮助" -#: index.php:257 +#: index.php:255 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -482,8 +481,8 @@ msgstr "注销" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "偏好设置" @@ -508,8 +507,8 @@ msgid "Filters" msgstr "过滤器" #: prefs.php:130 -#: include/functions.php:1118 -#: include/functions.php:1754 +#: include/functions.php:1119 +#: include/functions.php:1755 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -580,10 +579,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Tiny Tiny RSS 数据库是最新版。" #: include/digest.php:109 -#: include/functions.php:1127 -#: include/functions.php:1655 -#: include/functions.php:1740 -#: include/functions.php:1762 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -599,607 +598,357 @@ msgstr[0] "%d 个存档的文章" msgid "No feeds found." msgstr "未找到信息源。" -#: include/functions.php:1116 -#: include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "特殊区域" -#: include/functions.php:1604 +#: include/functions.php:1605 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "全部信息源" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "加星标文章" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "已发布文章" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "最新更新的文章" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "存档的文章" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "导航" -#: include/functions.php:1879 +#: include/functions.php:1880 #, fuzzy msgid "Open next feed" msgstr "自动显示下一个信息源" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 #, fuzzy msgid "Open next article" msgstr "打开原文" -#: include/functions.php:1882 +#: include/functions.php:1883 #, fuzzy msgid "Open previous article" msgstr "打开原文" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "显示搜索对话框" -#: include/functions.php:1886 +#: include/functions.php:1887 #, fuzzy msgid "Article" msgstr "全部文章" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "锁定加星标的项" -#: include/functions.php:1888 -#: js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "锁定发布的项" -#: include/functions.php:1889 -#: js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "锁定未读项" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "编辑自定义标签" -#: include/functions.php:1891 +#: include/functions.php:1892 #, fuzzy msgid "Dismiss selected" msgstr "不再显示所选的文章" -#: include/functions.php:1892 +#: include/functions.php:1893 #, fuzzy msgid "Dismiss read" msgstr "不再显示已读文章" -#: include/functions.php:1893 +#: include/functions.php:1894 #, fuzzy msgid "Open in new window" msgstr "在新窗口打开文章" -#: include/functions.php:1894 -#: js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "" -#: include/functions.php:1895 -#: js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "" -#: include/functions.php:1896 +#: include/functions.php:1897 #, fuzzy msgid "Scroll down" msgstr "全部完成。" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 #, fuzzy msgid "Select article under cursor" msgstr "选择鼠标指向的文章" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "通过邮件发送文章" -#: include/functions.php:1900 +#: include/functions.php:1901 #, fuzzy msgid "Close/collapse article" msgstr "选择所有文章" -#: include/functions.php:1902 +#: include/functions.php:1903 #: plugins/embed_original/init.php:33 #, fuzzy msgid "Toggle embed original" msgstr "锁定发布的项" -#: include/functions.php:1903 +#: include/functions.php:1904 #, fuzzy msgid "Article selection" msgstr "反选文章" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "选择所有文章" -#: include/functions.php:1905 +#: include/functions.php:1906 #, fuzzy msgid "Select unread" msgstr "选择未读文章" -#: include/functions.php:1906 +#: include/functions.php:1907 #, fuzzy msgid "Select starred" msgstr "加星标" -#: include/functions.php:1907 +#: include/functions.php:1908 #, fuzzy msgid "Select published" msgstr "选择未读文章" -#: include/functions.php:1908 +#: include/functions.php:1909 #, fuzzy msgid "Invert selection" msgstr "反选文章" -#: include/functions.php:1909 +#: include/functions.php:1910 #, fuzzy msgid "Deselect everything" msgstr "取消选择所有文章" -#: include/functions.php:1910 +#: include/functions.php:1911 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "信息源" -#: include/functions.php:1911 +#: include/functions.php:1912 #, fuzzy msgid "Refresh current feed" msgstr "刷新活动的信息源" -#: include/functions.php:1912 +#: include/functions.php:1913 #, fuzzy msgid "Un/hide read feeds" msgstr "隐藏(显示)已读信息" -#: include/functions.php:1913 +#: include/functions.php:1914 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "订阅信息源" -#: include/functions.php:1914 +#: include/functions.php:1915 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "编辑信息源" -#: include/functions.php:1916 +#: include/functions.php:1917 #, fuzzy msgid "Reverse headlines" msgstr "反向排序" -#: include/functions.php:1917 +#: include/functions.php:1918 #, fuzzy msgid "Debug feed update" msgstr "禁用更新" -#: include/functions.php:1918 +#: include/functions.php:1919 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "标记所有信息源为已读" -#: include/functions.php:1919 +#: include/functions.php:1920 #, fuzzy msgid "Un/collapse current category" msgstr "加入到类别:" -#: include/functions.php:1920 +#: include/functions.php:1921 #, fuzzy msgid "Toggle combined mode" msgstr "锁定发布的项" -#: include/functions.php:1921 +#: include/functions.php:1922 #, fuzzy msgid "Toggle auto expand in combined mode" msgstr "锁定发布的项" -#: include/functions.php:1922 +#: include/functions.php:1923 #, fuzzy msgid "Go to" msgstr "跳转至……" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "" -#: include/functions.php:1927 +#: include/functions.php:1928 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "标签云" -#: include/functions.php:1929 +#: include/functions.php:1930 #, fuzzy msgid "Other" msgstr "其他信息源" -#: include/functions.php:1930 +#: include/functions.php:1931 #: classes/pref/labels.php:281 msgid "Create label" msgstr "创建预定义标签" -#: include/functions.php:1931 +#: include/functions.php:1932 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "创建过滤器" -#: include/functions.php:1932 +#: include/functions.php:1933 #, fuzzy msgid "Un/collapse sidebar" msgstr "折叠侧边栏" -#: include/functions.php:1933 +#: include/functions.php:1934 #, fuzzy msgid "Show help dialog" msgstr "显示搜索对话框" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "" -#: include/functions.php:2909 -#: js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "点击播放" -#: include/functions.php:2910 -#: js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "播放" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 -#: include/functions.php:3343 -#: classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "无标签" -#: include/functions.php:3059 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "为本文编辑自定义标签" - -#: include/functions.php:3088 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "来源:" - -#: include/functions.php:3101 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "信息源 URL" - -#: include/functions.php:3132 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 -#: plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "关闭本窗口" - -#: include/functions.php:3368 -msgid "(edit note)" -msgstr "(编辑注记)" - -#: include/functions.php:3601 -msgid "unknown type" -msgstr "未知类型" - -#: include/functions.php:3657 -#, fuzzy -msgid "Attachments" -msgstr "附件:" - -#: include/localized_schema.php:3 -msgid "Title" -msgstr "标题" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "标题或内容" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "链接" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "内容" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "文章发布时间" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "删除文章" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "加星标" - -#: include/localized_schema.php:12 -#: js/viewfeed.js:483 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "发布文章" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "添加自定义标签" - -#: include/localized_schema.php:14 -#: js/viewfeed.js:1978 -msgid "Assign label" -msgstr "添加预定义标签" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "" - -#: include/localized_schema.php:21 -msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -msgstr "您可能订阅了一些聚合类型的信息源,这种情况下可能遇到同一用户的文章在不同源多次出现。当该选项被禁用时,来自不同 RSS 源的同一文章将只会显示一次。" - -#: include/localized_schema.php:22 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "将文章列表展开显示,而不是将标题和内容分别显示" - -#: include/localized_schema.php:23 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "每天将更新的和未读的文章标题通过邮件发送摘要到您设置的邮箱中" - -#: include/localized_schema.php:25 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "在滚动页面的同时自动将文章标记为已读。" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "仅加载几个最常用的 HTML 标签" - -#: include/localized_schema.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "自动检测文章标签时,这些标签将被忽略(半角逗号隔开的列表)。" - -#: include/localized_schema.php:28 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "选择本项可让特殊区域和预定义标签中的文章标题以信息源顺序排列" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "自定义 CSS 样式" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "使用信息源中定义的时间,而非本地导入的时间来排序。" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "在 tt-rss 处注册您的 SSL 证书" - -#: include/localized_schema.php:32 -#, fuzzy -msgid "Uses UTC timezone" -msgstr "用户所在时区" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -#, fuzzy -msgid "Purge articles after this number of days (0 - disables)" -msgstr "清除多少天之前的文章?(0为不启用)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "信息源更新的默认时间间隔" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "同时显示的文章数量" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "允许重复文章" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "启用信息源分类" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "在标题列表中显示内容预览" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "短时间格式" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "长时间格式" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "合并显示模式" - -#: include/localized_schema.php:43 -#, fuzzy -msgid "Hide feeds with no unread articles" -msgstr "隐藏没有未读信息的信息源" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "自动显示下一个信息源" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "以未读文章数量排序信息源" - -#: include/localized_schema.php:46 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "反转标题列表顺序(最旧的在上面)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "启用电子邮件摘要" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "标记信息源为已读之前弹出确认" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "自动标记文章为已读" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "从文章中剔除不安全的标签" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "被列入黑名单的标签" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "最新更新文章的保鲜期(以小时为单位)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "将邮件摘要中的文章标记为已读" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "在组合模式下自动展开文章" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "清除未读文章" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "隐藏已读信息之后显示特殊区域的内容" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "对虚拟源中的文章按源分组" - -#: include/localized_schema.php:58 -#, fuzzy -msgid "Do not embed images in articles" -msgstr "不要显示文章中的图片" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "允许使用外部 API" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "用户所在时区" - -#: include/localized_schema.php:61 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "自定义样式" +#: include/functions.php:3060 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "为本文编辑自定义标签" -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "以信息源的日期排序" +#: include/functions.php:3089 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "来源:" -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "使用 SSL 证书登录" +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "信息源 URL" -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1059 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "关闭本窗口" -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "" +#: include/functions.php:3369 +msgid "(edit note)" +msgstr "(编辑注记)" -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "选择主题" +#: include/functions.php:3604 +msgid "unknown type" +msgstr "未知类型" + +#: include/functions.php:3660 +#, fuzzy +msgid "Attachments" +msgstr "附件:" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -1231,7 +980,7 @@ msgstr "偏好:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:948 +#: classes/pref/prefs.php:995 msgid "Default profile" msgstr "默认偏好设置" @@ -1249,7 +998,7 @@ msgstr "" msgid "Log in" msgstr "登录" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "无法验证会话(IP 错误)" @@ -1265,7 +1014,7 @@ msgstr "本文的标签,请用逗号分开:" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 +#: classes/pref/prefs.php:941 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1286,7 +1035,7 @@ msgstr "保存" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:896 +#: classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1518,7 +1267,7 @@ msgstr "选择:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:908 +#: classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1538,7 +1287,7 @@ msgstr "反选" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:910 +#: classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1623,7 +1372,8 @@ msgid "No starred articles found to display." msgstr "没有加星标的文章。" #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually (see the Actions menu above) or use a filter." +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." msgstr "本标签下没有文章。你可以通过手动或过滤器的方式为文章添加预定义标签(参考上方动作菜单)。" #: classes/feeds.php:744 @@ -1678,7 +1428,7 @@ msgid "Login" msgstr "登陆" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:202 +#: classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1899,7 +1649,7 @@ msgstr "[tt-rss] 密码更换提醒" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:905 +#: classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -2071,7 +1821,7 @@ msgid "Save rule" msgstr "保存" #: classes/pref/filters.php:877 -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Add rule" msgstr "" @@ -2089,7 +1839,7 @@ msgid "Save action" msgstr "版面动作" #: classes/pref/filters.php:944 -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Add action" msgstr "信息源动作" @@ -2099,235 +1849,443 @@ msgstr "信息源动作" msgid "[No caption]" msgstr "标题" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "允许重复文章" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "被列入黑名单的标签" + +#: classes/pref/prefs.php:27 +#, fuzzy +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgstr "自动检测文章标签时,这些标签将被忽略(半角逗号隔开的列表)。" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "自动标记文章为已读" + +#: classes/pref/prefs.php:28 +#, fuzzy +msgid "Mark articles as read automatically while you scroll article list." +msgstr "在滚动页面的同时自动将文章标记为已读。" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "在组合模式下自动展开文章" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "合并显示模式" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "将文章列表展开显示,而不是将标题和内容分别显示" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "标记信息源为已读之前弹出确认" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "同时显示的文章数量" + +#: classes/pref/prefs.php:33 +#, fuzzy +msgid "Default feed update interval" +msgstr "默认间隔" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "将邮件摘要中的文章标记为已读" + +#: classes/pref/prefs.php:35 +#, fuzzy +msgid "Enable email digest" +msgstr "启用电子邮件摘要" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "每天将更新的和未读的文章标题通过邮件发送摘要到您设置的邮箱中" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +#, fuzzy +msgid "Uses UTC timezone" +msgstr "用户所在时区" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "允许使用外部 API" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "启用信息源分类" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "以未读文章数量排序信息源" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "最新更新文章的保鲜期(以小时为单位)" + +#: classes/pref/prefs.php:41 +#, fuzzy +msgid "Hide feeds with no unread articles" +msgstr "隐藏没有未读信息的信息源" + +#: classes/pref/prefs.php:42 +#, fuzzy +msgid "Show special feeds and labels when hiding read feeds" +msgstr "隐藏已读信息之后显示特殊区域的内容" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "长时间格式" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "自动显示下一个信息源" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +#, fuzzy +msgid "Purge articles after this number of days (0 - disables)" +msgstr "清除多少天之前的文章?(0为不启用)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "清除未读文章" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "反转标题列表顺序(最旧的在上面)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "短时间格式" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "在标题列表中显示内容预览" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "以信息源的日期排序" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "使用信息源中定义的时间,而非本地导入的时间来排序。" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "使用 SSL 证书登录" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "在 tt-rss 处注册您的 SSL 证书" + +#: classes/pref/prefs.php:52 +#, fuzzy +msgid "Do not embed images in articles" +msgstr "不要显示文章中的图片" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "从文章中剔除不安全的标签" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "仅加载几个最常用的 HTML 标签" + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "选择主题" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "自定义样式" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "自定义 CSS 样式" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "用户所在时区" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "对虚拟源中的文章按源分组" + +#: classes/pref/prefs.php:57 +msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +msgstr "选择本项可让特殊区域和预定义标签中的文章标题以信息源顺序排列" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "请输入之前使用的密码。" -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "请输入一个新密码。" -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "两次输入的密码不一致。" -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "设置已保存。" -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "未知选项: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "您的个人数据已保存。" -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 #, fuzzy msgid "Personal data / Authentication" msgstr "登录密码" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "姓名" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "电子邮件" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "访问级别" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "保存信息" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "您还在使用系统默认的密码,请修改。" -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "原密码" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "新密码" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "确认密码" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "更改密码" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:294 #: classes/pref/prefs.php:345 +#: classes/pref/prefs.php:396 #, fuzzy msgid "Enter your password" msgstr "用户名或密码错误" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 #, fuzzy msgid "Disable OTP" msgstr "禁用更新" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 #, fuzzy msgid "Enable OTP" msgstr "已启用" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "自定义" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "注册" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "清空" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "保存设置" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "管理偏好文件" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "恢复到默认" -#: classes/pref/prefs.php:631 -#: classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 +#: classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 -#: classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 -#: classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Description" msgstr "" -#: classes/pref/prefs.php:669 -#: classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 -#: classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 -#: classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 +#: classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 -#: classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 +#: classes/pref/prefs.php:812 #, fuzzy msgid "Clear data" msgstr "清空信息源数据" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 #, fuzzy msgid "Enable selected plugins" msgstr "启用信息源分类" -#: classes/pref/prefs.php:835 -#: classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 +#: classes/pref/prefs.php:900 #, fuzzy msgid "Incorrect password" msgstr "用户名或密码错误" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "您可以通过自定义 CSS 来更改颜色,字体和版式。具体可参考 本文件。" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "创建偏好文件" -#: classes/pref/prefs.php:942 -#: classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 +#: classes/pref/prefs.php:1019 msgid "(active)" msgstr "(当前使用的)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "移除选中的偏好文件" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "启用偏好文件" @@ -2422,19 +2380,14 @@ msgstr "编辑选定的信息源" msgid "Batch subscribe" msgstr "" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 #, fuzzy msgid "Categories" msgstr "信息源类别" -#: classes/pref/feeds.php:1289 -#, fuzzy -msgid "Add category" -msgstr "编辑类别" - #: classes/pref/feeds.php:1291 #, fuzzy -msgid "(Un)hide empty categories" +msgid "Add category" msgstr "编辑类别" #: classes/pref/feeds.php:1295 @@ -2442,6 +2395,11 @@ msgstr "编辑类别" msgid "Remove selected" msgstr "移除选中的信息源?" +#: classes/pref/feeds.php:1304 +#, fuzzy +msgid "(Un)hide empty categories" +msgstr "编辑类别" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "更多动作" @@ -2733,66 +2691,66 @@ msgstr "在 Tiny Tiny RSS 中订阅" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 #, fuzzy msgid "Article archive" msgstr "文章发布时间" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "导入" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, fuzzy, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "编辑文章注记" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, fuzzy, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "已经导入过。" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, fuzzy, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "没有选中的信息源。" -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" msgstr "" @@ -2979,150 +2937,142 @@ msgstr "您确认将该异常报告至 tt-rss.org ?报告将包含您的浏览 msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "日期的语法正确:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "日期的语法错误。" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "移除已保存的信息源图标?" -#: js/functions.js:747 +#: js/functions.js:697 #, fuzzy msgid "Removing feed icon..." msgstr "移除已保存的信息源图标?" -#: js/functions.js:752 +#: js/functions.js:702 #, fuzzy msgid "Feed icon removed." msgstr "找不到信息源。" -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "请选择图片文件上传。" -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "为本信息源上传一个新的图标?" -#: js/functions.js:777 +#: js/functions.js:727 #, fuzzy msgid "Uploading, please wait..." msgstr "读取中,请稍候……" -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "请填写预定义标签的说明:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "创建标签失败:没有标题。" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "订阅信息源" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "已订阅至 %s" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "指定的 URL 无效。" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "指定的 URL 没有包含任何信息源。" -#: js/functions.js:929 +#: js/functions.js:879 #, fuzzy msgid "Couldn't download the specified URL: %s" msgstr "无法下载指定的 URL 。" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "您已经订阅过这个信息源啦。" -#: js/functions.js:1063 +#: js/functions.js:1013 #, fuzzy msgid "Edit rule" msgstr "编辑过滤器" -#: js/functions.js:1089 +#: js/functions.js:1039 #, fuzzy msgid "Edit action" msgstr "信息源动作" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "创建过滤器" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." msgstr "重置订阅? Tiny Tiny RSS 将会在下次信息源更新的时候尝试再次订阅信息提醒中心。" -#: js/functions.js:1252 +#: js/functions.js:1202 #, fuzzy msgid "Subscription reset." msgstr "订阅信息源" -#: js/functions.js:1262 +#: js/functions.js:1212 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "从 %s 取消订阅?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "请填写类别名称:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "为本信息源生成新的群地址?" -#: js/functions.js:1408 +#: js/functions.js:1358 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 +#: js/functions.js:1545 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "您无法编辑这种类型的信息源。" -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "编辑信息源" -#: js/functions.js:1616 +#: js/functions.js:1566 #: js/prefs.js:194 #: js/prefs.js:749 #, fuzzy msgid "Saving data..." msgstr "保存信息" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "更多信息源" -#: js/functions.js:1709 -#: js/functions.js:1819 +#: js/functions.js:1659 +#: js/functions.js:1769 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -3133,26 +3083,26 @@ msgstr "更多信息源" msgid "No feeds are selected." msgstr "没有选择任何信息源。" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." msgstr "将选中的信息源从存档中移除?包含已保存文章的信息源不会被移除。" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "更新错误的信息源" -#: js/functions.js:1801 +#: js/functions.js:1751 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "移除选中的信息源?" -#: js/functions.js:1804 +#: js/functions.js:1754 #: js/prefs.js:1183 #, fuzzy msgid "Removing selected feeds..." msgstr "移除选中的信息源?" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "" @@ -3528,137 +3478,147 @@ msgstr "为文章重新评分" msgid "New version available!" msgstr "有可用的新版本啦!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 #, fuzzy msgid "Cancel search" msgstr "取消" -#: js/viewfeed.js:440 +#: js/viewfeed.js:438 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "取消星标" -#: js/viewfeed.js:445 +#: js/viewfeed.js:443 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "加星标" -#: js/viewfeed.js:478 +#: js/viewfeed.js:476 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "取消发布文章" -#: js/viewfeed.js:679 -#: js/viewfeed.js:707 -#: js/viewfeed.js:734 -#: js/viewfeed.js:797 -#: js/viewfeed.js:831 -#: js/viewfeed.js:951 -#: js/viewfeed.js:994 -#: js/viewfeed.js:1047 -#: js/viewfeed.js:2096 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "发布文章" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "没有选中任何文章。" -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 #, fuzzy msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "删除 %s 中选择的 %d 篇文章?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 #, fuzzy msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "删除选中的 %d 篇文章?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 #, fuzzy msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "将 %s 中的 %d 篇选中的文章存档?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 #, fuzzy msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "将存档的 %d 篇文章移回原处?" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 #, fuzzy msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "将 %s 中选中的 %d 篇文章标记为已读?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "编辑文章的自定义标签" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 #, fuzzy msgid "Saving article tags..." msgstr "编辑文章的自定义标签" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "未选中任何文章。" -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "未找到需要标记的文章" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 #, fuzzy msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "将 %d 篇文章标记为已读?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "打开原文" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 #, fuzzy msgid "Display article URL" msgstr "显示 URL" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 #, fuzzy msgid "Toggle marked" msgstr "锁定加星标的项" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "添加预定义标签" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "移除预定义标签" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "播放中……" -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "点击暂停" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 #, fuzzy msgid "Please enter new score for selected articles:" msgstr "删除选中的 %d 篇文章?" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 #, fuzzy msgid "Please enter new score for this article:" msgstr "请填写类别名称:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 #, fuzzy msgid "Article URL:" msgstr "全部文章" @@ -3765,6 +3725,42 @@ msgstr "通过 URL 分享文章" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#~ msgid "Title" +#~ msgstr "标题" + +#~ msgid "Title or Content" +#~ msgstr "标题或内容" + +#~ msgid "Link" +#~ msgstr "链接" + +#~ msgid "Content" +#~ msgstr "内容" + +#~ msgid "Article Date" +#~ msgstr "文章发布时间" + +#~ msgid "Delete article" +#~ msgstr "删除文章" + +#~ msgid "Set starred" +#~ msgstr "加星标" + +#~ msgid "Assign tags" +#~ msgstr "添加自定义标签" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "您可能订阅了一些聚合类型的信息源,这种情况下可能遇到同一用户的文章在不同源多次出现。当该选项被禁用时,来自不同 RSS 源的同一文章将只会显示一次。" + +#~ msgid "Default interval between feed updates" +#~ msgstr "信息源更新的默认时间间隔" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "日期的语法正确:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "日期的语法错误。" + #, fuzzy #~ msgid "(%d feed)" #~ msgid_plural "(%d feeds)" diff --git a/messages.pot b/messages.pot index 7061d2d12..5e0dff004 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:38+0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -243,191 +243,191 @@ msgstr "" msgid "SQL escaping test failed, check your database and PHP configuration" msgstr "" -#: index.php:135 index.php:154 index.php:273 prefs.php:103 +#: index.php:135 index.php:152 index.php:271 prefs.php:103 #: classes/backend.php:5 classes/pref/labels.php:296 #: classes/pref/filters.php:680 classes/pref/feeds.php:1331 #: plugins/digest/digest_body.php:63 js/feedlist.js:128 js/feedlist.js:448 -#: js/functions.js:420 js/functions.js:808 js/functions.js:1244 -#: js/functions.js:1379 js/functions.js:1691 js/prefs.js:86 js/prefs.js:576 +#: js/functions.js:420 js/functions.js:758 js/functions.js:1194 +#: js/functions.js:1329 js/functions.js:1641 js/prefs.js:86 js/prefs.js:576 #: js/prefs.js:666 js/prefs.js:858 js/prefs.js:1445 js/prefs.js:1498 #: js/prefs.js:1557 js/prefs.js:1574 js/prefs.js:1590 js/prefs.js:1606 #: js/prefs.js:1625 js/prefs.js:1798 js/prefs.js:1814 js/tt-rss.js:475 -#: js/tt-rss.js:492 js/viewfeed.js:774 js/viewfeed.js:1245 +#: js/tt-rss.js:492 js/viewfeed.js:772 js/viewfeed.js:1200 #: plugins/import_export/import_export.js:17 plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "" -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "" -#: index.php:176 include/functions.php:1925 classes/feeds.php:106 +#: index.php:174 include/functions.php:1926 classes/feeds.php:106 msgid "Starred" msgstr "" -#: index.php:177 include/functions.php:1926 classes/feeds.php:107 +#: index.php:175 include/functions.php:1927 classes/feeds.php:107 msgid "Published" msgstr "" -#: index.php:178 classes/feeds.php:93 classes/feeds.php:105 +#: index.php:176 classes/feeds.php:93 classes/feeds.php:105 msgid "Unread" msgstr "" -#: index.php:179 +#: index.php:177 msgid "Unread First" msgstr "" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "" -#: index.php:195 index.php:237 include/functions.php:1915 -#: include/localized_schema.php:10 classes/feeds.php:111 classes/feeds.php:441 -#: js/FeedTree.js:128 js/FeedTree.js:156 plugins/digest/digest.js:647 +#: index.php:193 index.php:235 include/functions.php:1916 +#: classes/feeds.php:111 classes/feeds.php:441 js/FeedTree.js:128 +#: js/FeedTree.js:156 plugins/digest/digest.js:647 msgid "Mark as read" msgstr "" -#: index.php:196 include/functions.php:1811 include/functions.php:1923 +#: index.php:194 include/functions.php:1812 include/functions.php:1924 msgid "All articles" msgstr "" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "" -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "" -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "" -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "" -#: index.php:232 classes/handler/public.php:578 +#: index.php:230 classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "" -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "" -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "" -#: index.php:235 classes/pref/feeds.php:717 classes/pref/feeds.php:1304 +#: index.php:233 classes/pref/feeds.php:717 classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "" -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "" -#: index.php:244 include/functions.php:1901 +#: index.php:242 include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "" -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "" -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "" -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "" -#: index.php:257 plugins/digest/digest_body.php:77 +#: index.php:255 plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 msgid "Logout" msgstr "" -#: prefs.php:36 prefs.php:121 include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: prefs.php:36 prefs.php:121 include/functions.php:1929 +#: classes/pref/prefs.php:428 msgid "Preferences" msgstr "" @@ -448,7 +448,7 @@ msgstr "" msgid "Filters" msgstr "" -#: prefs.php:130 include/functions.php:1118 include/functions.php:1754 +#: prefs.php:130 include/functions.php:1119 include/functions.php:1755 #: classes/pref/labels.php:90 plugins/mobile/mobile-functions.php:198 msgid "Labels" msgstr "" @@ -516,9 +516,9 @@ msgstr "" msgid "Tiny Tiny RSS data update script." msgstr "" -#: include/digest.php:109 include/functions.php:1127 -#: include/functions.php:1655 include/functions.php:1740 -#: include/functions.php:1762 classes/opml.php:416 classes/pref/feeds.php:222 +#: include/digest.php:109 include/functions.php:1128 +#: include/functions.php:1656 include/functions.php:1741 +#: include/functions.php:1763 classes/opml.php:416 classes/pref/feeds.php:222 msgid "Uncategorized" msgstr "" @@ -533,549 +533,295 @@ msgstr[1] "" msgid "No feeds found." msgstr "" -#: include/functions.php:1116 include/functions.php:1752 +#: include/functions.php:1117 include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "" -#: include/functions.php:1604 classes/feeds.php:1101 +#: include/functions.php:1605 classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "" -#: include/functions.php:1888 js/viewfeed.js:1908 +#: include/functions.php:1889 js/viewfeed.js:1863 msgid "Toggle published" msgstr "" -#: include/functions.php:1889 js/viewfeed.js:1886 +#: include/functions.php:1890 js/viewfeed.js:1841 msgid "Toggle unread" msgstr "" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "" -#: include/functions.php:1894 js/viewfeed.js:1927 +#: include/functions.php:1895 js/viewfeed.js:1882 msgid "Mark below as read" msgstr "" -#: include/functions.php:1895 js/viewfeed.js:1921 +#: include/functions.php:1896 js/viewfeed.js:1876 msgid "Mark above as read" msgstr "" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "" -#: include/functions.php:1902 plugins/embed_original/init.php:33 +#: include/functions.php:1903 plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "" -#: include/functions.php:1910 classes/pref/feeds.php:521 +#: include/functions.php:1911 classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "" -#: include/functions.php:1913 classes/pref/feeds.php:1275 +#: include/functions.php:1914 classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "" -#: include/functions.php:1914 js/FeedTree.js:135 js/PrefFeedTree.js:67 +#: include/functions.php:1915 js/FeedTree.js:135 js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "" -#: include/functions.php:1918 js/FeedTree.js:178 +#: include/functions.php:1919 js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "" -#: include/functions.php:1921 +#: include/functions.php:1922 msgid "Toggle auto expand in combined mode" msgstr "" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "" -#: include/functions.php:1927 js/tt-rss.js:431 js/tt-rss.js:584 +#: include/functions.php:1928 js/tt-rss.js:431 js/tt-rss.js:584 msgid "Tag cloud" msgstr "" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "" -#: include/functions.php:1930 classes/pref/labels.php:281 +#: include/functions.php:1931 classes/pref/labels.php:281 msgid "Create label" msgstr "" -#: include/functions.php:1931 classes/pref/filters.php:654 +#: include/functions.php:1932 classes/pref/filters.php:654 msgid "Create filter" msgstr "" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "" -#: include/functions.php:2909 js/viewfeed.js:2014 +#: include/functions.php:2910 js/viewfeed.js:1969 msgid "Click to play" msgstr "" -#: include/functions.php:2910 js/viewfeed.js:2013 +#: include/functions.php:2911 js/viewfeed.js:1968 msgid "Play" msgstr "" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr "" -#: include/functions.php:3049 include/functions.php:3343 classes/rpc.php:408 +#: include/functions.php:3050 include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "" -#: include/functions.php:3059 classes/feeds.php:686 +#: include/functions.php:3060 classes/feeds.php:686 msgid "Edit tags for this article" msgstr "" -#: include/functions.php:3088 classes/feeds.php:642 +#: include/functions.php:3089 classes/feeds.php:642 msgid "Originally from:" msgstr "" -#: include/functions.php:3101 classes/feeds.php:655 classes/pref/feeds.php:540 +#: include/functions.php:3102 classes/feeds.php:655 classes/pref/feeds.php:540 msgid "Feed URL" msgstr "" -#: include/functions.php:3132 classes/dlg.php:37 classes/dlg.php:60 +#: include/functions.php:3133 classes/dlg.php:37 classes/dlg.php:60 #: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190 #: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262 #: classes/backend.php:105 classes/pref/users.php:99 -#: classes/pref/filters.php:147 classes/pref/prefs.php:1012 +#: classes/pref/filters.php:147 classes/pref/prefs.php:1059 #: classes/pref/feeds.php:1588 classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 plugins/import_export/init.php:432 +#: plugins/import_export/init.php:406 plugins/import_export/init.php:429 #: plugins/googlereaderimport/init.php:168 plugins/share/init.php:67 #: plugins/updater/init.php:357 msgid "Close this window" msgstr "" -#: include/functions.php:3368 +#: include/functions.php:3369 msgid "(edit note)" msgstr "" -#: include/functions.php:3601 +#: include/functions.php:3604 msgid "unknown type" msgstr "" -#: include/functions.php:3657 +#: include/functions.php:3660 msgid "Attachments" msgstr "" -#: include/localized_schema.php:3 -msgid "Title" -msgstr "" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "" - -#: include/localized_schema.php:12 js/viewfeed.js:483 -#: plugins/digest/digest.js:265 plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "" - -#: include/localized_schema.php:14 js/viewfeed.js:1978 -msgid "Assign label" -msgstr "" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "" - -#: include/localized_schema.php:21 -msgid "" -"This option is useful when you are reading several planet-type aggregators " -"with partially colliding userbase. When disabled, it forces same posts from " -"different feeds to appear only once." -msgstr "" - -#: include/localized_schema.php:22 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" - -#: include/localized_schema.php:23 -msgid "" -"Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: include/localized_schema.php:24 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" - -#: include/localized_schema.php:25 -msgid "" -"This option enables marking articles as read automatically while you scroll " -"article list." -msgstr "" - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" - -#: include/localized_schema.php:27 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" - -#: include/localized_schema.php:28 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "" - -#: include/localized_schema.php:46 plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "" - -#: include/localized_schema.php:61 js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "" - -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "" - -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "" - -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "" - -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "" - -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "" - #: include/login_form.php:183 classes/handler/public.php:483 #: classes/handler/public.php:771 plugins/mobile/login_form.php:40 msgid "Login:" @@ -1099,7 +845,7 @@ msgid "Profile:" msgstr "" #: include/login_form.php:213 classes/handler/public.php:233 -#: classes/rpc.php:64 classes/pref/prefs.php:948 +#: classes/rpc.php:64 classes/pref/prefs.php:995 msgid "Default profile" msgstr "" @@ -1116,7 +862,7 @@ msgstr "" msgid "Log in" msgstr "" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "" @@ -1130,7 +876,7 @@ msgstr "" #: classes/article.php:204 classes/pref/users.php:176 #: classes/pref/labels.php:79 classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 classes/pref/feeds.php:733 +#: classes/pref/prefs.php:941 classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 plugins/nsfw/init.php:86 #: plugins/note/init.php:53 plugins/instances/init.php:248 msgid "Save" @@ -1141,7 +887,7 @@ msgstr "" #: classes/feeds.php:1080 classes/feeds.php:1140 classes/pref/users.php:178 #: classes/pref/labels.php:81 classes/pref/filters.php:408 #: classes/pref/filters.php:804 classes/pref/filters.php:880 -#: classes/pref/filters.php:947 classes/pref/prefs.php:896 +#: classes/pref/filters.php:947 classes/pref/prefs.php:943 #: classes/pref/feeds.php:734 classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 plugins/mail/init.php:131 #: plugins/note/init.php:55 plugins/instances/init.php:251 @@ -1349,7 +1095,7 @@ msgstr "" #: classes/feeds.php:92 classes/pref/users.php:345 classes/pref/labels.php:275 #: classes/pref/filters.php:282 classes/pref/filters.php:330 #: classes/pref/filters.php:648 classes/pref/filters.php:737 -#: classes/pref/filters.php:764 classes/pref/prefs.php:908 +#: classes/pref/filters.php:764 classes/pref/prefs.php:955 #: classes/pref/feeds.php:1266 classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 plugins/instances/init.php:290 msgid "All" @@ -1362,7 +1108,7 @@ msgstr "" #: classes/feeds.php:95 classes/pref/users.php:347 classes/pref/labels.php:277 #: classes/pref/filters.php:284 classes/pref/filters.php:332 #: classes/pref/filters.php:650 classes/pref/filters.php:739 -#: classes/pref/filters.php:766 classes/pref/prefs.php:910 +#: classes/pref/filters.php:766 classes/pref/prefs.php:957 #: classes/pref/feeds.php:1268 classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 plugins/instances/init.php:292 msgid "None" @@ -1439,7 +1185,8 @@ msgstr "" #: classes/feeds.php:742 msgid "" "No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." +"from article header context menu (applies to all selected articles) or use a " +"filter." msgstr "" #: classes/feeds.php:744 @@ -1483,7 +1230,7 @@ msgstr "" msgid "Login" msgstr "" -#: classes/feeds.php:1007 classes/pref/prefs.php:202 +#: classes/feeds.php:1007 classes/pref/prefs.php:253 #: classes/pref/feeds.php:602 classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 msgid "Password" @@ -1684,7 +1431,7 @@ msgstr "" #: classes/pref/users.php:342 classes/pref/labels.php:272 #: classes/pref/filters.php:279 classes/pref/filters.php:327 #: classes/pref/filters.php:645 classes/pref/filters.php:734 -#: classes/pref/filters.php:761 classes/pref/prefs.php:905 +#: classes/pref/filters.php:761 classes/pref/prefs.php:952 #: classes/pref/feeds.php:1263 classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 plugins/instances/init.php:287 msgid "Select" @@ -1836,7 +1583,7 @@ msgstr "" msgid "Save rule" msgstr "" -#: classes/pref/filters.php:877 js/functions.js:1063 +#: classes/pref/filters.php:877 js/functions.js:1013 msgid "Add rule" msgstr "" @@ -1852,7 +1599,7 @@ msgstr "" msgid "Save action" msgstr "" -#: classes/pref/filters.php:944 js/functions.js:1089 +#: classes/pref/filters.php:944 js/functions.js:1039 msgid "Add action" msgstr "" @@ -1860,162 +1607,367 @@ msgstr "" msgid "[No caption]" msgstr "" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +msgid "Allow duplicate articles" +msgstr "" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "" + +#: classes/pref/prefs.php:27 +msgid "" +"When auto-detecting tags in articles these tags will not be applied (comma-" +"separated list)" +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "" + +#: classes/pref/prefs.php:28 +msgid "Mark articles as read automatically while you scroll article list." +msgstr "" + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "" + +#: classes/pref/prefs.php:30 +msgid "" +"Display expanded list of feed articles, instead of separate displays for " +"headlines and article content" +msgstr "" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "" + +#: classes/pref/prefs.php:33 +msgid "Default feed update interval" +msgstr "" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "Enable email digest" +msgstr "" + +#: classes/pref/prefs.php:35 +msgid "" +"This option enables sending daily digest of new (and unread) headlines on " +"your configured e-mail address" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Enable external API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "" + +#: classes/pref/prefs.php:42 +msgid "Show special feeds and labels when hiding read feeds" +msgstr "" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "" + +#: classes/pref/prefs.php:44 +msgid "" +"Automatically open next feed with unread articles after marking one as read" +msgstr "" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "" + +#: classes/pref/prefs.php:47 plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Select theme" +msgstr "" + +#: classes/pref/prefs.php:54 +msgid "Select one of the available CSS themes" +msgstr "" + +#: classes/pref/prefs.php:55 js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "" + +#: classes/pref/prefs.php:55 +msgid "Customize CSS stylesheet to your liking" +msgstr "" + +#: classes/pref/prefs.php:56 +msgid "User timezone" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "Group headlines in virtual feeds" +msgstr "" + +#: classes/pref/prefs.php:57 +msgid "" +"When this option is enabled, headlines in Special feeds and Labels are " +"grouped by feeds" +msgstr "" + +#: classes/pref/prefs.php:68 msgid "Old password cannot be blank." msgstr "" -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:73 msgid "New password cannot be blank." msgstr "" -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:78 msgid "Entered passwords do not match." msgstr "" -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:88 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:120 msgid "The configuration was saved." msgstr "" -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:134 #, php-format msgid "Unknown option: %s" msgstr "" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:148 msgid "Your personal data has been saved." msgstr "" -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:188 msgid "Personal data / Authentication" msgstr "" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:208 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:218 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:222 msgid "E-mail" msgstr "" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:228 msgid "Access level" msgstr "" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:238 msgid "Save data" msgstr "" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:260 msgid "Your password is at default value, please change it." msgstr "" -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:287 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:292 msgid "Old password" msgstr "" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:295 msgid "New password" msgstr "" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:300 msgid "Confirm password" msgstr "" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:310 msgid "Change password" msgstr "" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:316 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:269 +#: classes/pref/prefs.php:320 msgid "" "One time passwords are currently enabled. Enter your current password below " "to disable." msgstr "" -#: classes/pref/prefs.php:294 classes/pref/prefs.php:345 +#: classes/pref/prefs.php:345 classes/pref/prefs.php:396 msgid "Enter your password" msgstr "" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:356 msgid "Disable OTP" msgstr "" -#: classes/pref/prefs.php:311 +#: classes/pref/prefs.php:362 msgid "" "You will need a compatible Authenticator to use this. Changing your password " "would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:364 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:405 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:413 msgid "Enable OTP" msgstr "" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:451 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:545 msgid "Customize" msgstr "" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:605 msgid "Register" msgstr "" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:609 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:615 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:648 msgid "Save configuration" msgstr "" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:651 msgid "Manage profiles" msgstr "" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:654 msgid "Reset to defaults" msgstr "" -#: classes/pref/prefs.php:631 classes/pref/prefs.php:633 +#: classes/pref/prefs.php:678 classes/pref/prefs.php:680 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:635 +#: classes/pref/prefs.php:682 msgid "" "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:637 +#: classes/pref/prefs.php:684 msgid "" "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:710 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:667 classes/pref/prefs.php:721 +#: classes/pref/prefs.php:714 classes/pref/prefs.php:768 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:668 classes/pref/prefs.php:722 +#: classes/pref/prefs.php:715 classes/pref/prefs.php:769 msgid "Description" msgstr "" -#: classes/pref/prefs.php:669 classes/pref/prefs.php:723 +#: classes/pref/prefs.php:716 classes/pref/prefs.php:770 msgid "Version" msgstr "" -#: classes/pref/prefs.php:670 classes/pref/prefs.php:724 +#: classes/pref/prefs.php:717 classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:699 classes/pref/prefs.php:756 +#: classes/pref/prefs.php:746 classes/pref/prefs.php:803 msgid "more info" msgstr "" -#: classes/pref/prefs.php:708 classes/pref/prefs.php:765 +#: classes/pref/prefs.php:755 classes/pref/prefs.php:812 msgid "Clear data" msgstr "" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:764 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:827 msgid "Enable selected plugins" msgstr "" -#: classes/pref/prefs.php:835 classes/pref/prefs.php:853 +#: classes/pref/prefs.php:882 classes/pref/prefs.php:900 msgid "Incorrect password" msgstr "" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:926 #, php-format msgid "" "You can override colors, fonts and layout of your currently selected theme " @@ -2071,19 +2023,19 @@ msgid "" "\" href=\"%s\">This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:966 msgid "Create profile" msgstr "" -#: classes/pref/prefs.php:942 classes/pref/prefs.php:972 +#: classes/pref/prefs.php:989 classes/pref/prefs.php:1019 msgid "(active)" msgstr "" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1053 msgid "Remove selected profiles" msgstr "" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1055 msgid "Activate profile" msgstr "" @@ -2169,22 +2121,22 @@ msgstr "" msgid "Batch subscribe" msgstr "" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "" -#: classes/pref/feeds.php:1289 -msgid "Add category" -msgstr "" - #: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" +msgid "Add category" msgstr "" #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "" @@ -2469,70 +2421,70 @@ msgstr "" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "" -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:65 msgid "" "You can export and import your Starred and Archived articles for safekeeping " "or when migrating between tt-rss instances." msgstr "" -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "" -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "" msgstr[1] "" -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "" -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format msgid "" "Could not upload file. You might need to adjust upload_max_filesize in PHP." @@ -2709,161 +2661,153 @@ msgstr "" msgid "close" msgstr "" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "" - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "" -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "" -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "" -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "" -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "" -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "" -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "" -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "" -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "" -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "" -#: js/functions.js:1241 +#: js/functions.js:1191 msgid "" "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification " "hub again on next feed update." msgstr "" -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "" -#: js/functions.js:1262 js/tt-rss.js:619 +#: js/functions.js:1212 js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "" -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1408 js/prefs.js:1222 +#: js/functions.js:1358 js/prefs.js:1222 msgid "Trying to change address..." msgstr "" -#: js/functions.js:1595 js/tt-rss.js:396 js/tt-rss.js:600 +#: js/functions.js:1545 js/tt-rss.js:396 js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "" -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "" -#: js/functions.js:1616 js/prefs.js:194 js/prefs.js:749 +#: js/functions.js:1566 js/prefs.js:194 js/prefs.js:749 msgid "Saving data..." msgstr "" -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "" -#: js/functions.js:1709 js/functions.js:1819 js/prefs.js:397 js/prefs.js:427 +#: js/functions.js:1659 js/functions.js:1769 js/prefs.js:397 js/prefs.js:427 #: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1198 #: js/prefs.js:1343 msgid "No feeds are selected." msgstr "" -#: js/functions.js:1751 +#: js/functions.js:1701 msgid "" "Remove selected feeds from the archive? Feeds with stored articles will not " "be removed." msgstr "" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "" -#: js/functions.js:1801 js/prefs.js:1180 +#: js/functions.js:1751 js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "" -#: js/functions.js:1804 js/prefs.js:1183 +#: js/functions.js:1754 js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "" -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "" @@ -3200,122 +3144,131 @@ msgstr "" msgid "New version available!" msgstr "" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "" -#: js/viewfeed.js:440 plugins/digest/digest.js:258 +#: js/viewfeed.js:438 plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "" -#: js/viewfeed.js:445 plugins/digest/digest.js:260 +#: js/viewfeed.js:443 plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "" -#: js/viewfeed.js:478 plugins/digest/digest.js:263 +#: js/viewfeed.js:476 plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "" -#: js/viewfeed.js:679 js/viewfeed.js:707 js/viewfeed.js:734 js/viewfeed.js:797 -#: js/viewfeed.js:831 js/viewfeed.js:951 js/viewfeed.js:994 -#: js/viewfeed.js:1047 js/viewfeed.js:2096 plugins/mailto/init.js:7 +#: js/viewfeed.js:481 plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "" + +#: js/viewfeed.js:677 js/viewfeed.js:705 js/viewfeed.js:732 js/viewfeed.js:795 +#: js/viewfeed.js:829 js/viewfeed.js:949 js/viewfeed.js:992 +#: js/viewfeed.js:1045 js/viewfeed.js:2051 plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "" -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1008 +#: js/viewfeed.js:1006 msgid "" "Please note that unstarred articles might get purged on next feed update." msgstr "" -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "" -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "" -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "" msgstr[1] "" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 msgid "Toggle marked" msgstr "" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "" -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "" -- cgit v1.2.3 From 9db8e607841be0cd3ee9b73d125c4fe50e330c11 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:46:08 +0400 Subject: update pref descriptions --- classes/pref/prefs.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php index aa94939b3..938782b51 100644 --- a/classes/pref/prefs.php +++ b/classes/pref/prefs.php @@ -22,24 +22,24 @@ class Pref_Prefs extends Handler_Protected { ); $this->pref_help = array( - "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate articles")), + "ALLOW_DUPLICATE_POSTS" => array(__("Allow duplicate articles"), ""), "AUTO_ASSIGN_LABELS" => array(__("Assign articles to labels automatically"), ""), - "BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list)")), - "CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("Mark articles as read automatically while you scroll article list.")), + "BLACKLISTED_TAGS" => array(__("Blacklisted tags"), __("When auto-detecting tags in articles these tags will not be applied (comma-separated list).")), + "CDM_AUTO_CATCHUP" => array(__("Automatically mark articles as read"), __("This option enables marking articles as read automatically while you scroll article list.")), "CDM_EXPANDED" => array(__("Automatically expand articles in combined mode"), ""), "COMBINED_DISPLAY_MODE" => array(__("Combined feed display"), __("Display expanded list of feed articles, instead of separate displays for headlines and article content")), "CONFIRM_FEED_CATCHUP" => array(__("Confirm marking feed as read"), ""), "DEFAULT_ARTICLE_LIMIT" => array(__("Amount of articles to display at once"), ""), - "DEFAULT_UPDATE_INTERVAL" => array(__("Default feed update interval"), ""), + "DEFAULT_UPDATE_INTERVAL" => array(__("Default interval between feed updates"), ""), "DIGEST_CATCHUP" => array(__("Mark articles in e-mail digest as read"), ""), - "DIGEST_ENABLE" => array(__("Enable email digest"), __("This option enables sending daily digest of new (and unread) headlines on your configured e-mail address")), + "DIGEST_ENABLE" => array(__("Enable e-mail digest"), __("This option enables sending daily digest of new (and unread) headlines on your configured e-mail address")), "DIGEST_PREFERRED_TIME" => array(__("Try to send digests around specified time"), __("Uses UTC timezone")), - "ENABLE_API_ACCESS" => array(__("Enable external API"), ""), + "ENABLE_API_ACCESS" => array(__("Enable API access"), __("Allows external clients to access this account through the API")), "ENABLE_FEED_CATS" => array(__("Enable feed categories"), ""), "FEEDS_SORT_BY_UNREAD" => array(__("Sort feeds by unread articles count"), ""), "FRESH_ARTICLE_MAX_AGE" => array(__("Maximum age of fresh articles (in hours)"), ""), "HIDE_READ_FEEDS" => array(__("Hide feeds with no unread articles"), ""), - "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds and labels when hiding read feeds"), ""), + "HIDE_READ_SHOWS_SPECIAL" => array(__("Show special feeds when hiding read feeds"), ""), "LONG_DATE_FORMAT" => array(__("Long date format"), ""), "ON_CATCHUP_SHOW_NEXT_FEED" => array(__("On catchup show next feed"), __("Automatically open next feed with unread articles after marking one as read")), "PURGE_OLD_DAYS" => array(__("Purge articles after this number of days (0 - disables)"), ""), @@ -51,10 +51,9 @@ class Pref_Prefs extends Handler_Protected { "SSL_CERT_SERIAL" => array(__("Login with an SSL certificate"), __("Click to register your SSL client certificate with tt-rss")), "STRIP_IMAGES" => array(__("Do not embed images in articles"), ""), "STRIP_UNSAFE_TAGS" => array(__("Strip unsafe tags from articles"), __("Strip all but most common HTML tags when reading articles.")), - "USER_CSS_THEME" => array(__("Select theme"), __("Select one of the available CSS themes")), "USER_STYLESHEET" => array(__("Customize stylesheet"), __("Customize CSS stylesheet to your liking")), "USER_TIMEZONE" => array(__("User timezone"), ""), - "VFEED_GROUP_BY_FEED" => array(__("Group headlines in virtual feeds"), __("When this option is enabled, headlines in Special feeds and Labels are grouped by feeds")) + "VFEED_GROUP_BY_FEED" => array(__("Group headlines in virtual feeds"), __("Special feeds, labels, and categories are grouped by originating feeds")) ); } -- cgit v1.2.3 From ed61425af0e948553f1370d064f0086885b81906 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:46:23 +0400 Subject: rebase translations --- locale/ca_CA/LC_MESSAGES/messages.mo | Bin 25274 -> 25014 bytes locale/ca_CA/LC_MESSAGES/messages.po | 202 +++++++++++++++++----------------- locale/cs_CZ/LC_MESSAGES/messages.mo | Bin 41830 -> 41722 bytes locale/cs_CZ/LC_MESSAGES/messages.po | 201 +++++++++++++++++----------------- locale/de_DE/LC_MESSAGES/messages.mo | Bin 60446 -> 60241 bytes locale/de_DE/LC_MESSAGES/messages.po | 203 +++++++++++++++++----------------- locale/es_ES/LC_MESSAGES/messages.mo | Bin 40631 -> 40418 bytes locale/es_ES/LC_MESSAGES/messages.po | 207 ++++++++++++++++++----------------- locale/fi_FI/LC_MESSAGES/messages.mo | Bin 39189 -> 38905 bytes locale/fi_FI/LC_MESSAGES/messages.po | 206 +++++++++++++++++----------------- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 66557 -> 66215 bytes locale/fr_FR/LC_MESSAGES/messages.po | 206 +++++++++++++++++----------------- locale/hu_HU/LC_MESSAGES/messages.mo | Bin 55026 -> 54752 bytes locale/hu_HU/LC_MESSAGES/messages.po | 203 +++++++++++++++++----------------- locale/it_IT/LC_MESSAGES/messages.mo | Bin 38201 -> 37980 bytes locale/it_IT/LC_MESSAGES/messages.po | 201 +++++++++++++++++----------------- locale/ja_JP/LC_MESSAGES/messages.mo | Bin 26531 -> 26477 bytes locale/ja_JP/LC_MESSAGES/messages.po | 197 ++++++++++++++++----------------- locale/lv_LV/LC_MESSAGES/messages.mo | Bin 47333 -> 47125 bytes locale/lv_LV/LC_MESSAGES/messages.po | 201 +++++++++++++++++----------------- locale/nb_NO/LC_MESSAGES/messages.mo | Bin 23967 -> 23660 bytes locale/nb_NO/LC_MESSAGES/messages.po | 202 +++++++++++++++++----------------- locale/nl_NL/LC_MESSAGES/messages.mo | Bin 52560 -> 52379 bytes locale/nl_NL/LC_MESSAGES/messages.po | 205 +++++++++++++++++----------------- locale/pl_PL/LC_MESSAGES/messages.mo | Bin 62755 -> 62520 bytes locale/pl_PL/LC_MESSAGES/messages.po | 203 +++++++++++++++++----------------- locale/pt_BR/LC_MESSAGES/messages.mo | Bin 7022 -> 6975 bytes locale/pt_BR/LC_MESSAGES/messages.po | 191 ++++++++++++++++---------------- locale/ru_RU/LC_MESSAGES/messages.mo | Bin 39705 -> 39564 bytes locale/ru_RU/LC_MESSAGES/messages.po | 202 +++++++++++++++++----------------- locale/sv_SE/LC_MESSAGES/messages.mo | Bin 49890 -> 49724 bytes locale/sv_SE/LC_MESSAGES/messages.po | 203 +++++++++++++++++----------------- locale/zh_CN/LC_MESSAGES/messages.mo | Bin 35984 -> 35771 bytes locale/zh_CN/LC_MESSAGES/messages.po | 201 +++++++++++++++++----------------- messages.pot | 166 ++++++++++++++-------------- 35 files changed, 1828 insertions(+), 1772 deletions(-) diff --git a/locale/ca_CA/LC_MESSAGES/messages.mo b/locale/ca_CA/LC_MESSAGES/messages.mo index 106af69a1..ec637f262 100644 Binary files a/locale/ca_CA/LC_MESSAGES/messages.mo and b/locale/ca_CA/LC_MESSAGES/messages.mo differ diff --git a/locale/ca_CA/LC_MESSAGES/messages.po b/locale/ca_CA/LC_MESSAGES/messages.po index 536f98b60..35f6c97e6 100644 --- a/locale/ca_CA/LC_MESSAGES/messages.po +++ b/locale/ca_CA/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2009-11-19 09:40+0100\n" "Last-Translator: Alfred Galitó \n" "Language-Team: Català \n" @@ -485,7 +485,7 @@ msgstr "Surt" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Preferències" @@ -939,7 +939,7 @@ msgstr "Canal" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -995,7 +995,7 @@ msgstr "Fitxer:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 #, fuzzy msgid "Default profile" msgstr "Nombre maximal d'articles par défaut" @@ -1031,7 +1031,7 @@ msgstr "Etiquetes per aquest article (separades per comes):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1052,7 +1052,7 @@ msgstr "Desa" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1290,7 +1290,7 @@ msgstr "Selecciona:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1310,7 +1310,7 @@ msgstr "Inverteix" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1456,7 +1456,7 @@ msgid "Login" msgstr "Entra" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1687,7 +1687,7 @@ msgstr "[tt-rss] Notificació de canvi de contrasenya" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1928,7 +1928,7 @@ msgstr "Llista negra d'etiquetes" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Quan s'autodetectin etiquetes en els articles, aquestes etiquetes no s'utilitzaran (fes una llista separada per comes)" #: classes/pref/prefs.php:28 @@ -1938,7 +1938,7 @@ msgstr "En mode combinat expandeix els articles automàticament." #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Aquesta opció permet marcar els articles com a llegits automàticament en mode combinat (excepte en el canal d'articles Frescos) mentre desplaceu la barra." #: classes/pref/prefs.php:29 @@ -1964,8 +1964,8 @@ msgstr "No s'han trobat articles per a mostrar." #: classes/pref/prefs.php:33 #, fuzzy -msgid "Default feed update interval" -msgstr "Interval per defecte" +msgid "Default interval between feed updates" +msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1973,7 +1973,7 @@ msgstr "Marca tots els articles enviat en el resum via adreça electrònica com #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Habilita el resum diari de capçaleres per correu electrònic." #: classes/pref/prefs.php:35 @@ -1989,7 +1989,12 @@ msgid "Uses UTC timezone" msgstr "" #: classes/pref/prefs.php:37 -msgid "Enable external API" +#, fuzzy +msgid "Enable API access" +msgstr "Habilita les etiquetes" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -2011,7 +2016,7 @@ msgstr "Amaga els canals que no tinguin missatges per llegir." #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Mostra els canals especials quan s'amaguin els canals reals." #: classes/pref/prefs.php:43 @@ -2079,276 +2084,268 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Elimina les etiquetes HTML més freqüents en llegir els articles." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Seleccioneu una interfície" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 #, fuzzy msgid "Customize stylesheet" msgstr "URL de la fulla d'estils personalitzada." -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Agrupa les capçaleres en canals virtuals" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes per canals." +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "El camp de contrasenya antiga no pot estar buit." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "El camp de contrasenya nova no pot estar buit." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Les contrasenyes no coincideixen." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "S'ha desat la configuració" -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Es desconeix l'opció %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 #, fuzzy msgid "Your personal data has been saved." msgstr "S'ha modificat la contrasenya." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticació" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Dades personals" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "Adreça electrònica" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Nivell d'accés" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 #, fuzzy msgid "Save data" msgstr "Desa" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "La contrasenya actual és la predeterminada,\n" "\t\t\t\t\t\t penseu en modificar-la." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Contrasenya antiga" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nova contrasenya" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Confirmeu la contrasenya" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Canvia la contrasenya" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "El nom d'usuari o la contrasenya és incorrecte" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(Desactivat)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Activat" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 #, fuzzy msgid "Customize" msgstr "URL de la fulla d'estils personalitzada." -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 #, fuzzy msgid "Register" msgstr "Registrat" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Desa la configuració" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 #, fuzzy msgid "Manage profiles" msgstr "Crea un filtre" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Torna als paràmetres per defecte" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "description" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Esborra les dades del canal" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Habilita les icones dels canals." -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "El nom d'usuari o la contrasenya és incorrecte" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 #, fuzzy msgid "Create profile" msgstr "Crea un filtre" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 #, fuzzy msgid "(active)" msgstr "Adaptatiu" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 #, fuzzy msgid "Remove selected profiles" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 #, fuzzy msgid "Activate profile" msgstr "Esteu segur que voleu suprimir els filtres seleccionats?" @@ -3874,6 +3871,16 @@ msgstr "Marca l'article" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Interval per defecte" + +#~ msgid "Select theme" +#~ msgstr "Seleccioneu una interfície" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Quan aquesta habiliteu aquesta opció, s'agruparan les capçaleres i etiquetes per canals." + #~ msgid "Title" #~ msgstr "Títol" @@ -3902,10 +3909,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Aquesta opció és útil si rebeu informació de diferents canals de tipus «multicanal» amb informació que pot coincidir. Si està desactivat només mostra els articles repetits un sol cop." -#, fuzzy -#~ msgid "Default interval between feed updates" -#~ msgstr "Interval per defecte per a les actualitzacions dels canals (en minuts)" - #, fuzzy #~ msgid "Date syntax appears to be correct:" #~ msgstr "La contrasenya antiga és incorrecta." @@ -4308,9 +4311,6 @@ msgstr "" #~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." #~ msgstr "Aquesta opció amaga la llista de canals i permet canviar-ho ràpidament, pràctica per a pantalles petites." -#~ msgid "Enable labels" -#~ msgstr "Habilita les etiquetes" - #~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." #~ msgstr "Suport experimental per a canals virtuals basats en demandes SQL personalitzades. Aquesta característica és experimental i, per tant no és fàcil d'utilitzar. Utilitzeu-la amb compte." diff --git a/locale/cs_CZ/LC_MESSAGES/messages.mo b/locale/cs_CZ/LC_MESSAGES/messages.mo index 81506fd75..768461ece 100644 Binary files a/locale/cs_CZ/LC_MESSAGES/messages.mo and b/locale/cs_CZ/LC_MESSAGES/messages.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po index cb90c3220..8bba909a6 100644 --- a/locale/cs_CZ/LC_MESSAGES/messages.po +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-31 18:03+0200\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech \n" @@ -475,7 +475,7 @@ msgstr "Odhlásit se" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Nastavení" @@ -892,7 +892,7 @@ msgstr "URL kanálu" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -944,7 +944,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Výchozí profil" @@ -978,7 +978,7 @@ msgstr "Značky článku (oddělené čárkami):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -999,7 +999,7 @@ msgstr "Uložit" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1222,7 +1222,7 @@ msgstr "Vybrat:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1242,7 +1242,7 @@ msgstr "Invertovat" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1378,7 +1378,7 @@ msgid "Login" msgstr "Přihlášení" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1598,7 +1598,7 @@ msgstr "[tt-rss] Oznámení o změně hesla" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1821,7 +1821,7 @@ msgid "Blacklisted tags" msgstr "Zakázané značky" #: classes/pref/prefs.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "" #: classes/pref/prefs.php:28 @@ -1829,7 +1829,7 @@ msgid "Automatically mark articles as read" msgstr "Automaticky označit články jako přečtené" #: classes/pref/prefs.php:28 -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "" #: classes/pref/prefs.php:29 @@ -1853,9 +1853,8 @@ msgid "Amount of articles to display at once" msgstr "Počet naráz zobrazovaných článků" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Výchozí interval" +msgid "Default interval between feed updates" +msgstr "Výchozí interval mezi aktualizacemi kanálů" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1863,7 +1862,7 @@ msgstr "Označit články v e-mailovém souhrnu jako přečtené" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Povolit e-mailový souhrn" #: classes/pref/prefs.php:35 @@ -1879,8 +1878,12 @@ msgid "Uses UTC timezone" msgstr "Používá časovou zónu UTC" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Povolit externí API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1899,7 +1902,7 @@ msgid "Hide feeds with no unread articles" msgstr "Skrýt kanály bez nepřečtených článků" #: classes/pref/prefs.php:42 -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "" #: classes/pref/prefs.php:43 @@ -1964,256 +1967,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "" #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Zvolit motiv" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "Vybrat jeden z dostupných motivů CSS" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Upravit soubor motivu" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Časová zóna uživatele" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Staré heslo nemůže být prázdné." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Nové heslo nemůže být prázdné." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Zadaná hesla nejsou shodná." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Nastavení bylo uloženo." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Neznámá možnost: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Vaše osobní data byla uložena." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Osobní data / ověření" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Osobní informace" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Celé jméno" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Úroveň přístupu" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Uložit data" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Vaše heslo má výchozí hodnotu, změňte jej prosím." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Změněna hesla zakáže heslo na jedno použití." -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Staré heslo" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nové heslo" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Potvrdit heslo" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Změnit heslo" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Heslo na jedno použití / Ověření" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Hesla na jedno použití jsou povolena. Zadejte své současné heslo pro zakázání." -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Zadejte své heslo" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Zakázat HJP" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Povolit HJP" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Přizpůsobit" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registrovat" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Vyčistit" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuální čas na serveru: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Uložit nastavení" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Spravovat profily" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Obnovit výchozí hodnoty" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Moduly" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Systémové moduly" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Modul" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Popis" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Verze" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "více informací" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Smazat data" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Uživatelské moduly" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Povolit vybrané moduly" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Špatné heslo" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Vytvořit profil" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktivní)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Odstranit vybrané profily" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Aktivovat profil" @@ -3595,6 +3590,19 @@ msgstr "Sdílet článek pomocí URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Výchozí interval" + +#~ msgid "Enable external API" +#~ msgstr "Povolit externí API" + +#~ msgid "Select theme" +#~ msgstr "Zvolit motiv" + +#~ msgid "Select one of the available CSS themes" +#~ msgstr "Vybrat jeden z dostupných motivů CSS" + #~ msgid "Title" #~ msgstr "Název" @@ -3625,9 +3633,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Tato volba je užitečná pro sledování několika agregátorů s částečně prolínající databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých zdrojů a zobrazí je jako jeden." -#~ msgid "Default interval between feed updates" -#~ msgstr "Výchozí interval mezi aktualizacemi kanálů" - #, fuzzy #~ msgid "Refresh" #~ msgstr "Nové" diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index edf2df9bf..ed2e97aa2 100755 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index 8c880ca3e..1127b6af5 100755 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-25 17:14+0100\n" "Last-Translator: Joschasa \n" "Language-Team: \n" @@ -480,7 +480,7 @@ msgstr "Abmelden" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Einstellungen" @@ -903,7 +903,7 @@ msgstr "Feed URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -955,7 +955,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Standardprofil" @@ -989,7 +989,7 @@ msgstr "Tags für diesen Artikel (durch Komma getrennt):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1010,7 +1010,7 @@ msgstr "Speichern" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1234,7 +1234,7 @@ msgstr "Auswahl:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1254,7 +1254,7 @@ msgstr "Umkehren" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1391,7 +1391,7 @@ msgid "Login" msgstr "Benutzername" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1611,7 +1611,7 @@ msgstr "[tt-rss] Benachrichtigung: Passwort geändert" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1837,7 +1837,7 @@ msgstr "Gesperrte Tags" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." #: classes/pref/prefs.php:28 @@ -1846,7 +1846,7 @@ msgstr "Artikel automatisch als gelesen markieren" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." #: classes/pref/prefs.php:29 @@ -1870,9 +1870,8 @@ msgid "Amount of articles to display at once" msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Standard-Intervall" +msgid "Default interval between feed updates" +msgstr "Standard Intervall zwischen Feed-Aktualisierungen" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1880,7 +1879,7 @@ msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Aktiviere E-Mail-Zusammenfassung" #: classes/pref/prefs.php:35 @@ -1896,8 +1895,12 @@ msgid "Uses UTC timezone" msgstr "Benutzt UTC Zeitzone" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Externe API aktivieren" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1918,7 +1921,7 @@ msgstr "Feeds ohne unglesene Nachrichten verbergen" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" #: classes/pref/prefs.php:43 @@ -1983,256 +1986,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Thema auswählen" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Benutzerdefiniertes Stylesheet" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Zeitzone des Benutzers" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Schlagzeilen in virtuellen Feeds gruppieren" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Altes Passwort darf nicht leer sein." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Neues Passwort darf nicht leer sein." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Die eingegebenen Passwörter stimmen nicht überein." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Funktion vom Authentifizierungsmodul nicht unterstützt." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Die Einstellungen wurden gespeichert." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Unbekannte Option: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Ihre persönlichen Daten wurden gespeichert." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Persönliche Daten / Authentifizierung" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Persönliche Daten" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Vollständiger Name" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-Mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Zugriffsberechtigung" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Speichern" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Sie nutzen das Standard Passwort, bitte ändern Sie es." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Das Ändern des aktuellen Passworts deaktiviert Einmalpasswörter." -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Altes Passwort" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Neues Passwort" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Passwort bestätigen" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Passwort ändern" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Einmalpasswörter (OTP) / Authentifikator" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese zu deaktivieren." -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Geben Sie Ihr Passwort ein" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Einmalpasswörter ausschalten" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort ändern, wird diese Funktion automatisch ausgeschaltet." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Scannen Sie den folgenden Code mit Ihrem Authentifikator:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern jetzt aktivieren" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Einmalpasswörter einschalten" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "Einige Einstellungen sind nur im Standardprofil verfügbar." -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Anpassen" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registrieren" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Löschen" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuelle Serverzeit: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Einstellungen speichern" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Profile verwalten" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Auf Standardwerte zurücksetzen" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "System-Plugins" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Beschreibung" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Daten löschen" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Benutzer-Plugins" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Ausgewählte Plugins aktivieren" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Falsches Passwort" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Profil erstellen" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktiv)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Ausgewählte Profile entfernen" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Profil aktivieren" @@ -3608,6 +3603,19 @@ msgstr "Artikel über URL teilen" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Standard-Intervall" + +#~ msgid "Enable external API" +#~ msgstr "Externe API aktivieren" + +#~ msgid "Select theme" +#~ msgstr "Thema auswählen" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" + #~ msgid "Title" #~ msgstr "Titel" @@ -3638,9 +3646,6 @@ msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeich #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." -#~ msgid "Default interval between feed updates" -#~ msgstr "Standard Intervall zwischen Feed-Aktualisierungen" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Die Datumssyntax scheint korrekt zu sein:" diff --git a/locale/es_ES/LC_MESSAGES/messages.mo b/locale/es_ES/LC_MESSAGES/messages.mo index 9a936d2e6..20a9b997c 100644 Binary files a/locale/es_ES/LC_MESSAGES/messages.mo and b/locale/es_ES/LC_MESSAGES/messages.mo differ diff --git a/locale/es_ES/LC_MESSAGES/messages.po b/locale/es_ES/LC_MESSAGES/messages.po index eb9ba2b9a..f154e24f6 100644 --- a/locale/es_ES/LC_MESSAGES/messages.po +++ b/locale/es_ES/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2012-10-25 00:12+0100\n" "Last-Translator: DavidM \n" "Language-Team: Español \n" @@ -477,7 +477,7 @@ msgstr "Cerrar sesión" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Preferencias" @@ -923,7 +923,7 @@ msgstr "URL de la fuente" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -976,7 +976,7 @@ msgstr "Perfil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Perfil por defecto" @@ -1010,7 +1010,7 @@ msgstr "Etiquetas para este artículo (separadas por comas):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1031,7 +1031,7 @@ msgstr "Guardar" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1264,7 +1264,7 @@ msgstr "Seleccionar:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1284,7 +1284,7 @@ msgstr "Invertir" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1425,7 +1425,7 @@ msgid "Login" msgstr "Iniciar sesión" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1645,7 +1645,7 @@ msgstr "[tt-rss] Notificación de cambio de contraseña" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1883,7 +1883,7 @@ msgstr "Etiquetas añadidas a la lista negra" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Cuando esté activada la función de autodetectar etiquetas en los artículos, no se incluirán estas etiquetas (lista de etiquetas separadas por comas)" #: classes/pref/prefs.php:28 @@ -1892,7 +1892,7 @@ msgstr "Marcar como leídos los artículos automáticamente" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Esta opción permite que al desplazarse por la lista de artículos, los artículos se vayan marcando como leídos automáticamente." #: classes/pref/prefs.php:29 @@ -1916,9 +1916,8 @@ msgid "Amount of articles to display at once" msgstr "Número de artículos que se muestran simultáneamente" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Intervalo por defecto" +msgid "Default interval between feed updates" +msgstr "Intervalo por defecto entre actualizaciones de las fuentes" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1926,7 +1925,7 @@ msgstr "Marcar como leídos los artículos de los correos de recopilación" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Activar los correos recopilatorios" #: classes/pref/prefs.php:35 @@ -1942,8 +1941,13 @@ msgid "Uses UTC timezone" msgstr "Usa la zona horaria UTC" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Habilitar API externa" +#, fuzzy +msgid "Enable API access" +msgstr "Habilitar las etiquetas" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1964,7 +1968,7 @@ msgstr "Ocultar las fuentes que no tengan mensajes sin leer" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Mostrar las fuentes especiales cuando se oculten las fuentes leídas" #: classes/pref/prefs.php:43 @@ -2030,270 +2034,262 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Quitar etiquetas HTML, salvo las más comunes, cuando se esté leyendo los artículos." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Seleccionar plantilla" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Personalizar hoja de estilo" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Personalizar la hoja de estilo CSS" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Zona horaria del usuario" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Agrupar los titulares en fuentes virtuales" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Cuando esta opción está habilitada, los titulares en fuentes especiales y marcadores son agrupados por fuentes" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "La antigua contraseña no puede dejarse en blanco." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "La nueva contraseña no puede dejarse en blanco." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Las contraseñas introducidas no coinciden." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "La configuración ha sido guardada." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Opción desconocida: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 #, fuzzy msgid "Your personal data has been saved." msgstr "Se ha programado la actualización de la categoría." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticación" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Datos personales" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "Correo electrónico" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Nivel de acceso" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 #, fuzzy msgid "Save data" msgstr "Guardar" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 #, fuzzy msgid "Your password is at default value, please change it." msgstr "Su contraseña tiene el valor por defecto. Por favor, modifíquela." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Antigua contraseña" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nueva contraseña" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Confirme la nueva contraseña" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Cambiar contraseña" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "Nombre de usuario o contraseña incorrecta" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(desactivado)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Habilitado" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 #, fuzzy msgid "Customize" msgstr "Personalizar hoja de estilo" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 #, fuzzy msgid "Register" msgstr "Registrado" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Guardar la configuración" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 #, fuzzy msgid "Manage profiles" msgstr "Crear perfil" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Opciones por defecto" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "Selección" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Limpiar los datos de la fuente" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Habilitar los iconos de la fuente" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "Nombre de usuario o contraseña incorrecta" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Aquí puede cambiar los colores, fuentes y diseño de su tema actual mediante código CSS. Puede utilizar este archivo como referencia." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Crear perfil" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(activo)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Borrar los perfiles seleccionados" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Activar perfil" @@ -3751,6 +3747,19 @@ msgstr "Compartir artículo mediante URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "La actualización en vivo es una característica experimental. Haga una copia de seguridad de la carpeta de tt-rss antes de continuar. Escriba 'yes' para continuar." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Intervalo por defecto" + +#~ msgid "Enable external API" +#~ msgstr "Habilitar API externa" + +#~ msgid "Select theme" +#~ msgstr "Seleccionar plantilla" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Cuando esta opción está habilitada, los titulares en fuentes especiales y marcadores son agrupados por fuentes" + #~ msgid "Title" #~ msgstr "Título" @@ -3781,9 +3790,6 @@ msgstr "La actualización en vivo es una característica experimental. Haga una #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Esta opción es útil cuando está leyendo varios agregadores de tipo \"planeta\" con bases de usuarios parcialmente coincidentes. Cuando está desactivado, fuerza a que los mismos artículos que hayan sido publicados por varias fuentes aparezcan una sola vez." -#~ msgid "Default interval between feed updates" -#~ msgstr "Intervalo por defecto entre actualizaciones de las fuentes" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Sintaxis de fecha parece correcta:" @@ -4187,9 +4193,6 @@ msgstr "La actualización en vivo es una característica experimental. Haga una #~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." #~ msgstr "Esta opción oculta la lista de fuentes y le permite ser cambiada al vuelo (útil para pequeñas pantallas)." -#~ msgid "Enable labels" -#~ msgstr "Habilitar las etiquetas" - #~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." #~ msgstr "Soporte experimental para las fuentes virtuales basado en las consultas SQL diseñadas por el usuario. Esta característica es experimental y nada amigable para el usuario. Úsela con cautela." diff --git a/locale/fi_FI/LC_MESSAGES/messages.mo b/locale/fi_FI/LC_MESSAGES/messages.mo index ffbe2aafe..f34376bfa 100644 Binary files a/locale/fi_FI/LC_MESSAGES/messages.mo and b/locale/fi_FI/LC_MESSAGES/messages.mo differ diff --git a/locale/fi_FI/LC_MESSAGES/messages.po b/locale/fi_FI/LC_MESSAGES/messages.po index f15ff82a3..d2fbb75bf 100644 --- a/locale/fi_FI/LC_MESSAGES/messages.po +++ b/locale/fi_FI/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.7.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-04-01 14:49+0200\n" "Last-Translator: Arto Tolonen \n" "Language-Team: \n" @@ -474,7 +474,7 @@ msgstr "Kirjaudu ulos" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Asetukset" @@ -890,7 +890,7 @@ msgstr "Syötteen URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -942,7 +942,7 @@ msgstr "Profiili:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Oletusprofiili" @@ -976,7 +976,7 @@ msgstr "Tämän syötteen tagit (pilkulla erotettuna)" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -997,7 +997,7 @@ msgstr "Talleta" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1220,7 +1220,7 @@ msgstr "Valitse" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1240,7 +1240,7 @@ msgstr "Käännä" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1377,7 +1377,7 @@ msgid "Login" msgstr "Käyttäjätunnus" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1597,7 +1597,7 @@ msgstr "" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1821,7 +1821,7 @@ msgstr "Estetyt tagit" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Näitä tageja ei liitetä automaattisesti (lista pilkulla erotettuna)" #: classes/pref/prefs.php:28 @@ -1830,7 +1830,7 @@ msgstr "Merkitse syötteet automaattisesti luetuksi" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Artikkelit merkitään automaattisesti luetuiksi kun artikkelilistaa vieritetään." #: classes/pref/prefs.php:29 @@ -1854,9 +1854,8 @@ msgid "Amount of articles to display at once" msgstr "Kerralla näytettävien artikkeleiden määrä" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Oletusaikaväli" +msgid "Default interval between feed updates" +msgstr "Oletusaikaväli syötepäivityksille" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1864,7 +1863,7 @@ msgstr "Merkitse email-tiivestelmässä lähetetyt artikkelit luetuksi" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Aktivoi email-tiivistelmän lähetys" #: classes/pref/prefs.php:35 @@ -1880,8 +1879,12 @@ msgid "Uses UTC timezone" msgstr "Käyttää UTC-aikavyöhykettä" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Aktivoi ulkoinen API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1901,7 +1904,7 @@ msgstr "Piilota syötteet joissa ei ole lukemattomia artikkeleita" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Näytä erikoissyötteet kun luetut artikkelit piilotetaan" #: classes/pref/prefs.php:43 @@ -1966,256 +1969,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Poista kaikki erikoiset HTML tagit syötteistä." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Valitse teema" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "Valitse CSS-teema" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Muokkaa CSS-tyylisivua" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Muokkaa lukijaa mieleiseksesi CSS-tyylisivuilla" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Käyttäjän aikavyöhyke" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Ryhmittele otsikot virtuaalisyötteiksi" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Otsikot Erikoissyötteissä ja Tunnisteissa ryhmitellään syötteittäin" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Vanha salasana ei voi olla tyhjä" -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Uusi salasana ei voi olla tyhjä" -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Syötetyt salasanat eivät täsmää" -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Konfiguraatio tallennettu." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Tuntematon valinta: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Sinun tiedot on tallennettu" -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Omat tiedot / Tunnistautuminen" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Omat tiedot" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Koko nimi" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "Email" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Käyttäjäoikeudet" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Talleta tiedot" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Käytät vieläkin oletussalasanaa, kannattaa vaihtaa." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Salasanan vaihtaminen poistaa kertakäyttösalasanatunnistautumisen käytöstä." -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Vanha salasana" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Uusi salasana" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Vahvista salasana" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Vaihda salasana" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Syötä salasanasi" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Poista OTP käytöstä" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Aktivoi kertakäyttösalasana" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Muokkaa" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Rekisteröi" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Tyhjennä" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Serverin aika: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Talleta asetukset" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Hallitse profiileita" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Palauta oletusarvot" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Lisäosat" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Päivitä sivu aktivoidaksesi lisäosiin tehdyt muutokset." -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Järjetelmän lisäosat" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Lisäosa" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Kuvaus" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Versio" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Tekijä" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "lisätietoja" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Tyhjennä tiedot" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Käyttäjän lisäosat" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Aktivoi valitut lisäosat" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Väärä salasana" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Luo profiili" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktiivinen)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Poista valitut profiilit" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Aktivoi profiili" @@ -3585,6 +3580,22 @@ msgstr "" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Oletusaikaväli" + +#~ msgid "Enable external API" +#~ msgstr "Aktivoi ulkoinen API" + +#~ msgid "Select theme" +#~ msgstr "Valitse teema" + +#~ msgid "Select one of the available CSS themes" +#~ msgstr "Valitse CSS-teema" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Otsikot Erikoissyötteissä ja Tunnisteissa ryhmitellään syötteittäin" + #~ msgid "Title" #~ msgstr "Otsikko" @@ -3612,9 +3623,6 @@ msgstr "" #~ msgid "Modify score" #~ msgstr "Muokkaa pisteytystä" -#~ msgid "Default interval between feed updates" -#~ msgstr "Oletusaikaväli syötepäivityksille" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Päiväysformaatti on oikein:" diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index b89c0617e..c43ba1122 100644 Binary files a/locale/fr_FR/LC_MESSAGES/messages.mo and b/locale/fr_FR/LC_MESSAGES/messages.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index 95db79a8e..b12808852 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-04-01 10:18+0100\n" "Last-Translator: Raphael Rochet \n" "Language-Team: French\n" @@ -478,7 +478,7 @@ msgstr "Déconnexion" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Configuration" @@ -894,7 +894,7 @@ msgstr "URL du flux" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -946,7 +946,7 @@ msgstr "Profil :" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Profil par défaut" @@ -980,7 +980,7 @@ msgstr "Tags pour cet article (séparés par des virgules) :" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1001,7 +1001,7 @@ msgstr "Enregistrer" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1224,7 +1224,7 @@ msgstr "Sélectionner :" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1244,7 +1244,7 @@ msgstr "Inverse" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1381,7 +1381,7 @@ msgid "Login" msgstr "Se connecter" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1601,7 +1601,7 @@ msgstr "[tt-rss] Notification de changement de mot passe" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1824,7 +1824,7 @@ msgstr "Tags exclus" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Lors de l'auto-détection des tags dans les articles, ces tags ne seront pas utilisés (séparés par des virgules)." #: classes/pref/prefs.php:28 @@ -1833,7 +1833,7 @@ msgstr "Automatiquement marquer les articles comme lus" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Cette option permet de marquer automatiquement les articles comme lus lorsque vous naviguez dans la liste d'articles." #: classes/pref/prefs.php:29 @@ -1857,9 +1857,8 @@ msgid "Amount of articles to display at once" msgstr "Nombre d'articles à afficher" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Fréquence de mise à jour par défaut" +msgid "Default interval between feed updates" +msgstr "Intervalle par défaut entre les mises à jour de flux" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1867,7 +1866,7 @@ msgstr "Marquer tous les articles du compte-rendu par email comme lus" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Activer la synthèse quotidienne par courrier électronique" #: classes/pref/prefs.php:35 @@ -1883,8 +1882,12 @@ msgid "Uses UTC timezone" msgstr "Utilise l'heure GMT" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Activer les API externes" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1904,7 +1907,7 @@ msgstr "Masquer les flux sans article non lu" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Afficher les flux spéciaux en masquant les flux lus" #: classes/pref/prefs.php:43 @@ -1969,256 +1972,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Élimine toutes les balises HTML sauf les plus courantes lors de la lecture des articles." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Sélectionner un thème" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "Sélectionnez un des thèmes CSS disponibles" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Personnaliser la feuille de style" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Personnaliser les feuilles de style CSS" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Fuseau horaire de l'utilisateur" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Regrouper les entêtes dans des flux virtuels" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Avec cette option activée, les entêtes dans les flux spéciaux et par étiquettes sont regroupés par flux" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "L'ancien mot de passe ne peut pas être vide." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Le nouveau mot de passe ne peut pas être vide." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Les mots de passe saisie ne sont pas identiques." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Fonction non supportée par le module d'identification." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "La configuration a été enregistrée." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Option inconnue : %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Vos données personnelles ont été sauvegardées." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Données personnelles / Authentification" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Données personelles" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Nom complet" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "Adresse électronique" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Permissions" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Enregistrer les données" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Votre mot de passe est celui par défaut, veuillez le modifier." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Changer votre mot de passe actuel désactivera les mots de passe à usage unique." -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Ancien mot de passe" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nouveau mot de passe" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Confirmation du mot de passe" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Modifier le mot de passe" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Mots de passe à usage unique / Identificateur" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Les mots de passe à usage unique sont actuellement activés. Entrez votre mot de passe actuel ci-dessous pour les désactiver." -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Entrez votre mot de passe" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Désactiver les mots de passe à usage unique" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Vous aurez besoin d'un Identificateur compatible pour utiliser ceci. Changer votre mot de passe le désactivera automatiquement." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Scanner le code suivant avec l'application identificateur :" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "J'ai scanné le code et je veux activer les mots de passe à usage unique" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Activer les mots de passe à usage unique" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "Certaines options ne ne disponibles que dans le profil par défaut." -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Personnaliser" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "S'inscrire" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Effacer" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Heure du serveur : %s (GMT)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Enregistrer la configuration" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Gérer les profils" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Revenir aux valeurs par défaut" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Vous devrez relancer Tiny Tiny RSS pour que les changements apportés aux plugins prennent effet." -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "Téléchargez plus de plugins sur le forum ou le wiki de Tiny Tiny RSS." -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Plugins systèmes" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Description" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Auteur" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "plus d'info" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Purger les données" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Plugins utilisateur" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Activer les plugins sélectionnés" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Mot de passe incorrect" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Vous pouvez redéfinir les couleurs, les polices et la mise en page du thème actuellement sélectionné à l'aide de vos propres instructions CSS ici. Ce fichier peut être utilisé comme base de départ." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Création d'un profil" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(actif)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Supprimer les profils sélectionnés" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Activer le profil" @@ -3589,6 +3584,22 @@ msgstr "Partager l'article par URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "La mise à jour en direct est expérimentale. Veuillez sauvegarder votre dossier tt-rss avant de continuer. Tapez « yes » pour continuer." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Fréquence de mise à jour par défaut" + +#~ msgid "Enable external API" +#~ msgstr "Activer les API externes" + +#~ msgid "Select theme" +#~ msgstr "Sélectionner un thème" + +#~ msgid "Select one of the available CSS themes" +#~ msgstr "Sélectionnez un des thèmes CSS disponibles" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Avec cette option activée, les entêtes dans les flux spéciaux et par étiquettes sont regroupés par flux" + #~ msgid "Title" #~ msgstr "Titre" @@ -3619,9 +3630,6 @@ msgstr "La mise à jour en direct est expérimentale. Veuillez sauvegarder votre #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Cette option est utile si vous lisez des articles venant d'agrégateurs de type «planet», dans lesquels certains flux se recoupent largement. Lorsque cette option est désactivée, les articles en double sont affichés en un seul exemplaire." -#~ msgid "Default interval between feed updates" -#~ msgstr "Intervalle par défaut entre les mises à jour de flux" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "La syntaxe des dates semble être correcte :" diff --git a/locale/hu_HU/LC_MESSAGES/messages.mo b/locale/hu_HU/LC_MESSAGES/messages.mo index 140f8a9a2..3ac3b047a 100644 Binary files a/locale/hu_HU/LC_MESSAGES/messages.mo and b/locale/hu_HU/LC_MESSAGES/messages.mo differ diff --git a/locale/hu_HU/LC_MESSAGES/messages.po b/locale/hu_HU/LC_MESSAGES/messages.po index 673fc2d0a..0900858ee 100644 --- a/locale/hu_HU/LC_MESSAGES/messages.po +++ b/locale/hu_HU/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-26 12:00+0100\n" "Last-Translator: Zoltan Faludi \n" "Language-Team: HUNGARIAN\n" @@ -478,7 +478,7 @@ msgstr "Kijelentkezés" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Beállítások" @@ -897,7 +897,7 @@ msgstr "Hírcsatorna URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -950,7 +950,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Alapértelmezett profil" @@ -984,7 +984,7 @@ msgstr "A hír címkéi (vesszőkkel elválasztva):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1005,7 +1005,7 @@ msgstr "Mentés" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1230,7 +1230,7 @@ msgstr "Kiválasztás:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1250,7 +1250,7 @@ msgstr "Fordított" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1389,7 +1389,7 @@ msgid "Login" msgstr "Belépés" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1613,7 +1613,7 @@ msgstr "[tt-rss] Értesítés jelszó megváltoztatásáról." #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1839,7 +1839,7 @@ msgstr "Feketelistás címkék" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Ha a program megtalája ezeket a címkéket a hírekben, kihagyja őket (lista, elemek vesszővel elválasztva)" #: classes/pref/prefs.php:28 @@ -1848,7 +1848,7 @@ msgstr "Hírek megjelölése olvasottként automatikusan" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Ez a beállítás lehetővé teszi a hírek automatikus olvasottnak jelölését a hír lista görgetése közben." #: classes/pref/prefs.php:29 @@ -1872,9 +1872,8 @@ msgid "Amount of articles to display at once" msgstr "Ennyi hír jelenjen meg egyszerre" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Frissítési intervallum:" +msgid "Default interval between feed updates" +msgstr "Hírcsatorna frissítések közti idő" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1882,7 +1881,7 @@ msgstr "Az email összefoglalóban elküldött hírek megjelölése hírek olvas #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Hírösszefoglaló e-mail elküldésének engedélyezése" #: classes/pref/prefs.php:35 @@ -1898,8 +1897,12 @@ msgid "Uses UTC timezone" msgstr "UTC időzónát használ" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Külső API engedélyezése" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1920,7 +1923,7 @@ msgstr "Olvasatlan hírekkel nem rendelkező hírcsatorna elrejtése" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Különleges hírcsatornák mutatása olvasott hírcsatornák rejtésekor" #: classes/pref/prefs.php:43 @@ -1985,256 +1988,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Hírek olvasásakor távolítsa el a a HTML kódokat a leggyakrabban használtak kivételével." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Stílusválasztó" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Stíluslap testreszabása" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Saját ízlése szerint testreszabhatja a CSS stíluslapot" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Felhasználó időzónája" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Hírcímek csoportosítása virtuális hírcsatornákba" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Ha ezt a beállítást engedélyezi, a Kiemelt hírcsatornákban és a Címkékben szereplő címeket a program hírcsatornák alapján csoportosítja." +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "A régi jelszó mező nem maradhat üresen." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Az új jelszó mező nem maradhat üresen." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "A megadott jelszavak nem egyeznek." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "A hitelesítési modul nem támogatja ezt a funkciót." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Beállítások elmentve." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Ismeretlen beállítás: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "A személyes adatai el lettek mentve." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Személyes adatok / Azonosítás" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Személyes adatok" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Teljes név" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Hozzáférési szint" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Adatok mentése" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "A jelszava még az alapértelmezett, kérem változtassa meg." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Régi jelszó" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Új jelszó" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Jelszó még egyszer" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Jelszó megváltoztatása" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Egyszer használatos jelszavak / Hitelesítő" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Adja meg a jelszavát" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "OTP letiltása" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Ennek a használatához egy kompatibilis Hitelesítőre van szükség. A jelszó módosítása automatikusan letiltja az OTP-t." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Szkennelje be a következő kódot a Hitelesítő alkalmazással:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Beszkenneltem a kódot és be szeretném kapcsolni az OTP-t" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "OTP engedélyezése" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Testreszabás" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Regisztráció" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Töröl" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuális szerveridő: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Beállítások mentése" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Profilok kezelése" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Alapértelmezett beállítások" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Beépülők" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Rendszer beépülők" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Beépülő" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Leírás" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Verzió" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Szerző" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Adatok törlése" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Felhasználói beépülők" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Kiválasztott beépülők engedélyezése" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Érvénytelen jelszó" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Egyéni CSS deklarációkkal itt felülbírálhatja a kiválasztott téma színeit, betűtípusait és elrendezését. Ez a fájl használható kiindulásként." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Profil létrehozás" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktív)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Eltávolítja a kiválasztott profilokat?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Profil aktiválás" @@ -3656,6 +3651,19 @@ msgstr "Megosztás URL-el" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Az élő frissítés még kisérleti fázisban van. A folytatás előtt mentse el a tt-rss könyvtárának tartalmát. A folytatáshoz írja be a 'yes' szót." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Frissítési intervallum:" + +#~ msgid "Enable external API" +#~ msgstr "Külső API engedélyezése" + +#~ msgid "Select theme" +#~ msgstr "Stílusválasztó" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Ha ezt a beállítást engedélyezi, a Kiemelt hírcsatornákban és a Címkékben szereplő címeket a program hírcsatornák alapján csoportosítja." + #~ msgid "Title" #~ msgstr "Cím" @@ -3686,9 +3694,6 @@ msgstr "Az élő frissítés még kisérleti fázisban van. A folytatás előtt #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Ez az opció akkor hasznos, amikor sok planet típusú hírgyűjtőt olvas részben átfedő felhasználó bázissal. Ha ki van kapcsolva, akkor arra törekszik, hogy ugyanaz a hír csak egyszer jelenjen meg." -#~ msgid "Default interval between feed updates" -#~ msgstr "Hírcsatorna frissítések közti idő" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "A dátum szintaxisa helyesnek tűnik:" diff --git a/locale/it_IT/LC_MESSAGES/messages.mo b/locale/it_IT/LC_MESSAGES/messages.mo index b4c423d1a..58ac9c7b4 100644 Binary files a/locale/it_IT/LC_MESSAGES/messages.mo and b/locale/it_IT/LC_MESSAGES/messages.mo differ diff --git a/locale/it_IT/LC_MESSAGES/messages.po b/locale/it_IT/LC_MESSAGES/messages.po index ad9c46bb7..7fe9fccf5 100644 --- a/locale/it_IT/LC_MESSAGES/messages.po +++ b/locale/it_IT/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2012-02-14 08:31+0000\n" "Last-Translator: gothfox \n" "Language-Team: LANGUAGE \n" @@ -485,7 +485,7 @@ msgstr "Esci" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Preferenze" @@ -929,7 +929,7 @@ msgstr "URL del notiziario" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -983,7 +983,7 @@ msgstr "Profilo:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Profilo predefinito" @@ -1017,7 +1017,7 @@ msgstr "Etichette per questo articolo (separate da virgole):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1038,7 +1038,7 @@ msgstr "Salva" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1270,7 +1270,7 @@ msgstr "Seleziona:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1290,7 +1290,7 @@ msgstr "Inverti" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1431,7 +1431,7 @@ msgid "Login" msgstr "Accesso" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1652,7 +1652,7 @@ msgstr "[tt-rss] Notifica di cambio password" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1883,7 +1883,7 @@ msgstr "Etichette in lista nera" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Quando è attiva l'individuazioni automatica delle etichette negli articoli, queste etichette non saranno applicate (elenco separato da virgola)." #: classes/pref/prefs.php:28 @@ -1892,7 +1892,7 @@ msgstr "Segnare automaticamente gli articoli come letti" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Questa opzione abilita la segnatura automatica degli articoli come letti quando si scorre l'elenco articoli." #: classes/pref/prefs.php:29 @@ -1916,9 +1916,8 @@ msgid "Amount of articles to display at once" msgstr "Numero di articoli da visualizzare alla volta" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Intervallo predefinito" +msgid "Default interval between feed updates" +msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1926,7 +1925,7 @@ msgstr "Segna gli articoli del riassunto email come letti" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Abilitare email riassunto" #: classes/pref/prefs.php:35 @@ -1943,8 +1942,12 @@ msgid "Uses UTC timezone" msgstr "Fuso orario dell'utente" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Abilita API esterna" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1965,7 +1968,7 @@ msgstr "Nascondere i notiziari senza messaggi non letti" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Mostrare i notiziari speciali quando vengono nascosti i notiziari letti" #: classes/pref/prefs.php:43 @@ -2032,263 +2035,255 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Toglie tutte le etichette HTML più comuni durante la lettura degli articoli." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Seleziona tema" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Personalizza il foglio di stile" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Personalizza a piacimento il foglio di stile CSS" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Fuso orario dell'utente" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Raggruppare i sommari in notiziari virtuali" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Quando questa opzione è abilitata, i sommari nei notiziari speciali e nelle etichette vengono raggruppati per notiziario" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "La vecchia password non può essere vuota." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "La nuova password non può essere vuota." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Le password inserite non corrispondono." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "La configurazione è stata salvata." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Opzione sconosciuta: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "I dati personali sono stati salvati." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "Autenticazione" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Nome completo" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "Email" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Livello di accesso" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Salva dati" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "La password è impostata al valore predefinito: cambiarla." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Vecchia password" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nuova password" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Conferma password" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Cambia password" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "Nome utente o password sbagliati" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "Disabilitare aggiornamenti" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Abilitato" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Personalizza" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registro" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Pulisci" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Salva configurazione" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Gestisci profili" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Reimposta ai valori predefiniti" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 +msgid "Plugin" +msgstr "" + #: classes/pref/prefs.php:714 #: classes/pref/prefs.php:768 -msgid "Plugin" +msgid "Description" msgstr "" #: classes/pref/prefs.php:715 #: classes/pref/prefs.php:769 -msgid "Description" +msgid "Version" msgstr "" #: classes/pref/prefs.php:716 #: classes/pref/prefs.php:770 -msgid "Version" -msgstr "" - -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Pulisci i dati del notiziario" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Abilitare le categorie dei notiziari" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "Nome utente o password sbagliati" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Si possono cambiare i colori, i caratteri e la disposizione del tema correntemente selezionato attraverso le dichiarazioni CSS personalizzate. Questo file può essere utilizzato come base." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Crea profilo" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(attivo)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Rimuovi i profili selezionati" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Attiva profilo" @@ -3747,6 +3742,19 @@ msgstr "Metti la stella all'articolo" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Intervallo predefinito" + +#~ msgid "Enable external API" +#~ msgstr "Abilita API esterna" + +#~ msgid "Select theme" +#~ msgstr "Seleziona tema" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Quando questa opzione è abilitata, i sommari nei notiziari speciali e nelle etichette vengono raggruppati per notiziario" + #~ msgid "Title" #~ msgstr "Titolo" @@ -3774,9 +3782,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Questa opzione è utile quando si stanno leggendo vari aggregatori di tipo «planet» con utenti che collidono parzialmente. Quando disabilitata forza le stesse notizie da differenti notiziari ad apparire una volta sola." -#~ msgid "Default interval between feed updates" -#~ msgstr "Intervallo predefinito tra gli aggiornamenti dei notiziari" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "La sintassi della data appare con corretta:" diff --git a/locale/ja_JP/LC_MESSAGES/messages.mo b/locale/ja_JP/LC_MESSAGES/messages.mo index 3d64e943e..276b3ec2c 100644 Binary files a/locale/ja_JP/LC_MESSAGES/messages.mo and b/locale/ja_JP/LC_MESSAGES/messages.mo differ diff --git a/locale/ja_JP/LC_MESSAGES/messages.po b/locale/ja_JP/LC_MESSAGES/messages.po index ab9a8b4cf..5bb7441e2 100644 --- a/locale/ja_JP/LC_MESSAGES/messages.po +++ b/locale/ja_JP/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss unstable\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-25 06:48+0900\n" "Last-Translator: skikuta \n" "Language-Team: \n" @@ -482,7 +482,7 @@ msgstr "ログアウト" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "設定" @@ -936,7 +936,7 @@ msgstr "フィード" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -992,7 +992,7 @@ msgstr "ファイル:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 #, fuzzy msgid "Default profile" msgstr "標準の記事制限" @@ -1028,7 +1028,7 @@ msgstr "この記事のタグ (カンマで区切ります):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1049,7 +1049,7 @@ msgstr "保存" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1288,7 +1288,7 @@ msgstr "選択:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1308,7 +1308,7 @@ msgstr "反転" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1454,7 +1454,7 @@ msgid "Login" msgstr "ログイン" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1685,7 +1685,7 @@ msgstr "[tt-rss] パスワード変更通知" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1925,7 +1925,7 @@ msgid "Blacklisted tags" msgstr "ブラックリスト化したタグ" #: classes/pref/prefs.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "" #: classes/pref/prefs.php:28 @@ -1934,7 +1934,7 @@ msgid "Automatically mark articles as read" msgstr "組み合わせモードで記事を自動的に展開する" #: classes/pref/prefs.php:28 -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "" #: classes/pref/prefs.php:29 @@ -1960,8 +1960,8 @@ msgstr "表示する記事が見つかりません。" #: classes/pref/prefs.php:33 #, fuzzy -msgid "Default feed update interval" -msgstr "更新の間隔" +msgid "Default interval between feed updates" +msgstr "フィードの更新までの標準間隔 (単位:分)" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1969,7 +1969,7 @@ msgstr "既読として電子メールのダイジェストに含まれる記事 #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "電子メールでのダイジェストを有効にする" #: classes/pref/prefs.php:35 @@ -1985,7 +1985,12 @@ msgid "Uses UTC timezone" msgstr "" #: classes/pref/prefs.php:37 -msgid "Enable external API" +#, fuzzy +msgid "Enable API access" +msgstr "ラベルを有効にする" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -2006,7 +2011,7 @@ msgid "Hide feeds with no unread articles" msgstr "未読でないメッセージとフィードを隠す" #: classes/pref/prefs.php:42 -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "" #: classes/pref/prefs.php:43 @@ -2074,275 +2079,267 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "" #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "テーマを選択する" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 #, fuzzy msgid "Customize stylesheet" msgstr "ユーザースタイルシートの URL" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "仮想フィードのグループヘッドライン" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "古いパスワードを空にできません。" -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "新しいパスワードを空にできません。" -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "パスワードが一致しません。" -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "設定を保存しました。" -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "不明なオプション: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 #, fuzzy msgid "Your personal data has been saved." msgstr "パスワードを変更しました。" -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "認証" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "個人データ" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "電子メール" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "アクセスレベル" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 #, fuzzy msgid "Save data" msgstr "保存" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "パスワードが標準のままです。\n" " 変更してください。" -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "現在のパスワード" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "新しいパスワード" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "新しいパスワード(確認)" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "パスワードを変更する" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "ユーザー名かパスワードが正しくありません" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(無効です)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "有効にする" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 #, fuzzy msgid "Customize" msgstr "ユーザースタイルシートの URL" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 #, fuzzy msgid "Register" msgstr "登録済み" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "設定を保存する" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 #, fuzzy msgid "Manage profiles" msgstr "フィルターを作成する" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "標準に戻す" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "説明" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "フィードデータの消去" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "フィードアイコンを有効にする" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "ユーザー名かパスワードが正しくありません" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 #, fuzzy msgid "Create profile" msgstr "フィルターを作成する" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(有効)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 #, fuzzy msgid "Remove selected profiles" msgstr "選択されたプロファイルを削除しますか?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 #, fuzzy msgid "Activate profile" msgstr "プロファイルを有効にする" @@ -3865,6 +3862,13 @@ msgstr "記事をお気に入りにする" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "更新の間隔" + +#~ msgid "Select theme" +#~ msgstr "テーマを選択する" + #~ msgid "Title" #~ msgstr "題名" @@ -3893,10 +3897,6 @@ msgstr "" #~ msgid "Modify score" #~ msgstr "スコアを変更する" -#, fuzzy -#~ msgid "Default interval between feed updates" -#~ msgstr "フィードの更新までの標準間隔 (単位:分)" - #, fuzzy #~ msgid "Date syntax appears to be correct:" #~ msgstr "古いパスワードが不正確です。" @@ -4263,9 +4263,6 @@ msgstr "" #~ msgid "Hide feedlist" #~ msgstr "フィード一覧を隠す" -#~ msgid "Enable labels" -#~ msgstr "ラベルを有効にする" - #~ msgid "Show additional information in feedlist" #~ msgstr "フィード一覧の追加情報を表示する" diff --git a/locale/lv_LV/LC_MESSAGES/messages.mo b/locale/lv_LV/LC_MESSAGES/messages.mo index 16fcc959b..819e43760 100644 Binary files a/locale/lv_LV/LC_MESSAGES/messages.mo and b/locale/lv_LV/LC_MESSAGES/messages.mo differ diff --git a/locale/lv_LV/LC_MESSAGES/messages.po b/locale/lv_LV/LC_MESSAGES/messages.po index 75c64e329..e985fda2c 100644 --- a/locale/lv_LV/LC_MESSAGES/messages.po +++ b/locale/lv_LV/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-18 22:55+0300\n" "Last-Translator: Valdis Vītoliņš \n" "Language-Team: \n" @@ -483,7 +483,7 @@ msgstr "Atteikties" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Iestatījumi" @@ -927,7 +927,7 @@ msgstr "Barotnes URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -980,7 +980,7 @@ msgstr "Profils:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Noklusētais profils" @@ -1014,7 +1014,7 @@ msgstr "Šī raksta iezīmes (atdalītas ar komatiem):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1035,7 +1035,7 @@ msgstr "Saglabāt" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1260,7 +1260,7 @@ msgstr "Iezīmēt:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1280,7 +1280,7 @@ msgstr "Apgriezt" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1419,7 +1419,7 @@ msgid "Login" msgstr "Pieteikšanās" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1643,7 +1643,7 @@ msgstr "[tt-rss] paroles maiņas paziņojums" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1869,7 +1869,7 @@ msgstr "Tagu melnais saraksts" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Kad tiek automātiski noteikti rakstu tagi, šie tagi netiks piemēroti (ar komatu atdalīts saraksts)." #: classes/pref/prefs.php:28 @@ -1878,7 +1878,7 @@ msgstr "Automātiski atzīmēt rakstus kā izlasītus" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Šī iespēja ļauj automātiski atzīmēt rakstu kā lasītu, kad jūs pārtinat tā saturu." #: classes/pref/prefs.php:29 @@ -1902,9 +1902,8 @@ msgid "Amount of articles to display at once" msgstr "Vienlaicīgi parādīto rakstu skaits" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Noklusētais intervāls" +msgid "Default interval between feed updates" +msgstr "Noklusētais barotņu atjaunošanas intervāls " #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1912,7 +1911,7 @@ msgstr "Atzīmēt īssavilkuma rakstus e-pastā kā lasītus" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Iespējot īssavilkuma sūtīšanu pa e-pastu" #: classes/pref/prefs.php:35 @@ -1928,8 +1927,12 @@ msgid "Uses UTC timezone" msgstr "Izmanto UTC laika zonu" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Iespējot ārēju API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1950,7 +1953,7 @@ msgstr "Slēpt barotnes ar izlasītiem ziņojumiem" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Rādīt īpašās barotnes kad tiek slēptas izlasītās" #: classes/pref/prefs.php:43 @@ -2016,258 +2019,250 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Lasot rakstus, atmest visus, izņemot pašus svarīgākos HTML tagus." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Izvēlieties tēmu" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Pielāgot stilu lapu" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Pielāgot CSS stilu lapu" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Lietotāja laika zona" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Apvienot virsrakstus virtuālās barotnēs" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Ja šī iespēja ir ieslēgta, īpašo barotņu un iezīmju virsraksti tiek grupēti pēc barotnēm" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Vecā parole nedrīkst būt tukša" -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Jaunā parole nedrīkst būt tukša" -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Ievadītās paroles nav vienādas." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Funkiju neatbalsta autentifikācijas modulis." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Iestatījumi ir saglabāti." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Nezināma iespēja %s." -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Jūsu personīgie dati ir saglabāti." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Personīgie dati/autentifikācija" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Personīgie dati" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Vārds un uzvārds" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-pasts" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Pieejas līmenis" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Saglabāt datus" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Jums ir norādīta noklusētā parole, lūdzu nomainiet to." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Vecā parole" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Jaunā parole" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Apstipriniet paroli" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Nomainīt paroli" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Vienreizlietojamā parole/autentifikācija" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Ievadiet savu paroli" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Atslēgt vienreizlietojamo paroli" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Lai to lietotu, jums būs nepieciešams savietojams autentifikators. Jūsu paroles maiņa automātiski atslēgs vienreizlietojamo paroli." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Ar autentifikācijas moduli noskenējiet sekojošo kodu:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Esmu noskenējis šo kodu un vēlos iespējot vienreizlietojamo paroli" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Iespējot vienreizlietojamo paroli" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Pielāgot" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Reģistrēt" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Attīrīt" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Tekošā laika zona ir: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Saglabāt iestatījumus" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Pārvaldīt profilus" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Atstatīt uz noklusētajiem" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 +msgid "Plugin" +msgstr "" + #: classes/pref/prefs.php:714 #: classes/pref/prefs.php:768 -msgid "Plugin" +msgid "Description" msgstr "" #: classes/pref/prefs.php:715 #: classes/pref/prefs.php:769 -msgid "Description" +msgid "Version" msgstr "" #: classes/pref/prefs.php:716 #: classes/pref/prefs.php:770 -msgid "Version" -msgstr "" - -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Dzēst barotņu datus" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Iespējot barotņu kategorijas" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Nepareiza parole" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Jūs varat aizstāt krāsas, fontus un izklājumu, šobrīd izmantotā CSS vietā izmantojot savus pielāgojumus. Paraugu varat ņemt no šī faila." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Izveidot profilu" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktīvs)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Dzēst iezīmētos profilus" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Aktivizēt profilu" @@ -3706,6 +3701,19 @@ msgstr "Kopīgot ar URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Lūdzu neaizveriet logu līdz ir pabeigta atjaunošana. Pirms turpināt, izveidojiet jūsu tt-rss mapes rezerves kopiju." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Noklusētais intervāls" + +#~ msgid "Enable external API" +#~ msgstr "Iespējot ārēju API" + +#~ msgid "Select theme" +#~ msgstr "Izvēlieties tēmu" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Ja šī iespēja ir ieslēgta, īpašo barotņu un iezīmju virsraksti tiek grupēti pēc barotnēm" + #~ msgid "Title" #~ msgstr "Virsraksts" @@ -3736,9 +3744,6 @@ msgstr "Lūdzu neaizveriet logu līdz ir pabeigta atjaunošana. Pirms turpināt, #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Šī ir vērtīga iespēja, ja izmantojat planētas tipa agregatorus ar parklājošiem datiem. Kad tas ir atslēgts, tas no visām līdzīgām barotnēm parāda tikai vienu unikālu rakstu." -#~ msgid "Default interval between feed updates" -#~ msgstr "Noklusētais barotņu atjaunošanas intervāls " - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Datuma sintakse ir pareiza:" diff --git a/locale/nb_NO/LC_MESSAGES/messages.mo b/locale/nb_NO/LC_MESSAGES/messages.mo index 75faeaf3b..40cf1cfd6 100644 Binary files a/locale/nb_NO/LC_MESSAGES/messages.mo and b/locale/nb_NO/LC_MESSAGES/messages.mo differ diff --git a/locale/nb_NO/LC_MESSAGES/messages.po b/locale/nb_NO/LC_MESSAGES/messages.po index 7314b877e..8d7b903df 100644 --- a/locale/nb_NO/LC_MESSAGES/messages.po +++ b/locale/nb_NO/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS 1.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2009-05-02 00:10+0100\n" "Last-Translator: Christian Lomsdalen \n" "Language-Team: Norwegian Bokmål \n" @@ -488,7 +488,7 @@ msgstr "Logg ut" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Innstillinger" @@ -942,7 +942,7 @@ msgstr "Nyhetsstrøm" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -998,7 +998,7 @@ msgstr "Fil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 #, fuzzy msgid "Default profile" msgstr "Standard artikkelbegrensning" @@ -1034,7 +1034,7 @@ msgstr "Denne artikkelens stikkord (separert med kommaer):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1055,7 +1055,7 @@ msgstr "Lagre" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1293,7 +1293,7 @@ msgstr "Velg:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1313,7 +1313,7 @@ msgstr "Motsatt" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1459,7 +1459,7 @@ msgid "Login" msgstr "Logg inn" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1690,7 +1690,7 @@ msgstr "[tt-rss] Varsel om endring av passord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1930,7 +1930,7 @@ msgstr "Svartelistede stikkord" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Når stikkord blir automatisk funnet i artikler skal følgende stikkord ikke bli oppdaget (komma-separert liste)" #: classes/pref/prefs.php:28 @@ -1940,7 +1940,7 @@ msgstr "Utvid artikler automatisk i kombinert modus" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Dette valge muliggjør markeringen av artikler som leste automatisk i kombinert modus, mens du blar i artikkellisten (med unntak for ferske artikler nyhetsstrømmen)." #: classes/pref/prefs.php:29 @@ -1966,8 +1966,8 @@ msgstr "Ingen artikler funnet som kan vises" #: classes/pref/prefs.php:33 #, fuzzy -msgid "Default feed update interval" -msgstr "Standard intervall:" +msgid "Default interval between feed updates" +msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1975,7 +1975,7 @@ msgstr "Marker artikler i e--postsammendrag som leste" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Tillatt e-postsammendrag" #: classes/pref/prefs.php:35 @@ -1991,7 +1991,12 @@ msgid "Uses UTC timezone" msgstr "" #: classes/pref/prefs.php:37 -msgid "Enable external API" +#, fuzzy +msgid "Enable API access" +msgstr "Tillat merkelapper" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -2013,7 +2018,7 @@ msgstr "Skjul nyhetsstrømmer med ingen uleste meldinger" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Vis snarveier selv om leste nyhetskanaler skjules" #: classes/pref/prefs.php:43 @@ -2081,276 +2086,268 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Fjern alle HTML-koder utenom de mest vanlige når artikler leses." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Velg utseende" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 #, fuzzy msgid "Customize stylesheet" msgstr "URL til brukerbestemt utseendemal (CSS)" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Grupper overskriftene i virtuelle nyhetskanaler" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Med dette valget haket av så vil overskriftene i spesielle nyhetskanaler og merkelapper grupperes etter nyhetskanalene" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Gammelt passord kan ikke være blankt." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Nytt passord kan ikke vært blankt." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Innskrivne passord matcher ikke." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Konfigurasjonen er lagret." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Ukjent valg: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 #, fuzzy msgid "Your personal data has been saved." msgstr "Passord har blitt endret." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "Autentifisering" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Personlig informasjon" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-post" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Tilgangsnivå" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 #, fuzzy msgid "Save data" msgstr "Lagre" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "Passordet ditt er et standardpassord, \n" "\t\t\t\t\t\tVennligst bytt." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Gammelt passord" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nytt passord" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Bekreft passord" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Endre passord" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "Feil brukernavn og/eller passord" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(Avskrudd)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Tillatt" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 #, fuzzy msgid "Customize" msgstr "URL til brukerbestemt utseendemal (CSS)" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 #, fuzzy msgid "Register" msgstr "Registrert" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Lagre konfigurasjonen" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 #, fuzzy msgid "Manage profiles" msgstr "Lag filter" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Tilbake til standard" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "beskrivelse" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Slett nyhetsstrømsdata" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Bruk nyhetsstrømsikoner" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "Feil brukernavn og/eller passord" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 #, fuzzy msgid "Create profile" msgstr "Lag filter" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 #, fuzzy msgid "(active)" msgstr "Tilpasset" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 #, fuzzy msgid "Remove selected profiles" msgstr "Fjerne valgte filtre?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 #, fuzzy msgid "Activate profile" msgstr "Fjerne valgte filtre?" @@ -3876,6 +3873,16 @@ msgstr "Marker artikkel som favoritt" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Standard intervall:" + +#~ msgid "Select theme" +#~ msgstr "Velg utseende" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Med dette valget haket av så vil overskriftene i spesielle nyhetskanaler og merkelapper grupperes etter nyhetskanalene" + #~ msgid "Title" #~ msgstr "Tittel" @@ -3904,10 +3911,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Dette valget er brukervennlig hvis du leser flere globale nyhetsstrømssamlere som har delvis overlappende brukerbase. Når denne er avskrudd kan samme post fra flere forskjellige nyhetsstrømmer vises på en gang." -#, fuzzy -#~ msgid "Default interval between feed updates" -#~ msgstr "Standard intervall mellom nyhetsstrømsoppdateringer (i minutter)" - #, fuzzy #~ msgid "Date syntax appears to be correct:" #~ msgstr "Gammelt passord er feil" @@ -4317,9 +4320,6 @@ msgstr "" #~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." #~ msgstr "Dette valget skjuler kanallisten og tillater at den vises etter ønske, brukbart for små skjermer." -#~ msgid "Enable labels" -#~ msgstr "Tillat merkelapper" - #~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." #~ msgstr "Eksperimentel støtte for virtuelle nyhetsstrømmer basert på brukerlagde SQL-spørringer. Denne funksjonen er veldig eksperimentel og er på nåværende tidspunkt ikke brukervennlig. Benytt med varsomhet." diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo index b714b764d..898c88d4b 100644 Binary files a/locale/nl_NL/LC_MESSAGES/messages.mo and b/locale/nl_NL/LC_MESSAGES/messages.mo differ diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po index a289fb6b2..721aac722 100644 --- a/locale/nl_NL/LC_MESSAGES/messages.po +++ b/locale/nl_NL/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TT-RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-23 11:28+0100\n" "Last-Translator: Dingoe \n" "Language-Team: translations \n" @@ -487,7 +487,7 @@ msgstr "Afmelden" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Voorkeuren" @@ -904,7 +904,7 @@ msgstr "Feed URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -957,7 +957,7 @@ msgstr "Profiel:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Standaard profiel" @@ -991,7 +991,7 @@ msgstr "Tags voor dit artikel (komma gescheiden):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1012,7 +1012,7 @@ msgstr "Opslaan" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1237,7 +1237,7 @@ msgstr "Selecteer:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1257,7 +1257,7 @@ msgstr "Omkeren" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1394,7 +1394,7 @@ msgid "Login" msgstr "LoginID" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1618,7 +1618,7 @@ msgstr "[tt-rss] Melding verandering van wachtwoord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1844,7 +1844,7 @@ msgstr "Op de zwarte lijst geplaatste tags" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Wanneer tags automatisch worden gedetecteerd in artikelen, zullen deze tags niet worden toegekend (komma-gescheiden lijst)." #: classes/pref/prefs.php:28 @@ -1853,7 +1853,7 @@ msgstr "Artikelen automatisch als gelezen markeren" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Deze optie schakelt het automatisch markeren als gelezen van artikelen in, terwijl u door de artikellijst scrolt." #: classes/pref/prefs.php:29 @@ -1877,9 +1877,8 @@ msgid "Amount of articles to display at once" msgstr "Aantal tegelijkertijd weer te geven artikelen " #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Standaard interval" +msgid "Default interval between feed updates" +msgstr "Standaard interval voor feed updates" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1887,7 +1886,7 @@ msgstr "Markeer artikelen in e-mail samenvatting als gelezen" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Inschakelen e-mail samenvatting" #: classes/pref/prefs.php:35 @@ -1903,8 +1902,12 @@ msgid "Uses UTC timezone" msgstr "Gebruikt UTC tijdzone" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Inschakelen externe API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1925,7 +1928,7 @@ msgstr "Feeds zonder ongelezen artikelen verbergen" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Toon speciale feeds bij verbergen gelezen feeds" #: classes/pref/prefs.php:43 @@ -1990,257 +1993,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Verwijder alles behalve de meest algemene HTML tags bij het lezen van artikelen." #: classes/pref/prefs.php:54 -#, fuzzy -msgid "Select theme" -msgstr "Selecteer met ster" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Aanpassen opmaakmodel" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Aanpassen CSS opmaakmodel aan uw voorkeur" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Gebruiker's tijdzone" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Kopteksten in virtuele feeds groeperen" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek en Labels gegroepeerd per feed" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Oud wachtwoord kan niet leeg zijn." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Nieuw wachtwoord kan niet leeg zijn." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Ingevulde wachtwoorden komen niet overeen." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Functie niet ondersteund door authenticatiemodule." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "De configuratie is opgeslagen." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Onbekende optie: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Uw persoonlijke gegevens zijn opgeslagen." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Persoonlijke gegevens / Authenticatie" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Persoonlijke gegevens" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "volledige naam" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Toegangsniveau" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Gegevens opslaan" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Uw wachtwoord staat op de standaard waarde. Verander het aub." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Oud wachtwoord" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nieuw wachtwoord" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Bevestigen wachtwoord" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Wijzig wachtwoord" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "eenmalig wachtwoord / Authenticator" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Vul uw wachtwoord in" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "EWW (Eenmalig wachtwoord) uitschakelen" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "U heeft een compatibele Authenticator nodig om dit te gebruiken. Veranderen van wachtwoord schakelt automatisch EWW uit." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Scan de volgende code met de Authenticator applicatie:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Ik heb de code gescanned en wil nu EWW inschakelen" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Inschakelen EWW" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Aanpassen" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registreren" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Wissen" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Huidige servertijd: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Configuratie opslaan" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Profielbeheer" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Terugzetten naar de standaardwaarden" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Plug-ins" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Systeem plug-ins" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Plug-in" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Omschrijving" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Versie" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Auteur" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Wis data" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Gebruiker's plug-ins" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Geselecteerd plug-ins inschakelen" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Onjuist wachtwoord" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "U kunt door de CSS-declaraties aan te passen de kleuren, lettertypen en lay-out van uw huidige thema hier aanpassen. Dit bestand kan als richtlijn worden gebruikt." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Maak profiel" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(actief)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Verwijder geselecteerde profielen" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Activeer profiel" @@ -3662,6 +3656,20 @@ msgstr "Deel artikel via URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Live updaten is nog experimenteel. Maak een back-up van uw tt-rss map alvorens door te gaan. Typ 'ja' om door te gaan. " +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Standaard interval" + +#~ msgid "Enable external API" +#~ msgstr "Inschakelen externe API" + +#, fuzzy +#~ msgid "Select theme" +#~ msgstr "Selecteer met ster" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek en Labels gegroepeerd per feed" + #~ msgid "Title" #~ msgstr "Titel" @@ -3692,9 +3700,6 @@ msgstr "Live updaten is nog experimenteel. Maak een back-up van uw tt-rss map al #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Deze optie is nuttig als u verscheidene planet-type nieuws aggregators leest met een ten dele overeenkomende gebruikersgroep. Indien uitgeschakeld forceert het berichten van verschillende feeds slechts eenmaal te verschijnen." -#~ msgid "Default interval between feed updates" -#~ msgstr "Standaard interval voor feed updates" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Data syntax lijkt correct:" diff --git a/locale/pl_PL/LC_MESSAGES/messages.mo b/locale/pl_PL/LC_MESSAGES/messages.mo index fcd0b9f40..1ce6eed3d 100644 Binary files a/locale/pl_PL/LC_MESSAGES/messages.mo and b/locale/pl_PL/LC_MESSAGES/messages.mo differ diff --git a/locale/pl_PL/LC_MESSAGES/messages.po b/locale/pl_PL/LC_MESSAGES/messages.po index cf25f91d1..42f991f10 100644 --- a/locale/pl_PL/LC_MESSAGES/messages.po +++ b/locale/pl_PL/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-25 13:25+0100\n" "Last-Translator: Mirosław Lach \n" "Language-Team: Polish (http://www.transifex.com/projects/p/tt-rss/language/pl/)\n" @@ -477,7 +477,7 @@ msgstr "Wyloguj" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Ustawienia" @@ -895,7 +895,7 @@ msgstr "Adres kanału" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -947,7 +947,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Domyślny profil" @@ -981,7 +981,7 @@ msgstr "Tagi dla tego artykułu (oddzielone przecinkami):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1002,7 +1002,7 @@ msgstr "Zapisz" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1226,7 +1226,7 @@ msgstr "Wybierz: " #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1246,7 +1246,7 @@ msgstr "Odwróć" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1383,7 +1383,7 @@ msgid "Login" msgstr "Nazwa użytkownika" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1603,7 +1603,7 @@ msgstr "[tt-rss] Informacja o zmianie hasła" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1830,7 +1830,7 @@ msgstr "Czarna lista tagów" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Podczas automatycznego wykrywania tagów wymienione obok tagi nie zostaną zastosowane (kolejne tagi oddzielaj przecinkiem)." #: classes/pref/prefs.php:28 @@ -1839,7 +1839,7 @@ msgstr "Automatycznie oznacz artykuły jako przeczytane" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Opcja uruchamia automatyczne oznaczanie artykułów jako przeczytanych podczas przewijania listy artykułów." #: classes/pref/prefs.php:29 @@ -1863,9 +1863,8 @@ msgid "Amount of articles to display at once" msgstr "Ilość artykułów do wyświetlenia za jednym razem" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Domyślna częstotliwość" +msgid "Default interval between feed updates" +msgstr "Domyślny czas pomiędzy aktualizacjami kanału" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1873,7 +1872,7 @@ msgstr "Oznacz jako przeczytane artykuły przesłane emailem jako przegląd" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Włącz przegląd artykułów wysyłany emailem" #: classes/pref/prefs.php:35 @@ -1889,8 +1888,12 @@ msgid "Uses UTC timezone" msgstr "Używa strefy UTC" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Włącz zewnętrzne API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1911,7 +1914,7 @@ msgstr "Ukryj kanały nie zawierające nieprzeczytanych artykułów" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Pokaż kanały specjalne gdy włączone ukrywanie przeczytanych kanałów." #: classes/pref/prefs.php:43 @@ -1976,256 +1979,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Podczas czytania artykułu usuń wszystkie poza najpopularniejszymi znaczniki HTML." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Wybierz styl" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Dostosuj arkusz styli" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Dostosuj arkusz styli CSS wedle swojego uznania" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Strefa czasowa użytkownika" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Grupuj nagłówki w wirtualnych kanałach" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Gdy ta opcja jest zaznaczona, nagłówki w kanałach specjalnych i widoku etykiet grupowane są według kanałów." +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Stare hasło nie może być puste." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Nowe hasło nie może być puste." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Wprowadzone hasła są różne." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Metoda nie wspierana przez mechanizm uwierzytelniający." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Konfiguracja została zapisana." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Nieznana opcja: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Dwoje dane osobiste zostały zapisane." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Dane osobiste / Uwierzytelnianie" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Informacje osobiste" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Nazwa" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Poziom dostępu" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Zapisz dane" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Używasz domyślnego hasła, zmień je proszę." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Zmiana Twojego bieżącego hasła spowoduje wyłączenie mechanizmu OTP." -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Stare hasło" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nowe hasło" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Potwierdź hasło" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Zmień hasło" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Hasło jednorazowe / Uwierzytelnianie" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "Hasła jednorazowe są obecnie włączone. Wprowadź swoje obecne hasło aby je wyłączyć." -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Wprowadź hasło" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Wyłącz hasła jednorazowe" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Potrzebujesz właściwego modułu uwierzytelniającego aby użyć tej funkcji. Zmiana hasła spowoduje automatyczne wyłączenie OTP." -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Zeskanuj poniższy kod przy użyciu aplikacji uwierzytelniającej:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Zeskanowałem kod i chciałbym włączyć OTP." -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Włącz hasła jednorazowe" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "Niektóre ustawienia dostępne są jedynie dla domyślnego profilu." -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Dostosuj" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Zarejestruj" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Wyczyść" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Czas serwera to: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Zapisz konfigurację" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Zarządzaj profilami" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Przywróć domyślne" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Wtyczki" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "Musisz przeładować Tiny Tiny RSS aby zastosować zmiany we wtyczkach." -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Wtyczki systemowe" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Wtyczka" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Opis" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Wersja" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Wyczyść dane" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Wtyczki użytkowników" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Włącz wybrane wtyczki" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Nieprawidłowe hasło" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Możesz nadpisać ustawienia kolorów, czcionek i układu wybranego stylu przy użyciu własnych deklaracji CSS. Ten plik może posłużyć jako przykład." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Utwórz profil" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktywny)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Usuń wybrane profile" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Aktywuj profil" @@ -3612,6 +3607,19 @@ msgstr "Udostępnij artykuł" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Aktualizacja \"na żywo\" jest uznawana za funkcję eksperymentalną. Wykonaj kopię swojego katalogu tt-rss przed kontynuowaniem. Wpisz 'yes' aby kontynuować." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Domyślna częstotliwość" + +#~ msgid "Enable external API" +#~ msgstr "Włącz zewnętrzne API" + +#~ msgid "Select theme" +#~ msgstr "Wybierz styl" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Gdy ta opcja jest zaznaczona, nagłówki w kanałach specjalnych i widoku etykiet grupowane są według kanałów." + #~ msgid "Title" #~ msgstr "Tytuł" @@ -3642,9 +3650,6 @@ msgstr "Aktualizacja \"na żywo\" jest uznawana za funkcję eksperymentalną. Wy #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Opcja ta jest przydatna gdy czytasz kilka globalnych, grupujących artykuły z różnych źródeł, kanałów RSS mających częściowo pokrywającą się grupę użytkowników. Gdy wyłączona, powoduje iż ten sam artykuł pochodzący z różnych kanałów będzie wyświetlony tylko raz." -#~ msgid "Default interval between feed updates" -#~ msgstr "Domyślny czas pomiędzy aktualizacjami kanału" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Format daty wygląda na poprawną:" diff --git a/locale/pt_BR/LC_MESSAGES/messages.mo b/locale/pt_BR/LC_MESSAGES/messages.mo index 43aebbd4f..df68a7354 100644 Binary files a/locale/pt_BR/LC_MESSAGES/messages.mo and b/locale/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/messages.po b/locale/pt_BR/LC_MESSAGES/messages.po index 81ba0caf9..61f8bc3f6 100644 --- a/locale/pt_BR/LC_MESSAGES/messages.po +++ b/locale/pt_BR/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: tt-rss 1.2.14.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2007-10-24 00:47-0200\n" "Last-Translator: Marcelo Jorge VIeira (metal) \n" "Language-Team: Portuguese/Brazil\n" @@ -492,7 +492,7 @@ msgstr "Sair" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Preferências" @@ -956,7 +956,7 @@ msgstr "Feed" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -1012,7 +1012,7 @@ msgstr "Arquivo:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 #, fuzzy msgid "Default profile" msgstr "Padrão" @@ -1049,7 +1049,7 @@ msgstr "" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1070,7 +1070,7 @@ msgstr "Salvar" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1305,7 +1305,7 @@ msgstr "Selecione:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1326,7 +1326,7 @@ msgstr "(Inverso)" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1478,7 +1478,7 @@ msgid "Login" msgstr "Login" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1720,7 +1720,7 @@ msgstr "" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1966,7 +1966,7 @@ msgid "Blacklisted tags" msgstr "" #: classes/pref/prefs.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "" #: classes/pref/prefs.php:28 @@ -1975,7 +1975,7 @@ msgid "Automatically mark articles as read" msgstr "Marcando todos os feeds como lidos..." #: classes/pref/prefs.php:28 -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "" #: classes/pref/prefs.php:29 @@ -2001,7 +2001,7 @@ msgstr "Sem Feeds para exibir." #: classes/pref/prefs.php:33 #, fuzzy -msgid "Default feed update interval" +msgid "Default interval between feed updates" msgstr "Padrão" #: classes/pref/prefs.php:34 @@ -2011,7 +2011,7 @@ msgstr "Marcando todos os feeds como lidos..." #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Marcando todos os feeds como lidos..." #: classes/pref/prefs.php:35 @@ -2027,7 +2027,11 @@ msgid "Uses UTC timezone" msgstr "" #: classes/pref/prefs.php:37 -msgid "Enable external API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -2047,7 +2051,7 @@ msgid "Hide feeds with no unread articles" msgstr "" #: classes/pref/prefs.php:42 -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "" #: classes/pref/prefs.php:43 @@ -2113,275 +2117,267 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "" #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Selecionar o tema" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "A senha antiga não pode ser vazia." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "A nova senha não pode ser vazia." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "As senhas informadas não conferem." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 #, fuzzy msgid "The configuration was saved." msgstr "Salvar configuração" -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "" -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 #, fuzzy msgid "Personal data" msgstr "Salvar" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 #, fuzzy msgid "Access level" msgstr "Nível de acesso:" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 #, fuzzy msgid "Save data" msgstr "Salvar" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 #, fuzzy msgid "Your password is at default value, please change it." msgstr "" "Sua senha é a padrão, \n" "\t\t\t\t\t\tvocê deve mudá-la." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Senha antiga" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Senha nova" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Confirmar senha" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Mudar senha" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "Mudar senha" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(Desativado)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Ativado" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 #, fuzzy msgid "Register" msgstr "Remover as categorias selecionadas?" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Salvar configuração" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 #, fuzzy msgid "Manage profiles" msgstr "Criar um usuário" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 #, fuzzy msgid "Reset to defaults" msgstr "Usar o padrão" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "descrição" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Salvando o Feed..." -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Editar categorias" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "Senha nova" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 #, fuzzy msgid "Create profile" msgstr "Criar um usuário" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 #, fuzzy msgid "Remove selected profiles" msgstr "Remover os filtros selecionados?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 #, fuzzy msgid "Activate profile" msgstr "Remover os filtros selecionados?" @@ -3925,6 +3921,13 @@ msgstr "Favoritos" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Padrão" + +#~ msgid "Select theme" +#~ msgstr "Selecionar o tema" + #~ msgid "Title" #~ msgstr "Título" @@ -3952,10 +3955,6 @@ msgstr "" #~ msgid "Assign tags" #~ msgstr "sem tags" -#, fuzzy -#~ msgid "Default interval between feed updates" -#~ msgstr "Padrão" - #, fuzzy #~ msgid "Date syntax appears to be correct:" #~ msgstr "Senha antiga incorreta" diff --git a/locale/ru_RU/LC_MESSAGES/messages.mo b/locale/ru_RU/LC_MESSAGES/messages.mo index 9be7b4269..7292e68b8 100644 Binary files a/locale/ru_RU/LC_MESSAGES/messages.mo and b/locale/ru_RU/LC_MESSAGES/messages.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/messages.po b/locale/ru_RU/LC_MESSAGES/messages.po index 31c36c302..32a6d3589 100644 --- a/locale/ru_RU/LC_MESSAGES/messages.po +++ b/locale/ru_RU/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2009-05-29 14:38+0300\n" "Last-Translator: Max Kamashev \n" "Language-Team: Русский \n" @@ -482,7 +482,7 @@ msgstr "Выход" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Настройки" @@ -930,7 +930,7 @@ msgstr "Канал" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -985,7 +985,7 @@ msgstr "Профиль:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Профиль по умолчанию" @@ -1019,7 +1019,7 @@ msgstr "Теги для этой статьи (разделенные запят #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1040,7 +1040,7 @@ msgstr "Сохранить" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1278,7 +1278,7 @@ msgstr "Выбрать:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1298,7 +1298,7 @@ msgstr "Инвертировать" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1439,7 +1439,7 @@ msgid "Login" msgstr "Пользователь:" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1663,7 +1663,7 @@ msgstr "[tt-rss] Уведомление о смене пароля" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1897,7 +1897,7 @@ msgstr "Черный список тегов" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Когда автоопределение тегов в статьях, эти теги не будут применяться (список значений, разделённых запятыми)." #: classes/pref/prefs.php:28 @@ -1906,7 +1906,7 @@ msgstr "Автоматически помечать статьи как проч #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Эта опция разрешает автоматически отмечать статьи как прочитанные в комбинированном режиме (исключение для специального канала \"Свежие статьи\" ), пока вы прокручиваете список статей." #: classes/pref/prefs.php:29 @@ -1930,9 +1930,8 @@ msgid "Amount of articles to display at once" msgstr "Количество статей на странице" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Интервал обновления:" +msgid "Default interval between feed updates" +msgstr "Интервал между обновлениями каналов по умолчанию (в минутах)" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1940,7 +1939,7 @@ msgstr "Отметить все статьи в e-mail дайджесте как #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Включить почтовый дайджест" #: classes/pref/prefs.php:35 @@ -1957,7 +1956,12 @@ msgid "Uses UTC timezone" msgstr "Часовой пояс" #: classes/pref/prefs.php:37 -msgid "Enable external API" +#, fuzzy +msgid "Enable API access" +msgstr "Включить метки" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -1979,7 +1983,7 @@ msgstr "Спрятать каналы без непрочитанных стат #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Показывать специальные каналы, когда скрываются прочитанные каналы" #: classes/pref/prefs.php:43 @@ -2046,267 +2050,259 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Вырезать все, кроме основных HTML тегов при показе статей." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Выбор темы" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Изменить пользовательские стили" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Часовой пояс" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Группировать заголовки в виртуальные каналы" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Когда эта опция включена, заголовки в Особом канале и Метки группируются по каналам" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Старый пароль не может быть пустым." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Новый пароль не может быть пустым." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Пароли не совпадают." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Конфигурация сохранена." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Неизвестная опция: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 #, fuzzy msgid "Your personal data has been saved." msgstr "Пароль был изменен." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "Авторизация" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Личные данные" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Полное имя" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Уровень доступа:" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Сохранить" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Используется пароль по умолчанию, пожалуйста, измените его." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Старый пароль" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Новый пароль" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Подтверждение пароля" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Изменить пароль" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "Некорректное имя пользователя или пароль" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "(Отключен)" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "Включен" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 #, fuzzy msgid "Customize" msgstr "Изменить пользовательские стили" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Регистрация" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Сохранить конфигурацию" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Управление профилями" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Сбросить настройки" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 #, fuzzy msgid "Description" msgstr "описание" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "Очистить данные канала." -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "Разрешить иконки каналов" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "Некорректное имя пользователя или пароль" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Создать профиль" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 #, fuzzy msgid "(active)" msgstr "Адаптивно" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Удалить выбранные профили?" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Активировать профиль" @@ -3806,6 +3802,16 @@ msgstr "Расшарить статью по ссылке" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Интервал обновления:" + +#~ msgid "Select theme" +#~ msgstr "Выбор темы" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Когда эта опция включена, заголовки в Особом канале и Метки группируются по каналам" + #~ msgid "Title" #~ msgstr "Заголовок" @@ -3836,9 +3842,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Эта опция полезна, если вы читаете несколько агрегаторов типа \"планета\" с пересекающимися статьями. Когда запрещено, статья показывается лишь один раз." -#~ msgid "Default interval between feed updates" -#~ msgstr "Интервал между обновлениями каналов по умолчанию (в минутах)" - #, fuzzy #~ msgid "Date syntax appears to be correct:" #~ msgstr "Старый пароль неправилен." @@ -4258,9 +4261,6 @@ msgstr "" #~ msgid "This option hides feedlist and allows it to be toggled on the fly, useful for small screens." #~ msgstr "Эта опция скрывает список каналов и позволяет его переключать на лету, удобно для маленьких экранов" -#~ msgid "Enable labels" -#~ msgstr "Включить метки" - #~ msgid "Experimental support for virtual feeds based on user crafted SQL queries. This feature is highly experimental and at this point not user friendly. Use with caution." #~ msgstr "Экспериментальная поддержка виртуальных каналов основана на пользовательских группировках SQL запросов. Эта возможность строго экспериментальная и не удобна в работе. Использовать с осторожностью." diff --git a/locale/sv_SE/LC_MESSAGES/messages.mo b/locale/sv_SE/LC_MESSAGES/messages.mo index adc937c0a..c1a9967ee 100644 Binary files a/locale/sv_SE/LC_MESSAGES/messages.mo and b/locale/sv_SE/LC_MESSAGES/messages.mo differ diff --git a/locale/sv_SE/LC_MESSAGES/messages.po b/locale/sv_SE/LC_MESSAGES/messages.po index e3fcb60a6..2ffae49ab 100644 --- a/locale/sv_SE/LC_MESSAGES/messages.po +++ b/locale/sv_SE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2013-03-20 16:42+0100\n" "Last-Translator: wahlis\n" "Language-Team: \n" @@ -487,7 +487,7 @@ msgstr "Utloggning" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Inställningar" @@ -910,7 +910,7 @@ msgstr "Kanal-URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -963,7 +963,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Standardprofil" @@ -997,7 +997,7 @@ msgstr "Taggar för denna artikel (kommaseparerade):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1018,7 +1018,7 @@ msgstr "Spara" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1243,7 +1243,7 @@ msgstr "Markera:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1263,7 +1263,7 @@ msgstr "Invertera" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1400,7 +1400,7 @@ msgid "Login" msgstr "Användarnamn" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1620,7 +1620,7 @@ msgstr "[tt-rss] Info: Nytt lösenord" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1846,7 +1846,7 @@ msgstr "Svartlistade taggar" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "Använd inte följande taggar för automatisk taggning av artiklar (komma-separerad lista" #: classes/pref/prefs.php:28 @@ -1855,7 +1855,7 @@ msgstr "Märk artiklar som lästa automatiskt" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "Markera artiklar som lästa automatisk när du skrollar artikellistan" #: classes/pref/prefs.php:29 @@ -1879,9 +1879,8 @@ msgid "Amount of articles to display at once" msgstr "Visa XX artiklar per gång" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "Standardintervall" +msgid "Default interval between feed updates" +msgstr "Standardintervall mellan kanaluppdateringar" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1889,7 +1888,7 @@ msgstr "Flagga artiklar i e-postsammanfattning som lästa" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "Aktivera e-postsammanfattning" #: classes/pref/prefs.php:35 @@ -1905,8 +1904,12 @@ msgid "Uses UTC timezone" msgstr "Använd UTC-tid" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "Aktivera externt API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1927,7 +1930,7 @@ msgstr "Dölj feeds utan olästa artiklar" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "Visa specialkanaler när lästa feeds är dolda" #: classes/pref/prefs.php:43 @@ -1993,256 +1996,248 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "Ta bort alla utom de vanligast HTML-taggarna från artiklarna." #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "Välj tema" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "Anpassa stylesheet" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "Anpassa CSS Stylesheet" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "Användarens tidszon" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "Gruppera rubriker i virtuella kanaler" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Föregående lösenord kan inte vara tomt." -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Nytt lösenord får inte vara tomt." -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Lösenorden stämmer inte överens." -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Funktionen stöds inte av autenticeringsmodulen." -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Konfigurationen sparad." -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Okänt alternativ: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Dina personliga data sparas." -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Personlig info / Authenticering" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Personlig info" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Fullständigt namn" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-post" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Behörighetsnivå" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Spara" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Byt lösenord." -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Gammalt lösenord" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Nytt lösenord" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Bekräfta lösenord" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Byt lösenord" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "(OTP) / Authentifikator" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Ange lösenord" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Stäng av OTP" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "Du behöver en kompatible Authenticator för att använda detta. Byter du lösenord inaktiverar automatiskt OTP" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Läs in följande QR-kod med Authenticatorn:" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "Jag har läst av bilden och vill aktivera OTP" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Aktivera OTP" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Anpassa" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registrera" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Rensa" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuell servertid: %s (UTC)" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Spara konfiguration" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Hantera profiler" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Återställ till standard" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "Systemplugins" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Beskrivning" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Av" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Rensa data" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Användarplugins" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Aktivera valda plugins" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Felaktigt lösenord" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Skapa profil" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktiva)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Radera markerade profiler" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Aktivera profil" @@ -3664,6 +3659,19 @@ msgstr "Dela artikel via URL" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "Liveuppdatering är en experimentell funktion. Gör backup på din tt-rss-katalog innan du fortsätter. Skriv 'ja' för att fortsätta." +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "Standardintervall" + +#~ msgid "Enable external API" +#~ msgstr "Aktivera externt API" + +#~ msgid "Select theme" +#~ msgstr "Välj tema" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Gruppera rubriker efter kanaler i Etiketter och Specialkanaler" + #~ msgid "Title" #~ msgstr "Titel" @@ -3694,9 +3702,6 @@ msgstr "Liveuppdatering är en experimentell funktion. Gör backup på din tt-rs #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "Detta är användbart när du läser flera sammanslagna kanaler som har delvis samma användarbas. När inaktiverad så visas samma artikel från flera olika kanaler endast en gång." -#~ msgid "Default interval between feed updates" -#~ msgstr "Standardintervall mellan kanaluppdateringar" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "Datumsyntaxen verkar vara korrekt:" diff --git a/locale/zh_CN/LC_MESSAGES/messages.mo b/locale/zh_CN/LC_MESSAGES/messages.mo index 861b39165..35e697fcb 100644 Binary files a/locale/zh_CN/LC_MESSAGES/messages.mo and b/locale/zh_CN/LC_MESSAGES/messages.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/messages.po b/locale/zh_CN/LC_MESSAGES/messages.po index 0357a2775..91e9dbd0a 100644 --- a/locale/zh_CN/LC_MESSAGES/messages.po +++ b/locale/zh_CN/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: 2012-02-14 08:32+0000\n" "Last-Translator: Sai \n" "Language-Team: Chinese (China) (http://www.transifex.net/projects/p/tt-rss/language/zh_CN/)\n" @@ -482,7 +482,7 @@ msgstr "注销" #: prefs.php:36 #: prefs.php:121 #: include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "偏好设置" @@ -926,7 +926,7 @@ msgstr "信息源 URL" #: classes/backend.php:105 #: classes/pref/users.php:99 #: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1059 +#: classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 #: classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 @@ -980,7 +980,7 @@ msgstr "偏好:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:995 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "默认偏好设置" @@ -1014,7 +1014,7 @@ msgstr "本文的标签,请用逗号分开:" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 +#: classes/pref/prefs.php:940 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -1035,7 +1035,7 @@ msgstr "保存" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:943 +#: classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1267,7 +1267,7 @@ msgstr "选择:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:955 +#: classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1287,7 +1287,7 @@ msgstr "反选" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:957 +#: classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1428,7 +1428,7 @@ msgid "Login" msgstr "登陆" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:253 +#: classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1649,7 +1649,7 @@ msgstr "[tt-rss] 密码更换提醒" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:952 +#: classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1880,7 +1880,7 @@ msgstr "被列入黑名单的标签" #: classes/pref/prefs.php:27 #, fuzzy -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)" +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." msgstr "自动检测文章标签时,这些标签将被忽略(半角逗号隔开的列表)。" #: classes/pref/prefs.php:28 @@ -1889,7 +1889,7 @@ msgstr "自动标记文章为已读" #: classes/pref/prefs.php:28 #, fuzzy -msgid "Mark articles as read automatically while you scroll article list." +msgid "This option enables marking articles as read automatically while you scroll article list." msgstr "在滚动页面的同时自动将文章标记为已读。" #: classes/pref/prefs.php:29 @@ -1913,9 +1913,8 @@ msgid "Amount of articles to display at once" msgstr "同时显示的文章数量" #: classes/pref/prefs.php:33 -#, fuzzy -msgid "Default feed update interval" -msgstr "默认间隔" +msgid "Default interval between feed updates" +msgstr "信息源更新的默认时间间隔" #: classes/pref/prefs.php:34 msgid "Mark articles in e-mail digest as read" @@ -1923,7 +1922,7 @@ msgstr "将邮件摘要中的文章标记为已读" #: classes/pref/prefs.php:35 #, fuzzy -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "启用电子邮件摘要" #: classes/pref/prefs.php:35 @@ -1940,8 +1939,12 @@ msgid "Uses UTC timezone" msgstr "用户所在时区" #: classes/pref/prefs.php:37 -msgid "Enable external API" -msgstr "允许使用外部 API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" #: classes/pref/prefs.php:38 msgid "Enable feed categories" @@ -1962,7 +1965,7 @@ msgstr "隐藏没有未读信息的信息源" #: classes/pref/prefs.php:42 #, fuzzy -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "隐藏已读信息之后显示特殊区域的内容" #: classes/pref/prefs.php:43 @@ -2029,263 +2032,255 @@ msgid "Strip all but most common HTML tags when reading articles." msgstr "仅加载几个最常用的 HTML 标签" #: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "选择主题" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 #: js/prefs.js:1725 msgid "Customize stylesheet" msgstr "自定义样式" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "自定义 CSS 样式" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "用户所在时区" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "对虚拟源中的文章按源分组" -#: classes/pref/prefs.php:57 -msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" -msgstr "选择本项可让特殊区域和预定义标签中的文章标题以信息源顺序排列" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "请输入之前使用的密码。" -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "请输入一个新密码。" -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "两次输入的密码不一致。" -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "设置已保存。" -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "未知选项: %s" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "您的个人数据已保存。" -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 #, fuzzy msgid "Personal data / Authentication" msgstr "登录密码" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "姓名" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "电子邮件" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "访问级别" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "保存信息" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "您还在使用系统默认的密码,请修改。" -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "原密码" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "新密码" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "确认密码" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "更改密码" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "One time passwords are currently enabled. Enter your current password below to disable." msgstr "" -#: classes/pref/prefs.php:345 -#: classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 #, fuzzy msgid "Enter your password" msgstr "用户名或密码错误" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 #, fuzzy msgid "Disable OTP" msgstr "禁用更新" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 #, fuzzy msgid "Enable OTP" msgstr "已启用" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "自定义" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "注册" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "清空" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "保存设置" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "管理偏好文件" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "恢复到默认" -#: classes/pref/prefs.php:678 -#: classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 +msgid "Plugin" +msgstr "" + #: classes/pref/prefs.php:714 #: classes/pref/prefs.php:768 -msgid "Plugin" +msgid "Description" msgstr "" #: classes/pref/prefs.php:715 #: classes/pref/prefs.php:769 -msgid "Description" +msgid "Version" msgstr "" #: classes/pref/prefs.php:716 #: classes/pref/prefs.php:770 -msgid "Version" -msgstr "" - -#: classes/pref/prefs.php:717 -#: classes/pref/prefs.php:771 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 -#: classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 -#: classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 #, fuzzy msgid "Clear data" msgstr "清空信息源数据" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 #, fuzzy msgid "Enable selected plugins" msgstr "启用信息源分类" -#: classes/pref/prefs.php:882 -#: classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 #, fuzzy msgid "Incorrect password" msgstr "用户名或密码错误" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." msgstr "您可以通过自定义 CSS 来更改颜色,字体和版式。具体可参考 本文件。" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "创建偏好文件" -#: classes/pref/prefs.php:989 -#: classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(当前使用的)" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "移除选中的偏好文件" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "启用偏好文件" @@ -3725,6 +3720,19 @@ msgstr "通过 URL 分享文章" msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." msgstr "" +#, fuzzy +#~ msgid "Default feed update interval" +#~ msgstr "默认间隔" + +#~ msgid "Enable external API" +#~ msgstr "允许使用外部 API" + +#~ msgid "Select theme" +#~ msgstr "选择主题" + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "选择本项可让特殊区域和预定义标签中的文章标题以信息源顺序排列" + #~ msgid "Title" #~ msgstr "标题" @@ -3752,9 +3760,6 @@ msgstr "" #~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." #~ msgstr "您可能订阅了一些聚合类型的信息源,这种情况下可能遇到同一用户的文章在不同源多次出现。当该选项被禁用时,来自不同 RSS 源的同一文章将只会显示一次。" -#~ msgid "Default interval between feed updates" -#~ msgstr "信息源更新的默认时间间隔" - #~ msgid "Date syntax appears to be correct:" #~ msgstr "日期的语法正确:" diff --git a/messages.pot b/messages.pot index 5e0dff004..ec6a7ae05 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:38+0400\n" +"POT-Creation-Date: 2013-04-02 16:46+0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -427,7 +427,7 @@ msgid "Logout" msgstr "" #: prefs.php:36 prefs.php:121 include/functions.php:1929 -#: classes/pref/prefs.php:428 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "" @@ -802,7 +802,7 @@ msgstr "" #: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190 #: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262 #: classes/backend.php:105 classes/pref/users.php:99 -#: classes/pref/filters.php:147 classes/pref/prefs.php:1059 +#: classes/pref/filters.php:147 classes/pref/prefs.php:1058 #: classes/pref/feeds.php:1588 classes/pref/feeds.php:1660 #: plugins/import_export/init.php:406 plugins/import_export/init.php:429 #: plugins/googlereaderimport/init.php:168 plugins/share/init.php:67 @@ -845,7 +845,7 @@ msgid "Profile:" msgstr "" #: include/login_form.php:213 classes/handler/public.php:233 -#: classes/rpc.php:64 classes/pref/prefs.php:995 +#: classes/rpc.php:64 classes/pref/prefs.php:994 msgid "Default profile" msgstr "" @@ -876,7 +876,7 @@ msgstr "" #: classes/article.php:204 classes/pref/users.php:176 #: classes/pref/labels.php:79 classes/pref/filters.php:405 -#: classes/pref/prefs.php:941 classes/pref/feeds.php:733 +#: classes/pref/prefs.php:940 classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 plugins/nsfw/init.php:86 #: plugins/note/init.php:53 plugins/instances/init.php:248 msgid "Save" @@ -887,7 +887,7 @@ msgstr "" #: classes/feeds.php:1080 classes/feeds.php:1140 classes/pref/users.php:178 #: classes/pref/labels.php:81 classes/pref/filters.php:408 #: classes/pref/filters.php:804 classes/pref/filters.php:880 -#: classes/pref/filters.php:947 classes/pref/prefs.php:943 +#: classes/pref/filters.php:947 classes/pref/prefs.php:942 #: classes/pref/feeds.php:734 classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 plugins/mail/init.php:131 #: plugins/note/init.php:55 plugins/instances/init.php:251 @@ -1095,7 +1095,7 @@ msgstr "" #: classes/feeds.php:92 classes/pref/users.php:345 classes/pref/labels.php:275 #: classes/pref/filters.php:282 classes/pref/filters.php:330 #: classes/pref/filters.php:648 classes/pref/filters.php:737 -#: classes/pref/filters.php:764 classes/pref/prefs.php:955 +#: classes/pref/filters.php:764 classes/pref/prefs.php:954 #: classes/pref/feeds.php:1266 classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 plugins/instances/init.php:290 msgid "All" @@ -1108,7 +1108,7 @@ msgstr "" #: classes/feeds.php:95 classes/pref/users.php:347 classes/pref/labels.php:277 #: classes/pref/filters.php:284 classes/pref/filters.php:332 #: classes/pref/filters.php:650 classes/pref/filters.php:739 -#: classes/pref/filters.php:766 classes/pref/prefs.php:957 +#: classes/pref/filters.php:766 classes/pref/prefs.php:956 #: classes/pref/feeds.php:1268 classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 plugins/instances/init.php:292 msgid "None" @@ -1230,7 +1230,7 @@ msgstr "" msgid "Login" msgstr "" -#: classes/feeds.php:1007 classes/pref/prefs.php:253 +#: classes/feeds.php:1007 classes/pref/prefs.php:252 #: classes/pref/feeds.php:602 classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 msgid "Password" @@ -1431,7 +1431,7 @@ msgstr "" #: classes/pref/users.php:342 classes/pref/labels.php:272 #: classes/pref/filters.php:279 classes/pref/filters.php:327 #: classes/pref/filters.php:645 classes/pref/filters.php:734 -#: classes/pref/filters.php:761 classes/pref/prefs.php:952 +#: classes/pref/filters.php:761 classes/pref/prefs.php:951 #: classes/pref/feeds.php:1263 classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 plugins/instances/init.php:287 msgid "Select" @@ -1638,7 +1638,7 @@ msgstr "" #: classes/pref/prefs.php:27 msgid "" "When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)" +"separated list)." msgstr "" #: classes/pref/prefs.php:28 @@ -1646,7 +1646,9 @@ msgid "Automatically mark articles as read" msgstr "" #: classes/pref/prefs.php:28 -msgid "Mark articles as read automatically while you scroll article list." +msgid "" +"This option enables marking articles as read automatically while you scroll " +"article list." msgstr "" #: classes/pref/prefs.php:29 @@ -1672,7 +1674,7 @@ msgid "Amount of articles to display at once" msgstr "" #: classes/pref/prefs.php:33 -msgid "Default feed update interval" +msgid "Default interval between feed updates" msgstr "" #: classes/pref/prefs.php:34 @@ -1680,7 +1682,7 @@ msgid "Mark articles in e-mail digest as read" msgstr "" #: classes/pref/prefs.php:35 -msgid "Enable email digest" +msgid "Enable e-mail digest" msgstr "" #: classes/pref/prefs.php:35 @@ -1698,7 +1700,11 @@ msgid "Uses UTC timezone" msgstr "" #: classes/pref/prefs.php:37 -msgid "Enable external API" +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" msgstr "" #: classes/pref/prefs.php:38 @@ -1718,7 +1724,7 @@ msgid "Hide feeds with no unread articles" msgstr "" #: classes/pref/prefs.php:42 -msgid "Show special feeds and labels when hiding read feeds" +msgid "Show special feeds when hiding read feeds" msgstr "" #: classes/pref/prefs.php:43 @@ -1782,192 +1788,182 @@ msgstr "" msgid "Strip all but most common HTML tags when reading articles." msgstr "" -#: classes/pref/prefs.php:54 -msgid "Select theme" -msgstr "" - -#: classes/pref/prefs.php:54 -msgid "Select one of the available CSS themes" -msgstr "" - -#: classes/pref/prefs.php:55 js/prefs.js:1725 +#: classes/pref/prefs.php:54 js/prefs.js:1725 msgid "Customize stylesheet" msgstr "" -#: classes/pref/prefs.php:55 +#: classes/pref/prefs.php:54 msgid "Customize CSS stylesheet to your liking" msgstr "" -#: classes/pref/prefs.php:56 +#: classes/pref/prefs.php:55 msgid "User timezone" msgstr "" -#: classes/pref/prefs.php:57 +#: classes/pref/prefs.php:56 msgid "Group headlines in virtual feeds" msgstr "" -#: classes/pref/prefs.php:57 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" msgstr "" -#: classes/pref/prefs.php:68 +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "" -#: classes/pref/prefs.php:73 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "" -#: classes/pref/prefs.php:78 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "" -#: classes/pref/prefs.php:88 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "" -#: classes/pref/prefs.php:120 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "" -#: classes/pref/prefs.php:134 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "" -#: classes/pref/prefs.php:148 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "" -#: classes/pref/prefs.php:188 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "" -#: classes/pref/prefs.php:208 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "" -#: classes/pref/prefs.php:218 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "" -#: classes/pref/prefs.php:222 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "" -#: classes/pref/prefs.php:228 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "" -#: classes/pref/prefs.php:238 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "" -#: classes/pref/prefs.php:260 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "" -#: classes/pref/prefs.php:287 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "" -#: classes/pref/prefs.php:292 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "" -#: classes/pref/prefs.php:295 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "" -#: classes/pref/prefs.php:300 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "" -#: classes/pref/prefs.php:310 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "" -#: classes/pref/prefs.php:316 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "" -#: classes/pref/prefs.php:320 +#: classes/pref/prefs.php:319 msgid "" "One time passwords are currently enabled. Enter your current password below " "to disable." msgstr "" -#: classes/pref/prefs.php:345 classes/pref/prefs.php:396 +#: classes/pref/prefs.php:344 classes/pref/prefs.php:395 msgid "Enter your password" msgstr "" -#: classes/pref/prefs.php:356 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:361 msgid "" "You will need a compatible Authenticator to use this. Changing your password " "would automatically disable OTP." msgstr "" -#: classes/pref/prefs.php:364 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "" -#: classes/pref/prefs.php:405 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" msgstr "" -#: classes/pref/prefs.php:413 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "" -#: classes/pref/prefs.php:451 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "" -#: classes/pref/prefs.php:545 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "" -#: classes/pref/prefs.php:605 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "" -#: classes/pref/prefs.php:609 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "" -#: classes/pref/prefs.php:615 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "" -#: classes/pref/prefs.php:648 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "" -#: classes/pref/prefs.php:651 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "" -#: classes/pref/prefs.php:654 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "" -#: classes/pref/prefs.php:678 classes/pref/prefs.php:680 +#: classes/pref/prefs.php:677 classes/pref/prefs.php:679 msgid "Plugins" msgstr "" -#: classes/pref/prefs.php:682 +#: classes/pref/prefs.php:681 msgid "" "You will need to reload Tiny Tiny RSS for plugin changes to take effect." msgstr "" -#: classes/pref/prefs.php:684 +#: classes/pref/prefs.php:683 msgid "" "Download more plugins at tt-rss.org forums or wiki." msgstr "" -#: classes/pref/prefs.php:710 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "" -#: classes/pref/prefs.php:714 classes/pref/prefs.php:768 +#: classes/pref/prefs.php:713 classes/pref/prefs.php:767 msgid "Plugin" msgstr "" -#: classes/pref/prefs.php:715 classes/pref/prefs.php:769 +#: classes/pref/prefs.php:714 classes/pref/prefs.php:768 msgid "Description" msgstr "" -#: classes/pref/prefs.php:716 classes/pref/prefs.php:770 +#: classes/pref/prefs.php:715 classes/pref/prefs.php:769 msgid "Version" msgstr "" -#: classes/pref/prefs.php:717 classes/pref/prefs.php:771 +#: classes/pref/prefs.php:716 classes/pref/prefs.php:770 msgid "Author" msgstr "" -#: classes/pref/prefs.php:746 classes/pref/prefs.php:803 +#: classes/pref/prefs.php:745 classes/pref/prefs.php:802 msgid "more info" msgstr "" -#: classes/pref/prefs.php:755 classes/pref/prefs.php:812 +#: classes/pref/prefs.php:754 classes/pref/prefs.php:811 msgid "Clear data" msgstr "" -#: classes/pref/prefs.php:764 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "" -#: classes/pref/prefs.php:827 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "" -#: classes/pref/prefs.php:882 classes/pref/prefs.php:900 +#: classes/pref/prefs.php:881 classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "" -#: classes/pref/prefs.php:926 +#: classes/pref/prefs.php:925 #, php-format msgid "" "You can override colors, fonts and layout of your currently selected theme " @@ -2023,19 +2019,19 @@ msgid "" "\" href=\"%s\">This file can be used as a baseline." msgstr "" -#: classes/pref/prefs.php:966 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "" -#: classes/pref/prefs.php:989 classes/pref/prefs.php:1019 +#: classes/pref/prefs.php:988 classes/pref/prefs.php:1018 msgid "(active)" msgstr "" -#: classes/pref/prefs.php:1053 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "" -#: classes/pref/prefs.php:1055 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "" -- cgit v1.2.3 From 22cdd8a58e3b3661e6871194d7b5fefc7815b000 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 16:56:05 +0400 Subject: rebase translatiosn --- locale/de_DE/LC_MESSAGES/messages.mo | Bin 66728 -> 64930 bytes locale/de_DE/LC_MESSAGES/messages.po | 2190 +++++++++++++++++----------------- messages.pot | 2 +- 3 files changed, 1111 insertions(+), 1081 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/messages.mo b/locale/de_DE/LC_MESSAGES/messages.mo index ebb1ac284..e5a119ddb 100755 Binary files a/locale/de_DE/LC_MESSAGES/messages.mo and b/locale/de_DE/LC_MESSAGES/messages.mo differ diff --git a/locale/de_DE/LC_MESSAGES/messages.po b/locale/de_DE/LC_MESSAGES/messages.po index 3a7cdc1a6..84bd906c7 100755 --- a/locale/de_DE/LC_MESSAGES/messages.po +++ b/locale/de_DE/LC_MESSAGES/messages.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Tiny Tiny RSS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"POT-Creation-Date: 2013-04-02 16:55+0400\n" "PO-Revision-Date: 2013-04-02 13:24+0100\n" "Last-Translator: Heiko Adams \n" "Language-Team: \n" @@ -55,39 +55,48 @@ msgstr "Nach 3 Monaten" msgid "Default interval" msgstr "Standard-Intervall" -#: backend.php:79 backend.php:89 +#: backend.php:79 +#: backend.php:89 msgid "Disable updates" msgstr "Nie" -#: backend.php:80 backend.php:90 +#: backend.php:80 +#: backend.php:90 msgid "Each 15 minutes" msgstr "Alle 15 Minuten" -#: backend.php:81 backend.php:91 +#: backend.php:81 +#: backend.php:91 msgid "Each 30 minutes" msgstr "Alle 30 Minuten" -#: backend.php:82 backend.php:92 +#: backend.php:82 +#: backend.php:92 msgid "Hourly" msgstr "Stündlich" -#: backend.php:83 backend.php:93 +#: backend.php:83 +#: backend.php:93 msgid "Each 4 hours" msgstr "Alle 4 Stunden" -#: backend.php:84 backend.php:94 +#: backend.php:84 +#: backend.php:94 msgid "Each 12 hours" msgstr "Alle 12 Stunden" -#: backend.php:85 backend.php:95 +#: backend.php:85 +#: backend.php:95 msgid "Daily" msgstr "Täglich" -#: backend.php:86 backend.php:96 +#: backend.php:86 +#: backend.php:96 msgid "Weekly" msgstr "Wöchentlich" -#: backend.php:99 classes/pref/users.php:123 +#: backend.php:99 +#: classes/pref/users.php:123 msgid "User" msgstr "Benutzer" @@ -123,10 +132,19 @@ msgstr ", gefunden: " msgid "Tiny Tiny RSS database is up to date." msgstr "Tiny Tiny RSS Datenbank ist auf dem neusten Stand." -#: db-updater.php:96 db-updater.php:165 db-updater.php:178 register.php:196 -#: register.php:241 register.php:254 register.php:269 register.php:288 -#: register.php:336 register.php:346 register.php:358 -#: classes/handler/public.php:648 classes/handler/public.php:736 +#: db-updater.php:96 +#: db-updater.php:165 +#: db-updater.php:178 +#: register.php:196 +#: register.php:241 +#: register.php:254 +#: register.php:269 +#: register.php:288 +#: register.php:336 +#: register.php:346 +#: register.php:358 +#: classes/handler/public.php:648 +#: classes/handler/public.php:736 #: classes/handler/public.php:818 msgid "Return to Tiny Tiny RSS" msgstr "Zu Tiny Tiny RSS zurückkehren" @@ -137,12 +155,8 @@ msgstr "Bitte sichern Sie Ihre Datenbank bevor Sie fortfahren." #: db-updater.php:104 #, php-format -msgid "" -"Your Tiny Tiny RSS database needs update to the latest version (%d to " -"%d)." -msgstr "" -"Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste " -"Version (%d nach %d)." +msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." +msgstr "Ihre Tiny Tiny RSS Datenbank benötigt eine Aktualisierung auf die neuste Version (%d nach %d)." #: db-updater.php:118 msgid "Perform updates" @@ -172,13 +186,9 @@ msgstr "FEHLER!" #: db-updater.php:160 #, php-format msgid "Finished. Performed %d update up to schema version %d." -msgid_plural "" -"Finished. Performed %d updates up to schema version %d." -msgstr[0] "" -"Beendet. %d Aktualisierung auf Schema Version %d durchgeführt." -msgstr[1] "" -"Beendet. %d Aktualisierungen auf Schema Version %d " -"durchgeführt." +msgid_plural "Finished. Performed %d updates up to schema version %d." +msgstr[0] "Beendet. %d Aktualisierung auf Schema Version %d durchgeführt." +msgstr[1] "Beendet. %d Aktualisierungen auf Schema Version %d durchgeführt." #: db-updater.php:170 msgid "Your database schema is from a newer version of Tiny Tiny RSS." @@ -190,28 +200,16 @@ msgid "Found schema version: %d, required: %d." msgstr "Gefundene Schemaversion: %d, benötigt: %d." #: db-updater.php:174 -msgid "" -"Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer " -"version and continue." -msgstr "" -"Aktualisierung des Schemas nicht möglich. Bitte aktualisieren Sie die Tiny " -"Tiny RSS Dateien auf die neuere Version und fahren Sie fort." +msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." +msgstr "Aktualisierung des Schemas nicht möglich. Bitte aktualisieren Sie die Tiny Tiny RSS Dateien auf die neuere Version und fahren Sie fort." #: errors.php:9 -msgid "" -"This program requires XmlHttpRequest to function properly. Your browser " -"doesn't seem to support it." -msgstr "" -"Dieses Programm benötigt XmlHttpRequest um ordnungsgemäß zu funktionieren. " -"Ihr Browser scheint dies nicht zu unterstützen." +msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." +msgstr "Dieses Programm benötigt XmlHttpRequest um ordnungsgemäß zu funktionieren. Ihr Browser scheint dies nicht zu unterstützen." #: errors.php:12 -msgid "" -"This program requires cookies to function properly. Your browser doesn't " -"seem to support them." -msgstr "" -"Dieses Programm benötigt Cookies um ordungsgemäß zu funktionieren. Ihr " -"Browser scheint diese nicht zu unterstützen." +msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." +msgstr "Dieses Programm benötigt Cookies um ordungsgemäß zu funktionieren. Ihr Browser scheint diese nicht zu unterstützen." #: errors.php:15 msgid "Backend sanity check failed." @@ -222,12 +220,8 @@ msgid "Frontend sanity check failed." msgstr "Frontend Sicherheitsprüfung fehlgeschlagen." #: errors.php:19 -msgid "" -"Incorrect database schema version. <a href='db-updater.php'>Please " -"update</a>." -msgstr "" -"Falsche Version des Datenbankschemas. <a href='update.php'>Bitte " -"aktualisieren</a>." +msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." +msgstr "Falsche Version des Datenbankschemas. <a href='update.php'>Bitte aktualisieren</a>." #: errors.php:21 msgid "Request not authorized." @@ -238,222 +232,254 @@ msgid "No operation to perform." msgstr "Keine Funktion ausgewählt." #: errors.php:25 -msgid "" -"Could not display feed: query failed. Please check label match syntax or " -"local configuration." -msgstr "" -"Kann Feed nicht angezeigen: Abfrage fehlgeschlagen. Bitte überprüfen Sie die " -"Label Such-Syntax oder die lokale Konfiguration." +msgid "Could not display feed: query failed. Please check label match syntax or local configuration." +msgstr "Kann Feed nicht angezeigen: Abfrage fehlgeschlagen. Bitte überprüfen Sie die Label Such-Syntax oder die lokale Konfiguration." #: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." -msgstr "" -"Zugriff verweigert. Sie haben nicht die benötigten Rechte um auf diese Seite " -"zuzugreifen." +msgstr "Zugriff verweigert. Sie haben nicht die benötigten Rechte um auf diese Seite zuzugreifen." #: errors.php:29 msgid "Configuration check failed" msgstr "Konfigurationsprüfung fehlgeschlagen" #: errors.php:31 -msgid "" -"Your version of MySQL is not currently supported. Please see official site " -"for more information." -msgstr "" -"Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Für weitere " -"Informationen schauen Sie sich die offiziellen Website an." +msgid "Your version of MySQL is not currently supported. Please see official site for more information." +msgstr "Ihre Version von MySQL wird zur Zeit nicht unterstüzt. Für weitere Informationen schauen Sie sich die offiziellen Website an." #: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "" -"SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP " -"Konfiguration" - -#: index.php:135 index.php:154 index.php:273 prefs.php:103 -#: classes/backend.php:5 classes/pref/labels.php:296 -#: classes/pref/filters.php:680 classes/pref/feeds.php:1331 -#: plugins/digest/digest_body.php:63 js/feedlist.js:128 js/feedlist.js:448 -#: js/functions.js:420 js/functions.js:808 js/functions.js:1244 -#: js/functions.js:1379 js/functions.js:1691 js/prefs.js:86 js/prefs.js:576 -#: js/prefs.js:666 js/prefs.js:858 js/prefs.js:1445 js/prefs.js:1498 -#: js/prefs.js:1557 js/prefs.js:1574 js/prefs.js:1590 js/prefs.js:1606 -#: js/prefs.js:1625 js/prefs.js:1798 js/prefs.js:1814 js/tt-rss.js:475 -#: js/tt-rss.js:492 js/viewfeed.js:774 js/viewfeed.js:1245 -#: plugins/import_export/import_export.js:17 plugins/updater/updater.js:17 +msgstr "SQL Escaping Test fehlgeschlagen, überprüfen Sie Ihre Datenbank und PHP Konfiguration" + +#: index.php:135 +#: index.php:152 +#: index.php:271 +#: prefs.php:103 +#: classes/backend.php:5 +#: classes/pref/labels.php:296 +#: classes/pref/filters.php:680 +#: classes/pref/feeds.php:1331 +#: plugins/digest/digest_body.php:63 +#: js/feedlist.js:128 +#: js/feedlist.js:448 +#: js/functions.js:420 +#: js/functions.js:758 +#: js/functions.js:1194 +#: js/functions.js:1329 +#: js/functions.js:1641 +#: js/prefs.js:86 +#: js/prefs.js:576 +#: js/prefs.js:666 +#: js/prefs.js:858 +#: js/prefs.js:1445 +#: js/prefs.js:1498 +#: js/prefs.js:1557 +#: js/prefs.js:1574 +#: js/prefs.js:1590 +#: js/prefs.js:1606 +#: js/prefs.js:1625 +#: js/prefs.js:1798 +#: js/prefs.js:1814 +#: js/tt-rss.js:475 +#: js/tt-rss.js:492 +#: js/viewfeed.js:772 +#: js/viewfeed.js:1200 +#: plugins/import_export/import_export.js:17 +#: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Ladevorgang, bitte warten..." -#: index.php:168 +#: index.php:166 msgid "Collapse feedlist" msgstr "Feedliste verbergen" -#: index.php:171 +#: index.php:169 msgid "Show articles" msgstr "Artikel anzeigen" -#: index.php:174 +#: index.php:172 msgid "Adaptive" msgstr "Adaptiv" -#: index.php:175 +#: index.php:173 msgid "All Articles" msgstr "Alle Artikel" -#: index.php:176 include/functions.php:1925 classes/feeds.php:106 +#: index.php:174 +#: include/functions.php:1926 +#: classes/feeds.php:106 msgid "Starred" msgstr "Markiert" -#: index.php:177 include/functions.php:1926 classes/feeds.php:107 +#: index.php:175 +#: include/functions.php:1927 +#: classes/feeds.php:107 msgid "Published" msgstr "Veröffentlicht" -#: index.php:178 classes/feeds.php:93 classes/feeds.php:105 +#: index.php:176 +#: classes/feeds.php:93 +#: classes/feeds.php:105 msgid "Unread" msgstr "Ungelesen" -#: index.php:179 +#: index.php:177 msgid "Unread First" msgstr "Ungelesene zuerst" -#: index.php:180 +#: index.php:178 msgid "With Note" msgstr "mit Notiz" -#: index.php:181 +#: index.php:179 msgid "Ignore Scoring" msgstr "Bewertung ignorieren" -#: index.php:184 +#: index.php:182 msgid "Sort articles" msgstr "Artikel sortieren" -#: index.php:187 +#: index.php:185 msgid "Default" msgstr "Standard" -#: index.php:188 +#: index.php:186 msgid "Newest first" msgstr "neueste zuerst" -#: index.php:189 +#: index.php:187 msgid "Oldest first" msgstr "älteste zuerst" -#: index.php:192 +#: index.php:190 msgid "Mark feed as read" msgstr "Feed als gelesen markieren" -#: index.php:195 index.php:237 include/functions.php:1915 -#: include/localized_schema.php:10 classes/feeds.php:111 classes/feeds.php:441 -#: js/FeedTree.js:128 js/FeedTree.js:156 plugins/digest/digest.js:647 +#: index.php:193 +#: index.php:235 +#: include/functions.php:1916 +#: classes/feeds.php:111 +#: classes/feeds.php:441 +#: js/FeedTree.js:128 +#: js/FeedTree.js:156 +#: plugins/digest/digest.js:647 msgid "Mark as read" msgstr "Als gelesen markieren" -#: index.php:196 include/functions.php:1811 include/functions.php:1923 +#: index.php:194 +#: include/functions.php:1812 +#: include/functions.php:1924 msgid "All articles" msgstr "Alle Artikel" -#: index.php:197 +#: index.php:195 msgid "Older than one day" msgstr "älter als einen Tag" -#: index.php:198 +#: index.php:196 msgid "Older than one week" msgstr "älter als eine Woche" -#: index.php:199 +#: index.php:197 msgid "Older than two weeks" msgstr "älter als 2 Wochen" -#: index.php:214 +#: index.php:212 msgid "Communication problem with server." msgstr "Kommunikationsfehler mit Server" -#: index.php:222 +#: index.php:220 msgid "New version of Tiny Tiny RSS is available!" msgstr "Neue Version von Tiny Tiny RSS verfügbar!" -#: index.php:227 +#: index.php:225 msgid "Actions..." msgstr "Aktionen..." -#: index.php:229 +#: index.php:227 msgid "Preferences..." msgstr "Einstellungen..." -#: index.php:230 +#: index.php:228 msgid "Search..." msgstr "Suchen..." -#: index.php:231 +#: index.php:229 msgid "Feed actions:" msgstr "Feed-Aktionen:" -#: index.php:232 classes/handler/public.php:578 +#: index.php:230 +#: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Feed abonnieren..." -#: index.php:233 +#: index.php:231 msgid "Edit this feed..." msgstr "Feed bearbeiten..." -#: index.php:234 +#: index.php:232 msgid "Rescore feed" msgstr "Feed neu bewerten" -#: index.php:235 classes/pref/feeds.php:717 classes/pref/feeds.php:1304 +#: index.php:233 +#: classes/pref/feeds.php:717 +#: classes/pref/feeds.php:1283 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Feed abbestellen" -#: index.php:236 +#: index.php:234 msgid "All feeds:" msgstr "Alle Feeds:" -#: index.php:238 +#: index.php:236 msgid "(Un)hide read feeds" msgstr "Gelesene zeigen/verstecken" -#: index.php:239 +#: index.php:237 msgid "Other actions:" msgstr "Andere Aktionen:" -#: index.php:241 +#: index.php:239 msgid "Switch to digest..." msgstr "Zur Zusammenfassung wechseln..." -#: index.php:243 +#: index.php:241 msgid "Show tag cloud..." msgstr "Tagwolke anzeigen..." -#: index.php:244 include/functions.php:1901 +#: index.php:242 +#: include/functions.php:1902 msgid "Toggle widescreen mode" msgstr "Breitbild-Modus umschalten" -#: index.php:245 +#: index.php:243 msgid "Select by tags..." msgstr "Artikel nach Tag filtern.." -#: index.php:246 +#: index.php:244 msgid "Create label..." msgstr "Label erstellen..." -#: index.php:247 +#: index.php:245 msgid "Create filter..." msgstr "Filter erstellen..." -#: index.php:248 +#: index.php:246 msgid "Keyboard shortcuts help" msgstr "Tastaturkürzel..." -#: index.php:257 plugins/digest/digest_body.php:77 +#: index.php:255 +#: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 msgid "Logout" msgstr "Abmelden" -#: prefs.php:36 prefs.php:121 include/functions.php:1928 -#: classes/pref/prefs.php:377 +#: prefs.php:36 +#: prefs.php:121 +#: include/functions.php:1929 +#: classes/pref/prefs.php:427 msgid "Preferences" msgstr "Einstellungen" @@ -465,17 +491,23 @@ msgstr "Tastaturkürzel" msgid "Exit preferences" msgstr "Einstellungen verlassen" -#: prefs.php:124 classes/pref/feeds.php:107 classes/pref/feeds.php:1209 +#: prefs.php:124 +#: classes/pref/feeds.php:107 +#: classes/pref/feeds.php:1209 #: classes/pref/feeds.php:1272 msgid "Feeds" msgstr "Feeds" -#: prefs.php:127 classes/pref/filters.php:156 +#: prefs.php:127 +#: classes/pref/filters.php:156 msgid "Filters" msgstr "Filter" -#: prefs.php:130 include/functions.php:1118 include/functions.php:1754 -#: classes/pref/labels.php:90 plugins/mobile/mobile-functions.php:198 +#: prefs.php:130 +#: include/functions.php:1119 +#: include/functions.php:1755 +#: classes/pref/labels.php:90 +#: plugins/mobile/mobile-functions.php:198 msgid "Labels" msgstr "Label" @@ -483,7 +515,8 @@ msgstr "Label" msgid "Users" msgstr "Benutzer" -#: register.php:186 include/login_form.php:238 +#: register.php:186 +#: include/login_form.php:238 msgid "Create new account" msgstr "Neues Konto erstellen" @@ -492,14 +525,8 @@ msgid "New user registrations are administratively disabled." msgstr "Die Registrierung für neue Benutzer wurde administrativ deaktiviert." #: register.php:217 -msgid "" -"Your temporary password will be sent to the specified email. Accounts, which " -"were not logged in once, are erased automatically 24 hours after temporary " -"password is sent." -msgstr "" -"Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail-Adresse " -"gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, " -"werden gelöscht." +msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent." +msgstr "Ihr vorübergehendes Passwort wird an Ihre angegebene E-Mail-Adresse gesendet. Konten, die nicht innerhalb von 24 Stunden aktiviert wurden, werden gelöscht." #: register.php:223 msgid "Desired login:" @@ -509,11 +536,13 @@ msgstr "Gewünschter Benutzername:" msgid "Check availability" msgstr "Verfügbarkeit prüfen" -#: register.php:228 classes/handler/public.php:776 +#: register.php:228 +#: classes/handler/public.php:776 msgid "Email:" msgstr "E-Mail:" -#: register.php:231 classes/handler/public.php:781 +#: register.php:231 +#: classes/handler/public.php:781 msgid "How much is two plus two:" msgstr "Wieviel ist zwei plus zwei:" @@ -545,9 +574,13 @@ msgstr "Registrierung für neue Benutzer ist momentan geschlossen." msgid "Tiny Tiny RSS data update script." msgstr "Skript zum Updaten von Tiny Tiny RSS." -#: include/digest.php:109 include/functions.php:1127 -#: include/functions.php:1655 include/functions.php:1740 -#: include/functions.php:1762 classes/opml.php:416 classes/pref/feeds.php:222 +#: include/digest.php:109 +#: include/functions.php:1128 +#: include/functions.php:1656 +#: include/functions.php:1741 +#: include/functions.php:1763 +#: classes/opml.php:416 +#: classes/pref/feeds.php:222 msgid "Uncategorized" msgstr "Unkategorisiert" @@ -562,573 +595,338 @@ msgstr[1] "%d archivierte Artikel" msgid "No feeds found." msgstr "Keine Feeds gefunden." -#: include/functions.php:1116 include/functions.php:1752 +#: include/functions.php:1117 +#: include/functions.php:1753 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Sonderfeeds" -#: include/functions.php:1604 classes/feeds.php:1101 +#: include/functions.php:1605 +#: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Alle Feeds" -#: include/functions.php:1805 +#: include/functions.php:1806 msgid "Starred articles" msgstr "Markierte Artikel" -#: include/functions.php:1807 +#: include/functions.php:1808 msgid "Published articles" msgstr "Veröffentlichte Artikel" -#: include/functions.php:1809 +#: include/functions.php:1810 msgid "Fresh articles" msgstr "Neue Artikel" -#: include/functions.php:1813 +#: include/functions.php:1814 msgid "Archived articles" msgstr "Archivierte Artikel" -#: include/functions.php:1815 +#: include/functions.php:1816 msgid "Recently read" msgstr "Kürzlich gelesen" -#: include/functions.php:1878 +#: include/functions.php:1879 msgid "Navigation" msgstr "Navigation" -#: include/functions.php:1879 +#: include/functions.php:1880 msgid "Open next feed" msgstr "Nächsten Feed öffnen" -#: include/functions.php:1880 +#: include/functions.php:1881 msgid "Open previous feed" msgstr "Vorherigen Feed öffnen" -#: include/functions.php:1881 +#: include/functions.php:1882 msgid "Open next article" msgstr "Nächsten Artikel öffnen" -#: include/functions.php:1882 +#: include/functions.php:1883 msgid "Open previous article" msgstr "Vorherigen Artikel öffnen" -#: include/functions.php:1883 +#: include/functions.php:1884 msgid "Open next article (don't scroll long articles)" msgstr "Nächsten Artikel laden (lange Artikel werden nicht gescrollt)" -#: include/functions.php:1884 +#: include/functions.php:1885 msgid "Open previous article (don't scroll long articles)" msgstr "Vorherigen Artikel laden (lange Artikel werden nicht gescrollt)" -#: include/functions.php:1885 +#: include/functions.php:1886 msgid "Show search dialog" msgstr "Suchdialog anzeigen" -#: include/functions.php:1886 +#: include/functions.php:1887 msgid "Article" msgstr "Artikel" -#: include/functions.php:1887 +#: include/functions.php:1888 msgid "Toggle starred" msgstr "Markierung ein-/ausschalten" -#: include/functions.php:1888 js/viewfeed.js:1908 +#: include/functions.php:1889 +#: js/viewfeed.js:1863 msgid "Toggle published" msgstr "Veröffentlichung ein-/ausschalten" -#: include/functions.php:1889 js/viewfeed.js:1886 +#: include/functions.php:1890 +#: js/viewfeed.js:1841 msgid "Toggle unread" msgstr "Gelesen-Status umschalten" -#: include/functions.php:1890 +#: include/functions.php:1891 msgid "Edit tags" msgstr "Tags bearbeiten" -#: include/functions.php:1891 +#: include/functions.php:1892 msgid "Dismiss selected" msgstr "Ausgewählte Artikel verwerfen" -#: include/functions.php:1892 +#: include/functions.php:1893 msgid "Dismiss read" msgstr "gelesene Artikel verwerfen" -#: include/functions.php:1893 +#: include/functions.php:1894 msgid "Open in new window" msgstr "In neuem Fenster öffnen" -#: include/functions.php:1894 js/viewfeed.js:1927 +#: include/functions.php:1895 +#: js/viewfeed.js:1882 msgid "Mark below as read" msgstr "Untere als gelesen markieren" -#: include/functions.php:1895 js/viewfeed.js:1921 +#: include/functions.php:1896 +#: js/viewfeed.js:1876 msgid "Mark above as read" msgstr "Obige als gelesen markieren" -#: include/functions.php:1896 +#: include/functions.php:1897 msgid "Scroll down" msgstr "Nach unten scrollen" -#: include/functions.php:1897 +#: include/functions.php:1898 msgid "Scroll up" msgstr "Nach oben scrollen" -#: include/functions.php:1898 +#: include/functions.php:1899 msgid "Select article under cursor" msgstr "Artikel unter Mauszeiger auswählen" -#: include/functions.php:1899 +#: include/functions.php:1900 msgid "Email article" msgstr "Artikel per E-Mail versenden" -#: include/functions.php:1900 +#: include/functions.php:1901 msgid "Close/collapse article" msgstr "Artikel schließen/verbergen" -#: include/functions.php:1902 plugins/embed_original/init.php:33 +#: include/functions.php:1903 +#: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "\"Original einbetten\" umschalten" -#: include/functions.php:1903 +#: include/functions.php:1904 msgid "Article selection" msgstr "Artikelauswahl" -#: include/functions.php:1904 +#: include/functions.php:1905 msgid "Select all articles" msgstr "Alle Artikel auswählen" -#: include/functions.php:1905 +#: include/functions.php:1906 msgid "Select unread" msgstr "Ungelesene Artikel auswählen" -#: include/functions.php:1906 +#: include/functions.php:1907 msgid "Select starred" msgstr "Markierte Artikel auswählen" -#: include/functions.php:1907 +#: include/functions.php:1908 msgid "Select published" msgstr "Veröffentlichte Artikel auswählen" -#: include/functions.php:1908 +#: include/functions.php:1909 msgid "Invert selection" msgstr "Auswahl umkehren" -#: include/functions.php:1909 +#: include/functions.php:1910 msgid "Deselect everything" msgstr "Auswahl aufheben" -#: include/functions.php:1910 classes/pref/feeds.php:521 +#: include/functions.php:1911 +#: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Feed" -#: include/functions.php:1911 +#: include/functions.php:1912 msgid "Refresh current feed" msgstr "Aktuellen Feed aktualisieren" -#: include/functions.php:1912 +#: include/functions.php:1913 msgid "Un/hide read feeds" msgstr "Gelesene Feeds zeigen/verstecken" -#: include/functions.php:1913 classes/pref/feeds.php:1275 +#: include/functions.php:1914 +#: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Feed abonnieren" -#: include/functions.php:1914 js/FeedTree.js:135 js/PrefFeedTree.js:67 +#: include/functions.php:1915 +#: js/FeedTree.js:135 +#: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Feed bearbeiten" -#: include/functions.php:1916 +#: include/functions.php:1917 msgid "Reverse headlines" msgstr "Schlagzeilensortierung umkehren" -#: include/functions.php:1917 +#: include/functions.php:1918 msgid "Debug feed update" msgstr "Aktualisierung im Diagnose-Modus durchführen" -#: include/functions.php:1918 js/FeedTree.js:178 +#: include/functions.php:1919 +#: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Alle Feeds als gelesen markieren" -#: include/functions.php:1919 +#: include/functions.php:1920 msgid "Un/collapse current category" msgstr "Aktuelle Kategorie ein-/ausklappen:" -#: include/functions.php:1920 +#: include/functions.php:1921 msgid "Toggle combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" -#: include/functions.php:1921 +#: include/functions.php:1922 msgid "Toggle auto expand in combined mode" msgstr "Kombinierte Feed-Anzeige umschalten" -#: include/functions.php:1922 +#: include/functions.php:1923 msgid "Go to" msgstr "Gehe zu" -#: include/functions.php:1924 +#: include/functions.php:1925 msgid "Fresh" msgstr "Neu" -#: include/functions.php:1927 js/tt-rss.js:431 js/tt-rss.js:584 +#: include/functions.php:1928 +#: js/tt-rss.js:431 +#: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Tagwolke" -#: include/functions.php:1929 +#: include/functions.php:1930 msgid "Other" msgstr "Sonstiges" -#: include/functions.php:1930 classes/pref/labels.php:281 +#: include/functions.php:1931 +#: classes/pref/labels.php:281 msgid "Create label" msgstr "Label erstellen" -#: include/functions.php:1931 classes/pref/filters.php:654 +#: include/functions.php:1932 +#: classes/pref/filters.php:654 msgid "Create filter" msgstr "Filter erstellen" -#: include/functions.php:1932 +#: include/functions.php:1933 msgid "Un/collapse sidebar" msgstr "Seitenleiste ein-/ausklappen" -#: include/functions.php:1933 +#: include/functions.php:1934 msgid "Show help dialog" msgstr "Hilfe anzeigen" -#: include/functions.php:2418 +#: include/functions.php:2419 #, php-format msgid "Search results: %s" msgstr "Suchergebnisse: %s" -#: include/functions.php:2909 js/viewfeed.js:2014 +#: include/functions.php:2910 +#: js/viewfeed.js:1969 msgid "Click to play" msgstr "Zum Abspielen klicken" -#: include/functions.php:2910 js/viewfeed.js:2013 +#: include/functions.php:2911 +#: js/viewfeed.js:1968 msgid "Play" msgstr "Abspielen" -#: include/functions.php:3027 +#: include/functions.php:3028 msgid " - " msgstr " - " -#: include/functions.php:3049 include/functions.php:3343 classes/rpc.php:408 +#: include/functions.php:3050 +#: include/functions.php:3344 +#: classes/article.php:281 msgid "no tags" msgstr "Keine Tags" -#: include/functions.php:3059 classes/feeds.php:686 +#: include/functions.php:3060 +#: classes/feeds.php:686 msgid "Edit tags for this article" msgstr "Tags für diesen Artikel bearbeiten" -#: include/functions.php:3088 classes/feeds.php:642 +#: include/functions.php:3089 +#: classes/feeds.php:642 msgid "Originally from:" msgstr "Original von:" -#: include/functions.php:3101 classes/feeds.php:655 classes/pref/feeds.php:540 +#: include/functions.php:3102 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 msgid "Feed URL" msgstr "Feed URL" -#: include/functions.php:3132 classes/dlg.php:37 classes/dlg.php:60 -#: classes/dlg.php:93 classes/dlg.php:159 classes/dlg.php:190 -#: classes/dlg.php:217 classes/dlg.php:250 classes/dlg.php:262 -#: classes/backend.php:105 classes/pref/users.php:99 -#: classes/pref/filters.php:147 classes/pref/prefs.php:1012 -#: classes/pref/feeds.php:1588 classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:409 plugins/import_export/init.php:432 -#: plugins/googlereaderimport/init.php:168 plugins/share/init.php:67 +#: include/functions.php:3133 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1058 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:406 +#: plugins/import_export/init.php:429 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 #: plugins/updater/init.php:357 msgid "Close this window" msgstr "Fenster schließen" -#: include/functions.php:3368 +#: include/functions.php:3369 msgid "(edit note)" msgstr "(Notiz bearbeiten)" -#: include/functions.php:3601 +#: include/functions.php:3604 msgid "unknown type" msgstr "unbekannter Typ" -#: include/functions.php:3657 +#: include/functions.php:3660 msgid "Attachments" msgstr "Anhänge" -#: include/localized_schema.php:3 -msgid "Title" -msgstr "Titel" - -#: include/localized_schema.php:4 -msgid "Title or Content" -msgstr "Titel oder Inhalt" - -#: include/localized_schema.php:5 -msgid "Link" -msgstr "Link" - -#: include/localized_schema.php:6 -msgid "Content" -msgstr "Inhalt" - -#: include/localized_schema.php:7 -msgid "Article Date" -msgstr "Artikeldatum" - -#: include/localized_schema.php:9 -msgid "Delete article" -msgstr "Artikel löschen" - -#: include/localized_schema.php:11 -msgid "Set starred" -msgstr "Markierung setzen" - -#: include/localized_schema.php:12 js/viewfeed.js:483 -#: plugins/digest/digest.js:265 plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Artikel veröffentlichen" - -#: include/localized_schema.php:13 -msgid "Assign tags" -msgstr "Tags zuweisen" - -#: include/localized_schema.php:14 js/viewfeed.js:1978 -msgid "Assign label" -msgstr "Label zuweisen" - -#: include/localized_schema.php:15 -msgid "Modify score" -msgstr "Bewertung ändern" - -#: include/localized_schema.php:17 -msgid "General" -msgstr "Allgemein" - -#: include/localized_schema.php:18 -msgid "Interface" -msgstr "Oberfläche" - -#: include/localized_schema.php:19 -msgid "Advanced" -msgstr "Erweiterte Einstellungen" - -#: include/localized_schema.php:21 -msgid "" -"This option is useful when you are reading several planet-type aggregators " -"with partially colliding userbase. When disabled, it forces same posts from " -"different feeds to appear only once." -msgstr "" -"Diese Option dient zum Lesen von Feedsammlungen mit teilweise " -"wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von " -"unterschiedlichen Feedsquellen nur einmal angezeigt." - -#: include/localized_schema.php:22 -msgid "" -"Display expanded list of feed articles, instead of separate displays for " -"headlines and article content" -msgstr "" -"Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für " -"Schlagzeilen und Artikelinhalt" - -#: include/localized_schema.php:23 -msgid "" -"Automatically open next feed with unread articles after marking one as read" -msgstr "" -"Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed " -"als gelesen markiert wurde" - -#: include/localized_schema.php:24 -msgid "" -"This option enables sending daily digest of new (and unread) headlines on " -"your configured e-mail address" -msgstr "" -"Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue " -"(und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" - -#: include/localized_schema.php:25 -msgid "" -"This option enables marking articles as read automatically while you scroll " -"article list." -msgstr "" -"Diese Option aktiviert das automatische \"Als gelesen markieren\" im " -"kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während " -"Sie durch die Artikelliste scrollen." - -#: include/localized_schema.php:26 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." - -#: include/localized_schema.php:27 -msgid "" -"When auto-detecting tags in articles these tags will not be applied (comma-" -"separated list)." -msgstr "" -"Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden " -"nicht verwendet (durch Komma getrennte Liste)." - -#: include/localized_schema.php:28 -msgid "" -"When this option is enabled, headlines in Special feeds and Labels are " -"grouped by feeds" -msgstr "" -"Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und " -"Labels nach Feeds gruppiert" - -#: include/localized_schema.php:29 -msgid "Customize CSS stylesheet to your liking" -msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" - -#: include/localized_schema.php:30 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" -"Benutze feed-spezifisches Datum statt des lokalen Importdatums um " -"Schlagzeilen zu sortieren." - -#: include/localized_schema.php:31 -msgid "Click to register your SSL client certificate with tt-rss" -msgstr "Klicken um Ihr SSL Clientzertifikat bei tt-rss zu registrieren" - -#: include/localized_schema.php:32 -msgid "Uses UTC timezone" -msgstr "Benutzt UTC Zeitzone" - -#: include/localized_schema.php:33 -msgid "Select one of the available CSS themes" -msgstr "Wählen Sie eines der vorhandenen CSS-Themes aus" - -#: include/localized_schema.php:34 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Alte Artikel nach dieser Anzahl an Tagen löschen (0 - deaktivert)" - -#: include/localized_schema.php:35 -msgid "Default interval between feed updates" -msgstr "Standard Intervall zwischen Feed-Aktualisierungen" - -#: include/localized_schema.php:36 -msgid "Amount of articles to display at once" -msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" - -#: include/localized_schema.php:37 -msgid "Allow duplicate posts" -msgstr "Duplikate zulassen" - -#: include/localized_schema.php:38 -msgid "Enable feed categories" -msgstr "Feedkategorien aktivieren" - -#: include/localized_schema.php:39 -msgid "Show content preview in headlines list" -msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" - -#: include/localized_schema.php:40 -msgid "Short date format" -msgstr "Kurzes Datumsformat" - -#: include/localized_schema.php:41 -msgid "Long date format" -msgstr "Langes Datumsformat" - -#: include/localized_schema.php:42 -msgid "Combined feed display" -msgstr "Kombinierte Feed-Anzeige" - -#: include/localized_schema.php:43 -msgid "Hide feeds with no unread articles" -msgstr "Feeds ohne unglesene Nachrichten verbergen" - -#: include/localized_schema.php:44 -msgid "On catchup show next feed" -msgstr "Den nächsten Feed anzeigen" - -#: include/localized_schema.php:45 -msgid "Sort feeds by unread articles count" -msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" - -#: include/localized_schema.php:46 plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" - -#: include/localized_schema.php:47 -msgid "Enable e-mail digest" -msgstr "Aktiviere E-Mail-Zusammenfassung" - -#: include/localized_schema.php:48 -msgid "Confirm marking feed as read" -msgstr "Bestätigung um Feed als gelesen zu markieren" - -#: include/localized_schema.php:49 -msgid "Automatically mark articles as read" -msgstr "Artikel automatisch als gelesen markieren" - -#: include/localized_schema.php:50 -msgid "Strip unsafe tags from articles" -msgstr "Unsichere Tags aus Artikeln entfernen" - -#: include/localized_schema.php:51 -msgid "Blacklisted tags" -msgstr "Gesperrte Tags" - -#: include/localized_schema.php:52 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximales Alter neuer Artikel (in Stunden)" - -#: include/localized_schema.php:53 -msgid "Mark articles in e-mail digest as read" -msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" - -#: include/localized_schema.php:54 -msgid "Automatically expand articles in combined mode" -msgstr "Artikel im Kombinierten Modus automatisch aufklappen" - -#: include/localized_schema.php:55 -msgid "Purge unread articles" -msgstr "Ungelesene Artikel löschen" - -#: include/localized_schema.php:56 -msgid "Show special feeds when hiding read feeds" -msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" - -#: include/localized_schema.php:57 -msgid "Group headlines in virtual feeds" -msgstr "Schlagzeilen in virtuellen Feeds gruppieren" - -#: include/localized_schema.php:58 -msgid "Do not embed images in articles" -msgstr "Keine Bilder in Artikeln einbetten" - -#: include/localized_schema.php:59 -msgid "Enable external API" -msgstr "Externe API aktivieren" - -#: include/localized_schema.php:60 -msgid "User timezone" -msgstr "Zeitzone des Benutzers" - -#: include/localized_schema.php:61 js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Benutzerdefiniertes Stylesheet" - -#: include/localized_schema.php:62 -msgid "Sort headlines by feed date" -msgstr "Feeds nach Schlagzeilendatum sortieren" - -#: include/localized_schema.php:63 -msgid "Login with an SSL certificate" -msgstr "Mit SSL-Zertifikat anmelden" - -#: include/localized_schema.php:64 -msgid "Try to send digests around specified time" -msgstr "Zusammenfassungen zu einer bestimmten Uhrzeit zu senden" - -#: include/localized_schema.php:65 -msgid "Assign articles to labels automatically" -msgstr "Artikel den Labeln automatisch zuordnen" - -#: include/localized_schema.php:66 -msgid "Select theme" -msgstr "Thema auswählen" - -#: include/login_form.php:183 classes/handler/public.php:483 -#: classes/handler/public.php:771 plugins/mobile/login_form.php:40 +#: include/login_form.php:183 +#: classes/handler/public.php:483 +#: classes/handler/public.php:771 +#: plugins/mobile/login_form.php:40 msgid "Login:" msgstr "Benutzername:" -#: include/login_form.php:192 classes/handler/public.php:486 +#: include/login_form.php:192 +#: classes/handler/public.php:486 #: plugins/mobile/login_form.php:45 msgid "Password:" msgstr "Passwort:" @@ -1137,7 +935,8 @@ msgstr "Passwort:" msgid "I forgot my password" msgstr "Ich habe mein Passwort vergessen" -#: include/login_form.php:201 classes/handler/public.php:489 +#: include/login_form.php:201 +#: classes/handler/public.php:489 msgid "Language:" msgstr "Sprache:" @@ -1145,8 +944,10 @@ msgstr "Sprache:" msgid "Profile:" msgstr "Profil:" -#: include/login_form.php:213 classes/handler/public.php:233 -#: classes/rpc.php:64 classes/pref/prefs.php:948 +#: include/login_form.php:213 +#: classes/handler/public.php:233 +#: classes/rpc.php:64 +#: classes/pref/prefs.php:994 msgid "Default profile" msgstr "Standardprofil" @@ -1158,12 +959,13 @@ msgstr "Weniger Datenverkehr nutzen" msgid "Remember me" msgstr "Erinnere dich an mich" -#: include/login_form.php:235 classes/handler/public.php:499 +#: include/login_form.php:235 +#: classes/handler/public.php:499 #: plugins/mobile/login_form.php:28 msgid "Log in" msgstr "Anmelden" -#: include/sessions.php:55 +#: include/sessions.php:58 msgid "Session failed to validate (incorrect IP)" msgstr "Sitzung konnte nicht validiert werden (falsche IP)" @@ -1175,28 +977,44 @@ msgstr "Artikel nicht gefunden." msgid "Tags for this article (separated by commas):" msgstr "Tags für diesen Artikel (durch Komma getrennt):" -#: classes/article.php:204 classes/pref/users.php:176 -#: classes/pref/labels.php:79 classes/pref/filters.php:405 -#: classes/pref/prefs.php:894 classes/pref/feeds.php:733 -#: classes/pref/feeds.php:881 plugins/nsfw/init.php:86 -#: plugins/note/init.php:53 plugins/instances/init.php:248 +#: classes/article.php:204 +#: classes/pref/users.php:176 +#: classes/pref/labels.php:79 +#: classes/pref/filters.php:405 +#: classes/pref/prefs.php:940 +#: classes/pref/feeds.php:733 +#: classes/pref/feeds.php:881 +#: plugins/nsfw/init.php:86 +#: plugins/note/init.php:53 +#: plugins/instances/init.php:248 msgid "Save" msgstr "Speichern" -#: classes/article.php:206 classes/handler/public.php:460 -#: classes/handler/public.php:502 classes/feeds.php:1028 -#: classes/feeds.php:1080 classes/feeds.php:1140 classes/pref/users.php:178 -#: classes/pref/labels.php:81 classes/pref/filters.php:408 -#: classes/pref/filters.php:804 classes/pref/filters.php:880 -#: classes/pref/filters.php:947 classes/pref/prefs.php:896 -#: classes/pref/feeds.php:734 classes/pref/feeds.php:884 -#: classes/pref/feeds.php:1797 plugins/mail/init.php:131 -#: plugins/note/init.php:55 plugins/instances/init.php:251 +#: classes/article.php:206 +#: classes/handler/public.php:460 +#: classes/handler/public.php:502 +#: classes/feeds.php:1028 +#: classes/feeds.php:1080 +#: classes/feeds.php:1140 +#: classes/pref/users.php:178 +#: classes/pref/labels.php:81 +#: classes/pref/filters.php:408 +#: classes/pref/filters.php:804 +#: classes/pref/filters.php:880 +#: classes/pref/filters.php:947 +#: classes/pref/prefs.php:942 +#: classes/pref/feeds.php:734 +#: classes/pref/feeds.php:884 +#: classes/pref/feeds.php:1797 +#: plugins/mail/init.php:131 +#: plugins/note/init.php:55 +#: plugins/instances/init.php:251 #: plugins/instances/init.php:440 msgid "Cancel" msgstr "Abbrechen" -#: classes/handler/public.php:424 plugins/bookmarklets/init.php:38 +#: classes/handler/public.php:424 +#: plugins/bookmarklets/init.php:38 msgid "Share with Tiny Tiny RSS" msgstr "Teilen mit Tiny Tiny RSS" @@ -1204,8 +1022,10 @@ msgstr "Teilen mit Tiny Tiny RSS" msgid "Title:" msgstr "Titel:" -#: classes/handler/public.php:434 classes/pref/feeds.php:538 -#: classes/pref/feeds.php:769 plugins/instances/init.php:215 +#: classes/handler/public.php:434 +#: classes/pref/feeds.php:538 +#: classes/pref/feeds.php:769 +#: plugins/instances/init.php:215 #: plugins/instances/init.php:405 msgid "URL:" msgstr "URL:" @@ -1234,42 +1054,48 @@ msgstr "Nicht angemeldet" msgid "Incorrect username or password" msgstr "Benutzername oder Passwort falsch" -#: classes/handler/public.php:584 classes/handler/public.php:681 +#: classes/handler/public.php:584 +#: classes/handler/public.php:681 #, php-format msgid "Already subscribed to %s." msgstr "%s bereits abonniert." -#: classes/handler/public.php:587 classes/handler/public.php:672 +#: classes/handler/public.php:587 +#: classes/handler/public.php:672 #, php-format msgid "Subscribed to %s." msgstr "%s abonniert." -#: classes/handler/public.php:590 classes/handler/public.php:675 +#: classes/handler/public.php:590 +#: classes/handler/public.php:675 #, php-format msgid "Could not subscribe to %s." msgstr "Konnte %s nicht abonnieren." -#: classes/handler/public.php:593 classes/handler/public.php:678 +#: classes/handler/public.php:593 +#: classes/handler/public.php:678 #, php-format msgid "No feeds found in %s." msgstr "Keine Feeds in %s gefunden." -#: classes/handler/public.php:596 classes/handler/public.php:684 +#: classes/handler/public.php:596 +#: classes/handler/public.php:684 msgid "Multiple feed URLs found." msgstr "Mehrere Feed-URLs gefunden." -#: classes/handler/public.php:600 classes/handler/public.php:689 +#: classes/handler/public.php:600 +#: classes/handler/public.php:689 #, php-format msgid "Could not subscribe to %s.
    Can't download the Feed URL." -msgstr "" -"Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht " -"heruntergeladen werden." +msgstr "Das Abonnieren von %s ist fehlgeschlagen.
    Der Feed konnte nicht heruntergeladen werden." -#: classes/handler/public.php:618 classes/handler/public.php:707 +#: classes/handler/public.php:618 +#: classes/handler/public.php:707 msgid "Subscribe to selected feed" msgstr "Ausgewählte Feeds abonnieren" -#: classes/handler/public.php:643 classes/handler/public.php:731 +#: classes/handler/public.php:643 +#: classes/handler/public.php:731 msgid "Edit subscription options" msgstr "Abonnementoptionen bearbeiten" @@ -1278,14 +1104,11 @@ msgid "Password recovery" msgstr "Passwort-Wiederherstellung" #: classes/handler/public.php:764 -msgid "" -"You will need to provide valid account name and email. New password will be " -"sent on your email address." -msgstr "" -"Sie müssen einen gültigen Benutzernamen und EMail angeben. Das neue Passwort " -"wird an Ihre EMail gesendet." +msgid "You will need to provide valid account name and email. New password will be sent on your email address." +msgstr "Sie müssen einen gültigen Benutzernamen und EMail angeben. Das neue Passwort wird an Ihre EMail gesendet." -#: classes/handler/public.php:786 classes/pref/users.php:360 +#: classes/handler/public.php:786 +#: classes/pref/users.php:360 msgid "Reset password" msgstr "Passwort zurücksetzen" @@ -1293,58 +1116,41 @@ msgstr "Passwort zurücksetzen" msgid "Some of the required form parameters are missing or incorrect." msgstr "Einige der benötigten Eingaben fehlen oder sind falsch." -#: classes/handler/public.php:800 classes/handler/public.php:826 +#: classes/handler/public.php:800 +#: classes/handler/public.php:826 #: plugins/digest/digest_body.php:69 msgid "Go back" msgstr "Zurück" #: classes/handler/public.php:822 msgid "Sorry, login and email combination not found." -msgstr "" -"Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht " -"gefunden werden." +msgstr "Entschuldigung, diese Kombination von Benutzername und E-Mail konnte nicht gefunden werden." #: classes/dlg.php:16 -msgid "" -"If you have imported labels and/or filters, you might need to reload " -"preferences to see your new data." -msgstr "" -"Wenn Label und/oder Filter importiert wurden, müssen die Einstellungen " -"erneut geladen werden, um alle neuen Einstellungen zu sehen." +msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgstr "Wenn Label und/oder Filter importiert wurden, müssen die Einstellungen erneut geladen werden, um alle neuen Einstellungen zu sehen." #: classes/dlg.php:48 msgid "Your Public OPML URL is:" msgstr "Ihre öffentliche OPML-URL lautet:" -#: classes/dlg.php:57 classes/dlg.php:214 +#: classes/dlg.php:57 +#: classes/dlg.php:214 msgid "Generate new URL" msgstr "Erzeuge neue URL" #: classes/dlg.php:71 -msgid "" -"Update daemon is enabled in configuration, but daemon process is not " -"running, which prevents all feeds from updating. Please start the daemon " -"process or contact instance owner." -msgstr "" -"Der Aktualisierungs-Daemon ist in den Einstellungen aktiviert, aber der " -"Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. " -"Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den " -"Besitzer der Instanz." +msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner." +msgstr "Der Aktualisierungs-Daemon ist in den Einstellungen aktiviert, aber der Daemon Prozess läuft nicht, weshalb keine Feeds aktualisiert werden können. Bitte starten Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer der Instanz." -#: classes/dlg.php:75 classes/dlg.php:84 +#: classes/dlg.php:75 +#: classes/dlg.php:84 msgid "Last update:" msgstr "Letzte Aktualisierung:" #: classes/dlg.php:80 -msgid "" -"Update daemon is taking too long to perform a feed update. This could " -"indicate a problem like crash or a hang. Please check the daemon process or " -"contact instance owner." -msgstr "" -"Der Aktualisierungs Daemon braucht zu lange um eine Aktualisierung " -"durchzuführen. Dies könnte auf ein Problem wie einen Absturz oder eine " -"Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder " -"benachrichtigen Sie den Besitzer des Instanz." +msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner." +msgstr "Der Aktualisierungs Daemon braucht zu lange um eine Aktualisierung durchzuführen. Dies könnte auf ein Problem wie einen Absturz oder eine Blockierung hinweisen. Bitte überprüfen Sie den Prozess des Daemons oder benachrichtigen Sie den Besitzer des Instanz." #: classes/dlg.php:166 msgid "Match:" @@ -1370,20 +1176,18 @@ msgstr "Einträge anzeigen" msgid "You can view this feed as RSS using the following URL:" msgstr "Sie finden diesen Feed als RSS unter der folgenden URL:" -#: classes/dlg.php:233 plugins/updater/init.php:327 +#: classes/dlg.php:233 +#: plugins/updater/init.php:327 #, php-format msgid "New version of Tiny Tiny RSS is available (%s)." msgstr "Neue Version von Tiny Tiny RSS verfügbar (%s)." #: classes/dlg.php:241 -msgid "" -"You can update using built-in updater in the Preferences or by using update." -"php" -msgstr "" -"Um ein Update durchzuführen können Sie den eingebauten Updater in den " -"Einstellungen oder die update.php benutzen" +msgid "You can update using built-in updater in the Preferences or by using update.php" +msgstr "Um ein Update durchzuführen können Sie den eingebauten Updater in den Einstellungen oder die update.php benutzen" -#: classes/dlg.php:245 plugins/updater/init.php:331 +#: classes/dlg.php:245 +#: plugins/updater/init.php:331 msgid "See the release notes" msgstr "Release notes anzeigen" @@ -1393,9 +1197,7 @@ msgstr "Download" #: classes/dlg.php:255 msgid "Error receiving version information or no new version available." -msgstr "" -"Das Abrufen von Update-Informationen ist fehlgeschlagen oder es ist bereits " -"die neuste Version installiert." +msgstr "Das Abrufen von Update-Informationen ist fehlgeschlagen oder es ist bereits die neuste Version installiert." #: classes/feeds.php:68 msgid "Visit the website" @@ -1405,7 +1207,9 @@ msgstr "Offizielle Website besuchen" msgid "View as RSS feed" msgstr "Als RSS-Feed anzeigen" -#: classes/feeds.php:84 classes/feeds.php:138 classes/pref/feeds.php:1440 +#: classes/feeds.php:84 +#: classes/feeds.php:138 +#: classes/pref/feeds.php:1440 msgid "View as RSS" msgstr "Als RSS anzeigen" @@ -1413,12 +1217,19 @@ msgstr "Als RSS anzeigen" msgid "Select:" msgstr "Auswahl:" -#: classes/feeds.php:92 classes/pref/users.php:345 classes/pref/labels.php:275 -#: classes/pref/filters.php:282 classes/pref/filters.php:330 -#: classes/pref/filters.php:648 classes/pref/filters.php:737 -#: classes/pref/filters.php:764 classes/pref/prefs.php:908 -#: classes/pref/feeds.php:1266 classes/pref/feeds.php:1536 -#: classes/pref/feeds.php:1606 plugins/instances/init.php:290 +#: classes/feeds.php:92 +#: classes/pref/users.php:345 +#: classes/pref/labels.php:275 +#: classes/pref/filters.php:282 +#: classes/pref/filters.php:330 +#: classes/pref/filters.php:648 +#: classes/pref/filters.php:737 +#: classes/pref/filters.php:764 +#: classes/pref/prefs.php:954 +#: classes/pref/feeds.php:1266 +#: classes/pref/feeds.php:1536 +#: classes/pref/feeds.php:1606 +#: plugins/instances/init.php:290 msgid "All" msgstr "Alle" @@ -1426,12 +1237,19 @@ msgstr "Alle" msgid "Invert" msgstr "Umkehren" -#: classes/feeds.php:95 classes/pref/users.php:347 classes/pref/labels.php:277 -#: classes/pref/filters.php:284 classes/pref/filters.php:332 -#: classes/pref/filters.php:650 classes/pref/filters.php:739 -#: classes/pref/filters.php:766 classes/pref/prefs.php:910 -#: classes/pref/feeds.php:1268 classes/pref/feeds.php:1538 -#: classes/pref/feeds.php:1608 plugins/instances/init.php:292 +#: classes/feeds.php:95 +#: classes/pref/users.php:347 +#: classes/pref/labels.php:277 +#: classes/pref/filters.php:284 +#: classes/pref/filters.php:332 +#: classes/pref/filters.php:650 +#: classes/pref/filters.php:739 +#: classes/pref/filters.php:766 +#: classes/pref/prefs.php:956 +#: classes/pref/feeds.php:1268 +#: classes/pref/feeds.php:1538 +#: classes/pref/feeds.php:1608 +#: plugins/instances/init.php:292 msgid "None" msgstr "Keine" @@ -1459,13 +1277,17 @@ msgstr "Archiv" msgid "Move back" msgstr "Zurückgehen" -#: classes/feeds.php:118 classes/pref/filters.php:291 -#: classes/pref/filters.php:339 classes/pref/filters.php:746 +#: classes/feeds.php:118 +#: classes/pref/filters.php:291 +#: classes/pref/filters.php:339 +#: classes/pref/filters.php:746 #: classes/pref/filters.php:773 msgid "Delete" msgstr "Löschen" -#: classes/feeds.php:125 classes/feeds.php:130 plugins/mailto/init.php:28 +#: classes/feeds.php:125 +#: classes/feeds.php:130 +#: plugins/mailto/init.php:28 #: plugins/mail/init.php:28 msgid "Forward by email" msgstr "Per E-Mail weiterleiten" @@ -1474,7 +1296,8 @@ msgstr "Per E-Mail weiterleiten" msgid "Feed:" msgstr "Feed:" -#: classes/feeds.php:205 classes/feeds.php:831 +#: classes/feeds.php:205 +#: classes/feeds.php:831 msgid "Feed not found." msgstr "Feed nicht gefunden." @@ -1503,24 +1326,23 @@ msgstr "Keine aktualisierten Artikel zum Anzeigen gefunden." msgid "No starred articles found to display." msgstr "Keine markierten Artikel zum Anzeigen gefunden." -#: classes/feeds.php:742 -msgid "" -"No articles found to display. You can assign articles to labels manually " -"(see the Actions menu above) or use a filter." -msgstr "" -"Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell " -"hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." +#: classes/feeds.php:742 +#, fuzzy +msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." +msgstr "Keine Artikel zum Anzeigen gefunden. Sie können Artikel zu Labeln manuell hinzufügen (siehe obiges Aktionsmenü) oder durch das Benutzen von Filtern." #: classes/feeds.php:744 msgid "No articles found to display." msgstr "Keine Artikel zum Anzeigen gefunden." -#: classes/feeds.php:759 classes/feeds.php:923 +#: classes/feeds.php:759 +#: classes/feeds.php:923 #, php-format msgid "Feeds last updated at %s" msgstr "Feeds zuletzt aktualisiert am %s" -#: classes/feeds.php:769 classes/feeds.php:933 +#: classes/feeds.php:769 +#: classes/feeds.php:933 msgid "Some feeds have update errors (click for details)" msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" @@ -1528,11 +1350,14 @@ msgstr "Einige Feeds haben Aktualisierungsfehler (klicken für Details)" msgid "No feed selected." msgstr "Keinen Feed ausgewählt." -#: classes/feeds.php:966 classes/feeds.php:974 +#: classes/feeds.php:966 +#: classes/feeds.php:974 msgid "Feed or site URL" msgstr "URL von Feed oder Seite" -#: classes/feeds.php:980 classes/pref/feeds.php:560 classes/pref/feeds.php:782 +#: classes/feeds.php:980 +#: classes/pref/feeds.php:560 +#: classes/pref/feeds.php:782 #: classes/pref/feeds.php:1761 msgid "Place in category:" msgstr "In Kategorie einordnen:" @@ -1541,19 +1366,25 @@ msgstr "In Kategorie einordnen:" msgid "Available feeds" msgstr "Verfügbare Feeds" -#: classes/feeds.php:1000 classes/pref/users.php:139 -#: classes/pref/feeds.php:590 classes/pref/feeds.php:818 +#: classes/feeds.php:1000 +#: classes/pref/users.php:139 +#: classes/pref/feeds.php:590 +#: classes/pref/feeds.php:818 msgid "Authentication" msgstr "Authentifizierung" -#: classes/feeds.php:1004 classes/pref/users.php:402 -#: classes/pref/feeds.php:596 classes/pref/feeds.php:822 +#: classes/feeds.php:1004 +#: classes/pref/users.php:402 +#: classes/pref/feeds.php:596 +#: classes/pref/feeds.php:822 #: classes/pref/feeds.php:1775 msgid "Login" msgstr "Benutzername" -#: classes/feeds.php:1007 classes/pref/prefs.php:202 -#: classes/pref/feeds.php:602 classes/pref/feeds.php:828 +#: classes/feeds.php:1007 +#: classes/pref/prefs.php:252 +#: classes/pref/feeds.php:602 +#: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 msgid "Password" msgstr "Passwort" @@ -1562,7 +1393,9 @@ msgstr "Passwort" msgid "This feed requires authentication." msgstr "Dieser Feed erfordert Authentifizierung." -#: classes/feeds.php:1022 classes/feeds.php:1078 classes/pref/feeds.php:1796 +#: classes/feeds.php:1022 +#: classes/feeds.php:1078 +#: classes/pref/feeds.php:1796 msgid "Subscribe" msgstr "Abonnieren" @@ -1570,8 +1403,12 @@ msgstr "Abonnieren" msgid "More feeds" msgstr "Weitere Feeds" -#: classes/feeds.php:1048 classes/feeds.php:1139 classes/pref/users.php:332 -#: classes/pref/filters.php:641 classes/pref/feeds.php:1259 js/tt-rss.js:170 +#: classes/feeds.php:1048 +#: classes/feeds.php:1139 +#: classes/pref/users.php:332 +#: classes/pref/filters.php:641 +#: classes/pref/feeds.php:1259 +#: js/tt-rss.js:170 msgid "Search" msgstr "Suchen" @@ -1587,9 +1424,12 @@ msgstr "Feed-Archiv" msgid "limit:" msgstr "Grenzwert:" -#: classes/feeds.php:1079 classes/pref/users.php:358 -#: classes/pref/labels.php:284 classes/pref/filters.php:398 -#: classes/pref/filters.php:667 classes/pref/feeds.php:707 +#: classes/feeds.php:1079 +#: classes/pref/users.php:358 +#: classes/pref/labels.php:284 +#: classes/pref/filters.php:398 +#: classes/pref/filters.php:667 +#: classes/pref/feeds.php:707 #: plugins/instances/init.php:297 msgid "Remove" msgstr "Entfernen" @@ -1626,7 +1466,8 @@ msgstr "Strg" msgid "Help topic not found." msgstr "Hilfethema nicht gefunden." -#: classes/opml.php:28 classes/opml.php:33 +#: classes/opml.php:28 +#: classes/opml.php:33 msgid "OPML Utility" msgstr "OPML Werkzeug" @@ -1676,20 +1517,22 @@ msgstr "Verarbeite Kategorie: %s" msgid "Error: please upload OPML file." msgstr "Fehler: bitte eine OPML-Datei hochladen." -#: classes/opml.php:475 plugins/googlereaderimport/init.php:161 +#: classes/opml.php:475 +#: plugins/googlereaderimport/init.php:161 msgid "Error while parsing document." msgstr "Fehler beim Parsen des Dokuments." -#: classes/pref/users.php:6 plugins/instances/init.php:157 +#: classes/pref/users.php:6 +#: plugins/instances/init.php:157 msgid "Your access level is insufficient to open this tab." -msgstr "" -"Sie haben nicht die benötigten Rechte um diese Registerkarte zu öffnen." +msgstr "Sie haben nicht die benötigten Rechte um diese Registerkarte zu öffnen." #: classes/pref/users.php:34 msgid "User not found" msgstr "Benutzer nicht gefunden" -#: classes/pref/users.php:53 classes/pref/users.php:404 +#: classes/pref/users.php:53 +#: classes/pref/users.php:404 msgid "Registered" msgstr "Registriert" @@ -1713,7 +1556,8 @@ msgstr "Zugriffsberechtigung: " msgid "Change password to" msgstr "Passwort ändern in" -#: classes/pref/users.php:161 classes/pref/feeds.php:610 +#: classes/pref/users.php:161 +#: classes/pref/feeds.php:610 #: classes/pref/feeds.php:834 msgid "Options" msgstr "Optionen" @@ -1751,12 +1595,18 @@ msgstr "Sende das neue Passwort von Benutzer %s an %s" msgid "[tt-rss] Password change notification" msgstr "[tt-rss] Benachrichtigung: Passwort geändert" -#: classes/pref/users.php:342 classes/pref/labels.php:272 -#: classes/pref/filters.php:279 classes/pref/filters.php:327 -#: classes/pref/filters.php:645 classes/pref/filters.php:734 -#: classes/pref/filters.php:761 classes/pref/prefs.php:905 -#: classes/pref/feeds.php:1263 classes/pref/feeds.php:1533 -#: classes/pref/feeds.php:1603 plugins/instances/init.php:287 +#: classes/pref/users.php:342 +#: classes/pref/labels.php:272 +#: classes/pref/filters.php:279 +#: classes/pref/filters.php:327 +#: classes/pref/filters.php:645 +#: classes/pref/filters.php:734 +#: classes/pref/filters.php:761 +#: classes/pref/prefs.php:951 +#: classes/pref/feeds.php:1263 +#: classes/pref/feeds.php:1533 +#: classes/pref/feeds.php:1603 +#: plugins/instances/init.php:287 msgid "Select" msgstr "Auswahl" @@ -1768,7 +1618,8 @@ msgstr "Benutzer anlegen" msgid "Details" msgstr "Details" -#: classes/pref/users.php:356 classes/pref/filters.php:660 +#: classes/pref/users.php:356 +#: classes/pref/filters.php:660 #: plugins/instances/init.php:296 msgid "Edit" msgstr "Bearbeiten" @@ -1781,7 +1632,8 @@ msgstr "Zugriffsberechtigung" msgid "Last login" msgstr "Zuletzt angemeldet" -#: classes/pref/users.php:426 plugins/instances/init.php:337 +#: classes/pref/users.php:426 +#: plugins/instances/init.php:337 msgid "Click to edit" msgstr "Zum Bearbeiten klicken" @@ -1793,7 +1645,8 @@ msgstr "Keine Benutzer definiert." msgid "No matching users found." msgstr "Keine zugehörigen Benutzer gefunden." -#: classes/pref/labels.php:22 classes/pref/filters.php:268 +#: classes/pref/labels.php:22 +#: classes/pref/filters.php:268 #: classes/pref/filters.php:725 msgid "Caption" msgstr "Titel" @@ -1825,44 +1678,47 @@ msgstr "Artikel, die auf diesen Filter passen: " #: classes/pref/filters.php:133 msgid "No recent articles matching this filter have been found." -msgstr "" -"Keine kürzlich erschienenen Artikel gefunden, die auf diesen Filter passen." +msgstr "Keine kürzlich erschienenen Artikel gefunden, die auf diesen Filter passen." #: classes/pref/filters.php:137 -msgid "" -"Complex expressions might not give results while testing due to issues with " -"database server regexp implementation." -msgstr "" -"Komplexe Filter liefern im Testmodus möglichweise keine Ergebnisse, da es " -"Probleme mit der RegExp-Implementierung des Datenbankservers gibt." +msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +msgstr "Komplexe Filter liefern im Testmodus möglichweise keine Ergebnisse, da es Probleme mit der RegExp-Implementierung des Datenbankservers gibt." -#: classes/pref/filters.php:274 classes/pref/filters.php:729 +#: classes/pref/filters.php:274 +#: classes/pref/filters.php:729 #: classes/pref/filters.php:844 msgid "Match" msgstr "Kriterien" -#: classes/pref/filters.php:288 classes/pref/filters.php:336 -#: classes/pref/filters.php:743 classes/pref/filters.php:770 +#: classes/pref/filters.php:288 +#: classes/pref/filters.php:336 +#: classes/pref/filters.php:743 +#: classes/pref/filters.php:770 msgid "Add" msgstr "Hinzufügen" -#: classes/pref/filters.php:322 classes/pref/filters.php:756 +#: classes/pref/filters.php:322 +#: classes/pref/filters.php:756 msgid "Apply actions" msgstr "Aktionen anwenden" -#: classes/pref/filters.php:372 classes/pref/filters.php:785 +#: classes/pref/filters.php:372 +#: classes/pref/filters.php:785 msgid "Enabled" msgstr "Aktiviert" -#: classes/pref/filters.php:381 classes/pref/filters.php:788 +#: classes/pref/filters.php:381 +#: classes/pref/filters.php:788 msgid "Match any rule" msgstr "Ein erfülltes Kriterium ist ausreichend" -#: classes/pref/filters.php:390 classes/pref/filters.php:791 +#: classes/pref/filters.php:390 +#: classes/pref/filters.php:791 msgid "Inverse matching" msgstr "Invertierte Übereinstimmung" -#: classes/pref/filters.php:402 classes/pref/filters.php:798 +#: classes/pref/filters.php:402 +#: classes/pref/filters.php:798 msgid "Test" msgstr "Test" @@ -1879,12 +1735,14 @@ msgstr "%s innerhalb %s von %s %s" msgid "Combine" msgstr "Zusammenfügen" -#: classes/pref/filters.php:663 classes/pref/feeds.php:1279 +#: classes/pref/filters.php:663 +#: classes/pref/feeds.php:1279 #: classes/pref/feeds.php:1293 msgid "Reset sort order" msgstr "Sortierreihenfolge zurücksetzen" -#: classes/pref/filters.php:671 classes/pref/feeds.php:1318 +#: classes/pref/filters.php:671 +#: classes/pref/feeds.php:1318 msgid "Rescore articles" msgstr "Artikel neu bewerten" @@ -1900,7 +1758,8 @@ msgstr "Invertiere reguläre Ausdrücke" msgid "on field" msgstr "in Feld" -#: classes/pref/filters.php:864 js/PrefFilterTree.js:45 +#: classes/pref/filters.php:864 +#: js/PrefFilterTree.js:45 #: plugins/digest/digest.js:242 msgid "in" msgstr "in" @@ -1909,7 +1768,8 @@ msgstr "in" msgid "Save rule" msgstr "Regel speichern" -#: classes/pref/filters.php:877 js/functions.js:1063 +#: classes/pref/filters.php:877 +#: js/functions.js:1013 msgid "Add rule" msgstr "Regel hinzufügen" @@ -1925,7 +1785,8 @@ msgstr "mit Parametern:" msgid "Save action" msgstr "Aktion speichern" -#: classes/pref/filters.php:944 js/functions.js:1089 +#: classes/pref/filters.php:944 +#: js/functions.js:1039 msgid "Add action" msgstr "Aktion hinzufügen" @@ -1933,245 +1794,423 @@ msgstr "Aktion hinzufügen" msgid "[No caption]" msgstr "[kein Titel]" -#: classes/pref/prefs.php:17 +#: classes/pref/prefs.php:18 +msgid "General" +msgstr "Allgemein" + +#: classes/pref/prefs.php:19 +msgid "Interface" +msgstr "Oberfläche" + +#: classes/pref/prefs.php:20 +msgid "Advanced" +msgstr "Erweiterte Einstellungen" + +#: classes/pref/prefs.php:21 +msgid "Digest" +msgstr "" + +#: classes/pref/prefs.php:25 +#, fuzzy +msgid "Allow duplicate articles" +msgstr "Duplikate zulassen" + +#: classes/pref/prefs.php:26 +msgid "Assign articles to labels automatically" +msgstr "Artikel den Labeln automatisch zuordnen" + +#: classes/pref/prefs.php:27 +msgid "Blacklisted tags" +msgstr "Gesperrte Tags" + +#: classes/pref/prefs.php:27 +msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." +msgstr "Bei der automatischen Erkennung von Tags in Artikeln werden die folgenden nicht verwendet (durch Komma getrennte Liste)." + +#: classes/pref/prefs.php:28 +msgid "Automatically mark articles as read" +msgstr "Artikel automatisch als gelesen markieren" + +#: classes/pref/prefs.php:28 +msgid "This option enables marking articles as read automatically while you scroll article list." +msgstr "Diese Option aktiviert das automatische \"Als gelesen markieren\" im kombinierten Anzeigemodus (ausgenommen ist der Neue-Artikel-Feed), während Sie durch die Artikelliste scrollen." + +#: classes/pref/prefs.php:29 +msgid "Automatically expand articles in combined mode" +msgstr "Artikel im Kombinierten Modus automatisch aufklappen" + +#: classes/pref/prefs.php:30 +msgid "Combined feed display" +msgstr "Kombinierte Feed-Anzeige" + +#: classes/pref/prefs.php:30 +msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" +msgstr "Erweiterte Anzeigeliste für Artikel, anstelle von einzelnen Fenstern für Schlagzeilen und Artikelinhalt" + +#: classes/pref/prefs.php:31 +msgid "Confirm marking feed as read" +msgstr "Bestätigung um Feed als gelesen zu markieren" + +#: classes/pref/prefs.php:32 +msgid "Amount of articles to display at once" +msgstr "Anzahl der Artikel, die gleichzeitig geladen werden" + +#: classes/pref/prefs.php:33 +msgid "Default interval between feed updates" +msgstr "Standard Intervall zwischen Feed-Aktualisierungen" + +#: classes/pref/prefs.php:34 +msgid "Mark articles in e-mail digest as read" +msgstr "Artikel in E-Mail-Zusammenfassung als gelesen markieren" + +#: classes/pref/prefs.php:35 +msgid "Enable e-mail digest" +msgstr "Aktiviere E-Mail-Zusammenfassung" + +#: classes/pref/prefs.php:35 +msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" +msgstr "Diese Option aktiviert das Senden einer täglichen Zusammenfassung über neue (und ungelesene) Schlagzeilen an Ihre angegebene E-Mail-Adresse" + +#: classes/pref/prefs.php:36 +msgid "Try to send digests around specified time" +msgstr "Zusammenfassungen zu einer bestimmten Uhrzeit zu senden" + +#: classes/pref/prefs.php:36 +msgid "Uses UTC timezone" +msgstr "Benutzt UTC Zeitzone" + +#: classes/pref/prefs.php:37 +msgid "Enable API access" +msgstr "" + +#: classes/pref/prefs.php:37 +msgid "Allows external clients to access this account through the API" +msgstr "" + +#: classes/pref/prefs.php:38 +msgid "Enable feed categories" +msgstr "Feedkategorien aktivieren" + +#: classes/pref/prefs.php:39 +msgid "Sort feeds by unread articles count" +msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" + +#: classes/pref/prefs.php:40 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximales Alter neuer Artikel (in Stunden)" + +#: classes/pref/prefs.php:41 +msgid "Hide feeds with no unread articles" +msgstr "Feeds ohne unglesene Nachrichten verbergen" + +#: classes/pref/prefs.php:42 +msgid "Show special feeds when hiding read feeds" +msgstr "Sonderfeeds anzeigen wenn gelesene Feeds verborgen werden" + +#: classes/pref/prefs.php:43 +msgid "Long date format" +msgstr "Langes Datumsformat" + +#: classes/pref/prefs.php:44 +msgid "On catchup show next feed" +msgstr "Den nächsten Feed anzeigen" + +#: classes/pref/prefs.php:44 +msgid "Automatically open next feed with unread articles after marking one as read" +msgstr "Automatisch nächsten Feed mit ungelesenen Artikeln laden, nachdem ein Feed als gelesen markiert wurde" + +#: classes/pref/prefs.php:45 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Alte Artikel nach dieser Anzahl an Tagen löschen (0 - deaktivert)" + +#: classes/pref/prefs.php:46 +msgid "Purge unread articles" +msgstr "Ungelesene Artikel löschen" + +#: classes/pref/prefs.php:47 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Schlagzeilensortierung umkehren (älteste zuerst)" + +#: classes/pref/prefs.php:48 +msgid "Short date format" +msgstr "Kurzes Datumsformat" + +#: classes/pref/prefs.php:49 +msgid "Show content preview in headlines list" +msgstr "Inhaltsvorschau in der Schlagzeilenliste anzeigen" + +#: classes/pref/prefs.php:50 +msgid "Sort headlines by feed date" +msgstr "Feeds nach Schlagzeilendatum sortieren" + +#: classes/pref/prefs.php:50 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "Benutze feed-spezifisches Datum statt des lokalen Importdatums um Schlagzeilen zu sortieren." + +#: classes/pref/prefs.php:51 +msgid "Login with an SSL certificate" +msgstr "Mit SSL-Zertifikat anmelden" + +#: classes/pref/prefs.php:51 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klicken um Ihr SSL Clientzertifikat bei tt-rss zu registrieren" + +#: classes/pref/prefs.php:52 +msgid "Do not embed images in articles" +msgstr "Keine Bilder in Artikeln einbetten" + +#: classes/pref/prefs.php:53 +msgid "Strip unsafe tags from articles" +msgstr "Unsichere Tags aus Artikeln entfernen" + +#: classes/pref/prefs.php:53 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Alle außer den meist verwendeten HTML Tags beim Lesen entfernen." + +#: classes/pref/prefs.php:54 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Benutzerdefiniertes Stylesheet" + +#: classes/pref/prefs.php:54 +msgid "Customize CSS stylesheet to your liking" +msgstr "CSS Stylesheet nach Ihren Vorlieben anpassen" + +#: classes/pref/prefs.php:55 +msgid "User timezone" +msgstr "Zeitzone des Benutzers" + +#: classes/pref/prefs.php:56 +msgid "Group headlines in virtual feeds" +msgstr "Schlagzeilen in virtuellen Feeds gruppieren" + +#: classes/pref/prefs.php:56 +msgid "Special feeds, labels, and categories are grouped by originating feeds" +msgstr "" + +#: classes/pref/prefs.php:67 msgid "Old password cannot be blank." msgstr "Altes Passwort darf nicht leer sein." -#: classes/pref/prefs.php:22 +#: classes/pref/prefs.php:72 msgid "New password cannot be blank." msgstr "Neues Passwort darf nicht leer sein." -#: classes/pref/prefs.php:27 +#: classes/pref/prefs.php:77 msgid "Entered passwords do not match." msgstr "Die eingegebenen Passwörter stimmen nicht überein." -#: classes/pref/prefs.php:37 +#: classes/pref/prefs.php:87 msgid "Function not supported by authentication module." msgstr "Funktion vom Authentifizierungsmodul nicht unterstützt." -#: classes/pref/prefs.php:69 +#: classes/pref/prefs.php:119 msgid "The configuration was saved." msgstr "Die Einstellungen wurden gespeichert." -#: classes/pref/prefs.php:83 +#: classes/pref/prefs.php:133 #, php-format msgid "Unknown option: %s" msgstr "Unbekannte Option: %s" -#: classes/pref/prefs.php:97 +#: classes/pref/prefs.php:147 msgid "Your personal data has been saved." msgstr "Ihre persönlichen Daten wurden gespeichert." -#: classes/pref/prefs.php:137 +#: classes/pref/prefs.php:187 msgid "Personal data / Authentication" msgstr "Persönliche Daten / Authentifizierung" -#: classes/pref/prefs.php:157 +#: classes/pref/prefs.php:207 msgid "Personal data" msgstr "Persönliche Daten" -#: classes/pref/prefs.php:167 +#: classes/pref/prefs.php:217 msgid "Full name" msgstr "Vollständiger Name" -#: classes/pref/prefs.php:171 +#: classes/pref/prefs.php:221 msgid "E-mail" msgstr "E-Mail" -#: classes/pref/prefs.php:177 +#: classes/pref/prefs.php:227 msgid "Access level" msgstr "Zugriffsberechtigung" -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:237 msgid "Save data" msgstr "Speichern" -#: classes/pref/prefs.php:209 +#: classes/pref/prefs.php:259 msgid "Your password is at default value, please change it." msgstr "Sie nutzen das Standard Passwort, bitte ändern Sie es." -#: classes/pref/prefs.php:236 +#: classes/pref/prefs.php:286 msgid "Changing your current password will disable OTP." msgstr "Das Ändern des aktuellen Passworts deaktiviert Einmalpasswörter." -#: classes/pref/prefs.php:241 +#: classes/pref/prefs.php:291 msgid "Old password" msgstr "Altes Passwort" -#: classes/pref/prefs.php:244 +#: classes/pref/prefs.php:294 msgid "New password" msgstr "Neues Passwort" -#: classes/pref/prefs.php:249 +#: classes/pref/prefs.php:299 msgid "Confirm password" msgstr "Passwort bestätigen" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:309 msgid "Change password" msgstr "Passwort ändern" -#: classes/pref/prefs.php:265 +#: classes/pref/prefs.php:315 msgid "One time passwords / Authenticator" msgstr "Einmalpasswörter (OTP) / Authentifikator" -#: classes/pref/prefs.php:269 -msgid "" -"One time passwords are currently enabled. Enter your current password below " -"to disable." -msgstr "" -"Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese " -"zu deaktivieren." +#: classes/pref/prefs.php:319 +msgid "One time passwords are currently enabled. Enter your current password below to disable." +msgstr "Einmalpasswörter sind aktiviert. Gib dein aktuelles Passwort ein, um diese zu deaktivieren." -#: classes/pref/prefs.php:294 classes/pref/prefs.php:345 +#: classes/pref/prefs.php:344 +#: classes/pref/prefs.php:395 msgid "Enter your password" msgstr "Geben Sie Ihr Passwort ein" -#: classes/pref/prefs.php:305 +#: classes/pref/prefs.php:355 msgid "Disable OTP" msgstr "Einmalpasswörter ausschalten" -#: classes/pref/prefs.php:311 -msgid "" -"You will need a compatible Authenticator to use this. Changing your password " -"would automatically disable OTP." -msgstr "" -"Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort " -"ändern, wird diese Funktion automatisch ausgeschaltet." +#: classes/pref/prefs.php:361 +msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +msgstr "Sie benötigen einen kompatiblen Authentifikator. Sollten Sie Ihr Passwort ändern, wird diese Funktion automatisch ausgeschaltet." -#: classes/pref/prefs.php:313 +#: classes/pref/prefs.php:363 msgid "Scan the following code by the Authenticator application:" msgstr "Scannen Sie den folgenden Code mit Ihrem Authentifikator:" -#: classes/pref/prefs.php:354 +#: classes/pref/prefs.php:404 msgid "I have scanned the code and would like to enable OTP" -msgstr "" -"Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern " -"jetzt aktivieren" +msgstr "Ich habe den Code gescannt und möchte die Anmeldung mit Einmalpasswörtern jetzt aktivieren" -#: classes/pref/prefs.php:362 +#: classes/pref/prefs.php:412 msgid "Enable OTP" msgstr "Einmalpasswörter einschalten" -#: classes/pref/prefs.php:400 +#: classes/pref/prefs.php:450 msgid "Some preferences are only available in default profile." msgstr "Einige Einstellungen sind nur im Standardprofil verfügbar." -#: classes/pref/prefs.php:491 +#: classes/pref/prefs.php:544 msgid "Customize" msgstr "Anpassen" -#: classes/pref/prefs.php:558 +#: classes/pref/prefs.php:604 msgid "Register" msgstr "Registrieren" -#: classes/pref/prefs.php:562 +#: classes/pref/prefs.php:608 msgid "Clear" msgstr "Löschen" -#: classes/pref/prefs.php:568 +#: classes/pref/prefs.php:614 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuelle Serverzeit: %s (UTC)" -#: classes/pref/prefs.php:601 +#: classes/pref/prefs.php:647 msgid "Save configuration" msgstr "Einstellungen speichern" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:650 msgid "Manage profiles" msgstr "Profile verwalten" -#: classes/pref/prefs.php:607 +#: classes/pref/prefs.php:653 msgid "Reset to defaults" msgstr "Auf Standardwerte zurücksetzen" -#: classes/pref/prefs.php:631 classes/pref/prefs.php:633 +#: classes/pref/prefs.php:677 +#: classes/pref/prefs.php:679 msgid "Plugins" msgstr "Plugins" -#: classes/pref/prefs.php:635 -msgid "" -"You will need to reload Tiny Tiny RSS for plugin changes to take effect." -msgstr "" -"Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." +#: classes/pref/prefs.php:681 +msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Du musst Tiny Tiny RSS neu laden, damit Pluginänderungen angewandt werden." -#: classes/pref/prefs.php:637 -msgid "" -"Download more plugins at tt-rss.org forums or wiki." -msgstr "" -"Mehr Plugins im tt-rss.org Forum oder im Wiki." +#: classes/pref/prefs.php:683 +msgid "Download more plugins at tt-rss.org forums or wiki." +msgstr "Mehr Plugins im tt-rss.org Forum oder im Wiki." -#: classes/pref/prefs.php:663 +#: classes/pref/prefs.php:709 msgid "System plugins" msgstr "System-Plugins" -#: classes/pref/prefs.php:667 classes/pref/prefs.php:721 +#: classes/pref/prefs.php:713 +#: classes/pref/prefs.php:767 msgid "Plugin" msgstr "Plugin" -#: classes/pref/prefs.php:668 classes/pref/prefs.php:722 +#: classes/pref/prefs.php:714 +#: classes/pref/prefs.php:768 msgid "Description" msgstr "Beschreibung" -#: classes/pref/prefs.php:669 classes/pref/prefs.php:723 +#: classes/pref/prefs.php:715 +#: classes/pref/prefs.php:769 msgid "Version" msgstr "Version" -#: classes/pref/prefs.php:670 classes/pref/prefs.php:724 +#: classes/pref/prefs.php:716 +#: classes/pref/prefs.php:770 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:699 classes/pref/prefs.php:756 +#: classes/pref/prefs.php:745 +#: classes/pref/prefs.php:802 msgid "more info" msgstr "weitere Informationen" -#: classes/pref/prefs.php:708 classes/pref/prefs.php:765 +#: classes/pref/prefs.php:754 +#: classes/pref/prefs.php:811 msgid "Clear data" msgstr "Daten löschen" -#: classes/pref/prefs.php:717 +#: classes/pref/prefs.php:763 msgid "User plugins" msgstr "Benutzer-Plugins" -#: classes/pref/prefs.php:780 +#: classes/pref/prefs.php:826 msgid "Enable selected plugins" msgstr "Ausgewählte Plugins aktivieren" -#: classes/pref/prefs.php:835 classes/pref/prefs.php:853 +#: classes/pref/prefs.php:881 +#: classes/pref/prefs.php:899 msgid "Incorrect password" msgstr "Falsches Passwort" -#: classes/pref/prefs.php:879 +#: classes/pref/prefs.php:925 #, php-format -msgid "" -"You can override colors, fonts and layout of your currently selected theme " -"with custom CSS declarations here. This file can be used as a baseline." -msgstr "" -"Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten " -"Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt " -"werden." +msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgstr "Sie können Farben, Schriftarten und das Layout Ihres aktuell gewählten Themas mit einem eigenen CSS-Stylesheet überschreiben. Diese Datei kann als Grundlage benutzt werden." -#: classes/pref/prefs.php:919 +#: classes/pref/prefs.php:965 msgid "Create profile" msgstr "Profil erstellen" -#: classes/pref/prefs.php:942 classes/pref/prefs.php:972 +#: classes/pref/prefs.php:988 +#: classes/pref/prefs.php:1018 msgid "(active)" msgstr "(aktiv)" -#: classes/pref/prefs.php:1006 +#: classes/pref/prefs.php:1052 msgid "Remove selected profiles" msgstr "Ausgewählte Profile entfernen" -#: classes/pref/prefs.php:1008 +#: classes/pref/prefs.php:1054 msgid "Activate profile" msgstr "Profil aktivieren" @@ -2183,43 +2222,47 @@ msgstr "Ankreuzen um das Feld zu aktivieren" msgid "Feed Title" msgstr "Feed-Titel" -#: classes/pref/feeds.php:568 classes/pref/feeds.php:793 +#: classes/pref/feeds.php:568 +#: classes/pref/feeds.php:793 msgid "Update" msgstr "Aktualisieren" -#: classes/pref/feeds.php:583 classes/pref/feeds.php:809 +#: classes/pref/feeds.php:583 +#: classes/pref/feeds.php:809 msgid "Article purging:" msgstr "Artikel löschen:" #: classes/pref/feeds.php:606 -msgid "" -"Hint: you need to fill in your login information if your feed " -"requires authentication, except for Twitter feeds." -msgstr "" -"Hinweis: Sie müssen Ihre Login-Informationen eingeben, wenn Ihr Feed " -"eine Authentifizierung erfordert (außer Twitter-Feeds)." +msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgstr "Hinweis: Sie müssen Ihre Login-Informationen eingeben, wenn Ihr Feed eine Authentifizierung erfordert (außer Twitter-Feeds)." -#: classes/pref/feeds.php:622 classes/pref/feeds.php:838 +#: classes/pref/feeds.php:622 +#: classes/pref/feeds.php:838 msgid "Hide from Popular feeds" msgstr "Nicht unter beliebten Feeds aufführen" -#: classes/pref/feeds.php:634 classes/pref/feeds.php:844 +#: classes/pref/feeds.php:634 +#: classes/pref/feeds.php:844 msgid "Include in e-mail digest" msgstr "In E-Mail-Zusammenfassung aufnehmen" -#: classes/pref/feeds.php:647 classes/pref/feeds.php:850 +#: classes/pref/feeds.php:647 +#: classes/pref/feeds.php:850 msgid "Always display image attachments" msgstr "Angehängte Bilder immer anzeigen" -#: classes/pref/feeds.php:660 classes/pref/feeds.php:858 +#: classes/pref/feeds.php:660 +#: classes/pref/feeds.php:858 msgid "Do not embed images" msgstr "Bilder nicht einbetten" -#: classes/pref/feeds.php:673 classes/pref/feeds.php:866 +#: classes/pref/feeds.php:673 +#: classes/pref/feeds.php:866 msgid "Cache images locally" msgstr "Bilder lokal zwischenspeichern" -#: classes/pref/feeds.php:685 classes/pref/feeds.php:872 +#: classes/pref/feeds.php:685 +#: classes/pref/feeds.php:872 msgid "Mark updated articles as unread" msgstr "Aktualisierte Artikel als ungelesen markieren" @@ -2239,7 +2282,8 @@ msgstr "Abonnierte Feeds:" msgid "Resets PubSubHubbub subscription status for push-enabled feeds." msgstr "PubSubHubbub-Abonnementstatus für Push-fähige Feeds zurücksetzen." -#: classes/pref/feeds.php:1112 classes/pref/feeds.php:1165 +#: classes/pref/feeds.php:1112 +#: classes/pref/feeds.php:1165 msgid "All done." msgstr "Fertig." @@ -2255,26 +2299,27 @@ msgstr "Inaktive Feeds" msgid "Edit selected feeds" msgstr "Bearbeite ausgewählte Feeds" -#: classes/pref/feeds.php:1281 js/prefs.js:1770 +#: classes/pref/feeds.php:1281 +#: js/prefs.js:1770 msgid "Batch subscribe" msgstr "Mehrere Feeds abonnieren" -#: classes/pref/feeds.php:1286 +#: classes/pref/feeds.php:1288 msgid "Categories" msgstr "Kategorien" -#: classes/pref/feeds.php:1289 +#: classes/pref/feeds.php:1291 msgid "Add category" msgstr "Kategorie anlegen" -#: classes/pref/feeds.php:1291 -msgid "(Un)hide empty categories" -msgstr "Zeige/Verstecke leere Kategorien" - #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Ausgewählte Kategorien löschen" +#: classes/pref/feeds.php:1304 +msgid "(Un)hide empty categories" +msgstr "Zeige/Verstecke leere Kategorien" + #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Mehr Aktionen..." @@ -2292,12 +2337,8 @@ msgid "OPML" msgstr "OPML" #: classes/pref/feeds.php:1370 -msgid "" -"Using OPML you can export and import your feeds, filters, labels and Tiny " -"Tiny RSS settings." -msgstr "" -"Über OPML können Feeds, Filter, Label und Tiny-Tiny-RSS-Einstellungen " -"importiert und exportiert werden." +msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgstr "Über OPML können Feeds, Filter, Label und Tiny-Tiny-RSS-Einstellungen importiert und exportiert werden." #: classes/pref/feeds.php:1372 msgid "Only main settings profile can be migrated using OPML." @@ -2320,21 +2361,12 @@ msgid "Export OPML" msgstr "OPML exportieren" #: classes/pref/feeds.php:1399 -msgid "" -"Your OPML can be published publicly and can be subscribed by anyone who " -"knows the URL below." -msgstr "" -"Ihre OPML können veröffentlicht werden, so dass jeder, der die URL kennt, " -"diese abonnieren kann." +msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgstr "Ihre OPML können veröffentlicht werden, so dass jeder, der die URL kennt, diese abonnieren kann." #: classes/pref/feeds.php:1401 -msgid "" -"Published OPML does not include your Tiny Tiny RSS settings, feeds that " -"require authentication or feeds hidden from Popular feeds." -msgstr "" -"Eine öffentliche OPML enthält keine Tiny-Tiny-RSS-Einstellungen, " -"passwortgeschützte Feeds oder Feeds, die nicht in den beliebten Feeds " -"auftauchen sollen." +msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgstr "Eine öffentliche OPML enthält keine Tiny-Tiny-RSS-Einstellungen, passwortgeschützte Feeds oder Feeds, die nicht in den beliebten Feeds auftauchen sollen." #: classes/pref/feeds.php:1403 msgid "Public OPML URL" @@ -2349,12 +2381,8 @@ msgid "Firefox integration" msgstr "Firefox-Integration" #: classes/pref/feeds.php:1416 -msgid "" -"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " -"link below." -msgstr "" -"Tiny Tiny RSS kann durch den folgenden Link als Feedreader für Firefox " -"verwendet werden." +msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgstr "Tiny Tiny RSS kann durch den folgenden Link als Feedreader für Firefox verwendet werden." #: classes/pref/feeds.php:1423 msgid "Click here to register this site as a feed reader." @@ -2369,12 +2397,8 @@ msgid "Published articles and generated feeds" msgstr "Veröffentlichte Artikel und erzeugte Feeds" #: classes/pref/feeds.php:1435 -msgid "" -"Published articles are exported as a public RSS feed and can be subscribed " -"by anyone who knows the URL specified below." -msgstr "" -"Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und " -"können von jedem abonniert werden, der die nachstehende URL kennt." +msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgstr "Veröffentlichte Artikel werden als öffentlicher RSS-Feed exportiert und können von jedem abonniert werden, der die nachstehende URL kennt." #: classes/pref/feeds.php:1441 msgid "Display URL" @@ -2397,18 +2421,16 @@ msgid "Unshare all articles" msgstr "Alle veröffentlichten Artikel zurückziehen" #: classes/pref/feeds.php:1529 -msgid "" -"These feeds have not been updated with new content for 3 months (oldest " -"first):" -msgstr "" -"Folgende Feeds konnten seit 3 Monaten nicht aktualisiert werden (älteste " -"zuerst):" +msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgstr "Folgende Feeds konnten seit 3 Monaten nicht aktualisiert werden (älteste zuerst):" -#: classes/pref/feeds.php:1566 classes/pref/feeds.php:1636 +#: classes/pref/feeds.php:1566 +#: classes/pref/feeds.php:1636 msgid "Click to edit feed" msgstr "Zum Bearbeiten klicken" -#: classes/pref/feeds.php:1584 classes/pref/feeds.php:1656 +#: classes/pref/feeds.php:1584 +#: classes/pref/feeds.php:1656 msgid "Unsubscribe from selected feeds" msgstr "Ausgewählte Feeds abbestellen" @@ -2418,9 +2440,7 @@ msgstr "Folgende Feeds konnten aufgrund von Fehlern nicht aktualisiert werden:" #: classes/pref/feeds.php:1758 msgid "Add one valid RSS feed per line (no feed detection is done)" -msgstr "" -"Einen gültigen RSS Feed pro Zeile hinzufügen (Es findet keine Feederkennung " -"statt)" +msgstr "Einen gültigen RSS Feed pro Zeile hinzufügen (Es findet keine Feederkennung statt)" #: classes/pref/feeds.php:1767 msgid "Feeds to subscribe, One per line" @@ -2431,12 +2451,8 @@ msgid "Feeds require authentication." msgstr "Feeds benötigen Authentifizierung." #: plugins/digest/digest_body.php:59 -msgid "" -"Your browser doesn't support Javascript, which is required for this " -"application to function properly. Please check your browser settings." -msgstr "" -"Diese Anwendung benötigt Javascript um ordnungsgemäß zu funktionieren. Bitte " -"überprüfen Sie Ihre Browser-Einstellungen." +msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +msgstr "Diese Anwendung benötigt Javascript um ordnungsgemäß zu funktionieren. Bitte überprüfen Sie Ihre Browser-Einstellungen." #: plugins/digest/digest_body.php:74 msgid "Hello," @@ -2450,7 +2466,8 @@ msgstr "Reguläre Version" msgid "Close article" msgstr "Artikel schließen" -#: plugins/nsfw/init.php:32 plugins/nsfw/init.php:43 +#: plugins/nsfw/init.php:32 +#: plugins/nsfw/init.php:43 msgid "Not work safe (click to toggle)" msgstr "NSFW (Klicken zum Anzeigen)" @@ -2483,7 +2500,8 @@ msgstr "Altes Passwort ist falsch." #: plugins/mobile/mobile-functions.php:173 #: plugins/mobile/mobile-functions.php:200 #: plugins/mobile/mobile-functions.php:236 -#: plugins/mobile/mobile-functions.php:373 plugins/mobile/prefs.php:29 +#: plugins/mobile/mobile-functions.php:373 +#: plugins/mobile/prefs.php:29 msgid "Home" msgstr "Startseite" @@ -2499,15 +2517,21 @@ msgstr "Reguläre Version öffnen" msgid "Enable categories" msgstr "Feedkategorien aktivieren" -#: plugins/mobile/prefs.php:35 plugins/mobile/prefs.php:40 -#: plugins/mobile/prefs.php:46 plugins/mobile/prefs.php:51 -#: plugins/mobile/prefs.php:56 plugins/mobile/prefs.php:61 +#: plugins/mobile/prefs.php:35 +#: plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 +#: plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 +#: plugins/mobile/prefs.php:61 msgid "ON" msgstr "AN" -#: plugins/mobile/prefs.php:35 plugins/mobile/prefs.php:40 -#: plugins/mobile/prefs.php:46 plugins/mobile/prefs.php:51 -#: plugins/mobile/prefs.php:56 plugins/mobile/prefs.php:61 +#: plugins/mobile/prefs.php:35 +#: plugins/mobile/prefs.php:40 +#: plugins/mobile/prefs.php:46 +#: plugins/mobile/prefs.php:51 +#: plugins/mobile/prefs.php:56 +#: plugins/mobile/prefs.php:61 msgid "OFF" msgstr "AUS" @@ -2527,12 +2551,15 @@ msgstr "Gelesene Artikel und Feeds verstecken" msgid "Sort feeds by unread count" msgstr "Feeds nach Anzahl der ungelesenen Artikel sortieren" -#: plugins/mailto/init.php:52 plugins/mailto/init.php:58 -#: plugins/mail/init.php:71 plugins/mail/init.php:77 +#: plugins/mailto/init.php:52 +#: plugins/mailto/init.php:58 +#: plugins/mail/init.php:71 +#: plugins/mail/init.php:77 msgid "[Forwarded]" msgstr "[Weitergeleitet]" -#: plugins/mailto/init.php:52 plugins/mail/init.php:71 +#: plugins/mailto/init.php:52 +#: plugins/mail/init.php:71 msgid "Multiple articles" msgstr "Mehrere Artikel" @@ -2545,11 +2572,8 @@ msgid "Forward selected article(s) by email." msgstr "Markierte(n) Artikel per E-Mail weiterleiten" #: plugins/mailto/init.php:81 -msgid "" -"You should be able to edit the message before sending in your mail client." -msgstr "" -"Sie können die Nachricht bearbeiten, bevor Sie diese mit Ihrem Mailclienten " -"abschicken." +msgid "You should be able to edit the message before sending in your mail client." +msgstr "Sie können die Nachricht bearbeiten, bevor Sie diese mit Ihrem Mailclienten abschicken." #: plugins/mailto/init.php:86 msgid "Close this dialog" @@ -2560,13 +2584,8 @@ msgid "Bookmarklets" msgstr "Lesezeichen" #: plugins/bookmarklets/init.php:24 -msgid "" -"Drag the link below to your browser toolbar, open the feed you're interested " -"in in your browser and click on the link to subscribe to it." -msgstr "" -"Ziehen Sie den folgenden Link in Ihre Browser-Toolbar, öffnen Sie den Feed, " -"an dem Sie interessiert sind, in Ihren Browser und klicken auf den Link, um " -"ihn zu abonnieren." +msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it." +msgstr "Ziehen Sie den folgenden Link in Ihre Browser-Toolbar, öffnen Sie den Feed, an dem Sie interessiert sind, in Ihren Browser und klicken auf den Link, um ihn zu abonnieren." #: plugins/bookmarklets/init.php:28 #, php-format @@ -2579,83 +2598,73 @@ msgstr "Abonnieren in Tiny Tiny RSS" #: plugins/bookmarklets/init.php:34 msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" -msgstr "" -"Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu " -"teilen" +msgstr "Benutzen Sie dieses Lesezeichen, um beliebige Seiten mit Tiny Tiny RSS zu teilen" -#: plugins/import_export/init.php:64 +#: plugins/import_export/init.php:61 msgid "Import and export" msgstr "Import und Export" -#: plugins/import_export/init.php:66 +#: plugins/import_export/init.php:63 msgid "Article archive" msgstr "Artikelarchiv" -#: plugins/import_export/init.php:68 -msgid "" -"You can export and import your Starred and Archived articles for safekeeping " -"or when migrating between tt-rss instances." -msgstr "" -"Die markierten und archivierten Artikel können zur Aufbewahrung oder " -"Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." +#: plugins/import_export/init.php:65 +msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." +msgstr "Die markierten und archivierten Artikel können zur Aufbewahrung oder Migration zwischen verschiedenen Tiny Tiny RSS Instanzen exportiert werden." -#: plugins/import_export/init.php:71 +#: plugins/import_export/init.php:68 msgid "Export my data" msgstr "Meine Daten exportieren" -#: plugins/import_export/init.php:87 +#: plugins/import_export/init.php:84 msgid "Import" msgstr "Importieren" -#: plugins/import_export/init.php:221 +#: plugins/import_export/init.php:218 msgid "Could not import: incorrect schema version." msgstr "Import fehlgeschlagen: Falsche Schemaversion" -#: plugins/import_export/init.php:226 +#: plugins/import_export/init.php:223 msgid "Could not import: unrecognized document format." msgstr "Import fehlgeschlagen: Unbekanntes Dateiformat" -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:382 msgid "Finished: " msgstr "Beendet: " -#: plugins/import_export/init.php:386 +#: plugins/import_export/init.php:383 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " msgstr[0] "%d Artikel verarbeitet, " msgstr[1] "%d Artikel verarbeitet, " -#: plugins/import_export/init.php:387 +#: plugins/import_export/init.php:384 #, php-format msgid "%d imported, " msgid_plural "%d imported, " msgstr[0] "%d importiert, " msgstr[1] "%d importiert, " -#: plugins/import_export/init.php:388 +#: plugins/import_export/init.php:385 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." msgstr[0] "%d Feed erstellt." msgstr[1] "%d Feeds erstellt." -#: plugins/import_export/init.php:393 +#: plugins/import_export/init.php:390 msgid "Could not load XML document." msgstr "Konnte XML-Datei nicht laden." -#: plugins/import_export/init.php:405 +#: plugins/import_export/init.php:402 msgid "Prepare data" msgstr "Bereite Daten vor" -#: plugins/import_export/init.php:426 +#: plugins/import_export/init.php:423 #, php-format -msgid "" -"Could not upload file. You might need to adjust upload_max_filesize in PHP." -"ini (current value = %s)" -msgstr "" -"Datei konnte nicht hochgeladen werden. Möglicherweise muss " -"upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" +msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +msgstr "Datei konnte nicht hochgeladen werden. Möglicherweise muss upload_max_filesize in der PHP.ini angepasst werden. (Aktueller Wert = %s)" #: plugins/mail/init.php:92 msgid "From:" @@ -2673,7 +2682,8 @@ msgstr "Betreff:" msgid "Send e-mail" msgstr "E-Mail versenden" -#: plugins/note/init.php:28 plugins/note/note.js:11 +#: plugins/note/init.php:28 +#: plugins/note/note.js:11 msgid "Edit article note" msgstr "Artikelnotizen bearbeiten" @@ -2718,30 +2728,35 @@ msgstr "Importiere meine markierten Einträge" msgid "Linked" msgstr "Verbunden" -#: plugins/instances/init.php:207 plugins/instances/init.php:399 +#: plugins/instances/init.php:207 +#: plugins/instances/init.php:399 msgid "Instance" msgstr "Instanz" -#: plugins/instances/init.php:218 plugins/instances/init.php:315 +#: plugins/instances/init.php:218 +#: plugins/instances/init.php:315 #: plugins/instances/init.php:408 msgid "Instance URL" msgstr "Instanz-URL" -#: plugins/instances/init.php:229 plugins/instances/init.php:418 +#: plugins/instances/init.php:229 +#: plugins/instances/init.php:418 msgid "Access key:" msgstr "Zugriffsberechtigung:" -#: plugins/instances/init.php:232 plugins/instances/init.php:316 +#: plugins/instances/init.php:232 +#: plugins/instances/init.php:316 #: plugins/instances/init.php:421 msgid "Access key" msgstr "Zugriffsberechtigung" -#: plugins/instances/init.php:236 plugins/instances/init.php:425 +#: plugins/instances/init.php:236 +#: plugins/instances/init.php:425 msgid "Use one access key for both linked instances." -msgstr "" -"Benutzen Sie den selben Zugriffschlüssel für beide verbundenen Instanzen." +msgstr "Benutzen Sie den selben Zugriffschlüssel für beide verbundenen Instanzen." -#: plugins/instances/init.php:244 plugins/instances/init.php:433 +#: plugins/instances/init.php:244 +#: plugins/instances/init.php:433 msgid "Generate new key" msgstr "Neuen Zugriffsschlüssel erzeugen" @@ -2750,13 +2765,8 @@ msgid "Link instance" msgstr "Instanz verbinden" #: plugins/instances/init.php:307 -msgid "" -"You can connect other instances of Tiny Tiny RSS to this one to share " -"Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" -msgstr "" -"Sie können andere Instanzen von Tiny Tiny RSS mit dieser verbinden, um " -"beliebte Feeds zu teilen. Verbinden Sie diese Instanz von Tiny Tiny RSS mit " -"folgender URL:" +msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" +msgstr "Sie können andere Instanzen von Tiny Tiny RSS mit dieser verbinden, um beliebte Feeds zu teilen. Verbinden Sie diese Instanz von Tiny Tiny RSS mit folgender URL:" #: plugins/instances/init.php:317 msgid "Last connected" @@ -2782,7 +2792,8 @@ msgstr "Per URL teilen" msgid "You can share this article by the following unique URL:" msgstr "Sie können diesen Artikel über folgende eindeutige URL teilen:" -#: plugins/updater/init.php:317 plugins/updater/init.php:334 +#: plugins/updater/init.php:317 +#: plugins/updater/init.php:334 #: plugins/updater/updater.js:10 msgid "Update Tiny Tiny RSS" msgstr "Tiny Tiny RSS updaten" @@ -2792,12 +2803,8 @@ msgid "Your Tiny Tiny RSS installation is up to date." msgstr "Tiny Tiny RSS ist auf dem neuesten Stand." #: plugins/updater/init.php:347 -msgid "" -"Do not close this dialog until updating is finished. Backup your tt-rss " -"directory before continuing." -msgstr "" -"Diesen Dialog nicht Schließen, bis das Update abgeschlossen ist. Sichern Sie " -"ihr tt-rss Verzeichnis, bevor Sie fortfahren." +msgid "Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing." +msgstr "Diesen Dialog nicht Schließen, bis das Update abgeschlossen ist. Sichern Sie ihr tt-rss Verzeichnis, bevor Sie fortfahren." #: plugins/updater/init.php:350 msgid "Ready to update." @@ -2807,197 +2814,189 @@ msgstr "Bereit zum Updaten." msgid "Start update" msgstr "Starte update" -#: js/feedlist.js:404 js/feedlist.js:432 plugins/digest/digest.js:26 +#: js/feedlist.js:404 +#: js/feedlist.js:432 +#: plugins/digest/digest.js:26 msgid "Mark all articles in %s as read?" msgstr "Alle Artikel in %s als gelesen markieren?" #: js/feedlist.js:423 msgid "Mark all articles in %s older than 1 day as read?" -msgstr "" -"Alle Artikel in %s, die älter als einen Tag sind, als gelesen markieren?" +msgstr "Alle Artikel in %s, die älter als einen Tag sind, als gelesen markieren?" #: js/feedlist.js:426 msgid "Mark all articles in %s older than 1 week as read?" -msgstr "" -"Alle Artikel in %s, die älter als eine Woche sind, als gelesen markieren?" +msgstr "Alle Artikel in %s, die älter als eine Woche sind, als gelesen markieren?" #: js/feedlist.js:429 msgid "Mark all articles in %s older than 2 weeks as read?" -msgstr "" -"Alle Artikel in %s, die älter als 2 Wochen sind, als gelesen markieren?" +msgstr "Alle Artikel in %s, die älter als 2 Wochen sind, als gelesen markieren?" #: js/functions.js:92 -msgid "" -"Are you sure to report this exception to tt-rss.org? The report will include " -"your browser information. Your IP would be saved in the database." -msgstr "" -"Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der " -"Bericht enthält Ihre Browser-Informationen. Ihre IP-Adresse würde in der " -"Datenbank gespeichert werden." +msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database." +msgstr "Sind Sie sicher, dass Sie diesen Fehler an tt-rss.org melden wollen? Der Bericht enthält Ihre Browser-Informationen. Ihre IP-Adresse würde in der Datenbank gespeichert werden." #: js/functions.js:214 msgid "close" msgstr "schließen" -#: js/functions.js:621 -msgid "Date syntax appears to be correct:" -msgstr "Die Datumssyntax scheint korrekt zu sein:" - -#: js/functions.js:624 -msgid "Date syntax is incorrect." -msgstr "Die Datumssyntax ist falsch." - -#: js/functions.js:636 +#: js/functions.js:586 msgid "Error explained" msgstr "Fehler erklärt" -#: js/functions.js:718 +#: js/functions.js:668 msgid "Upload complete." msgstr "Upload fertig." -#: js/functions.js:742 +#: js/functions.js:692 msgid "Remove stored feed icon?" msgstr "Gespeichertes Feed-Symbol entfernen?" -#: js/functions.js:747 +#: js/functions.js:697 msgid "Removing feed icon..." msgstr "Feedsymbol wird entfernt." -#: js/functions.js:752 +#: js/functions.js:702 msgid "Feed icon removed." msgstr "Feedsymbol entfernt." -#: js/functions.js:774 +#: js/functions.js:724 msgid "Please select an image file to upload." msgstr "Bitte eine Bilddatei zum Hochladen auswählen." -#: js/functions.js:776 +#: js/functions.js:726 msgid "Upload new icon for this feed?" msgstr "Neues Symbol für diesen Feed hochladen?" -#: js/functions.js:777 +#: js/functions.js:727 msgid "Uploading, please wait..." msgstr "Lade hoch, bitte warten..." -#: js/functions.js:793 +#: js/functions.js:743 msgid "Please enter label caption:" msgstr "Bitte einen Label-Titel eingeben:" -#: js/functions.js:798 +#: js/functions.js:748 msgid "Can't create label: missing caption." msgstr "Kann das Label nicht hinzufügen: fehlender Titel." -#: js/functions.js:841 +#: js/functions.js:791 msgid "Subscribe to Feed" msgstr "Feed abonnieren" -#: js/functions.js:868 +#: js/functions.js:818 msgid "Subscribed to %s" msgstr "%s abonniert" -#: js/functions.js:873 +#: js/functions.js:823 msgid "Specified URL seems to be invalid." msgstr "Die angegebene URL scheint ungültig zu sein." -#: js/functions.js:876 +#: js/functions.js:826 msgid "Specified URL doesn't seem to contain any feeds." msgstr "Die angegebene URL scheint keine Feeds zu enthalten." -#: js/functions.js:929 +#: js/functions.js:879 msgid "Couldn't download the specified URL: %s" msgstr "Die angegebene URL konnte nicht heruntergeladen werden: %s" -#: js/functions.js:933 +#: js/functions.js:883 msgid "You are already subscribed to this feed." msgstr "Sie haben diesen Feed bereits abonniert." -#: js/functions.js:1063 +#: js/functions.js:1013 msgid "Edit rule" msgstr "Regel bearbeiten" -#: js/functions.js:1089 +#: js/functions.js:1039 msgid "Edit action" msgstr "Aktion bearbeiten" -#: js/functions.js:1126 +#: js/functions.js:1076 msgid "Create Filter" msgstr "Filter erstellen" -#: js/functions.js:1241 -msgid "" -"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification " -"hub again on next feed update." -msgstr "" -"Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten " -"Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." +#: js/functions.js:1191 +msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +msgstr "Abonnement zurücksetzen? Tiny Tiny RSS wird versuchen, sich bei der nächsten Feed-Aktualisierung erneut beim Benachrichtigungs-Hub anzumelden." -#: js/functions.js:1252 +#: js/functions.js:1202 msgid "Subscription reset." msgstr "Abonnement zurückgesetzt." -#: js/functions.js:1262 js/tt-rss.js:619 +#: js/functions.js:1212 +#: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "%s abbestellen?" -#: js/functions.js:1265 +#: js/functions.js:1215 msgid "Removing feed..." msgstr "Feed wird entfernt..." -#: js/functions.js:1373 +#: js/functions.js:1323 msgid "Please enter category title:" msgstr "Bitte geben Sie den Kategorietitel ein:" -#: js/functions.js:1404 +#: js/functions.js:1354 msgid "Generate new syndication address for this feed?" msgstr "Neue Veröffentlichungsadresse für diesen Feed erzeugen?" -#: js/functions.js:1408 js/prefs.js:1222 +#: js/functions.js:1358 +#: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Versuche, die Adresse zu ändern..." -#: js/functions.js:1595 js/tt-rss.js:396 js/tt-rss.js:600 +#: js/functions.js:1545 +#: js/tt-rss.js:396 +#: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Sie können diese Art von Feed nicht bearbeiten." -#: js/functions.js:1610 +#: js/functions.js:1560 msgid "Edit Feed" msgstr "Feed bearbeiten" -#: js/functions.js:1616 js/prefs.js:194 js/prefs.js:749 +#: js/functions.js:1566 +#: js/prefs.js:194 +#: js/prefs.js:749 msgid "Saving data..." msgstr "Speichere Daten..." -#: js/functions.js:1648 +#: js/functions.js:1598 msgid "More Feeds" msgstr "Weitere Feeds" -#: js/functions.js:1709 js/functions.js:1819 js/prefs.js:397 js/prefs.js:427 -#: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1198 +#: js/functions.js:1659 +#: js/functions.js:1769 +#: js/prefs.js:397 +#: js/prefs.js:427 +#: js/prefs.js:459 +#: js/prefs.js:642 +#: js/prefs.js:662 +#: js/prefs.js:1198 #: js/prefs.js:1343 msgid "No feeds are selected." msgstr "Keine Feeds ausgewählt." -#: js/functions.js:1751 -msgid "" -"Remove selected feeds from the archive? Feeds with stored articles will not " -"be removed." -msgstr "" -"Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten " -"Artikeln werden nicht gelöscht" +#: js/functions.js:1701 +msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +msgstr "Die ausgewählten Feeds aus dem Archiv löschen? Feeds mit gespeicherten Artikeln werden nicht gelöscht" -#: js/functions.js:1790 +#: js/functions.js:1740 msgid "Feeds with update errors" msgstr "Feeds mit Aktualisierungsfehlern" -#: js/functions.js:1801 js/prefs.js:1180 +#: js/functions.js:1751 +#: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Ausgewählte Feeds entfernen?" -#: js/functions.js:1804 js/prefs.js:1183 +#: js/functions.js:1754 +#: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Ausgewählte Feeds werden entfernt..." -#: js/functions.js:1902 +#: js/functions.js:1852 msgid "Help" msgstr "Hilfe" @@ -3049,23 +3048,23 @@ msgstr "Ausgewählte Label entfernen?" msgid "Removing selected labels..." msgstr "Ausgewählte Label werden entfernt..." -#: js/prefs.js:295 js/prefs.js:1384 +#: js/prefs.js:295 +#: js/prefs.js:1384 msgid "No labels are selected." msgstr "Keine Label ausgewählt." #: js/prefs.js:309 -msgid "" -"Remove selected users? Neither default admin nor your account will be " -"removed." -msgstr "" -"Ausgewählte Benutzer löschen? Weder der Administrator noch Ihr eigenes Konto " -"werden gelöscht." +msgid "Remove selected users? Neither default admin nor your account will be removed." +msgstr "Ausgewählte Benutzer löschen? Weder der Administrator noch Ihr eigenes Konto werden gelöscht." #: js/prefs.js:312 msgid "Removing selected users..." msgstr "Ausgewählte Benutzer werden entfernt..." -#: js/prefs.js:326 js/prefs.js:507 js/prefs.js:528 js/prefs.js:567 +#: js/prefs.js:326 +#: js/prefs.js:507 +#: js/prefs.js:528 +#: js/prefs.js:567 msgid "No users are selected." msgstr "Keine Benutzer ausgewählt." @@ -3077,7 +3076,9 @@ msgstr "Ausgewählte Filter entfernen?" msgid "Removing selected filters..." msgstr "Ausgewählte Filter werden entfernt..." -#: js/prefs.js:359 js/prefs.js:597 js/prefs.js:616 +#: js/prefs.js:359 +#: js/prefs.js:597 +#: js/prefs.js:616 msgid "No filters are selected." msgstr "Keine Filter ausgewählt." @@ -3117,7 +3118,9 @@ msgstr "Feld für Benutzername darf nicht leer sein." msgid "Saving user..." msgstr "Benutzer werden gespeichert..." -#: js/prefs.js:512 js/prefs.js:533 js/prefs.js:572 +#: js/prefs.js:512 +#: js/prefs.js:533 +#: js/prefs.js:572 msgid "Please select only one user." msgstr "Bitte nur einen Benutzer auswählen." @@ -3161,7 +3164,8 @@ msgstr "OPML Import" msgid "Please choose an OPML file first." msgstr "Bitte zuerst eine OPML-Datei auswählen." -#: js/prefs.js:815 plugins/import_export/import_export.js:115 +#: js/prefs.js:815 +#: plugins/import_export/import_export.js:115 #: plugins/googlereaderimport/init.js:45 msgid "Importing, please wait..." msgstr "Importiere, bitte warten..." @@ -3171,11 +3175,8 @@ msgid "Reset to defaults?" msgstr "Auf Standardwerte zurücksetzen?" #: js/prefs.js:1087 -msgid "" -"Remove category %s? Any nested feeds would be placed into Uncategorized." -msgstr "" -"Kategorie %s löschen? Feeds dieser Kategorie werden dann nach " -"Unkategorisiert verschoben." +msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgstr "Kategorie %s löschen? Feeds dieser Kategorie werden dann nach Unkategorisiert verschoben." #: js/prefs.js:1093 msgid "Removing category..." @@ -3223,8 +3224,7 @@ msgstr "Ausgewählte Feed werden neu bewertet..." #: js/prefs.js:1350 msgid "Rescore all articles? This operation may take a lot of time." -msgstr "" -"Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." +msgstr "Alle Artikel neu bewerten? Dieser Vorgang kann viel Zeit in Anspruch nehmen." #: js/prefs.js:1353 msgid "Rescoring feeds..." @@ -3239,11 +3239,8 @@ msgid "Settings Profiles" msgstr "Einstellungsprofile" #: js/prefs.js:1416 -msgid "" -"Remove selected profiles? Active and default profiles will not be removed." -msgstr "" -"Ausgewählte Profile löschen? Das aktive und das Standardprofil werden nicht " -"gelöscht." +msgid "Remove selected profiles? Active and default profiles will not be removed." +msgstr "Ausgewählte Profile löschen? Das aktive und das Standardprofil werden nicht gelöscht." #: js/prefs.js:1419 msgid "Removing selected profiles..." @@ -3253,11 +3250,13 @@ msgstr "Ausgewählte Profile werden entfernt..." msgid "No profiles are selected." msgstr "Keine Profile ausgewählt." -#: js/prefs.js:1442 js/prefs.js:1495 +#: js/prefs.js:1442 +#: js/prefs.js:1495 msgid "Activate selected profile?" msgstr "Ausgewählte Profile entfernen?" -#: js/prefs.js:1458 js/prefs.js:1511 +#: js/prefs.js:1458 +#: js/prefs.js:1511 msgid "Please choose a profile to activate." msgstr "Bitte ein Profil zum Aktivieren auswählen." @@ -3269,7 +3268,8 @@ msgstr "Profil wird erstellt..." msgid "This will invalidate all previously generated feed URLs. Continue?" msgstr "Alle zuvor erstellten Feed-URLs werden ungültig. Fortfahren?" -#: js/prefs.js:1522 js/prefs.js:1541 +#: js/prefs.js:1522 +#: js/prefs.js:1541 msgid "Clearing URLs..." msgstr "Leere URLs..." @@ -3321,7 +3321,8 @@ msgstr "Artikel nach Tag auswählen" msgid "You can't unsubscribe from the category." msgstr "Sie können die Kategorie nicht abbestellen." -#: js/tt-rss.js:613 js/tt-rss.js:765 +#: js/tt-rss.js:613 +#: js/tt-rss.js:765 msgid "Please select some feed first." msgstr "Bitte erst einen Feed auswählen." @@ -3341,124 +3342,141 @@ msgstr "Artikel werden neu bewertet..." msgid "New version available!" msgstr "Neue Version verfügbar!" -#: js/viewfeed.js:106 +#: js/viewfeed.js:104 msgid "Cancel search" msgstr "Suche abbrechen" -#: js/viewfeed.js:440 plugins/digest/digest.js:258 +#: js/viewfeed.js:438 +#: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Artikelmarkierung entfernen" -#: js/viewfeed.js:445 plugins/digest/digest.js:260 +#: js/viewfeed.js:443 +#: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Artikel markieren" -#: js/viewfeed.js:478 plugins/digest/digest.js:263 +#: js/viewfeed.js:476 +#: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" msgstr "Artikelveröffentlichung widerrufen" -#: js/viewfeed.js:679 js/viewfeed.js:707 js/viewfeed.js:734 js/viewfeed.js:797 -#: js/viewfeed.js:831 js/viewfeed.js:951 js/viewfeed.js:994 -#: js/viewfeed.js:1047 js/viewfeed.js:2096 plugins/mailto/init.js:7 +#: js/viewfeed.js:481 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Artikel veröffentlichen" + +#: js/viewfeed.js:677 +#: js/viewfeed.js:705 +#: js/viewfeed.js:732 +#: js/viewfeed.js:795 +#: js/viewfeed.js:829 +#: js/viewfeed.js:949 +#: js/viewfeed.js:992 +#: js/viewfeed.js:1045 +#: js/viewfeed.js:2051 +#: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Keine Artikel ausgewählt." -#: js/viewfeed.js:959 +#: js/viewfeed.js:957 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "%d ausgewählten Artikel in %s löschen?" msgstr[1] "%d ausgewählte Artikel in %s löschen?" -#: js/viewfeed.js:961 +#: js/viewfeed.js:959 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "%d ausgewählten Artikel löschen?" msgstr[1] "%d ausgewählte Artikel löschen?" -#: js/viewfeed.js:1003 +#: js/viewfeed.js:1001 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "%d ausgewählten Artikel in %s archivieren?" msgstr[1] "%d ausgewählte Artikel in %s archivieren?" -#: js/viewfeed.js:1006 +#: js/viewfeed.js:1004 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "%d archivierten Artikel zurück verschieben?" msgstr[1] "%d archivierte Artikel zurück verschieben?" -#: js/viewfeed.js:1008 -msgid "" -"Please note that unstarred articles might get purged on next feed update." -msgstr "" -"Bitte beachten Sie, das nicht markierte Artikel beim nächsten Update der " -"Feeds gelöscht werden könnten." +#: js/viewfeed.js:1006 +msgid "Please note that unstarred articles might get purged on next feed update." +msgstr "Bitte beachten Sie, das nicht markierte Artikel beim nächsten Update der Feeds gelöscht werden könnten." -#: js/viewfeed.js:1053 +#: js/viewfeed.js:1051 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "%d ausgewählten Artikel in %s als gelesen markieren?" msgstr[1] "%d ausgewählte Artikel in %s als gelesen markieren?" -#: js/viewfeed.js:1077 +#: js/viewfeed.js:1075 msgid "Edit article Tags" msgstr "Artikel-Tags bearbeiten" -#: js/viewfeed.js:1083 +#: js/viewfeed.js:1081 msgid "Saving article tags..." msgstr "Artikel-Tags werden gespeichert..." -#: js/viewfeed.js:1323 +#: js/viewfeed.js:1278 msgid "No article is selected." msgstr "Kein Artikel ausgewählt." -#: js/viewfeed.js:1358 +#: js/viewfeed.js:1313 msgid "No articles found to mark" msgstr "Keine Artikel zum markieren gefunden" -#: js/viewfeed.js:1360 +#: js/viewfeed.js:1315 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "%d Artikel als gelesen markieren?" msgstr[1] "%d Artikel als gelesen markieren?" -#: js/viewfeed.js:1872 +#: js/viewfeed.js:1827 msgid "Open original article" msgstr "Originalartikel öffnen" -#: js/viewfeed.js:1878 +#: js/viewfeed.js:1833 msgid "Display article URL" msgstr "Zeige Artikel-URL an" -#: js/viewfeed.js:1897 +#: js/viewfeed.js:1852 msgid "Toggle marked" msgstr "Markierung ein-/ausschalten" -#: js/viewfeed.js:1983 +#: js/viewfeed.js:1933 +msgid "Assign label" +msgstr "Label zuweisen" + +#: js/viewfeed.js:1938 msgid "Remove label" msgstr "Label entfernen" -#: js/viewfeed.js:2007 +#: js/viewfeed.js:1962 msgid "Playing..." msgstr "Abspielen..." -#: js/viewfeed.js:2008 +#: js/viewfeed.js:1963 msgid "Click to pause" msgstr "Zum Pausieren klicken" -#: js/viewfeed.js:2065 +#: js/viewfeed.js:2020 msgid "Please enter new score for selected articles:" msgstr "Bitte geben Sie eine neue Bewertung für die ausgewählten Artikel ab:" -#: js/viewfeed.js:2107 +#: js/viewfeed.js:2062 msgid "Please enter new score for this article:" msgstr "Bitte geben Sie eine neue Bewertung für diesen Artikel ab:" -#: js/viewfeed.js:2140 +#: js/viewfeed.js:2095 msgid "Article URL:" msgstr "Artikel-URL:" @@ -3492,10 +3510,10 @@ msgstr "Mehr laden..." #: plugins/embed_original/init.js:6 msgid "Sorry, your browser does not support sandboxed iframes." -msgstr "" -"Entschuldigung, dein Browser unterstützt keine \"Sandbox\" für iframes." +msgstr "Entschuldigung, dein Browser unterstützt keine \"Sandbox\" für iframes." -#: plugins/mailto/init.js:21 plugins/mail/mail.js:21 +#: plugins/mailto/init.js:21 +#: plugins/mail/mail.js:21 msgid "Forward article by email" msgstr "Artikel via E-Mail weiterleiten" @@ -3504,18 +3522,10 @@ msgid "Export Data" msgstr "Daten exportieren" #: plugins/import_export/import_export.js:40 -msgid "" -"Finished, exported %d article. You can download the data here." -msgid_plural "" -"Finished, exported %d articles. You can download the data here." -msgstr[0] "" -"Fertig, %d Artikel exportiert. Hier " -"herunterladen." -msgstr[1] "" -"Fertig, %d Artikel exportiert. Hier " -"herunterladen." +msgid "Finished, exported %d article. You can download the data here." +msgid_plural "Finished, exported %d articles. You can download the data here." +msgstr[0] "Fertig, %d Artikel exportiert. Hier herunterladen." +msgstr[1] "Fertig, %d Artikel exportiert. Hier herunterladen." #: plugins/import_export/import_export.js:93 msgid "Data Import" @@ -3553,7 +3563,8 @@ msgstr "Ausgewählte Instanzen entfernen?" msgid "Removing selected instances..." msgstr "Ausgewählte Instanzen werden entfernt..." -#: plugins/instances/instances.js:139 plugins/instances/instances.js:151 +#: plugins/instances/instances.js:139 +#: plugins/instances/instances.js:151 msgid "No instances are selected." msgstr "Keine Instanzen ausgewählt." @@ -3566,12 +3577,56 @@ msgid "Share article by URL" msgstr "Artikel über URL teilen" #: plugins/updater/updater.js:58 -msgid "" -"Live updating is considered experimental. Backup your tt-rss directory " -"before continuing. Please type 'yes' to continue." -msgstr "" -"Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, " -"bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." +msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." +msgstr "Direktes Updaten ist noch experimentell. Sichern Sie Ihr tt-rss Verzeichnis, bevor Sie fortfahren. Schreiben Sie 'yes' zum fortfahren." + +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Title or Content" +#~ msgstr "Titel oder Inhalt" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Content" +#~ msgstr "Inhalt" + +#~ msgid "Article Date" +#~ msgstr "Artikeldatum" + +#~ msgid "Delete article" +#~ msgstr "Artikel löschen" + +#~ msgid "Set starred" +#~ msgstr "Markierung setzen" + +#~ msgid "Assign tags" +#~ msgstr "Tags zuweisen" + +#~ msgid "Modify score" +#~ msgstr "Bewertung ändern" + +#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." +#~ msgstr "Diese Option dient zum Lesen von Feedsammlungen mit teilweise wiederkehrenden Artikeln. Ist diese Option deaktiviert, wird ein Artikel von unterschiedlichen Feedsquellen nur einmal angezeigt." + +#~ msgid "When this option is enabled, headlines in Special feeds and Labels are grouped by feeds" +#~ msgstr "Wenn diese Option aktiviert ist, werden Schlagzeilen in Sonderfeeds und Labels nach Feeds gruppiert" + +#~ msgid "Select one of the available CSS themes" +#~ msgstr "Wählen Sie eines der vorhandenen CSS-Themes aus" + +#~ msgid "Enable external API" +#~ msgstr "Externe API aktivieren" + +#~ msgid "Select theme" +#~ msgstr "Thema auswählen" + +#~ msgid "Date syntax appears to be correct:" +#~ msgstr "Die Datumssyntax scheint korrekt zu sein:" + +#~ msgid "Date syntax is incorrect." +#~ msgstr "Die Datumssyntax ist falsch." #, fuzzy #~ msgid "Refresh" @@ -3604,9 +3659,7 @@ msgstr "" #~ msgstr "Fertig." #~ msgid "Enable the options you wish to apply using checkboxes on the right:" -#~ msgstr "" -#~ "Benutzen Sie die Auswahlkästchen auf der rechten Seite um die gewünschen " -#~ "Optionen anzuwenden:" +#~ msgstr "Benutzen Sie die Auswahlkästchen auf der rechten Seite um die gewünschen Optionen anzuwenden:" #~ msgid "New articles available in this feed (click to show)" #~ msgstr "Neue Artikel verfügbar (klicken zum Anzeigen)" @@ -3644,12 +3697,8 @@ msgstr "" #~ msgid "Back to feeds" #~ msgstr "Zurück zu den Feeds" -#~ msgid "" -#~ "This will clear your stored authentication information for Twitter. " -#~ "Continue?" -#~ msgstr "" -#~ "Dies wird Ihre gespeicherten Authentifizierungsinformationen für Twitter " -#~ "löschen. Fortfahren?" +#~ msgid "This will clear your stored authentication information for Twitter. Continue?" +#~ msgstr "Dies wird Ihre gespeicherten Authentifizierungsinformationen für Twitter löschen. Fortfahren?" #~ msgid "Clearing credentials..." #~ msgstr "Berechtigungen werden gelöscht..." @@ -3748,12 +3797,8 @@ msgstr "" #~ msgid "Focus search (if present)" #~ msgstr "Fokussierte Suche (wenn gewählt)" -#~ msgid "" -#~ "Note: not all actions may be available, depending on Tiny Tiny RSS " -#~ "configuration and your access level." -#~ msgstr "" -#~ "Anmerkung: Abhängig von Ihren Tiny-Tiny-RSS-Einstellungen und " -#~ "Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." +#~ msgid "Note: not all actions may be available, depending on Tiny Tiny RSS configuration and your access level." +#~ msgstr "Anmerkung: Abhängig von Ihren Tiny-Tiny-RSS-Einstellungen und Zugriffsrechten könnten nicht alle Aktionen verfügbar sein." #~ msgid "Open article in new tab" #~ msgstr "Artikel in neuem Reiter öffnen" @@ -3828,9 +3873,7 @@ msgstr "" #~ msgstr "Mit Twitter verbinden" #~ msgid "Could not connect to Twitter. Refresh the page or try again later." -#~ msgstr "" -#~ "Konnte nicht zu Twitter verbinden. Aktualisieren Sie die Seite oder " -#~ "versuchen es später erneut." +#~ msgstr "Konnte nicht zu Twitter verbinden. Aktualisieren Sie die Seite oder versuchen es später erneut." #~ msgid "Congratulations! You have successfully registered with Twitter." #~ msgstr "Glückwunsch! Sie haben sich erfolgreich mit Twitter verbunden." @@ -3854,8 +3897,7 @@ msgstr "" #~ msgstr "Keine Feedkategorien definiert." #~ msgid "Hint: you can drag feeds and categories around." -#~ msgstr "" -#~ "Hinweis: Sie können Feeds und Kategorien mit der Maus herumziehen." +#~ msgstr "Hinweis: Sie können Feeds und Kategorien mit der Maus herumziehen." #~ msgid "Subscribing using bookmarklet" #~ msgstr "Mit Bookmarklet abonnieren" @@ -3863,19 +3905,11 @@ msgstr "" #~ msgid "Twitter" #~ msgstr "Twitter" -#~ msgid "" -#~ "Before you can update your Twitter feeds, you must register this instance " -#~ "of Tiny Tiny RSS with Twitter.com." -#~ msgstr "" -#~ "Bevor Sie Ihre Twitter-Feeds aktualisieren können, müssen Sie diese " -#~ "Instanz von Tiny Tiny RSS bei Twitter registrieren." +#~ msgid "Before you can update your Twitter feeds, you must register this instance of Tiny Tiny RSS with Twitter.com." +#~ msgstr "Bevor Sie Ihre Twitter-Feeds aktualisieren können, müssen Sie diese Instanz von Tiny Tiny RSS bei Twitter registrieren." -#~ msgid "" -#~ "You have been successfully registered with Twitter.com and should be able " -#~ "to access your Twitter feeds." -#~ msgstr "" -#~ "Sie haben diese Instanz erfolgreich mit Twitter verbunden und sollten nun " -#~ "auf Ihre Twitter-Feeds zugreifen können." +#~ msgid "You have been successfully registered with Twitter.com and should be able to access your Twitter feeds." +#~ msgstr "Sie haben diese Instanz erfolgreich mit Twitter verbunden und sollten nun auf Ihre Twitter-Feeds zugreifen können." #~ msgid "Register with Twitter.com" #~ msgstr "Mit Twitter registrieren" @@ -3892,9 +3926,5 @@ msgstr "" #~ msgid "Filter Test Results" #~ msgstr "Filtertestergebnis" -#~ msgid "" -#~ "When \"Mark as read\" button is clicked in toolbar, automatically open " -#~ "next feed with unread articles." -#~ msgstr "" -#~ "Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch " -#~ "nächsten Feed mit ungelesenen Artikeln öffnen." +#~ msgid "When \"Mark as read\" button is clicked in toolbar, automatically open next feed with unread articles." +#~ msgstr "Beim Klick auf \"Als gelesen markieren\" in der Toolbar, automatisch nächsten Feed mit ungelesenen Artikeln öffnen." diff --git a/messages.pot b/messages.pot index ec6a7ae05..29b5175c6 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:46+0400\n" +"POT-Creation-Date: 2013-04-02 16:55+0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -- cgit v1.2.3 From e5b6d44a5c02b2348cfdc8588b62803ce125aef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Tue, 2 Apr 2013 15:05:04 +0200 Subject: Add more czech strings. 42 remaining. --- locale/cs_CZ/LC_MESSAGES/messages.mo | Bin 41722 -> 60856 bytes locale/cs_CZ/LC_MESSAGES/messages.po | 1877 +++++++++++++++++++--------------- 2 files changed, 1039 insertions(+), 838 deletions(-) diff --git a/locale/cs_CZ/LC_MESSAGES/messages.mo b/locale/cs_CZ/LC_MESSAGES/messages.mo index 768461ece..3248ad168 100644 Binary files a/locale/cs_CZ/LC_MESSAGES/messages.mo and b/locale/cs_CZ/LC_MESSAGES/messages.mo differ diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po index 8bba909a6..4855cbfee 100644 --- a/locale/cs_CZ/LC_MESSAGES/messages.po +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-02 16:46+0400\n" -"PO-Revision-Date: 2013-03-31 18:03+0200\n" +"POT-Creation-Date: 2013-04-01 21:30+0400\n" +"PO-Revision-Date: 2013-04-02 14:55+0200\n" "Last-Translator: Tomáš Chvátal \n" "Language-Team: Czech \n" "Language: cs\n" @@ -150,8 +150,12 @@ msgstr "Před pokračováním prosím zazálohujte databázi." #: db-updater.php:104 #, php-format -msgid "Your Tiny Tiny RSS database needs update to the latest version (%d to %d)." -msgstr "Vaše databáze Tiny Tiny RSS potřebuje aktualizaci na poslední verzi (%d na %d)." +msgid "" +"Your Tiny Tiny RSS database needs update to the latest version (%d to " +"%d)." +msgstr "" +"Vaše databáze Tiny Tiny RSS potřebuje aktualizaci na poslední verzi (%d" +" na %d)." #: db-updater.php:118 msgid "Perform updates" @@ -181,10 +185,14 @@ msgstr "CHYBA" #: db-updater.php:160 #, php-format msgid "Finished. Performed %d update up to schema version %d." -msgid_plural "Finished. Performed %d updates up to schema version %d." -msgstr[0] "Dokončeno. Provedena %d aktualizace na schéma verze %d." -msgstr[1] "Dokončeno. Provedeny %d aktualizace na schéma verze %d." -msgstr[2] "Dokončeno. Provedeno %d aktualizací na schéma verze %d." +msgid_plural "" +"Finished. Performed %d updates up to schema version %d." +msgstr[0] "" +"Dokončeno. Provedena %d aktualizace na schéma verze %d." +msgstr[1] "" +"Dokončeno. Provedeny %d aktualizace na schéma verze %d." +msgstr[2] "" +"Dokončeno. Provedeno %d aktualizací na schéma verze %d." #: db-updater.php:170 msgid "Your database schema is from a newer version of Tiny Tiny RSS." @@ -196,16 +204,28 @@ msgid "Found schema version: %d, required: %d." msgstr "Nalezeno schéma verze: %d, vyžadováno: %d." #: db-updater.php:174 -msgid "Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer version and continue." -msgstr "Aktualizace schématu není možná. Aktualizujte Tiny Tiny RSS na novější verzi a pokračujte." +msgid "" +"Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer " +"version and continue." +msgstr "" +"Aktualizace schématu není možná. Aktualizujte Tiny Tiny RSS na novější verzi " +"a pokračujte." #: errors.php:9 -msgid "This program requires XmlHttpRequest to function properly. Your browser doesn't seem to support it." -msgstr "Program vyžaduje pro správnou funkci XmlHttpRequest. Váš prohlížeč ji zřejmě nepodporuje." +msgid "" +"This program requires XmlHttpRequest to function properly. Your browser " +"doesn't seem to support it." +msgstr "" +"Program vyžaduje pro správnou funkci XmlHttpRequest. Váš prohlížeč ji zřejmě " +"nepodporuje." #: errors.php:12 -msgid "This program requires cookies to function properly. Your browser doesn't seem to support them." -msgstr "Program vyžaduje pro správnou funkci povolené cookies. Váš prohlížeč je zřejmě nepodporuje." +msgid "" +"This program requires cookies to function properly. Your browser doesn't seem " +"to support them." +msgstr "" +"Program vyžaduje pro správnou funkci povolené cookies. Váš prohlížeč je " +"zřejmě nepodporuje." #: errors.php:15 msgid "Backend sanity check failed." @@ -216,8 +236,12 @@ msgid "Frontend sanity check failed." msgstr "Kontrola rozhraní selhala." #: errors.php:19 -msgid "Incorrect database schema version. <a href='db-updater.php'>Please update</a>." -msgstr "Nesprávná verze schématu databáze. <a href='db-updater.php'>Aktualizujte jej prosím</a>." +msgid "" +"Incorrect database schema version. <a href='db-updater.php'>Please " +"update</a>." +msgstr "" +"Nesprávná verze schématu databáze. <a " +"href='db-updater.php'>Aktualizujte jej prosím</a>." #: errors.php:21 msgid "Request not authorized." @@ -228,8 +252,12 @@ msgid "No operation to perform." msgstr "Nic k provedení." #: errors.php:25 -msgid "Could not display feed: query failed. Please check label match syntax or local configuration." -msgstr "Nelze zobrazit kanál: dotaz selhal. Zkontrolujte syntaxi detekce schody štítků a místní nastavení." +msgid "" +"Could not display feed: query failed. Please check label match syntax or " +"local configuration." +msgstr "" +"Nelze zobrazit kanál: dotaz selhal. Zkontrolujte syntaxi detekce schody " +"štítků a místní nastavení." #: errors.php:27 msgid "Denied. Your access level is insufficient to access this page." @@ -240,16 +268,22 @@ msgid "Configuration check failed" msgstr "Kontrola nastavení selhala" #: errors.php:31 -msgid "Your version of MySQL is not currently supported. Please see official site for more information." -msgstr "Vaše verze MySQL není podporována. Více informací najdete na oficiálních stránkách." +msgid "" +"Your version of MySQL is not currently supported. Please see official site " +"for more information." +msgstr "" +"Vaše verze MySQL není podporována. Více informací najdete na oficiálních " +"stránkách." #: errors.php:35 msgid "SQL escaping test failed, check your database and PHP configuration" -msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkontrolujte nastavení databáze a PHP" +msgstr "" +"Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, " +"zkontrolujte nastavení databáze a PHP" #: index.php:135 -#: index.php:152 -#: index.php:271 +#: index.php:154 +#: index.php:273 #: prefs.php:103 #: classes/backend.php:5 #: classes/pref/labels.php:296 @@ -259,10 +293,10 @@ msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkon #: js/feedlist.js:128 #: js/feedlist.js:448 #: js/functions.js:420 -#: js/functions.js:758 -#: js/functions.js:1194 -#: js/functions.js:1329 -#: js/functions.js:1641 +#: js/functions.js:808 +#: js/functions.js:1244 +#: js/functions.js:1379 +#: js/functions.js:1691 #: js/prefs.js:86 #: js/prefs.js:576 #: js/prefs.js:666 @@ -278,82 +312,83 @@ msgstr "Test ochrany proti podvratným SQL dotazům (SQL Injection) selhal, zkon #: js/prefs.js:1814 #: js/tt-rss.js:475 #: js/tt-rss.js:492 -#: js/viewfeed.js:772 -#: js/viewfeed.js:1200 +#: js/viewfeed.js:774 +#: js/viewfeed.js:1245 #: plugins/import_export/import_export.js:17 #: plugins/updater/updater.js:17 msgid "Loading, please wait..." msgstr "Načítám, čekejte prosím..." -#: index.php:166 +#: index.php:168 msgid "Collapse feedlist" msgstr "Sbalit seznam kanálů" -#: index.php:169 +#: index.php:171 msgid "Show articles" msgstr "Zobrazit články" -#: index.php:172 +#: index.php:174 msgid "Adaptive" msgstr "Adaptivní" -#: index.php:173 +#: index.php:175 msgid "All Articles" msgstr "Všechny články" -#: index.php:174 -#: include/functions.php:1926 +#: index.php:176 +#: include/functions.php:1925 #: classes/feeds.php:106 msgid "Starred" msgstr "S hvězdičkou" -#: index.php:175 -#: include/functions.php:1927 +#: index.php:177 +#: include/functions.php:1926 #: classes/feeds.php:107 msgid "Published" msgstr "Publikováno" -#: index.php:176 +#: index.php:178 #: classes/feeds.php:93 #: classes/feeds.php:105 msgid "Unread" msgstr "Nepřečteno" -#: index.php:177 +#: index.php:179 msgid "Unread First" msgstr "Nejprve nepřečtené" -#: index.php:178 +#: index.php:180 msgid "With Note" msgstr "S poznámkou" -#: index.php:179 +#: index.php:181 msgid "Ignore Scoring" msgstr "Ignorovat hodnocení" -#: index.php:182 +#: index.php:184 msgid "Sort articles" msgstr "Seřadit články" -#: index.php:185 +#: index.php:187 msgid "Default" msgstr "Výchozí" -#: index.php:186 +#: index.php:188 msgid "Newest first" msgstr "Nejprve nejnovější" -#: index.php:187 +#: index.php:189 msgid "Oldest first" msgstr "Nejprve nejstarší" -#: index.php:190 +#: index.php:192 msgid "Mark feed as read" msgstr "Označit kanál jako přečtený" -#: index.php:193 -#: index.php:235 -#: include/functions.php:1916 +#: index.php:195 +#: index.php:237 +#: include/functions.php:1915 +#: include/localized_schema.php:10 #: classes/feeds.php:111 #: classes/feeds.php:441 #: js/FeedTree.js:128 @@ -362,110 +397,110 @@ msgstr "Označit kanál jako přečtený" msgid "Mark as read" msgstr "Označit jako přečtené" -#: index.php:194 -#: include/functions.php:1812 -#: include/functions.php:1924 +#: index.php:196 +#: include/functions.php:1811 +#: include/functions.php:1923 msgid "All articles" msgstr "Všechny články" -#: index.php:195 +#: index.php:197 msgid "Older than one day" msgstr "Starší než jeden den" -#: index.php:196 +#: index.php:198 msgid "Older than one week" msgstr "Starší než jeden týden" -#: index.php:197 +#: index.php:199 msgid "Older than two weeks" msgstr "Starší než dva týdny" -#: index.php:212 +#: index.php:214 msgid "Communication problem with server." msgstr "Chyba při komunikaci se serverem." -#: index.php:220 +#: index.php:222 msgid "New version of Tiny Tiny RSS is available!" msgstr "Je dostupná nová verze Tiny Tiny RSS." -#: index.php:225 +#: index.php:227 msgid "Actions..." msgstr "Činnosti..." -#: index.php:227 +#: index.php:229 msgid "Preferences..." msgstr "Nastavení..." -#: index.php:228 +#: index.php:230 msgid "Search..." msgstr "Hledat..." -#: index.php:229 +#: index.php:231 msgid "Feed actions:" msgstr "Činnosti kanálů:" -#: index.php:230 +#: index.php:232 #: classes/handler/public.php:578 msgid "Subscribe to feed..." msgstr "Přihlásit se k odběru..." -#: index.php:231 +#: index.php:233 msgid "Edit this feed..." msgstr "Upravit kanál..." -#: index.php:232 +#: index.php:234 msgid "Rescore feed" msgstr "Přehodnotit kanál" -#: index.php:233 +#: index.php:235 #: classes/pref/feeds.php:717 -#: classes/pref/feeds.php:1283 +#: classes/pref/feeds.php:1304 #: js/PrefFeedTree.js:73 msgid "Unsubscribe" msgstr "Zrušit odběr" -#: index.php:234 +#: index.php:236 msgid "All feeds:" msgstr "Všechny kanály:" -#: index.php:236 +#: index.php:238 msgid "(Un)hide read feeds" msgstr "Zobrazit/Skrýt přečtené kanály" -#: index.php:237 +#: index.php:239 msgid "Other actions:" msgstr "Ostatní činnosti:" -#: index.php:239 +#: index.php:241 msgid "Switch to digest..." msgstr "Přepnout na souhrn..." -#: index.php:241 +#: index.php:243 msgid "Show tag cloud..." msgstr "Zobrazit seznam značek..." -#: index.php:242 -#: include/functions.php:1902 +#: index.php:244 +#: include/functions.php:1901 msgid "Toggle widescreen mode" msgstr "Přepnout širokoúhlý režim" -#: index.php:243 +#: index.php:245 msgid "Select by tags..." msgstr "Vybrat podle značek..." -#: index.php:244 +#: index.php:246 msgid "Create label..." msgstr "Vytvořit štítek..." -#: index.php:245 +#: index.php:247 msgid "Create filter..." msgstr "Vytvořit filtr..." -#: index.php:246 +#: index.php:248 msgid "Keyboard shortcuts help" msgstr "Nápověda ke klávesovým zkratkám" -#: index.php:255 +#: index.php:257 #: plugins/digest/digest_body.php:77 #: plugins/mobile/mobile-functions.php:62 #: plugins/mobile/mobile-functions.php:237 @@ -474,8 +509,8 @@ msgstr "Odhlásit se" #: prefs.php:36 #: prefs.php:121 -#: include/functions.php:1929 -#: classes/pref/prefs.php:427 +#: include/functions.php:1928 +#: classes/pref/prefs.php:377 msgid "Preferences" msgstr "Nastavení" @@ -500,8 +535,8 @@ msgid "Filters" msgstr "Filtry" #: prefs.php:130 -#: include/functions.php:1119 -#: include/functions.php:1755 +#: include/functions.php:1118 +#: include/functions.php:1754 #: classes/pref/labels.php:90 #: plugins/mobile/mobile-functions.php:198 msgid "Labels" @@ -521,8 +556,13 @@ msgid "New user registrations are administratively disabled." msgstr "Registrace nových uživatelů jsou zakázány správcem." #: register.php:217 -msgid "Your temporary password will be sent to the specified email. Accounts, which were not logged in once, are erased automatically 24 hours after temporary password is sent." -msgstr "Vaše dočasné heslo bude odesláno na zadaný e-mail. Účet, který se do 24 hodin od odeslání dočasného hesla nepřihlásí, bude smazán." +msgid "" +"Your temporary password will be sent to the specified email. Accounts, which " +"were not logged in once, are erased automatically 24 hours after temporary " +"password is sent." +msgstr "" +"Vaše dočasné heslo bude odesláno na zadaný e-mail. Účet, který se do 24 hodin " +"od odeslání dočasného hesla nepřihlásí, bude smazán." #: register.php:223 msgid "Desired login:" @@ -571,10 +611,10 @@ msgid "Tiny Tiny RSS data update script." msgstr "Skript aktualizace dat Tiny Tiny RSS." #: include/digest.php:109 -#: include/functions.php:1128 -#: include/functions.php:1656 -#: include/functions.php:1741 -#: include/functions.php:1763 +#: include/functions.php:1127 +#: include/functions.php:1655 +#: include/functions.php:1740 +#: include/functions.php:1762 #: classes/opml.php:416 #: classes/pref/feeds.php:222 msgid "Uncategorized" @@ -592,328 +632,605 @@ msgstr[2] "%d archivovaných článků" msgid "No feeds found." msgstr "Nenalezeny žádné kanály." -#: include/functions.php:1117 -#: include/functions.php:1753 +#: include/functions.php:1116 +#: include/functions.php:1752 #: plugins/mobile/mobile-functions.php:171 msgid "Special" msgstr "Speciální" -#: include/functions.php:1605 +#: include/functions.php:1604 #: classes/feeds.php:1101 #: classes/pref/filters.php:427 msgid "All feeds" msgstr "Všechny kanály" -#: include/functions.php:1806 +#: include/functions.php:1805 msgid "Starred articles" msgstr "Články s hvězdičkou" -#: include/functions.php:1808 +#: include/functions.php:1807 msgid "Published articles" msgstr "Publikované články" -#: include/functions.php:1810 +#: include/functions.php:1809 msgid "Fresh articles" msgstr "Nové články" -#: include/functions.php:1814 +#: include/functions.php:1813 msgid "Archived articles" msgstr "Archivované články" -#: include/functions.php:1816 +#: include/functions.php:1815 msgid "Recently read" msgstr "Nedávno přečtené" -#: include/functions.php:1879 +#: include/functions.php:1878 msgid "Navigation" msgstr "Navigace" -#: include/functions.php:1880 +#: include/functions.php:1879 msgid "Open next feed" msgstr "Otevřít následující kanál" -#: include/functions.php:1881 +#: include/functions.php:1880 msgid "Open previous feed" msgstr "Otevřít předchozí kanál" -#: include/functions.php:1882 +#: include/functions.php:1881 msgid "Open next article" msgstr "Otevřít následující článek" -#: include/functions.php:1883 +#: include/functions.php:1882 msgid "Open previous article" msgstr "Otevřít předchozí článek" -#: include/functions.php:1884 +#: include/functions.php:1883 msgid "Open next article (don't scroll long articles)" msgstr "Otevřít následující článek (neposouvat dlouhé články)" -#: include/functions.php:1885 +#: include/functions.php:1884 msgid "Open previous article (don't scroll long articles)" msgstr "Otevřít předchozí článek (neposouvat dlouhé články)" -#: include/functions.php:1886 +#: include/functions.php:1885 msgid "Show search dialog" msgstr "Zobrazit dialog hledání" -#: include/functions.php:1887 +#: include/functions.php:1886 msgid "Article" msgstr "Článek" -#: include/functions.php:1888 +#: include/functions.php:1887 msgid "Toggle starred" msgstr "Přepnout hvězdičku" -#: include/functions.php:1889 -#: js/viewfeed.js:1863 +#: include/functions.php:1888 +#: js/viewfeed.js:1908 msgid "Toggle published" msgstr "Přepnout publikováno" -#: include/functions.php:1890 -#: js/viewfeed.js:1841 +#: include/functions.php:1889 +#: js/viewfeed.js:1886 msgid "Toggle unread" msgstr "Přepnout přečteno" -#: include/functions.php:1891 +#: include/functions.php:1890 msgid "Edit tags" msgstr "Upravit značky" -#: include/functions.php:1892 +#: include/functions.php:1891 msgid "Dismiss selected" msgstr "" -#: include/functions.php:1893 +#: include/functions.php:1892 msgid "Dismiss read" msgstr "" -#: include/functions.php:1894 +#: include/functions.php:1893 msgid "Open in new window" msgstr "Otevřít v novém okně" -#: include/functions.php:1895 -#: js/viewfeed.js:1882 +#: include/functions.php:1894 +#: js/viewfeed.js:1927 msgid "Mark below as read" msgstr "Označit níže jako přečtené" -#: include/functions.php:1896 -#: js/viewfeed.js:1876 +#: include/functions.php:1895 +#: js/viewfeed.js:1921 msgid "Mark above as read" msgstr "Označit výše jako přečtené" -#: include/functions.php:1897 +#: include/functions.php:1896 msgid "Scroll down" msgstr "Posunout dolů" -#: include/functions.php:1898 +#: include/functions.php:1897 msgid "Scroll up" msgstr "Posunout nahoru" -#: include/functions.php:1899 +#: include/functions.php:1898 msgid "Select article under cursor" msgstr "Vybrat článek pod kurzorem" -#: include/functions.php:1900 +#: include/functions.php:1899 msgid "Email article" msgstr "Odeslat článek e-mailem" -#: include/functions.php:1901 +#: include/functions.php:1900 msgid "Close/collapse article" msgstr "Zavřít/sbalit článek" -#: include/functions.php:1903 +#: include/functions.php:1902 #: plugins/embed_original/init.php:33 msgid "Toggle embed original" msgstr "Přepnout vložený originál" -#: include/functions.php:1904 +#: include/functions.php:1903 msgid "Article selection" msgstr "Výběr článků" -#: include/functions.php:1905 +#: include/functions.php:1904 msgid "Select all articles" msgstr "Vybrat všechny články" -#: include/functions.php:1906 +#: include/functions.php:1905 msgid "Select unread" msgstr "Vybrat nepřečtené" -#: include/functions.php:1907 +#: include/functions.php:1906 msgid "Select starred" msgstr "Vybrat s hvězdičkou" -#: include/functions.php:1908 +#: include/functions.php:1907 msgid "Select published" msgstr "Vybrat publikované" -#: include/functions.php:1909 +#: include/functions.php:1908 msgid "Invert selection" msgstr "Obrátit výběr" -#: include/functions.php:1910 +#: include/functions.php:1909 msgid "Deselect everything" msgstr "Zrušit výběr" -#: include/functions.php:1911 +#: include/functions.php:1910 #: classes/pref/feeds.php:521 #: classes/pref/feeds.php:754 msgid "Feed" msgstr "Kanál" -#: include/functions.php:1912 +#: include/functions.php:1911 msgid "Refresh current feed" msgstr "Obnovit současný kanál" -#: include/functions.php:1913 +#: include/functions.php:1912 msgid "Un/hide read feeds" msgstr "Zobrazit/Skrýt přečtené kanály" -#: include/functions.php:1914 +#: include/functions.php:1913 #: classes/pref/feeds.php:1275 msgid "Subscribe to feed" msgstr "Přihlásit se k odběru" -#: include/functions.php:1915 +#: include/functions.php:1914 #: js/FeedTree.js:135 #: js/PrefFeedTree.js:67 msgid "Edit feed" msgstr "Upravit kanál" -#: include/functions.php:1917 +#: include/functions.php:1916 msgid "Reverse headlines" -msgstr "" +msgstr "Obrácené řazení nadpisů " -#: include/functions.php:1918 +#: include/functions.php:1917 msgid "Debug feed update" msgstr "Ladit aktualizaci kanálů" -#: include/functions.php:1919 +#: include/functions.php:1918 #: js/FeedTree.js:178 msgid "Mark all feeds as read" msgstr "Označit všechny kanály za přečtené" -#: include/functions.php:1920 +#: include/functions.php:1919 msgid "Un/collapse current category" msgstr "Rozbalit/sbalit aktuální kategorii" -#: include/functions.php:1921 +#: include/functions.php:1920 msgid "Toggle combined mode" msgstr "Přepnout kombinovaný režim" -#: include/functions.php:1922 +#: include/functions.php:1921 msgid "Toggle auto expand in combined mode" msgstr "Přepnout automatické rozbalení kombinovaném režimu" -#: include/functions.php:1923 +#: include/functions.php:1922 msgid "Go to" msgstr "Přejít na" -#: include/functions.php:1925 +#: include/functions.php:1924 msgid "Fresh" msgstr "Nové" -#: include/functions.php:1928 +#: include/functions.php:1927 #: js/tt-rss.js:431 #: js/tt-rss.js:584 msgid "Tag cloud" msgstr "Seznam značek" -#: include/functions.php:1930 +#: include/functions.php:1929 msgid "Other" msgstr "Ostatní" -#: include/functions.php:1931 +#: include/functions.php:1930 #: classes/pref/labels.php:281 msgid "Create label" msgstr "Vytvořit štítek" -#: include/functions.php:1932 +#: include/functions.php:1931 #: classes/pref/filters.php:654 msgid "Create filter" msgstr "Vytvořit filtr" -#: include/functions.php:1933 +#: include/functions.php:1932 msgid "Un/collapse sidebar" msgstr "Rozbalit/sbalit postranní lištu" -#: include/functions.php:1934 +#: include/functions.php:1933 msgid "Show help dialog" msgstr "Zobrazit nápovědu" -#: include/functions.php:2419 +#: include/functions.php:2418 #, php-format msgid "Search results: %s" msgstr "Výsledky hledání: %s" -#: include/functions.php:2910 -#: js/viewfeed.js:1969 +#: include/functions.php:2909 +#: js/viewfeed.js:2014 msgid "Click to play" msgstr "Klikněte pro přehrání" -#: include/functions.php:2911 -#: js/viewfeed.js:1968 +#: include/functions.php:2910 +#: js/viewfeed.js:2013 msgid "Play" msgstr "Přehrát" -#: include/functions.php:3028 +#: include/functions.php:3027 msgid " - " msgstr " - " -#: include/functions.php:3050 -#: include/functions.php:3344 -#: classes/article.php:281 +#: include/functions.php:3049 +#: include/functions.php:3343 +#: classes/rpc.php:408 msgid "no tags" msgstr "žádné značky" -#: include/functions.php:3060 -#: classes/feeds.php:686 -msgid "Edit tags for this article" -msgstr "Upravit značky pro článek" +#: include/functions.php:3059 +#: classes/feeds.php:686 +msgid "Edit tags for this article" +msgstr "Upravit značky pro článek" + +#: include/functions.php:3088 +#: classes/feeds.php:642 +msgid "Originally from:" +msgstr "Původně z:" + +#: include/functions.php:3101 +#: classes/feeds.php:655 +#: classes/pref/feeds.php:540 +msgid "Feed URL" +msgstr "URL kanálu" + +#: include/functions.php:3132 +#: classes/dlg.php:37 +#: classes/dlg.php:60 +#: classes/dlg.php:93 +#: classes/dlg.php:159 +#: classes/dlg.php:190 +#: classes/dlg.php:217 +#: classes/dlg.php:250 +#: classes/dlg.php:262 +#: classes/backend.php:105 +#: classes/pref/users.php:99 +#: classes/pref/filters.php:147 +#: classes/pref/prefs.php:1012 +#: classes/pref/feeds.php:1588 +#: classes/pref/feeds.php:1660 +#: plugins/import_export/init.php:409 +#: plugins/import_export/init.php:432 +#: plugins/googlereaderimport/init.php:168 +#: plugins/share/init.php:67 +#: plugins/updater/init.php:357 +msgid "Close this window" +msgstr "Zavřít toto okno" + +#: include/functions.php:3368 +msgid "(edit note)" +msgstr "(upravit poznámku)" + +#: include/functions.php:3601 +msgid "unknown type" +msgstr "neznámý typ" + +#: include/functions.php:3657 +msgid "Attachments" +msgstr "Přílohy" + +#: include/localized_schema.php:3 +msgid "Title" +msgstr "Název" + +#: include/localized_schema.php:4 +msgid "Title or Content" +msgstr "Nadpis nebo obsah" + +#: include/localized_schema.php:5 +msgid "Link" +msgstr "Odkaz" + +#: include/localized_schema.php:6 +msgid "Content" +msgstr "Obsah" + +#: include/localized_schema.php:7 +msgid "Article Date" +msgstr "Datum článku" + +#: include/localized_schema.php:9 +msgid "Delete article" +msgstr "Smazat článek" + +#: include/localized_schema.php:11 +msgid "Set starred" +msgstr "Nastavit hvězdičku" + +#: include/localized_schema.php:12 +#: js/viewfeed.js:483 +#: plugins/digest/digest.js:265 +#: plugins/digest/digest.js:754 +msgid "Publish article" +msgstr "Publikovat článek" + +#: include/localized_schema.php:13 +msgid "Assign tags" +msgstr "Přiřadit značky" + +#: include/localized_schema.php:14 +#: js/viewfeed.js:1978 +msgid "Assign label" +msgstr "Přiřadit štítek" + +#: include/localized_schema.php:15 +msgid "Modify score" +msgstr "Upravit hodnocení" + +#: include/localized_schema.php:17 +msgid "General" +msgstr "Obecné" + +#: include/localized_schema.php:18 +msgid "Interface" +msgstr "Rozhraní" + +#: include/localized_schema.php:19 +msgid "Advanced" +msgstr "Pokročilé" + +#: include/localized_schema.php:21 +msgid "" +"This option is useful when you are reading several planet-type aggregators " +"with partially colliding userbase. When disabled, it forces same posts from " +"different feeds to appear only once." +msgstr "" +"Volba užitečná pro sledování několika agregátorů s částečně prolínající " +"databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých " +"zdrojů a zobrazí je jako jeden." + +#: include/localized_schema.php:22 +msgid "" +"Display expanded list of feed articles, instead of separate displays for " +"headlines and article content" +msgstr "" +"Zobrazit rozbalený seznam článků z kanálu, místo odděleného zobrazení nadpisů " +"a obsahů článku" + +#: include/localized_schema.php:23 +msgid "" +"Automatically open next feed with unread articles after marking one as read" +msgstr "" +"Automaticky otevřít následující kanál s nepřečtenými články po označení " +"posledního jako přečteného" + +#: include/localized_schema.php:24 +msgid "" +"This option enables sending daily digest of new (and unread) headlines on " +"your configured e-mail address" +msgstr "" +"Umožňuje odesílání denních souhrnů nových (a nepřečtených) článků na vaší " +"nastavenou e-mailovou adresu" + +#: include/localized_schema.php:25 +msgid "" +"This option enables marking articles as read automatically while you scroll " +"article list." +msgstr "" +"Volba umožňující automatické označování článků jako přečtených při jejich " +"procházení v seznamu článků." + +#: include/localized_schema.php:26 +msgid "Strip all but most common HTML tags when reading articles." +msgstr "Při čtení článků odstranit všechny HTML značky, kromě základních." + +#: include/localized_schema.php:27 +msgid "" +"When auto-detecting tags in articles these tags will not be applied " +"(comma-separated list)." +msgstr "" +"Při detekci značek v článcích nebudou použity tyto značky (seznam oddělený " +"čárkami)." + +#: include/localized_schema.php:28 +msgid "" +"When this option is enabled, headlines in Special feeds and Labels are " +"grouped by feeds" +msgstr "" +"Pokud povoleno, tak budou nadpisy ve Speciálních kanálech a Štítky seskupeny " +"dle kanálů" + +#: include/localized_schema.php:29 +msgid "Customize CSS stylesheet to your liking" +msgstr "Přizpůsobte soubor vzhledu CSS dle vašich představ" + +#: include/localized_schema.php:30 +msgid "Use feed-specified date to sort headlines instead of local import date." +msgstr "" +"Použít datum specifikované kanálem místo data místního importu pro řazení " +"článků." + +#: include/localized_schema.php:31 +msgid "Click to register your SSL client certificate with tt-rss" +msgstr "Klikněte pro registraci klientského certifikátu SSL s tt-rss" + +#: include/localized_schema.php:32 +msgid "Uses UTC timezone" +msgstr "Používá časovou zónu UTC" + +#: include/localized_schema.php:33 +msgid "Select one of the available CSS themes" +msgstr "Vybrat jeden z dostupných motivů CSS" + +#: include/localized_schema.php:34 +msgid "Purge articles after this number of days (0 - disables)" +msgstr "Vymazat články podle stáří ve dnech (0 - nikdy nemazat)" + +#: include/localized_schema.php:35 +msgid "Default interval between feed updates" +msgstr "Výchozí interval mezi aktualizacemi kanálů" + +#: include/localized_schema.php:36 +msgid "Amount of articles to display at once" +msgstr "Počet naráz zobrazovaných článků" + +#: include/localized_schema.php:37 +msgid "Allow duplicate posts" +msgstr "Povolit duplicitní příspěvky" + +#: include/localized_schema.php:38 +msgid "Enable feed categories" +msgstr "" + +#: include/localized_schema.php:39 +msgid "Show content preview in headlines list" +msgstr "" + +#: include/localized_schema.php:40 +msgid "Short date format" +msgstr "Krátký formát data" + +#: include/localized_schema.php:41 +msgid "Long date format" +msgstr "Dlouhý formát data" + +#: include/localized_schema.php:42 +msgid "Combined feed display" +msgstr "" + +#: include/localized_schema.php:43 +msgid "Hide feeds with no unread articles" +msgstr "Skrýt kanály bez nepřečtených článků" + +#: include/localized_schema.php:44 +msgid "On catchup show next feed" +msgstr "" + +#: include/localized_schema.php:45 +msgid "Sort feeds by unread articles count" +msgstr "Řadit kanály dle počtu nepřečtených článků" + +#: include/localized_schema.php:46 +#: plugins/mobile/prefs.php:60 +msgid "Reverse headline order (oldest first)" +msgstr "Obrácené řazení nadpisů (nejstarší jako první)" + +#: include/localized_schema.php:47 +msgid "Enable e-mail digest" +msgstr "Povolit e-mailový souhrn" + +#: include/localized_schema.php:48 +msgid "Confirm marking feed as read" +msgstr "Potvrdit označení kanálu jako přečteného" + +#: include/localized_schema.php:49 +msgid "Automatically mark articles as read" +msgstr "Automaticky označit články jako přečtené" + +#: include/localized_schema.php:50 +msgid "Strip unsafe tags from articles" +msgstr "Odebrat nebezpečné značky z článků" + +#: include/localized_schema.php:51 +msgid "Blacklisted tags" +msgstr "Zakázané značky" + +#: include/localized_schema.php:52 +msgid "Maximum age of fresh articles (in hours)" +msgstr "Maximální stáří nových článků (v hodinách)" + +#: include/localized_schema.php:53 +msgid "Mark articles in e-mail digest as read" +msgstr "Označit články v e-mailovém souhrnu jako přečtené" + +#: include/localized_schema.php:54 +msgid "Automatically expand articles in combined mode" +msgstr "Automaticky rozbalovat články v kombinovaném režimu" + +#: include/localized_schema.php:55 +msgid "Purge unread articles" +msgstr "" + +#: include/localized_schema.php:56 +msgid "Show special feeds when hiding read feeds" +msgstr "Zobrazit speciální kanály při skrývání přečtených kanálů" + +#: include/localized_schema.php:57 +msgid "Group headlines in virtual feeds" +msgstr "Sdružovat nadpisy ve virtuálních kanálech" + +#: include/localized_schema.php:58 +msgid "Do not embed images in articles" +msgstr "Nevkládat obrázky do článků" + +#: include/localized_schema.php:59 +msgid "Enable external API" +msgstr "Povolit externí API" -#: include/functions.php:3089 -#: classes/feeds.php:642 -msgid "Originally from:" -msgstr "Původně z:" +#: include/localized_schema.php:60 +msgid "User timezone" +msgstr "Časová zóna uživatele" -#: include/functions.php:3102 -#: classes/feeds.php:655 -#: classes/pref/feeds.php:540 -msgid "Feed URL" -msgstr "URL kanálu" +#: include/localized_schema.php:61 +#: js/prefs.js:1725 +msgid "Customize stylesheet" +msgstr "Upravit soubor motivu" -#: include/functions.php:3133 -#: classes/dlg.php:37 -#: classes/dlg.php:60 -#: classes/dlg.php:93 -#: classes/dlg.php:159 -#: classes/dlg.php:190 -#: classes/dlg.php:217 -#: classes/dlg.php:250 -#: classes/dlg.php:262 -#: classes/backend.php:105 -#: classes/pref/users.php:99 -#: classes/pref/filters.php:147 -#: classes/pref/prefs.php:1058 -#: classes/pref/feeds.php:1588 -#: classes/pref/feeds.php:1660 -#: plugins/import_export/init.php:406 -#: plugins/import_export/init.php:429 -#: plugins/googlereaderimport/init.php:168 -#: plugins/share/init.php:67 -#: plugins/updater/init.php:357 -msgid "Close this window" -msgstr "Zavřít toto okno" +#: include/localized_schema.php:62 +msgid "Sort headlines by feed date" +msgstr "Řadit nadpisy podle data kanálu" -#: include/functions.php:3369 -msgid "(edit note)" -msgstr "(upravit poznámku)" +#: include/localized_schema.php:63 +msgid "Login with an SSL certificate" +msgstr "Přihlásit s certifikátem SSL" -#: include/functions.php:3604 -msgid "unknown type" -msgstr "neznámý typ" +#: include/localized_schema.php:64 +msgid "Try to send digests around specified time" +msgstr "Pokusit se odeslat souhrn v zadaný čas" -#: include/functions.php:3660 -msgid "Attachments" -msgstr "Přílohy" +#: include/localized_schema.php:65 +msgid "Assign articles to labels automatically" +msgstr "Přiřadit automaticky články ke štítkům" + +#: include/localized_schema.php:66 +msgid "Select theme" +msgstr "Zvolit motiv" #: include/login_form.php:183 #: classes/handler/public.php:483 @@ -944,7 +1261,7 @@ msgstr "Profil:" #: include/login_form.php:213 #: classes/handler/public.php:233 #: classes/rpc.php:64 -#: classes/pref/prefs.php:994 +#: classes/pref/prefs.php:948 msgid "Default profile" msgstr "Výchozí profil" @@ -962,7 +1279,7 @@ msgstr "Zapamatovat" msgid "Log in" msgstr "Přihlásit" -#: include/sessions.php:58 +#: include/sessions.php:55 msgid "Session failed to validate (incorrect IP)" msgstr "Nezdařilo se ověřit sezení (neplatné IP)" @@ -978,7 +1295,7 @@ msgstr "Značky článku (oddělené čárkami):" #: classes/pref/users.php:176 #: classes/pref/labels.php:79 #: classes/pref/filters.php:405 -#: classes/pref/prefs.php:940 +#: classes/pref/prefs.php:894 #: classes/pref/feeds.php:733 #: classes/pref/feeds.php:881 #: plugins/nsfw/init.php:86 @@ -999,7 +1316,7 @@ msgstr "Uložit" #: classes/pref/filters.php:804 #: classes/pref/filters.php:880 #: classes/pref/filters.php:947 -#: classes/pref/prefs.php:942 +#: classes/pref/prefs.php:896 #: classes/pref/feeds.php:734 #: classes/pref/feeds.php:884 #: classes/pref/feeds.php:1797 @@ -1101,8 +1418,12 @@ msgid "Password recovery" msgstr "Obnova hesla" #: classes/handler/public.php:764 -msgid "You will need to provide valid account name and email. New password will be sent on your email address." -msgstr "Musíte zadat platný název účtu a e-mailovou adresu. Nové heslo bude zasláno na vaši e-mailovou adresu." +msgid "" +"You will need to provide valid account name and email. New password will be " +"sent on your email address." +msgstr "" +"Musíte zadat platný název účtu a e-mailovou adresu. Nové heslo bude zasláno " +"na vaši e-mailovou adresu." #: classes/handler/public.php:786 #: classes/pref/users.php:360 @@ -1124,12 +1445,16 @@ msgid "Sorry, login and email combination not found." msgstr "Lituji, kombinace e-mailové adresy a přihlašovacího jména nenalezena." #: classes/dlg.php:16 -msgid "If you have imported labels and/or filters, you might need to reload preferences to see your new data." +msgid "" +"If you have imported labels and/or filters, you might need to reload " +"preferences to see your new data." msgstr "" +"Pokud jste importovali štítky, či filtry, budete možná muset znovu načíst " +"nastavení pro zobrazení nových dat." #: classes/dlg.php:48 msgid "Your Public OPML URL is:" -msgstr "" +msgstr "Vaše veřejná URL OPML je:" #: classes/dlg.php:57 #: classes/dlg.php:214 @@ -1137,7 +1462,10 @@ msgid "Generate new URL" msgstr "Generovat novou URL" #: classes/dlg.php:71 -msgid "Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner." +msgid "" +"Update daemon is enabled in configuration, but daemon process is not running, " +"which prevents all feeds from updating. Please start the daemon process or " +"contact instance owner." msgstr "" #: classes/dlg.php:75 @@ -1146,7 +1474,10 @@ msgid "Last update:" msgstr "Poslední aktualizace:" #: classes/dlg.php:80 -msgid "Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner." +msgid "" +"Update daemon is taking too long to perform a feed update. This could " +"indicate a problem like crash or a hang. Please check the daemon process or " +"contact instance owner." msgstr "" #: classes/dlg.php:166 @@ -1167,11 +1498,11 @@ msgstr "Jaké značky?" #: classes/dlg.php:186 msgid "Display entries" -msgstr "" +msgstr "Zobrazit položky" #: classes/dlg.php:205 msgid "You can view this feed as RSS using the following URL:" -msgstr "" +msgstr "Můžete zobrazit kanál jako RSS pomocí následující URL:" #: classes/dlg.php:233 #: plugins/updater/init.php:327 @@ -1180,13 +1511,17 @@ msgid "New version of Tiny Tiny RSS is available (%s)." msgstr "Je dostupná nová verze Tiny Tiny RSS (%s)." #: classes/dlg.php:241 -msgid "You can update using built-in updater in the Preferences or by using update.php" +msgid "" +"You can update using built-in updater in the Preferences or by using " +"update.php" msgstr "" +"Aktualizovat můžete pomocí zabudovaného nástroje v Nastavení, nebo pomocí " +"update.php" #: classes/dlg.php:245 #: plugins/updater/init.php:331 msgid "See the release notes" -msgstr "" +msgstr "Zobrazit poznámky k vydání" #: classes/dlg.php:247 msgid "Download" @@ -1195,10 +1530,11 @@ msgstr "Stáhnout" #: classes/dlg.php:255 msgid "Error receiving version information or no new version available." msgstr "" +"Chyba při získávání informací o verzi, nebo není dostupná novější verze." #: classes/feeds.php:68 msgid "Visit the website" -msgstr "" +msgstr "Navštívit webové stránky" #: classes/feeds.php:83 msgid "View as RSS feed" @@ -1222,7 +1558,7 @@ msgstr "Vybrat:" #: classes/pref/filters.php:648 #: classes/pref/filters.php:737 #: classes/pref/filters.php:764 -#: classes/pref/prefs.php:954 +#: classes/pref/prefs.php:908 #: classes/pref/feeds.php:1266 #: classes/pref/feeds.php:1536 #: classes/pref/feeds.php:1606 @@ -1242,7 +1578,7 @@ msgstr "Invertovat" #: classes/pref/filters.php:650 #: classes/pref/filters.php:739 #: classes/pref/filters.php:766 -#: classes/pref/prefs.php:956 +#: classes/pref/prefs.php:910 #: classes/pref/feeds.php:1268 #: classes/pref/feeds.php:1538 #: classes/pref/feeds.php:1608 @@ -1256,7 +1592,7 @@ msgstr "Více..." #: classes/feeds.php:103 msgid "Selection toggle:" -msgstr "" +msgstr "Přepínač výběru:" #: classes/feeds.php:109 msgid "Selection:" @@ -1272,7 +1608,7 @@ msgstr "Archivovat" #: classes/feeds.php:117 msgid "Move back" -msgstr "" +msgstr "Zpět" #: classes/feeds.php:118 #: classes/pref/filters.php:291 @@ -1301,7 +1637,7 @@ msgstr "Kanál nenalezen." #: classes/feeds.php:388 #, php-format msgid "Imported at %s" -msgstr "" +msgstr "Importováno v %s" #: classes/feeds.php:535 msgid "mark as read" @@ -1324,8 +1660,12 @@ msgid "No starred articles found to display." msgstr "Nenalezeny žádné články s hvězdičkou k zobrazení." #: classes/feeds.php:742 -msgid "No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter." +msgid "" +"No articles found to display. You can assign articles to labels manually (see " +"the Actions menu above) or use a filter." msgstr "" +"Žádné zobrazitelné články. Můžete článkům přiřadit štítky ručně (podívejte se " +"do menu Činností nahoře) a nebo použít filtr." #: classes/feeds.php:744 msgid "No articles found to display." @@ -1340,7 +1680,8 @@ msgstr "Kanál naposledy aktualizován v %s" #: classes/feeds.php:769 #: classes/feeds.php:933 msgid "Some feeds have update errors (click for details)" -msgstr "Některé kanály měly problémy při aktualizaci (klikněte pro podrobnosti)" +msgstr "" +"Některé kanály měly problémy při aktualizaci (klikněte pro podrobnosti)" #: classes/feeds.php:913 msgid "No feed selected." @@ -1349,14 +1690,14 @@ msgstr "Není vybrán žádný kanál." #: classes/feeds.php:966 #: classes/feeds.php:974 msgid "Feed or site URL" -msgstr "" +msgstr "Kanál nebo URL stránky" #: classes/feeds.php:980 #: classes/pref/feeds.php:560 #: classes/pref/feeds.php:782 #: classes/pref/feeds.php:1761 msgid "Place in category:" -msgstr "" +msgstr "Umístit v kategorii:" #: classes/feeds.php:988 msgid "Available feeds" @@ -1378,7 +1719,7 @@ msgid "Login" msgstr "Přihlášení" #: classes/feeds.php:1007 -#: classes/pref/prefs.php:252 +#: classes/pref/prefs.php:202 #: classes/pref/feeds.php:602 #: classes/pref/feeds.php:828 #: classes/pref/feeds.php:1778 @@ -1444,7 +1785,7 @@ msgstr "Tento kanál" #: classes/backend.php:33 msgid "Other interface tips are available in the Tiny Tiny RSS wiki." -msgstr "" +msgstr "Další tipy k používání rozhraní jsou dostupné ve wiki Tiny Tiny RSS." #: classes/backend.php:38 msgid "Keyboard Shortcuts" @@ -1460,30 +1801,30 @@ msgstr "Ctrl" #: classes/backend.php:99 msgid "Help topic not found." -msgstr "" +msgstr "Téma nápovědy nenalezeno." #: classes/opml.php:28 #: classes/opml.php:33 msgid "OPML Utility" -msgstr "" +msgstr "Nástroj OPML" #: classes/opml.php:37 msgid "Importing OPML..." -msgstr "" +msgstr "Importuji OPML..." #: classes/opml.php:41 msgid "Return to preferences" -msgstr "" +msgstr "Zpět do nastavení" #: classes/opml.php:270 #, php-format msgid "Adding feed: %s" -msgstr "" +msgstr "Přidávám kanál: %s" #: classes/opml.php:281 #, php-format msgid "Duplicate feed: %s" -msgstr "" +msgstr "Duplicitní kanál: %s" #: classes/opml.php:295 #, php-format @@ -1498,30 +1839,30 @@ msgstr "Duplicitní štítek: %s" #: classes/opml.php:310 #, php-format msgid "Setting preference key %s to %s" -msgstr "" +msgstr "Nastavuji klíč předvoleb %s na %s" #: classes/opml.php:339 msgid "Adding filter..." -msgstr "" +msgstr "Přidávám filtr..." #: classes/opml.php:416 #, php-format msgid "Processing category: %s" -msgstr "" +msgstr "Zpracovávám kategorii: %s" #: classes/opml.php:468 msgid "Error: please upload OPML file." -msgstr "" +msgstr "Chyba: nahrajte prosím soubor OPML." #: classes/opml.php:475 #: plugins/googlereaderimport/init.php:161 msgid "Error while parsing document." -msgstr "" +msgstr "Chyba při zpracování dokumentu." #: classes/pref/users.php:6 #: plugins/instances/init.php:157 msgid "Your access level is insufficient to open this tab." -msgstr "" +msgstr "Nemáte dostatečná oprávnění pro zobrazení této záložky." #: classes/pref/users.php:34 msgid "User not found" @@ -1598,7 +1939,7 @@ msgstr "[tt-rss] Oznámení o změně hesla" #: classes/pref/filters.php:645 #: classes/pref/filters.php:734 #: classes/pref/filters.php:761 -#: classes/pref/prefs.php:951 +#: classes/pref/prefs.php:905 #: classes/pref/feeds.php:1263 #: classes/pref/feeds.php:1533 #: classes/pref/feeds.php:1603 @@ -1635,7 +1976,7 @@ msgstr "Klikněte pro úpravy" #: classes/pref/users.php:446 msgid "No users defined." -msgstr "" +msgstr "Není definován žádný uživatel." #: classes/pref/users.php:448 msgid "No matching users found." @@ -1670,15 +2011,19 @@ msgstr "Vymazat barvy" #: classes/pref/filters.php:96 msgid "Articles matching this filter:" -msgstr "" +msgstr "Články odpovídající filtru:" #: classes/pref/filters.php:133 msgid "No recent articles matching this filter have been found." -msgstr "" +msgstr "Nebyly nalezeny žádné nedávné články odpovídající filtru." #: classes/pref/filters.php:137 -msgid "Complex expressions might not give results while testing due to issues with database server regexp implementation." +msgid "" +"Complex expressions might not give results while testing due to issues with " +"database server regexp implementation." msgstr "" +"Komplexní výrazy nemusejí navrátit výsledky při testování kvůli problémům s " +"implementací regulárních výrazů databázového serveru." #: classes/pref/filters.php:274 #: classes/pref/filters.php:729 @@ -1696,7 +2041,7 @@ msgstr "Přidat" #: classes/pref/filters.php:322 #: classes/pref/filters.php:756 msgid "Apply actions" -msgstr "" +msgstr "Vykonat činnosti" #: classes/pref/filters.php:372 #: classes/pref/filters.php:785 @@ -1709,506 +2054,331 @@ msgid "Match any rule" msgstr "Odpovídá kterémukoliv pravidlu" #: classes/pref/filters.php:390 -#: classes/pref/filters.php:791 -msgid "Inverse matching" -msgstr "" - -#: classes/pref/filters.php:402 -#: classes/pref/filters.php:798 -msgid "Test" -msgstr "Test" - -#: classes/pref/filters.php:435 -msgid "(inverse)" -msgstr "(inverzní)" - -#: classes/pref/filters.php:434 -#, php-format -msgid "%s on %s in %s %s" -msgstr "" - -#: classes/pref/filters.php:657 -msgid "Combine" -msgstr "Kombinovat" - -#: classes/pref/filters.php:663 -#: classes/pref/feeds.php:1279 -#: classes/pref/feeds.php:1293 -msgid "Reset sort order" -msgstr "" - -#: classes/pref/filters.php:671 -#: classes/pref/feeds.php:1318 -msgid "Rescore articles" -msgstr "Přehodnotit články" - -#: classes/pref/filters.php:801 -msgid "Create" -msgstr "Vytvořit" - -#: classes/pref/filters.php:856 -msgid "Inverse regular expression matching" -msgstr "" - -#: classes/pref/filters.php:858 -msgid "on field" -msgstr "pole" - -#: classes/pref/filters.php:864 -#: js/PrefFilterTree.js:45 -#: plugins/digest/digest.js:242 -msgid "in" -msgstr "v" - -#: classes/pref/filters.php:877 -msgid "Save rule" -msgstr "" - -#: classes/pref/filters.php:877 -#: js/functions.js:1013 -msgid "Add rule" -msgstr "Přidat pravidlo" - -#: classes/pref/filters.php:900 -msgid "Perform Action" -msgstr "" - -#: classes/pref/filters.php:926 -msgid "with parameters:" -msgstr "" - -#: classes/pref/filters.php:944 -msgid "Save action" -msgstr "" - -#: classes/pref/filters.php:944 -#: js/functions.js:1039 -msgid "Add action" -msgstr "Přidat činnost" - -#: classes/pref/filters.php:967 -#, fuzzy -msgid "[No caption]" -msgstr "Titulek" - -#: classes/pref/prefs.php:18 -msgid "General" -msgstr "Obecné" - -#: classes/pref/prefs.php:19 -msgid "Interface" -msgstr "Rozhraní" - -#: classes/pref/prefs.php:20 -msgid "Advanced" -msgstr "Pokročilé" - -#: classes/pref/prefs.php:21 -msgid "Digest" -msgstr "" - -#: classes/pref/prefs.php:25 -#, fuzzy -msgid "Allow duplicate articles" -msgstr "Povolit duplicitní příspěvky" - -#: classes/pref/prefs.php:26 -msgid "Assign articles to labels automatically" -msgstr "" - -#: classes/pref/prefs.php:27 -msgid "Blacklisted tags" -msgstr "Zakázané značky" - -#: classes/pref/prefs.php:27 -msgid "When auto-detecting tags in articles these tags will not be applied (comma-separated list)." -msgstr "" - -#: classes/pref/prefs.php:28 -msgid "Automatically mark articles as read" -msgstr "Automaticky označit články jako přečtené" - -#: classes/pref/prefs.php:28 -msgid "This option enables marking articles as read automatically while you scroll article list." -msgstr "" - -#: classes/pref/prefs.php:29 -msgid "Automatically expand articles in combined mode" -msgstr "" - -#: classes/pref/prefs.php:30 -msgid "Combined feed display" -msgstr "" - -#: classes/pref/prefs.php:30 -msgid "Display expanded list of feed articles, instead of separate displays for headlines and article content" -msgstr "" - -#: classes/pref/prefs.php:31 -msgid "Confirm marking feed as read" -msgstr "Potvrdit označení kanálu jako přečteného" - -#: classes/pref/prefs.php:32 -msgid "Amount of articles to display at once" -msgstr "Počet naráz zobrazovaných článků" - -#: classes/pref/prefs.php:33 -msgid "Default interval between feed updates" -msgstr "Výchozí interval mezi aktualizacemi kanálů" - -#: classes/pref/prefs.php:34 -msgid "Mark articles in e-mail digest as read" -msgstr "Označit články v e-mailovém souhrnu jako přečtené" - -#: classes/pref/prefs.php:35 -#, fuzzy -msgid "Enable e-mail digest" -msgstr "Povolit e-mailový souhrn" - -#: classes/pref/prefs.php:35 -msgid "This option enables sending daily digest of new (and unread) headlines on your configured e-mail address" -msgstr "Umožňuje odesílání denních souhrnů nových (a nepřečtených) článků na vaší nastavenou e-mailovou adresu" - -#: classes/pref/prefs.php:36 -msgid "Try to send digests around specified time" -msgstr "Pokusit se odeslat souhrn v zadaný čas" - -#: classes/pref/prefs.php:36 -msgid "Uses UTC timezone" -msgstr "Používá časovou zónu UTC" - -#: classes/pref/prefs.php:37 -msgid "Enable API access" -msgstr "" - -#: classes/pref/prefs.php:37 -msgid "Allows external clients to access this account through the API" -msgstr "" - -#: classes/pref/prefs.php:38 -msgid "Enable feed categories" -msgstr "" - -#: classes/pref/prefs.php:39 -msgid "Sort feeds by unread articles count" -msgstr "Řadit kanály dle počtu nepřečtených článků" - -#: classes/pref/prefs.php:40 -msgid "Maximum age of fresh articles (in hours)" -msgstr "Maximální stáří nových článků (v hodinách)" - -#: classes/pref/prefs.php:41 -msgid "Hide feeds with no unread articles" -msgstr "Skrýt kanály bez nepřečtených článků" - -#: classes/pref/prefs.php:42 -msgid "Show special feeds when hiding read feeds" -msgstr "" - -#: classes/pref/prefs.php:43 -msgid "Long date format" -msgstr "Dlouhý formát data" - -#: classes/pref/prefs.php:44 -msgid "On catchup show next feed" -msgstr "" - -#: classes/pref/prefs.php:44 -msgid "Automatically open next feed with unread articles after marking one as read" -msgstr "" - -#: classes/pref/prefs.php:45 -msgid "Purge articles after this number of days (0 - disables)" -msgstr "Vymazat články podle stáří ve dnech (0 - nikdy nemazat)" - -#: classes/pref/prefs.php:46 -msgid "Purge unread articles" +#: classes/pref/filters.php:791 +msgid "Inverse matching" msgstr "" -#: classes/pref/prefs.php:47 -#: plugins/mobile/prefs.php:60 -msgid "Reverse headline order (oldest first)" -msgstr "Obrácené řazení nadpisů (nejstarší jako první)" +#: classes/pref/filters.php:402 +#: classes/pref/filters.php:798 +msgid "Test" +msgstr "Test" -#: classes/pref/prefs.php:48 -msgid "Short date format" -msgstr "Krátký formát data" +#: classes/pref/filters.php:435 +msgid "(inverse)" +msgstr "(inverzní)" -#: classes/pref/prefs.php:49 -msgid "Show content preview in headlines list" -msgstr "" +#: classes/pref/filters.php:434 +#, php-format +msgid "%s on %s in %s %s" +msgstr "%s na %s v %s %s" -#: classes/pref/prefs.php:50 -msgid "Sort headlines by feed date" -msgstr "" +#: classes/pref/filters.php:657 +msgid "Combine" +msgstr "Kombinovat" -#: classes/pref/prefs.php:50 -msgid "Use feed-specified date to sort headlines instead of local import date." -msgstr "" +#: classes/pref/filters.php:663 +#: classes/pref/feeds.php:1279 +#: classes/pref/feeds.php:1293 +msgid "Reset sort order" +msgstr "Zrušit pořadí řazení" -#: classes/pref/prefs.php:51 -msgid "Login with an SSL certificate" -msgstr "Přihlásit s certifikátem SSL" +#: classes/pref/filters.php:671 +#: classes/pref/feeds.php:1318 +msgid "Rescore articles" +msgstr "Přehodnotit články" -#: classes/pref/prefs.php:51 -msgid "Click to register your SSL client certificate with tt-rss" +#: classes/pref/filters.php:801 +msgid "Create" +msgstr "Vytvořit" + +#: classes/pref/filters.php:856 +msgid "Inverse regular expression matching" msgstr "" -#: classes/pref/prefs.php:52 -msgid "Do not embed images in articles" -msgstr "Nevkládat obrázky do článků" +#: classes/pref/filters.php:858 +msgid "on field" +msgstr "pole" -#: classes/pref/prefs.php:53 -msgid "Strip unsafe tags from articles" -msgstr "Odebrat nebezpečné značky z článků" +#: classes/pref/filters.php:864 +#: js/PrefFilterTree.js:45 +#: plugins/digest/digest.js:242 +msgid "in" +msgstr "v" -#: classes/pref/prefs.php:53 -msgid "Strip all but most common HTML tags when reading articles." -msgstr "" +#: classes/pref/filters.php:877 +msgid "Save rule" +msgstr "Uložit pravidlo" -#: classes/pref/prefs.php:54 -#: js/prefs.js:1725 -msgid "Customize stylesheet" -msgstr "Upravit soubor motivu" +#: classes/pref/filters.php:877 +#: js/functions.js:1063 +msgid "Add rule" +msgstr "Přidat pravidlo" -#: classes/pref/prefs.php:54 -msgid "Customize CSS stylesheet to your liking" -msgstr "" +#: classes/pref/filters.php:900 +msgid "Perform Action" +msgstr "Provést činnost" -#: classes/pref/prefs.php:55 -msgid "User timezone" -msgstr "Časová zóna uživatele" +#: classes/pref/filters.php:926 +msgid "with parameters:" +msgstr "s parametry:" -#: classes/pref/prefs.php:56 -msgid "Group headlines in virtual feeds" -msgstr "" +#: classes/pref/filters.php:944 +msgid "Save action" +msgstr "Uložit činnost" -#: classes/pref/prefs.php:56 -msgid "Special feeds, labels, and categories are grouped by originating feeds" -msgstr "" +#: classes/pref/filters.php:944 +#: js/functions.js:1089 +msgid "Add action" +msgstr "Přidat činnost" + +#: classes/pref/filters.php:967 +msgid "[No caption]" +msgstr "[Bez titulku]" -#: classes/pref/prefs.php:67 +#: classes/pref/prefs.php:17 msgid "Old password cannot be blank." msgstr "Staré heslo nemůže být prázdné." -#: classes/pref/prefs.php:72 +#: classes/pref/prefs.php:22 msgid "New password cannot be blank." msgstr "Nové heslo nemůže být prázdné." -#: classes/pref/prefs.php:77 +#: classes/pref/prefs.php:27 msgid "Entered passwords do not match." msgstr "Zadaná hesla nejsou shodná." -#: classes/pref/prefs.php:87 +#: classes/pref/prefs.php:37 msgid "Function not supported by authentication module." -msgstr "" +msgstr "Funkce není podporována modulem ověření." -#: classes/pref/prefs.php:119 +#: classes/pref/prefs.php:69 msgid "The configuration was saved." msgstr "Nastavení bylo uloženo." -#: classes/pref/prefs.php:133 +#: classes/pref/prefs.php:83 #, php-format msgid "Unknown option: %s" msgstr "Neznámá možnost: %s" -#: classes/pref/prefs.php:147 +#: classes/pref/prefs.php:97 msgid "Your personal data has been saved." msgstr "Vaše osobní data byla uložena." -#: classes/pref/prefs.php:187 +#: classes/pref/prefs.php:137 msgid "Personal data / Authentication" msgstr "Osobní data / ověření" -#: classes/pref/prefs.php:207 +#: classes/pref/prefs.php:157 msgid "Personal data" msgstr "Osobní informace" -#: classes/pref/prefs.php:217 +#: classes/pref/prefs.php:167 msgid "Full name" msgstr "Celé jméno" -#: classes/pref/prefs.php:221 +#: classes/pref/prefs.php:171 msgid "E-mail" msgstr "E-mail" -#: classes/pref/prefs.php:227 +#: classes/pref/prefs.php:177 msgid "Access level" msgstr "Úroveň přístupu" -#: classes/pref/prefs.php:237 +#: classes/pref/prefs.php:187 msgid "Save data" msgstr "Uložit data" -#: classes/pref/prefs.php:259 +#: classes/pref/prefs.php:209 msgid "Your password is at default value, please change it." msgstr "Vaše heslo má výchozí hodnotu, změňte jej prosím." -#: classes/pref/prefs.php:286 +#: classes/pref/prefs.php:236 msgid "Changing your current password will disable OTP." msgstr "Změněna hesla zakáže heslo na jedno použití." -#: classes/pref/prefs.php:291 +#: classes/pref/prefs.php:241 msgid "Old password" msgstr "Staré heslo" -#: classes/pref/prefs.php:294 +#: classes/pref/prefs.php:244 msgid "New password" msgstr "Nové heslo" -#: classes/pref/prefs.php:299 +#: classes/pref/prefs.php:249 msgid "Confirm password" msgstr "Potvrdit heslo" -#: classes/pref/prefs.php:309 +#: classes/pref/prefs.php:259 msgid "Change password" msgstr "Změnit heslo" -#: classes/pref/prefs.php:315 +#: classes/pref/prefs.php:265 msgid "One time passwords / Authenticator" msgstr "Heslo na jedno použití / Ověření" -#: classes/pref/prefs.php:319 -msgid "One time passwords are currently enabled. Enter your current password below to disable." -msgstr "Hesla na jedno použití jsou povolena. Zadejte své současné heslo pro zakázání." +#: classes/pref/prefs.php:269 +msgid "" +"One time passwords are currently enabled. Enter your current password below " +"to disable." +msgstr "" +"Hesla na jedno použití jsou povolena. Zadejte své současné heslo pro zakázání." -#: classes/pref/prefs.php:344 -#: classes/pref/prefs.php:395 +#: classes/pref/prefs.php:294 +#: classes/pref/prefs.php:345 msgid "Enter your password" msgstr "Zadejte své heslo" -#: classes/pref/prefs.php:355 +#: classes/pref/prefs.php:305 msgid "Disable OTP" -msgstr "Zakázat HJP" +msgstr "Zakázat OTP" -#: classes/pref/prefs.php:361 -msgid "You will need a compatible Authenticator to use this. Changing your password would automatically disable OTP." +#: classes/pref/prefs.php:311 +msgid "" +"You will need a compatible Authenticator to use this. Changing your password " +"would automatically disable OTP." msgstr "" +"Pro použití potřebujete kompatibilní nástroj ověření. Změnou hesla " +"automaticky zakážete OTP." -#: classes/pref/prefs.php:363 +#: classes/pref/prefs.php:313 msgid "Scan the following code by the Authenticator application:" -msgstr "" +msgstr "Načtěte následující kód ověřující aplikací:" -#: classes/pref/prefs.php:404 +#: classes/pref/prefs.php:354 msgid "I have scanned the code and would like to enable OTP" -msgstr "" +msgstr "Načetl jsem kód do aplikace a chtěl bych povolit OTP" -#: classes/pref/prefs.php:412 +#: classes/pref/prefs.php:362 msgid "Enable OTP" -msgstr "Povolit HJP" +msgstr "Povolit OTP" -#: classes/pref/prefs.php:450 +#: classes/pref/prefs.php:400 msgid "Some preferences are only available in default profile." -msgstr "" +msgstr "Některá nastavení jsou dostupná pouze ve výchozím profilu." -#: classes/pref/prefs.php:544 +#: classes/pref/prefs.php:491 msgid "Customize" msgstr "Přizpůsobit" -#: classes/pref/prefs.php:604 +#: classes/pref/prefs.php:558 msgid "Register" msgstr "Registrovat" -#: classes/pref/prefs.php:608 +#: classes/pref/prefs.php:562 msgid "Clear" msgstr "Vyčistit" -#: classes/pref/prefs.php:614 +#: classes/pref/prefs.php:568 #, php-format msgid "Current server time: %s (UTC)" msgstr "Aktuální čas na serveru: %s (UTC)" -#: classes/pref/prefs.php:647 +#: classes/pref/prefs.php:601 msgid "Save configuration" msgstr "Uložit nastavení" -#: classes/pref/prefs.php:650 +#: classes/pref/prefs.php:604 msgid "Manage profiles" msgstr "Spravovat profily" -#: classes/pref/prefs.php:653 +#: classes/pref/prefs.php:607 msgid "Reset to defaults" msgstr "Obnovit výchozí hodnoty" -#: classes/pref/prefs.php:677 -#: classes/pref/prefs.php:679 +#: classes/pref/prefs.php:631 +#: classes/pref/prefs.php:633 msgid "Plugins" msgstr "Moduly" -#: classes/pref/prefs.php:681 -msgid "You will need to reload Tiny Tiny RSS for plugin changes to take effect." -msgstr "" +#: classes/pref/prefs.php:635 +msgid "" +"You will need to reload Tiny Tiny RSS for plugin changes to take effect." +msgstr "Pro provedení změn v modulech musíte znovu načíst Tiny Tiny RSS." -#: classes/pref/prefs.php:683 -msgid "Download more plugins at tt-rss.org forums or wiki." +#: classes/pref/prefs.php:637 +msgid "" +"Download more plugins at tt-rss.org forums<" +"/a> or wiki." msgstr "" +"Stáhnout více modulů na foréch, nebo wiki tt-rss.org." -#: classes/pref/prefs.php:709 +#: classes/pref/prefs.php:663 msgid "System plugins" msgstr "Systémové moduly" -#: classes/pref/prefs.php:713 -#: classes/pref/prefs.php:767 +#: classes/pref/prefs.php:667 +#: classes/pref/prefs.php:721 msgid "Plugin" msgstr "Modul" -#: classes/pref/prefs.php:714 -#: classes/pref/prefs.php:768 +#: classes/pref/prefs.php:668 +#: classes/pref/prefs.php:722 msgid "Description" msgstr "Popis" -#: classes/pref/prefs.php:715 -#: classes/pref/prefs.php:769 +#: classes/pref/prefs.php:669 +#: classes/pref/prefs.php:723 msgid "Version" msgstr "Verze" -#: classes/pref/prefs.php:716 -#: classes/pref/prefs.php:770 +#: classes/pref/prefs.php:670 +#: classes/pref/prefs.php:724 msgid "Author" msgstr "Autor" -#: classes/pref/prefs.php:745 -#: classes/pref/prefs.php:802 +#: classes/pref/prefs.php:699 +#: classes/pref/prefs.php:756 msgid "more info" msgstr "více informací" -#: classes/pref/prefs.php:754 -#: classes/pref/prefs.php:811 +#: classes/pref/prefs.php:708 +#: classes/pref/prefs.php:765 msgid "Clear data" msgstr "Smazat data" -#: classes/pref/prefs.php:763 +#: classes/pref/prefs.php:717 msgid "User plugins" msgstr "Uživatelské moduly" -#: classes/pref/prefs.php:826 +#: classes/pref/prefs.php:780 msgid "Enable selected plugins" msgstr "Povolit vybrané moduly" -#: classes/pref/prefs.php:881 -#: classes/pref/prefs.php:899 +#: classes/pref/prefs.php:835 +#: classes/pref/prefs.php:853 msgid "Incorrect password" msgstr "Špatné heslo" -#: classes/pref/prefs.php:925 +#: classes/pref/prefs.php:879 #, php-format -msgid "You can override colors, fonts and layout of your currently selected theme with custom CSS declarations here. This file can be used as a baseline." +msgid "" +"You can override colors, fonts and layout of your currently selected theme " +"with custom CSS declarations here. This file can be used as a baseline." msgstr "" +"Můžete změnit bary, font a rozvržení vybraného motivu s vlastním nastavením " +"CSS. Tento soubor " +"vám poslouží jako základ." -#: classes/pref/prefs.php:965 +#: classes/pref/prefs.php:919 msgid "Create profile" msgstr "Vytvořit profil" -#: classes/pref/prefs.php:988 -#: classes/pref/prefs.php:1018 +#: classes/pref/prefs.php:942 +#: classes/pref/prefs.php:972 msgid "(active)" msgstr "(aktivní)" -#: classes/pref/prefs.php:1052 +#: classes/pref/prefs.php:1006 msgid "Remove selected profiles" msgstr "Odstranit vybrané profily" -#: classes/pref/prefs.php:1054 +#: classes/pref/prefs.php:1008 msgid "Activate profile" msgstr "Aktivovat profil" @@ -2228,16 +2398,18 @@ msgstr "Aktualizovat" #: classes/pref/feeds.php:583 #: classes/pref/feeds.php:809 msgid "Article purging:" -msgstr "" +msgstr "Čištění článků:" #: classes/pref/feeds.php:606 -msgid "Hint: you need to fill in your login information if your feed requires authentication, except for Twitter feeds." +msgid "" +"Hint: you need to fill in your login information if your feed requires " +"authentication, except for Twitter feeds." msgstr "" #: classes/pref/feeds.php:622 #: classes/pref/feeds.php:838 msgid "Hide from Popular feeds" -msgstr "" +msgstr "Skrýt před populárními kanály" #: classes/pref/feeds.php:634 #: classes/pref/feeds.php:844 @@ -2257,7 +2429,7 @@ msgstr "Nevkládat obrázky" #: classes/pref/feeds.php:673 #: classes/pref/feeds.php:866 msgid "Cache images locally" -msgstr "" +msgstr "Uchovávat obrázky na serveru" #: classes/pref/feeds.php:685 #: classes/pref/feeds.php:872 @@ -2302,49 +2474,53 @@ msgstr "Upravit vybrané kanály" msgid "Batch subscribe" msgstr "Dávkové zahájení odběru" -#: classes/pref/feeds.php:1288 +#: classes/pref/feeds.php:1286 msgid "Categories" msgstr "Kategorie" -#: classes/pref/feeds.php:1291 +#: classes/pref/feeds.php:1289 msgid "Add category" msgstr "Přidat kategorii" +#: classes/pref/feeds.php:1291 +msgid "(Un)hide empty categories" +msgstr "Zobrazit/Skrýt prázdné kategorie" + #: classes/pref/feeds.php:1295 msgid "Remove selected" msgstr "Odstranit vybrané" -#: classes/pref/feeds.php:1304 -msgid "(Un)hide empty categories" -msgstr "Zobrazit/Skrýt prázdné kategorie" - #: classes/pref/feeds.php:1309 msgid "More actions..." msgstr "Další činnost..." #: classes/pref/feeds.php:1313 msgid "Manual purge" -msgstr "" +msgstr "Ruční čištění" #: classes/pref/feeds.php:1317 msgid "Clear feed data" -msgstr "" +msgstr "Vyčistit data kanálu" #: classes/pref/feeds.php:1368 msgid "OPML" -msgstr "" +msgstr "OPML" #: classes/pref/feeds.php:1370 -msgid "Using OPML you can export and import your feeds, filters, labels and Tiny Tiny RSS settings." +msgid "" +"Using OPML you can export and import your feeds, filters, labels and Tiny " +"Tiny RSS settings." msgstr "" +"Pomocí OPML můžete exportovat a importovat své kanály, filtry, štítky a " +"nastavení Tiny Tiny RSS." #: classes/pref/feeds.php:1372 msgid "Only main settings profile can be migrated using OPML." -msgstr "" +msgstr "Pomocí OPML může být migrován pouze profil hlavního nastavení." #: classes/pref/feeds.php:1385 msgid "Import my OPML" -msgstr "" +msgstr "Importovat moji OPML" #: classes/pref/feeds.php:1389 msgid "Filename:" @@ -2356,35 +2532,43 @@ msgstr "" #: classes/pref/feeds.php:1395 msgid "Export OPML" -msgstr "" +msgstr "Exportovat OPML" #: classes/pref/feeds.php:1399 -msgid "Your OPML can be published publicly and can be subscribed by anyone who knows the URL below." +msgid "" +"Your OPML can be published publicly and can be subscribed by anyone who knows " +"the URL below." msgstr "" #: classes/pref/feeds.php:1401 -msgid "Published OPML does not include your Tiny Tiny RSS settings, feeds that require authentication or feeds hidden from Popular feeds." +msgid "" +"Published OPML does not include your Tiny Tiny RSS settings, feeds that " +"require authentication or feeds hidden from Popular feeds." msgstr "" #: classes/pref/feeds.php:1403 msgid "Public OPML URL" -msgstr "" +msgstr "Veřejná URL OPML" #: classes/pref/feeds.php:1404 msgid "Display published OPML URL" -msgstr "" +msgstr "Zobrazit URL publikovaných OPML" #: classes/pref/feeds.php:1414 msgid "Firefox integration" -msgstr "" +msgstr "Integrace s Firefoxem" #: classes/pref/feeds.php:1416 -msgid "This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the link below." +msgid "" +"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the " +"link below." msgstr "" +"Stránka Tiny Tiny RSS může být použita jako Čtečka kanálů Firefox " +"následujícím odkazem." #: classes/pref/feeds.php:1423 msgid "Click here to register this site as a feed reader." -msgstr "" +msgstr "Klikněte pro registraci této stránky jako čtečky kanálů." #: classes/pref/feeds.php:1431 msgid "Published & shared articles / Generated feeds" @@ -2392,10 +2576,12 @@ msgstr "" #: classes/pref/feeds.php:1433 msgid "Published articles and generated feeds" -msgstr "" +msgstr "Publikované články a generované kanály" #: classes/pref/feeds.php:1435 -msgid "Published articles are exported as a public RSS feed and can be subscribed by anyone who knows the URL specified below." +msgid "" +"Published articles are exported as a public RSS feed and can be subscribed by " +"anyone who knows the URL specified below." msgstr "" #: classes/pref/feeds.php:1441 @@ -2404,11 +2590,11 @@ msgstr "" #: classes/pref/feeds.php:1444 msgid "Clear all generated URLs" -msgstr "" +msgstr "Vyčistit všechny vygenerované URL" #: classes/pref/feeds.php:1446 msgid "Articles shared by URL" -msgstr "" +msgstr "Články sdílené pomocí URL" #: classes/pref/feeds.php:1448 msgid "You can disable all articles shared by unique URLs here." @@ -2416,16 +2602,20 @@ msgstr "" #: classes/pref/feeds.php:1451 msgid "Unshare all articles" -msgstr "" +msgstr "Zrušit sdílení všech článků" #: classes/pref/feeds.php:1529 -msgid "These feeds have not been updated with new content for 3 months (oldest first):" +msgid "" +"These feeds have not been updated with new content for 3 months (oldest " +"first):" msgstr "" +"Tyto kanály nebyly aktualizovány s novým obsahem po tři měsíce (nejprve " +"nejstarší):" #: classes/pref/feeds.php:1566 #: classes/pref/feeds.php:1636 msgid "Click to edit feed" -msgstr "" +msgstr "Klikněte pro úpravu kanálu" #: classes/pref/feeds.php:1584 #: classes/pref/feeds.php:1656 @@ -2434,23 +2624,27 @@ msgstr "Zrušit odběr vybraných kanálů" #: classes/pref/feeds.php:1595 msgid "These feeds have not been updated because of errors:" -msgstr "" +msgstr "Kanály, které nebyly aktualizovány kvůli chybám:" #: classes/pref/feeds.php:1758 msgid "Add one valid RSS feed per line (no feed detection is done)" -msgstr "" +msgstr "Přidávejte jeden platný RSS kanál na řádku (neprobíhá detekce kanálu)" #: classes/pref/feeds.php:1767 msgid "Feeds to subscribe, One per line" -msgstr "Kanály k odebírání. Jeden na řádku" +msgstr "Kanály k odebírání, jeden na řádku" #: classes/pref/feeds.php:1789 msgid "Feeds require authentication." -msgstr "" +msgstr "Kanály vyžadují ověření." #: plugins/digest/digest_body.php:59 -msgid "Your browser doesn't support Javascript, which is required for this application to function properly. Please check your browser settings." +msgid "" +"Your browser doesn't support Javascript, which is required for this " +"application to function properly. Please check your browser settings." msgstr "" +"Váš prohlížeč nepodporuje Javascript, který je vyžadován pro správnou funkci " +"aplikace. Zkontrolujte prosím nastavení prohlížeče." #: plugins/digest/digest_body.php:74 msgid "Hello," @@ -2458,7 +2652,7 @@ msgstr "Ahoj," #: plugins/digest/digest_body.php:80 msgid "Regular version" -msgstr "" +msgstr "Normální verze" #: plugins/close_button/init.php:24 msgid "Close article" @@ -2467,7 +2661,7 @@ msgstr "Zavřít článek" #: plugins/nsfw/init.php:32 #: plugins/nsfw/init.php:43 msgid "Not work safe (click to toggle)" -msgstr "" +msgstr "Není bezpečné pro práci (kliknutím přepnout)" #: plugins/nsfw/init.php:53 msgid "NSFW Plugin" @@ -2475,11 +2669,11 @@ msgstr "Modul NSFW" #: plugins/nsfw/init.php:80 msgid "Tags to consider NSFW (comma-separated)" -msgstr "" +msgstr "Značky považované za nevhodné k práci (oddělené čárkou)" #: plugins/nsfw/init.php:101 msgid "Configuration saved." -msgstr "" +msgstr "Nastavení uloženo." #: plugins/auth_internal/init.php:62 msgid "Please enter your one time password:" @@ -2505,11 +2699,11 @@ msgstr "Domů" #: plugins/mobile/mobile-functions.php:409 msgid "Nothing found (click to reload feed)." -msgstr "" +msgstr "Nic nenalezeno (klikněte pro obnovení kanálu)." #: plugins/mobile/login_form.php:52 msgid "Open regular version" -msgstr "" +msgstr "Otevřít normální verzi" #: plugins/mobile/prefs.php:34 msgid "Enable categories" @@ -2535,11 +2729,11 @@ msgstr "Vypnuto" #: plugins/mobile/prefs.php:39 msgid "Browse categories like folders" -msgstr "" +msgstr "Procházet kategorie jako složky" #: plugins/mobile/prefs.php:45 msgid "Show images in posts" -msgstr "" +msgstr "Zobrazit obrázky v příspěvcích" #: plugins/mobile/prefs.php:50 msgid "Hide read articles and feeds" @@ -2559,19 +2753,22 @@ msgstr "[Přeposláno]" #: plugins/mailto/init.php:52 #: plugins/mail/init.php:71 msgid "Multiple articles" -msgstr "" +msgstr "Více článků" #: plugins/mailto/init.php:74 msgid "Clicking the following link to invoke your mail client:" -msgstr "" +msgstr "Klikněte na následující odkaz pro spuštění poštovního klienta:" #: plugins/mailto/init.php:78 msgid "Forward selected article(s) by email." -msgstr "" +msgstr "Přeposlat vybrané články e-mailem." #: plugins/mailto/init.php:81 -msgid "You should be able to edit the message before sending in your mail client." +msgid "" +"You should be able to edit the message before sending in your mail client." msgstr "" +"Měli byste být schopni upravit zprávu před odesláním ve vašem poštovním " +"klientu." #: plugins/mailto/init.php:86 msgid "Close this dialog" @@ -2582,7 +2779,9 @@ msgid "Bookmarklets" msgstr "Záložky" #: plugins/bookmarklets/init.php:24 -msgid "Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it." +msgid "" +"Drag the link below to your browser toolbar, open the feed you're interested " +"in in your browser and click on the link to subscribe to it." msgstr "" #: plugins/bookmarklets/init.php:28 @@ -2598,39 +2797,43 @@ msgstr "" msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS" msgstr "" -#: plugins/import_export/init.php:61 +#: plugins/import_export/init.php:64 msgid "Import and export" -msgstr "" +msgstr "Import a export" -#: plugins/import_export/init.php:63 +#: plugins/import_export/init.php:66 msgid "Article archive" -msgstr "" +msgstr "Archiv článků" -#: plugins/import_export/init.php:65 -msgid "You can export and import your Starred and Archived articles for safekeeping or when migrating between tt-rss instances." +#: plugins/import_export/init.php:68 +msgid "" +"You can export and import your Starred and Archived articles for safekeeping " +"or when migrating between tt-rss instances." msgstr "" +"Můžete exportovat a importovat články s hvězdičkou a archivované články pro " +"uložení při migraci mezi instancemi tt-rss." -#: plugins/import_export/init.php:68 +#: plugins/import_export/init.php:71 msgid "Export my data" -msgstr "" +msgstr "Exportovat má data" -#: plugins/import_export/init.php:84 +#: plugins/import_export/init.php:87 msgid "Import" msgstr "Importovat" -#: plugins/import_export/init.php:218 +#: plugins/import_export/init.php:221 msgid "Could not import: incorrect schema version." -msgstr "" +msgstr "Nelze importovat: neplatná verze schématu." -#: plugins/import_export/init.php:223 +#: plugins/import_export/init.php:226 msgid "Could not import: unrecognized document format." -msgstr "" +msgstr "Nelze importovat: nerozpoznaný formát dokumentu." -#: plugins/import_export/init.php:382 +#: plugins/import_export/init.php:385 msgid "Finished: " msgstr "Dokončeno: " -#: plugins/import_export/init.php:383 +#: plugins/import_export/init.php:386 #, php-format msgid "%d article processed, " msgid_plural "%d articles processed, " @@ -2638,7 +2841,7 @@ msgstr[0] "zpracován %d článek, " msgstr[1] "zpracovány %d články, " msgstr[2] "zpracováno %d článků, " -#: plugins/import_export/init.php:384 +#: plugins/import_export/init.php:387 #, php-format msgid "%d imported, " msgid_plural "%d imported, " @@ -2646,7 +2849,7 @@ msgstr[0] "%d importován, " msgstr[1] "%d importovány, " msgstr[2] "%d importováno, " -#: plugins/import_export/init.php:385 +#: plugins/import_export/init.php:388 #, php-format msgid "%d feed created." msgid_plural "%d feeds created." @@ -2654,18 +2857,22 @@ msgstr[0] "vytvořen %d kanál." msgstr[1] "vytvořeny %d kanály." msgstr[2] "vytvořeno %d kanálů." -#: plugins/import_export/init.php:390 +#: plugins/import_export/init.php:393 msgid "Could not load XML document." -msgstr "" +msgstr "Nelze načíst dokument XML." -#: plugins/import_export/init.php:402 +#: plugins/import_export/init.php:405 msgid "Prepare data" msgstr "" -#: plugins/import_export/init.php:423 +#: plugins/import_export/init.php:426 #, php-format -msgid "Could not upload file. You might need to adjust upload_max_filesize in PHP.ini (current value = %s)" +msgid "" +"Could not upload file. You might need to adjust upload_max_filesize in " +"PHP.ini (current value = %s)" msgstr "" +"Nelze odeslat soubor. Možná musíte upravit hodnotu upload_max_filesize v " +"php.ini (současná hodnota: %s)" #: plugins/mail/init.php:92 msgid "From:" @@ -2702,20 +2909,20 @@ msgstr "Nastavit hodnotu" #: plugins/googlereaderimport/init.php:72 msgid "No file uploaded." -msgstr "" +msgstr "Žádný soubor nebyl odeslán." #: plugins/googlereaderimport/init.php:153 #, php-format msgid "All done. %d out of %d articles imported." -msgstr "" +msgstr "Vše dokončeno. %d z %d článků importováno." #: plugins/googlereaderimport/init.php:157 msgid "The document has incorrect format." -msgstr "" +msgstr "Dokument nemá platný formát." #: plugins/googlereaderimport/init.php:326 msgid "Import starred or shared items from Google Reader" -msgstr "" +msgstr "Importovat sdílené a nebo s hvězdičkou z Google Readeru" #: plugins/googlereaderimport/init.php:330 msgid "Paste your starred.json or shared.json into the form below." @@ -2723,7 +2930,7 @@ msgstr "" #: plugins/googlereaderimport/init.php:344 msgid "Import my Starred items" -msgstr "" +msgstr "Importovat mé položky s hvězdičkou" #: plugins/instances/init.php:144 msgid "Linked" @@ -2766,7 +2973,9 @@ msgid "Link instance" msgstr "" #: plugins/instances/init.php:307 -msgid "You can connect other instances of Tiny Tiny RSS to this one to share Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:" +msgid "" +"You can connect other instances of Tiny Tiny RSS to this one to share Popular " +"feeds. Link to this instance of Tiny Tiny RSS by using this URL:" msgstr "" #: plugins/instances/init.php:317 @@ -2779,7 +2988,7 @@ msgstr "Stav" #: plugins/instances/init.php:319 msgid "Stored feeds" -msgstr "" +msgstr "Uložené kanály" #: plugins/instances/init.php:437 msgid "Create link" @@ -2797,19 +3006,23 @@ msgstr "Můžete článek sdílet pomocí následující unikátní URL:" #: plugins/updater/init.php:334 #: plugins/updater/updater.js:10 msgid "Update Tiny Tiny RSS" -msgstr "" +msgstr "Aktualizovat Tiny Tiny RSS" #: plugins/updater/init.php:337 msgid "Your Tiny Tiny RSS installation is up to date." -msgstr "" +msgstr "Vaše instalace Tiny Tiny RSS je aktuální." #: plugins/updater/init.php:347 -msgid "Do not close this dialog until updating is finished. Backup your tt-rss directory before continuing." +msgid "" +"Do not close this dialog until updating is finished. Backup your tt-rss " +"directory before continuing." msgstr "" +"Nezavírejte tuto stránku dokud není aktualizace dokončena. Před pokračováním " +"proveďte zálohu adresáře tt-rss." #: plugins/updater/init.php:350 msgid "Ready to update." -msgstr "" +msgstr "Připraveno k aktualizaci." #: plugins/updater/init.php:355 msgid "Start update" @@ -2819,7 +3032,7 @@ msgstr "Zahájit aktualizaci" #: js/feedlist.js:432 #: plugins/digest/digest.js:26 msgid "Mark all articles in %s as read?" -msgstr "" +msgstr "Označit všechny články v %s jako přečtené?" #: js/feedlist.js:423 msgid "Mark all articles in %s older than 1 day as read?" @@ -2834,141 +3047,153 @@ msgid "Mark all articles in %s older than 2 weeks as read?" msgstr "Označit všechny články starší než 2 týdny v %s jako přečtené?" #: js/functions.js:92 -msgid "Are you sure to report this exception to tt-rss.org? The report will include your browser information. Your IP would be saved in the database." +msgid "" +"Are you sure to report this exception to tt-rss.org? The report will include " +"your browser information. Your IP would be saved in the database." msgstr "" #: js/functions.js:214 msgid "close" msgstr "zavřít" -#: js/functions.js:586 +#: js/functions.js:621 +msgid "Date syntax appears to be correct:" +msgstr "Formát data vypadá v pořádku:" + +#: js/functions.js:624 +msgid "Date syntax is incorrect." +msgstr "Formát data je neplatný." + +#: js/functions.js:636 msgid "Error explained" msgstr "" -#: js/functions.js:668 +#: js/functions.js:718 msgid "Upload complete." msgstr "Odeslání dokončeno." -#: js/functions.js:692 +#: js/functions.js:742 msgid "Remove stored feed icon?" -msgstr "" +msgstr "Odstranit ikonu uloženého kanálu?" -#: js/functions.js:697 +#: js/functions.js:747 msgid "Removing feed icon..." -msgstr "" +msgstr "Odstraňuji ikonu kanálu..." -#: js/functions.js:702 +#: js/functions.js:752 msgid "Feed icon removed." -msgstr "" +msgstr "Ikona kanálu odstraněna." -#: js/functions.js:724 +#: js/functions.js:774 msgid "Please select an image file to upload." -msgstr "" +msgstr "Prosím vyberte obrázek k odeslání." -#: js/functions.js:726 +#: js/functions.js:776 msgid "Upload new icon for this feed?" -msgstr "" +msgstr "Nahrát novou ikonu pro kanál?" -#: js/functions.js:727 +#: js/functions.js:777 msgid "Uploading, please wait..." msgstr "Odesílám, čekejte prosím..." -#: js/functions.js:743 +#: js/functions.js:793 msgid "Please enter label caption:" -msgstr "" +msgstr "Zadejte, prosím, titulek štítku:" -#: js/functions.js:748 +#: js/functions.js:798 msgid "Can't create label: missing caption." -msgstr "" +msgstr "Nelze vytvořit štítek: chybí titulek." -#: js/functions.js:791 +#: js/functions.js:841 msgid "Subscribe to Feed" msgstr "Přihlásit se k odběru" -#: js/functions.js:818 +#: js/functions.js:868 msgid "Subscribed to %s" msgstr "Zahájen odběr %s" -#: js/functions.js:823 +#: js/functions.js:873 msgid "Specified URL seems to be invalid." msgstr "Zadaná URL nevypadá platně." -#: js/functions.js:826 +#: js/functions.js:876 msgid "Specified URL doesn't seem to contain any feeds." -msgstr "" +msgstr "Zadaná URL nevypadá jako by obsahovala jakékoliv kanály." -#: js/functions.js:879 +#: js/functions.js:929 msgid "Couldn't download the specified URL: %s" -msgstr "" +msgstr "Nelze stáhnout zadanou URL: %s" -#: js/functions.js:883 +#: js/functions.js:933 msgid "You are already subscribed to this feed." msgstr "Tento kanál již odebíráte." -#: js/functions.js:1013 +#: js/functions.js:1063 msgid "Edit rule" -msgstr "" +msgstr "Upravit pravidlo" -#: js/functions.js:1039 +#: js/functions.js:1089 msgid "Edit action" msgstr "Upravit činnost" -#: js/functions.js:1076 +#: js/functions.js:1126 msgid "Create Filter" msgstr "Vytvořit filtr" -#: js/functions.js:1191 -msgid "Reset subscription? Tiny Tiny RSS will try to subscribe to the notification hub again on next feed update." +#: js/functions.js:1241 +msgid "" +"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification " +"hub again on next feed update." msgstr "" -#: js/functions.js:1202 +#: js/functions.js:1252 msgid "Subscription reset." msgstr "" -#: js/functions.js:1212 +#: js/functions.js:1262 #: js/tt-rss.js:619 msgid "Unsubscribe from %s?" msgstr "Zrušit odběr %s?" -#: js/functions.js:1215 +#: js/functions.js:1265 msgid "Removing feed..." msgstr "Odebírám kanál..." -#: js/functions.js:1323 +#: js/functions.js:1373 msgid "Please enter category title:" msgstr "Zadejte prosím název kategorie:" -#: js/functions.js:1354 +#: js/functions.js:1404 msgid "Generate new syndication address for this feed?" msgstr "" -#: js/functions.js:1358 +#: js/functions.js:1408 #: js/prefs.js:1222 msgid "Trying to change address..." msgstr "Zkouším změnit adresu..." -#: js/functions.js:1545 +#: js/functions.js:1595 #: js/tt-rss.js:396 #: js/tt-rss.js:600 msgid "You can't edit this kind of feed." msgstr "Nemůžete upravit tento typ kanálu." -#: js/functions.js:1560 +#: js/functions.js:1610 msgid "Edit Feed" msgstr "Upravit kanál" -#: js/functions.js:1566 +#: js/functions.js:1616 #: js/prefs.js:194 #: js/prefs.js:749 msgid "Saving data..." msgstr "Ukládám data..." -#: js/functions.js:1598 +#: js/functions.js:1648 msgid "More Feeds" msgstr "Více kanálů" -#: js/functions.js:1659 -#: js/functions.js:1769 +#: js/functions.js:1709 +#: js/functions.js:1819 #: js/prefs.js:397 #: js/prefs.js:427 #: js/prefs.js:459 @@ -2979,25 +3204,29 @@ msgstr "Více kanálů" msgid "No feeds are selected." msgstr "Nejsou vybrány žádné kanály." -#: js/functions.js:1701 -msgid "Remove selected feeds from the archive? Feeds with stored articles will not be removed." +#: js/functions.js:1751 +msgid "" +"Remove selected feeds from the archive? Feeds with stored articles will not " +"be removed." msgstr "" +"Odstranit vybrané kanály z archivu? Kanály s uloženými články nebudou " +"odebrány." -#: js/functions.js:1740 +#: js/functions.js:1790 msgid "Feeds with update errors" -msgstr "" +msgstr "Kanály s chybami při aktualizaci" -#: js/functions.js:1751 +#: js/functions.js:1801 #: js/prefs.js:1180 msgid "Remove selected feeds?" msgstr "Odstranit vybrané kanály?" -#: js/functions.js:1754 +#: js/functions.js:1804 #: js/prefs.js:1183 msgid "Removing selected feeds..." msgstr "Odebírám vybrané kanály..." -#: js/functions.js:1852 +#: js/functions.js:1902 msgid "Help" msgstr "Nápověda" @@ -3015,11 +3244,11 @@ msgstr "Inverzní" #: js/prefs.js:55 msgid "Please enter login:" -msgstr "" +msgstr "Prosím zadejte přihlašovací jméno:" #: js/prefs.js:62 msgid "Can't create user: no login specified." -msgstr "" +msgstr "Nelze vytvořit uživatele: nezadáno přihlašovací jméno." #: js/prefs.js:66 msgid "Adding user..." @@ -3055,8 +3284,11 @@ msgid "No labels are selected." msgstr "Nejsou vybrány žádné štítky" #: js/prefs.js:309 -msgid "Remove selected users? Neither default admin nor your account will be removed." -msgstr "Odstranit vybrané uživatele? Váš účet ani výchozí účet správce nelze odstranit." +msgid "" +"Remove selected users? Neither default admin nor your account will be removed." +msgstr "" +"Odstranit vybrané uživatele? Váš účet ani výchozí účet správce nelze " +"odstranit." #: js/prefs.js:312 msgid "Removing selected users..." @@ -3089,7 +3321,7 @@ msgstr "Zrušit odběr vybraných kanálů?" #: js/prefs.js:382 msgid "Unsubscribing from selected feeds..." -msgstr "" +msgstr "Ruším odebírání vybraných kanálů..." #: js/prefs.js:412 msgid "Please select only one feed." @@ -3101,19 +3333,19 @@ msgstr "Vymazat z vybraného kanálu všechny články bez hvězdičky?" #: js/prefs.js:421 msgid "Clearing selected feed..." -msgstr "" +msgstr "Čistím vybrané kanály..." #: js/prefs.js:440 msgid "How many days of articles to keep (0 - use default)?" -msgstr "" +msgstr "Kolik dnů článků zachovat (0 - výchozí)?" #: js/prefs.js:443 msgid "Purging selected feed..." -msgstr "" +msgstr "Čistím vybrané kanály..." #: js/prefs.js:478 msgid "Login field cannot be blank." -msgstr "" +msgstr "Pole se jménem uživatele nesmí být prázdné." #: js/prefs.js:482 msgid "Saving user..." @@ -3151,7 +3383,7 @@ msgstr "Kombinuji filtry..." #: js/prefs.js:684 msgid "Edit Multiple Feeds" -msgstr "" +msgstr "Upravit více kanálů" #: js/prefs.js:708 msgid "Save changes to selected feeds?" @@ -3176,8 +3408,11 @@ msgid "Reset to defaults?" msgstr "Obnovit výchozí hodnoty?" #: js/prefs.js:1087 -msgid "Remove category %s? Any nested feeds would be placed into Uncategorized." +msgid "" +"Remove category %s? Any nested feeds would be placed into Uncategorized." msgstr "" +"Odstranit kategorii %s? Všechny vnořené kanály budou umístěny do kategorie " +"Nezařazeno." #: js/prefs.js:1093 msgid "Removing category..." @@ -3205,15 +3440,15 @@ msgstr "Vytvářím kategorii..." #: js/prefs.js:1169 msgid "Feeds without recent updates" -msgstr "" +msgstr "Kanály bez nedávných aktualizací" #: js/prefs.js:1218 msgid "Replace current OPML publishing address with a new one?" -msgstr "" +msgstr "Nahradit současnou publikační adresu OPML novou?" #: js/prefs.js:1307 msgid "Clearing feed..." -msgstr "" +msgstr "Čistím kanál..." #: js/prefs.js:1327 msgid "Rescore articles in selected feeds?" @@ -3221,7 +3456,7 @@ msgstr "Přehodnotit články ve vybraných kanálech?" #: js/prefs.js:1330 msgid "Rescoring selected feeds..." -msgstr "" +msgstr "Přehodnocuji vybrané kanály..." #: js/prefs.js:1350 msgid "Rescore all articles? This operation may take a lot of time." @@ -3229,19 +3464,20 @@ msgstr "Přehodnotit všechny články? Tato operace může chvíli trvat." #: js/prefs.js:1353 msgid "Rescoring feeds..." -msgstr "" +msgstr "Přehodnocuji kanály..." #: js/prefs.js:1370 msgid "Reset selected labels to default colors?" -msgstr "" +msgstr "Obnovit výchozí barvy vybraných štítků?" #: js/prefs.js:1407 msgid "Settings Profiles" -msgstr "" +msgstr "Profily nastavení" #: js/prefs.js:1416 -msgid "Remove selected profiles? Active and default profiles will not be removed." -msgstr "" +msgid "" +"Remove selected profiles? Active and default profiles will not be removed." +msgstr "Odstranit vybrané profily? Aktivní a výchozí profil nebude odebrán." #: js/prefs.js:1419 msgid "Removing selected profiles..." @@ -3267,24 +3503,25 @@ msgstr "Vytvářím profil..." #: js/prefs.js:1519 msgid "This will invalidate all previously generated feed URLs. Continue?" -msgstr "" +msgstr "Zneplatní všechny předchozí generované URL kanálů. Pokračovat?" #: js/prefs.js:1522 #: js/prefs.js:1541 msgid "Clearing URLs..." -msgstr "" +msgstr "Čistím URL..." #: js/prefs.js:1529 msgid "Generated URLs cleared." -msgstr "" +msgstr "Generované URL vyčištěny." #: js/prefs.js:1538 msgid "This will invalidate all previously shared article URLs. Continue?" msgstr "" +"Zneplatní všechny předchozí generované URL sdílených článků. Pokračovat?" #: js/prefs.js:1548 msgid "Shared URLs cleared." -msgstr "" +msgstr "Sdílené URL vyčištěny." #: js/prefs.js:1654 msgid "Label Editor" @@ -3337,153 +3574,146 @@ msgstr "Přehodnotit články v %s?" #: js/tt-rss.js:773 msgid "Rescoring articles..." -msgstr "" +msgstr "Přehodnocuji články..." #: js/tt-rss.js:907 msgid "New version available!" msgstr "Je dostupná nová verze." -#: js/viewfeed.js:104 +#: js/viewfeed.js:106 msgid "Cancel search" msgstr "Zrušit hledání" -#: js/viewfeed.js:438 +#: js/viewfeed.js:440 #: plugins/digest/digest.js:258 #: plugins/digest/digest.js:714 msgid "Unstar article" msgstr "Odebrat článku hvězdičku" -#: js/viewfeed.js:443 +#: js/viewfeed.js:445 #: plugins/digest/digest.js:260 #: plugins/digest/digest.js:718 msgid "Star article" msgstr "Přidat článku hvězdičku" -#: js/viewfeed.js:476 +#: js/viewfeed.js:478 #: plugins/digest/digest.js:263 #: plugins/digest/digest.js:749 msgid "Unpublish article" -msgstr "" - -#: js/viewfeed.js:481 -#: plugins/digest/digest.js:265 -#: plugins/digest/digest.js:754 -msgid "Publish article" -msgstr "Publikovat článek" - -#: js/viewfeed.js:677 -#: js/viewfeed.js:705 -#: js/viewfeed.js:732 -#: js/viewfeed.js:795 -#: js/viewfeed.js:829 -#: js/viewfeed.js:949 -#: js/viewfeed.js:992 -#: js/viewfeed.js:1045 -#: js/viewfeed.js:2051 +msgstr "Zrušit publikování článku" + +#: js/viewfeed.js:679 +#: js/viewfeed.js:707 +#: js/viewfeed.js:734 +#: js/viewfeed.js:797 +#: js/viewfeed.js:831 +#: js/viewfeed.js:951 +#: js/viewfeed.js:994 +#: js/viewfeed.js:1047 +#: js/viewfeed.js:2096 #: plugins/mailto/init.js:7 #: plugins/mail/mail.js:7 msgid "No articles are selected." msgstr "Nejsou vybrány žádné články." -#: js/viewfeed.js:957 +#: js/viewfeed.js:959 msgid "Delete %d selected article in %s?" msgid_plural "Delete %d selected articles in %s?" msgstr[0] "Smazat %d vybraný článek v %s?" msgstr[1] "Smazat %d vybrané články v %s?" msgstr[2] "Smazat %d vybraných článků v %s?" -#: js/viewfeed.js:959 +#: js/viewfeed.js:961 msgid "Delete %d selected article?" msgid_plural "Delete %d selected articles?" msgstr[0] "Smazat %d vybraný článek?" msgstr[1] "Smazat %d vybrané články?" msgstr[2] "Smazat %d vybraných článků?" -#: js/viewfeed.js:1001 +#: js/viewfeed.js:1003 msgid "Archive %d selected article in %s?" msgid_plural "Archive %d selected articles in %s?" msgstr[0] "Archivovat %d vybraný článek v %s?" msgstr[1] "Archivovat %d vybrané články v %s?" msgstr[2] "Archivovat %d vybraných článků v %s?" -#: js/viewfeed.js:1004 +#: js/viewfeed.js:1006 msgid "Move %d archived article back?" msgid_plural "Move %d archived articles back?" msgstr[0] "Přesunout zpět %d archivovaný článek?" msgstr[1] "Přesunout zpět %d archivované články?" msgstr[2] "Přesunout zpět %d archivovaných článků?" -#: js/viewfeed.js:1006 -msgid "Please note that unstarred articles might get purged on next feed update." +#: js/viewfeed.js:1008 +msgid "" +"Please note that unstarred articles might get purged on next feed update." msgstr "" +"Vezměte na vědomí, že články bez hvězdičky můžou být odstraněny při " +"následující aktualizaci kanálu." -#: js/viewfeed.js:1051 +#: js/viewfeed.js:1053 msgid "Mark %d selected article in %s as read?" msgid_plural "Mark %d selected articles in %s as read?" msgstr[0] "Označit %d článek v %s jako přečtený?" msgstr[1] "Označit %d články v %s jako přečtené?" msgstr[2] "Označit %d článků v %s jako přečtené?" -#: js/viewfeed.js:1075 +#: js/viewfeed.js:1077 msgid "Edit article Tags" msgstr "Upravit značky článku" -#: js/viewfeed.js:1081 +#: js/viewfeed.js:1083 msgid "Saving article tags..." msgstr "Ukládám značky článku..." -#: js/viewfeed.js:1278 +#: js/viewfeed.js:1323 msgid "No article is selected." msgstr "Není vybrán žádný článek." -#: js/viewfeed.js:1313 +#: js/viewfeed.js:1358 msgid "No articles found to mark" msgstr "Nenalezeny žádné články k označení" -#: js/viewfeed.js:1315 +#: js/viewfeed.js:1360 msgid "Mark %d article as read?" msgid_plural "Mark %d articles as read?" msgstr[0] "Označit %d článek jako přečtený?" msgstr[1] "Označit %d články jako přečtené?" msgstr[2] "Označit %d článků jako přečtené?" -#: js/viewfeed.js:1827 +#: js/viewfeed.js:1872 msgid "Open original article" msgstr "Otevřít původní článek" -#: js/viewfeed.js:1833 +#: js/viewfeed.js:1878 msgid "Display article URL" msgstr "Zobrazit URL článku" -#: js/viewfeed.js:1852 +#: js/viewfeed.js:1897 msgid "Toggle marked" msgstr "" -#: js/viewfeed.js:1933 -msgid "Assign label" -msgstr "Přiřadit štítek" - -#: js/viewfeed.js:1938 +#: js/viewfeed.js:1983 msgid "Remove label" msgstr "Odstranit štítek" -#: js/viewfeed.js:1962 +#: js/viewfeed.js:2007 msgid "Playing..." msgstr "Přehrává se..." -#: js/viewfeed.js:1963 +#: js/viewfeed.js:2008 msgid "Click to pause" msgstr "Kliknutím pozastavit" -#: js/viewfeed.js:2020 +#: js/viewfeed.js:2065 msgid "Please enter new score for selected articles:" msgstr "Zadejte prosím nové hodnocení vybraných článků:" -#: js/viewfeed.js:2062 +#: js/viewfeed.js:2107 msgid "Please enter new score for this article:" msgstr "Zadejte prosím nové hodnocení článku:" -#: js/viewfeed.js:2095 +#: js/viewfeed.js:2140 msgid "Article URL:" msgstr "URL článku:" @@ -3531,11 +3761,21 @@ msgid "Export Data" msgstr "Exportovat data" #: plugins/import_export/import_export.js:40 -msgid "Finished, exported %d article. You can download the data here." -msgid_plural "Finished, exported %d articles. You can download the data here." -msgstr[0] "Dokončeno, exportován %d článek. a class='visibleLink' href='%u'>Zde můžete stáhnout data." -msgstr[1] "Dokončeno, exportovány %d články. a class='visibleLink' href='%u'>Zde můžete stáhnout data." -msgstr[2] "Dokončeno, exportováno %d článků. a class='visibleLink' href='%u'>Zde můžete stáhnout data." +msgid "" +"Finished, exported %d article. You can download the data here." +msgid_plural "" +"Finished, exported %d articles. You can download the data here." +msgstr[0] "" +"Dokončeno, exportován %d článek. a class='visibleLink' href='%u'>Zde " +"můžete stáhnout data." +msgstr[1] "" +"Dokončeno, exportovány %d články. a class='visibleLink' href='%u'>Zde " +"můžete stáhnout data." +msgstr[2] "" +"Dokončeno, exportováno %d článků. a class='visibleLink' href='%u'>Zde " +"můžete stáhnout data." #: plugins/import_export/import_export.js:93 msgid "Data Import" @@ -3587,51 +3827,12 @@ msgid "Share article by URL" msgstr "Sdílet článek pomocí URL" #: plugins/updater/updater.js:58 -msgid "Live updating is considered experimental. Backup your tt-rss directory before continuing. Please type 'yes' to continue." +msgid "" +"Live updating is considered experimental. Backup your tt-rss directory before " +"continuing. Please type 'yes' to continue." msgstr "" - -#, fuzzy -#~ msgid "Default feed update interval" -#~ msgstr "Výchozí interval" - -#~ msgid "Enable external API" -#~ msgstr "Povolit externí API" - -#~ msgid "Select theme" -#~ msgstr "Zvolit motiv" - -#~ msgid "Select one of the available CSS themes" -#~ msgstr "Vybrat jeden z dostupných motivů CSS" - -#~ msgid "Title" -#~ msgstr "Název" - -#~ msgid "Title or Content" -#~ msgstr "Nadpis nebo obsah" - -#~ msgid "Link" -#~ msgstr "Odkaz" - -#~ msgid "Content" -#~ msgstr "Obsah" - -#~ msgid "Article Date" -#~ msgstr "Datum článku" - -#~ msgid "Delete article" -#~ msgstr "Smazat článek" - -#~ msgid "Set starred" -#~ msgstr "Nastavit hvězdičku" - -#~ msgid "Assign tags" -#~ msgstr "Přiřadit značky" - -#~ msgid "Modify score" -#~ msgstr "Upravit hodnocení" - -#~ msgid "This option is useful when you are reading several planet-type aggregators with partially colliding userbase. When disabled, it forces same posts from different feeds to appear only once." -#~ msgstr "Tato volba je užitečná pro sledování několika agregátorů s částečně prolínající databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých zdrojů a zobrazí je jako jeden." +"Okamžitá aktualizace je považována za experimentální. Před pokračováním " +"zálohujte svůj adresář tt-rss. Napište prosím 'yes' pro pokračování." #, fuzzy #~ msgid "Refresh" -- cgit v1.2.3 From b42b565aee7b356024104b19533784678f74b347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Tue, 2 Apr 2013 15:07:30 +0200 Subject: Fix header to contain relevant info. Wipe unused strings. --- locale/cs_CZ/LC_MESSAGES/messages.po | 41 ++---------------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po index 4855cbfee..6f160686a 100644 --- a/locale/cs_CZ/LC_MESSAGES/messages.po +++ b/locale/cs_CZ/LC_MESSAGES/messages.po @@ -1,5 +1,5 @@ -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) 2005 - 2013. +# This file is distributed under the same license as the tt-rss package. # # Tomáš Chvátal , 2013. # Michal Stanke , 2013. @@ -3833,40 +3833,3 @@ msgid "" msgstr "" "Okamžitá aktualizace je považována za experimentální. Před pokračováním " "zálohujte svůj adresář tt-rss. Napište prosím 'yes' pro pokračování." - -#, fuzzy -#~ msgid "Refresh" -#~ msgstr "Nové" - -#~ msgid "(%d feed)" -#~ msgid_plural "(%d feeds)" -#~ msgstr[0] "(%d kanál)" -#~ msgstr[1] "(%d kanály)" -#~ msgstr[2] "(%d kanálů)" - -#~ msgid "Notice" -#~ msgstr "Poznámka" - -#~ msgid "Tag Cloud" -#~ msgstr "Seznam značek" - -#~ msgid "Date" -#~ msgstr "Datum" - -#~ msgid "Score" -#~ msgstr "Hodnocení" - -#~ msgid "Pinterest" -#~ msgstr "Pinterest" - -#~ msgid "Owncloud" -#~ msgstr "ownCloud" - -#~ msgid "Share on Twitter" -#~ msgstr "Sdílet na Twitteru" - -#~ msgid "Show additional preferences" -#~ msgstr "Zobrazit další nastavení" - -#~ msgid "Updated" -#~ msgstr "Aktualizováno" -- cgit v1.2.3 From b7041615c43e4c5f7dd44a13ab55f7314f7ae8ba Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 2 Apr 2013 18:50:54 +0400 Subject: fix mark as read dropdown not resetting --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index e390edffd..dd3d34b3a 100644 --- a/index.php +++ b/index.php @@ -188,7 +188,7 @@
    or the inside the td, - // set node to the . - var node = - domClass.contains(evt.target, "dijitCalendarDateLabel") ? - evt.target.parentNode : - evt.target; - - if(node && ( - (node.dijitDateValue && !domClass.contains(node, "dijitCalendarDisabledDate")) - || node == this.previousYearLabelNode || node == this.nextYearLabelNode - )){ - domClass.add(node, "dijitCalendarHoveredDate"); - this._currentNode = node; - } - }, - - _onDayMouseOut: function(/*Event*/ evt){ - // summary: - // Handler for mouse out events on days, clears hovered style - // tags: - // protected - - if(!this._currentNode){ return; } - - // if mouse out occurs moving from to inside , ignore it - if(evt.relatedTarget && evt.relatedTarget.parentNode == this._currentNode){ return; } - var cls = "dijitCalendarHoveredDate"; - if(domClass.contains(this._currentNode, "dijitCalendarActiveDate")){ - cls += " dijitCalendarActiveDate"; - } - domClass.remove(this._currentNode, cls); - this._currentNode = null; - }, - - _onDayMouseDown: function(/*Event*/ evt){ - var node = evt.target.parentNode; - if(node && node.dijitDateValue && !domClass.contains(node, "dijitCalendarDisabledDate")){ - domClass.add(node, "dijitCalendarActiveDate"); - this._currentNode = node; - } - }, - - _onDayMouseUp: function(/*Event*/ evt){ - var node = evt.target.parentNode; - if(node && node.dijitDateValue){ - domClass.remove(node, "dijitCalendarActiveDate"); - } - }, - - handleKey: function(/*Event*/ evt){ - // summary: - // Provides keyboard navigation of calendar. - // description: - // Called from _onKeyDown() to handle keypress on a stand alone Calendar, - // and also from `dijit/form/_DateTimeTextBox` to pass a keydown event - // from the `dijit/form/DateTextBox` to be handled in this widget - // returns: - // False if the key was recognized as a navigation key, - // to indicate that the event was handled by Calendar and shouldn't be propagated - // tags: - // protected - var increment = -1, - interval, - newValue = this.currentFocus; - switch(evt.keyCode){ - case keys.RIGHT_ARROW: - increment = 1; - //fallthrough... - case keys.LEFT_ARROW: - interval = "day"; - if(!this.isLeftToRight()){ increment *= -1; } - break; - case keys.DOWN_ARROW: - increment = 1; - //fallthrough... - case keys.UP_ARROW: - interval = "week"; - break; - case keys.PAGE_DOWN: - increment = 1; - //fallthrough... - case keys.PAGE_UP: - interval = evt.ctrlKey || evt.altKey ? "year" : "month"; - break; - case keys.END: - // go to the next month - newValue = this.dateModule.add(newValue, "month", 1); - // subtract a day from the result when we're done - interval = "day"; - //fallthrough... - case keys.HOME: - newValue = new this.dateClassObj(newValue); - newValue.setDate(1); - break; - case keys.ENTER: - case keys.SPACE: - this.set("value", this.currentFocus); - break; - default: - return true; - } - - if(interval){ - newValue = this.dateModule.add(newValue, interval, increment); - } - - this._setCurrentFocusAttr(newValue); - - return false; - }, - - _onKeyDown: function(/*Event*/ evt){ - // summary: - // For handling keypress events on a stand alone calendar - if(!this.handleKey(evt)){ - event.stop(evt); - } - }, - - onValueSelected: function(/*Date*/ /*===== date =====*/){ - // summary: - // Deprecated. Notification that a date cell was selected. It may be the same as the previous value. - // description: - // Formerly used by `dijit/form/_DateTimeTextBox` (and thus `dijit/form/DateTextBox`) - // to get notification when the user has clicked a date. Now onExecute() (above) is used. - // tags: - // protected - }, - - onChange: function(value){ - this.onValueSelected(value); // remove in 2.0 - }, - - getClassForDate: function(/*===== dateObject, locale =====*/){ - // summary: - // May be overridden to return CSS classes to associate with the date entry for the given dateObject, - // for example to indicate a holiday in specified locale. - // dateObject: Date - // locale: String? - // tags: - // extension - -/*===== - return ""; // String -=====*/ - } - }); - - Calendar._MonthDropDownButton = declare("dijit.Calendar._MonthDropDownButton", DropDownButton, { - // summary: - // DropDownButton for the current month. Displays name of current month - // and a list of month names in the drop down - - onMonthSelect: function(){ }, - - postCreate: function(){ - this.inherited(arguments); - this.dropDown = new Calendar._MonthDropDown({ - id: this.id + "_mdd", //do not change this id because it is referenced in the template - onChange: this.onMonthSelect - }); - }, - _setMonthAttr: function(month){ - // summary: - // Set the current month to display as a label - var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang, month); - this.dropDown.set("months", monthNames); - - // Set name of current month and also fill in spacer element with all the month names - // (invisible) so that the maximum width will affect layout. But not on IE6 because then - // the center overlaps the right (due to a browser bug). - this.containerNode.innerHTML = - (has("ie") == 6 ? "" : "
    " + this.dropDown.domNode.innerHTML + "
    ") + - "
    " + monthNames[month.getMonth()] + "
    "; - } - }); - - Calendar._MonthDropDown = declare("dijit.Calendar._MonthDropDown", [_Widget, _TemplatedMixin], { - // summary: - // The list-of-months drop down from the MonthDropDownButton - - // months: String[] - // List of names of months, possibly w/some undefined entries for Hebrew leap months - // (ex: ["January", "February", undefined, "April", ...]) - months: [], - - templateString: "
    ", - - _setMonthsAttr: function(/*String[]*/ months){ - this.domNode.innerHTML = array.map(months, function(month, idx){ - return month ? "
    " + month + "
    " : ""; - }).join(""); - }, - - _onClick: function(/*Event*/ evt){ - this.onChange(domAttr.get(evt.target, "month")); - }, - - onChange: function(/*Number*/ /*===== month =====*/){ - // summary: - // Callback when month is selected from drop down - }, - - _onMenuHover: function(evt){ - domClass.toggle(evt.target, "dijitCalendarMonthLabelHover", evt.type == "mouseover"); - } - }); - - return Calendar; -}); diff --git a/lib/dijit/CalendarLite.js.uncompressed.js b/lib/dijit/CalendarLite.js.uncompressed.js deleted file mode 100644 index 960cf520d..000000000 --- a/lib/dijit/CalendarLite.js.uncompressed.js +++ /dev/null @@ -1,501 +0,0 @@ -require({cache:{ -'url:dijit/templates/Calendar.html':"\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t${!dayCellsHtml}\n\t\t\n\t\n\t\n\t\t\t${!dateRowsHtml}\n\t\n\t\n\t\t\n\t\t\t\n\t\t\n\t\n
    \n\t\t\t\t\"\"\n\t\t\t\t-\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\t\"\"\n\t\t\t\t+\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n"}}); -define("dijit/CalendarLite", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/declare", // declare - "dojo/cldr/supplemental", // cldrSupplemental.getFirstDayOfWeek - "dojo/date", // date - "dojo/date/locale", - "dojo/date/stamp", // stamp.fromISOString - "dojo/dom", // dom.setSelectable - "dojo/dom-class", // domClass.contains - "dojo/_base/event", // event.stop - "dojo/_base/lang", // lang.getObject, lang.hitch - "dojo/sniff", // has("ie") has("webkit") - "dojo/string", // string.substitute - "./_WidgetBase", - "./_TemplatedMixin", - "dojo/text!./templates/Calendar.html", - "./hccss" // not used directly, but sets CSS class on -], function(array, declare, cldrSupplemental, date, locale, stamp, dom, domClass, event, lang, has, string, - _WidgetBase, _TemplatedMixin, template){ - - - // module: - // dijit/CalendarLite - - var CalendarLite = declare("dijit.CalendarLite", [_WidgetBase, _TemplatedMixin], { - // summary: - // Lightweight version of Calendar widget aimed towards mobile use - // - // description: - // A simple GUI for choosing a date in the context of a monthly calendar. - // This widget can't be used in a form because it doesn't serialize the date to an - // `` field. For a form element, use dijit/form/DateTextBox instead. - // - // Note that the parser takes all dates attributes passed in the - // [RFC 3339 format](http://www.faqs.org/rfcs/rfc3339.html), e.g. `2005-06-30T08:05:00-07:00` - // so that they are serializable and locale-independent. - // - // Also note that this widget isn't keyboard accessible; use dijit.Calendar for that - // example: - // | var calendar = new dijit.CalendarLite({}, dojo.byId("calendarNode")); - // - // example: - // |
    - - // Template for main calendar - templateString: template, - - // Template for cell for a day of the week (ex: M) - dowTemplateString: '
    ${d}
    - this._date2cell = {}; - - // Iterate through dates in the calendar and fill in date numbers and style info - array.forEach(this.dateCells, function(template, idx){ - var i = idx + dayOffset; - var date = new this.dateClassObj(month), - number, clazz = "dijitCalendar", adj = 0; - - if(i < firstDay){ - number = daysInPreviousMonth - firstDay + i + 1; - adj = -1; - clazz += "Previous"; - }else if(i >= (firstDay + daysInMonth)){ - number = i - firstDay - daysInMonth + 1; - adj = 1; - clazz += "Next"; - }else{ - number = i - firstDay + 1; - clazz += "Current"; - } - - if(adj){ - date = this.dateModule.add(date, "month", adj); - } - date.setDate(number); - - if(!this.dateModule.compare(date, today, "date")){ - clazz = "dijitCalendarCurrentDate " + clazz; - } - - if(this.isDisabledDate(date, this.lang)){ - clazz = "dijitCalendarDisabledDate " + clazz; - template.setAttribute("aria-disabled", "true"); - }else{ - clazz = "dijitCalendarEnabledDate " + clazz; - template.removeAttribute("aria-disabled"); - template.setAttribute("aria-selected", "false"); - } - - var clazz2 = this.getClassForDate(date, this.lang); - if(clazz2){ - clazz = clazz2 + " " + clazz; - } - - template.className = clazz + "Month dijitCalendarDateTemplate"; - - // Each cell has an associated integer value representing it's date - var dateVal = date.valueOf(); - this._date2cell[dateVal] = template; - template.dijitDateValue = dateVal; - - // Set Date string (ex: "13"). - this._setText(this.dateLabels[idx], date.getDateLocalized ? date.getDateLocalized(this.lang) : date.getDate()); - }, this); - }, - - _populateControls: function(){ - // summary: - // Fill in localized month, and prev/current/next years - // tags: - // protected - - var month = new this.dateClassObj(this.currentFocus); - month.setDate(1); - - // set name of this month - this.monthWidget.set("month", month); - - var y = month.getFullYear() - 1; - var d = new this.dateClassObj(); - array.forEach(["previous", "current", "next"], function(name){ - d.setFullYear(y++); - this._setText(this[name+"YearLabelNode"], - this.dateLocaleModule.format(d, {selector:'year', locale:this.lang})); - }, this); - }, - - goToToday: function(){ - // summary: - // Sets calendar's value to today's date - this.set('value', new this.dateClassObj()); - }, - - constructor: function(params /*===== , srcNodeRef =====*/){ - // summary: - // Create the widget. - // params: Object|null - // Hash of initialization parameters for widget, including scalar values (like title, duration etc.) - // and functions, typically callbacks like onClick. - // The hash can contain any of the widget's properties, excluding read-only properties. - // srcNodeRef: DOMNode|String? - // If a srcNodeRef (DOM node) is specified, replace srcNodeRef with my generated DOM tree - - this.dateModule = params.datePackage ? lang.getObject(params.datePackage, false) : date; - this.dateClassObj = this.dateModule.Date || Date; - this.dateLocaleModule = params.datePackage ? lang.getObject(params.datePackage+".locale", false) : locale; - }, - - _createMonthWidget: function(){ - // summary: - // Creates the drop down button that displays the current month and lets user pick a new one - - return CalendarLite._MonthWidget({ - id: this.id + "_mw", - lang: this.lang, - dateLocaleModule: this.dateLocaleModule - }, this.monthNode); - }, - - buildRendering: function(){ - // Markup for days of the week (referenced from template) - var d = this.dowTemplateString, - dayNames = this.dateLocaleModule.getNames('days', this.dayWidth, 'standAlone', this.lang), - dayOffset = cldrSupplemental.getFirstDayOfWeek(this.lang); - this.dayCellsHtml = string.substitute([d,d,d,d,d,d,d].join(""), {d: ""}, function(){ - return dayNames[dayOffset++ % 7]; - }); - - // Markup for dates of the month (referenced from template), but without numbers filled in - var r = string.substitute(this.weekTemplateString, {d: this.dateTemplateString}); - this.dateRowsHtml = [r,r,r,r,r,r].join(""); - - // Instantiate from template. - // dateCells and dateLabels arrays filled when _Templated parses my template. - this.dateCells = []; - this.dateLabels = []; - this.inherited(arguments); - - dom.setSelectable(this.domNode, false); - - var dateObj = new this.dateClassObj(this.currentFocus); - - this.monthWidget = this._createMonthWidget(); - - this.set('currentFocus', dateObj, false); // draw the grid to the month specified by currentFocus - }, - - postCreate: function(){ - this.inherited(arguments); - this._connectControls(); - }, - - _connectControls: function(){ - // summary: - // Set up connects for increment/decrement of months/years - // tags: - // protected - - var connect = lang.hitch(this, function(nodeProp, part, amount){ - this.connect(this[nodeProp], "onclick", function(){ - this._setCurrentFocusAttr(this.dateModule.add(this.currentFocus, part, amount)); - }); - }); - - connect("incrementMonth", "month", 1); - connect("decrementMonth", "month", -1); - connect("nextYearLabelNode", "year", 1); - connect("previousYearLabelNode", "year", -1); - }, - - _setCurrentFocusAttr: function(/*Date*/ date, /*Boolean*/ forceFocus){ - // summary: - // If the calendar currently has focus, then focuses specified date, - // changing the currently displayed month/year if necessary. - // If the calendar doesn't have focus, updates currently - // displayed month/year, and sets the cell that will get focus - // when Calendar is focused. - // forceFocus: - // If true, will focus() the cell even if calendar itself doesn't have focus - - var oldFocus = this.currentFocus, - oldCell = this._getNodeByDate(oldFocus); - date = this._patchDate(date); - - this._set("currentFocus", date); - - // If the focus is on a different month than the current calendar month, switch the displayed month. - // Also will populate the grid initially, on Calendar creation. - if(!this._date2cell || this.dateModule.difference(oldFocus, date, "month") != 0){ - this._populateGrid(); - this._populateControls(); - this._markSelectedDates([this.value]); - } - - // set tabIndex=0 on new cell, and focus it (but only if Calendar itself is focused) - var newCell = this._getNodeByDate(date); - newCell.setAttribute("tabIndex", this.tabIndex); - if(this.focused || forceFocus){ - newCell.focus(); - } - - // set tabIndex=-1 on old focusable cell - if(oldCell && oldCell != newCell){ - if(has("webkit")){ // see #11064 about webkit bug - oldCell.setAttribute("tabIndex", "-1"); - }else{ - oldCell.removeAttribute("tabIndex"); - } - } - }, - - focus: function(){ - // summary: - // Focus the calendar by focusing one of the calendar cells - this._setCurrentFocusAttr(this.currentFocus, true); - }, - - _onDayClick: function(/*Event*/ evt){ - // summary: - // Handler for day clicks, selects the date if appropriate - // tags: - // protected - event.stop(evt); - for(var node = evt.target; node && !node.dijitDateValue; node = node.parentNode); - if(node && !domClass.contains(node, "dijitCalendarDisabledDate")){ - this.set('value', node.dijitDateValue); - } - }, - - _getNodeByDate : function(/*Date*/ value){ - // summary: - // Returns the cell corresponding to the date, or null if the date is not within the currently - // displayed month. - value = this._patchDate(value); - return value && this._date2cell ? this._date2cell[value.valueOf()] : null; - }, - - _markSelectedDates: function(/*Date[]*/ dates){ - // summary: - // Marks the specified cells as selected, and clears cells previously marked as selected. - // For CalendarLite at most one cell is selected at any point, but this allows an array - // for easy subclassing. - - // Function to mark a cell as selected or unselected - function mark(/*Boolean*/ selected, /*DomNode*/ cell){ - domClass.toggle(cell, "dijitCalendarSelectedDate", selected); - cell.setAttribute("aria-selected", selected ? "true" : "false"); - } - - // Clear previously selected cells. - array.forEach(this._selectedCells || [], lang.partial(mark, false)); - - // Mark newly selected cells. Ignore dates outside the currently displayed month. - this._selectedCells = array.filter(array.map(dates, this._getNodeByDate, this), function(n){ return n;}); - array.forEach(this._selectedCells, lang.partial(mark, true)); - }, - - onChange: function(/*Date*/ /*===== date =====*/){ - // summary: - // Called only when the selected date has changed - }, - - isDisabledDate: function(/*===== dateObject, locale =====*/){ - // summary: - // May be overridden to disable certain dates in the calendar e.g. `isDisabledDate=dojo.date.locale.isWeekend` - // dateObject: Date - // locale: String? - // tags: - // extension -/*===== - return false; // Boolean -=====*/ - }, - - getClassForDate: function(/*===== dateObject, locale =====*/){ - // summary: - // May be overridden to return CSS classes to associate with the date entry for the given dateObject, - // for example to indicate a holiday in specified locale. - // dateObject: Date - // locale: String? - // tags: - // extension - -/*===== - return ""; // String -=====*/ - } - }); - - CalendarLite._MonthWidget = declare("dijit.CalendarLite._MonthWidget", _WidgetBase, { - // summary: - // Displays name of current month padded to the width of the month - // w/the longest name, so that changing months doesn't change width. - // - // Create as: - // | new Calendar._MonthWidget({ - // | lang: ..., - // | dateLocaleModule: ... - // | }) - - _setMonthAttr: function(month){ - // summary: - // Set the current month to display as a label - var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang, month), - spacer = - (has("ie") == 6 ? "" : "
    " + - array.map(monthNames, function(s){ return "
    " + s + "
    "; }).join("") + "
    "); - - // Set name of current month and also fill in spacer element with all the month names - // (invisible) so that the maximum width will affect layout. But not on IE6 because then - // the center
    overlaps the right (due to a browser bug). - this.domNode.innerHTML = - spacer + - "
    " + - monthNames[month.getMonth()] + "
    "; - } - }); - - return CalendarLite; -}); diff --git a/lib/dijit/CheckedMenuItem.js.uncompressed.js b/lib/dijit/CheckedMenuItem.js.uncompressed.js deleted file mode 100644 index b28a9887d..000000000 --- a/lib/dijit/CheckedMenuItem.js.uncompressed.js +++ /dev/null @@ -1,53 +0,0 @@ -require({cache:{ -'url:dijit/templates/CheckedMenuItem.html':"
    \n\t\t\"\"\n\t\t\n\t 
    \n\t\t\n\t
    \n\n"}}); -define("dijit/ColorPalette", [ - "require", // require.toUrl - "dojo/text!./templates/ColorPalette.html", - "./_Widget", // used also to load dijit/hccss for setting has("highcontrast") - "./_TemplatedMixin", - "./_PaletteMixin", - "./hccss", // has("highcontrast") - "dojo/i18n", // i18n.getLocalization - "dojo/_base/Color", // dojo.Color dojo.Color.named - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.place - "dojo/string", // string.substitute - "dojo/i18n!dojo/nls/colors", // translations - "dojo/colors" // extend dojo.Color w/names of other colors -], function(require, template, _Widget, _TemplatedMixin, _PaletteMixin, has, i18n, Color, - declare, domConstruct, string){ - -// module: -// dijit/ColorPalette - -var ColorPalette = declare("dijit.ColorPalette", [_Widget, _TemplatedMixin, _PaletteMixin], { - // summary: - // A keyboard accessible color-picking widget - // description: - // Grid showing various colors, so the user can pick a certain color. - // Can be used standalone, or as a popup. - // - // example: - // |
    - // - // example: - // | var picker = new dijit.ColorPalette({ },srcNode); - // | picker.startup(); - - - // palette: [const] String - // Size of grid, either "7x10" or "3x4". - palette: "7x10", - - // _palettes: [protected] Map - // This represents the value of the colors. - // The first level is a hashmap of the different palettes available. - // The next two dimensions represent the columns and rows of colors. - _palettes: { - "7x10": [["white", "seashell", "cornsilk", "lemonchiffon","lightyellow", "palegreen", "paleturquoise", "lightcyan", "lavender", "plum"], - ["lightgray", "pink", "bisque", "moccasin", "khaki", "lightgreen", "lightseagreen", "lightskyblue", "cornflowerblue", "violet"], - ["silver", "lightcoral", "sandybrown", "orange", "palegoldenrod", "chartreuse", "mediumturquoise", "skyblue", "mediumslateblue","orchid"], - ["gray", "red", "orangered", "darkorange", "yellow", "limegreen", "darkseagreen", "royalblue", "slateblue", "mediumorchid"], - ["dimgray", "crimson", "chocolate", "coral", "gold", "forestgreen", "seagreen", "blue", "blueviolet", "darkorchid"], - ["darkslategray","firebrick","saddlebrown", "sienna", "olive", "green", "darkcyan", "mediumblue","darkslateblue", "darkmagenta" ], - ["black", "darkred", "maroon", "brown", "darkolivegreen", "darkgreen", "midnightblue", "navy", "indigo", "purple"]], - - "3x4": [["white", "lime", "green", "blue"], - ["silver", "yellow", "fuchsia", "navy"], - ["gray", "red", "purple", "black"]] - }, - - // templateString: String - // The template of this widget. - templateString: template, - - baseClass: "dijitColorPalette", - - _dyeFactory: function(value, row, col, title){ - // Overrides _PaletteMixin._dyeFactory(). - return new this._dyeClass(value, row, col, title); - }, - - buildRendering: function(){ - // Instantiate the template, which makes a skeleton into which we'll insert a bunch of - // nodes - this.inherited(arguments); - - // Creates customized constructor for dye class (color of a single cell) for - // specified palette and high-contrast vs. normal mode. Used in _getDye(). - this._dyeClass = declare(ColorPalette._Color, { - palette: this.palette - }); - - // Creates nodes in each cell of the template. - this._preparePalette( - this._palettes[this.palette], - i18n.getLocalization("dojo", "colors", this.lang)); - } -}); - -ColorPalette._Color = declare("dijit._Color", Color, { - // summary: - // Object associated with each cell in a ColorPalette palette. - // Implements dijit/Dye. - - // Template for each cell in normal (non-high-contrast mode). Each cell contains a wrapper - // node for showing the border (called dijitPaletteImg for back-compat), and dijitColorPaletteSwatch - // for showing the color. - template: - "" + - "${alt}" + - "", - - // Template for each cell in high contrast mode. Each cell contains an image with the whole palette, - // but scrolled and clipped to show the correct color only - hcTemplate: - "" + - "${alt}" + - "", - - // _imagePaths: [protected] Map - // This is stores the path to the palette images used for high-contrast mode display - _imagePaths: { - "7x10": require.toUrl("./themes/a11y/colors7x10.png"), - "3x4": require.toUrl("./themes/a11y/colors3x4.png") - }, - - constructor: function(alias, row, col, title){ - // summary: - // Constructor for ColorPalette._Color - // alias: String - // English name of the color. - // row: Number - // Vertical position in grid. - // column: Number - // Horizontal position in grid. - // title: String - // Localized name of the color. - this._title = title; - this._row = row; - this._col = col; - this.setColor(Color.named[alias]); - }, - - getValue: function(){ - // summary: - // Note that although dijit._Color is initialized with a value like "white" getValue() always - // returns a hex value - return this.toHex(); - }, - - fillCell: function(/*DOMNode*/ cell, /*String*/ blankGif){ - var html = string.substitute(has("highcontrast") ? this.hcTemplate : this.template, { - // substitution variables for normal mode - color: this.toHex(), - blankGif: blankGif, - alt: this._title, - title: this._title, - - // variables used for high contrast mode - image: this._imagePaths[this.palette].toString(), - left: this._col * -20 - 5, - top: this._row * -20 - 5, - size: this.palette == "7x10" ? "height: 145px; width: 206px" : "height: 64px; width: 86px" - }); - - domConstruct.place(html, cell); - } -}); - - -return ColorPalette; -}); diff --git a/lib/dijit/Declaration.js.uncompressed.js b/lib/dijit/Declaration.js.uncompressed.js deleted file mode 100644 index 0b4bc28bf..000000000 --- a/lib/dijit/Declaration.js.uncompressed.js +++ /dev/null @@ -1,105 +0,0 @@ -define("dijit/Declaration", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/connect", // connect.connect - "dojo/_base/declare", // declare - "dojo/_base/lang", // lang.getObject - "dojo/parser", // parser._functionFromScript - "dojo/query", // query - "./_Widget", - "./_TemplatedMixin", - "./_WidgetsInTemplateMixin", - "dojo/NodeList-dom" -], function(array, connect, declare, lang, parser, query, _Widget, _TemplatedMixin, _WidgetsInTemplateMixin){ - - // module: - // dijit/Declaration - - return declare("dijit.Declaration", _Widget, { - // summary: - // The Declaration widget allows a developer to declare new widget - // classes directly from a snippet of markup. - - // _noScript: [private] Boolean - // Flag to parser to leave alone the script tags contained inside of me - _noScript: true, - - // stopParser: [private] Boolean - // Flag to parser to not try and parse widgets declared inside of me - stopParser: true, - - // widgetClass: [const] String - // Name of class being declared, ex: "acme.myWidget" - widgetClass: "", - - // propList: [const] Object - // Set of attributes for this widget along with default values, ex: - // {delay: 100, title: "hello world"} - defaults: null, - - // mixins: [const] String[] - // List containing the prototype for this widget, and also any mixins, - // ex: ["dijit._Widget", "dijit._Container"] - mixins: [], - - buildRendering: function(){ - var src = this.srcNodeRef.parentNode.removeChild(this.srcNodeRef), - methods = query("> script[type^='dojo/method']", src).orphan(), - connects = query("> script[type^='dojo/connect']", src).orphan(), - srcType = src.nodeName; - - var propList = this.defaults || {}; - - // For all methods defined like - // |
    - - // _handleScroll: Boolean - // Enables/disables the handler for scroll events - _handleScroll: true, - - setEditor: function(e){ - // Overrides _Plugin.setEditor(). - if(!e.iframe){ - console.log('Port AlwaysShowToolbar plugin to work with Editor without iframe'); - return; - } - - this.editor = e; - - e.onLoadDeferred.then(lang.hitch(this, this.enable)); - }, - - enable: function(d){ - // summary: - // Enable plugin. Called when Editor has finished initializing. - // tags: - // private - - this._updateHeight(); - this.connect(window, 'onscroll', "globalOnScrollHandler"); - this.connect(this.editor, 'onNormalizedDisplayChanged', "_updateHeight"); - return d; - }, - - _updateHeight: function(){ - // summary: - // Updates the height of the editor area to fit the contents. - var e = this.editor; - if(!e.isLoaded){ return; } - if(e.height){ return; } - - var height = domGeometry.getMarginSize(e.editNode).h; - if(has("opera")){ - height = e.editNode.scrollHeight; - } - // console.debug('height',height); - // alert(this.editNode); - - //height maybe zero in some cases even though the content is not empty, - //we try the height of body instead - if(!height){ - height = domGeometry.getMarginSize(e.document.body).h; - } - - if(height == 0){ - console.debug("Can not figure out the height of the editing area!"); - return; //prevent setting height to 0 - } - if(has("ie") <= 7 && this.editor.minHeight){ - var min = parseInt(this.editor.minHeight); - if(height < min){ height = min; } - } - if(height != this._lastHeight){ - this._lastHeight = height; - // this.editorObject.style.height = this._lastHeight + "px"; - domGeometry.setMarginBox(e.iframe, { h: this._lastHeight }); - } - }, - - // _lastHeight: Integer - // Height in px of the editor at the last time we did sizing - _lastHeight: 0, - - globalOnScrollHandler: function(){ - // summary: - // Handler for scroll events that bubbled up to `` - // tags: - // private - - var isIE6 = has("ie") < 7; - if(!this._handleScroll){ return; } - var tdn = this.editor.header; - if(!this._scrollSetUp){ - this._scrollSetUp = true; - this._scrollThreshold = domGeometry.position(tdn, true).y; -// var db = win.body; -// console.log("threshold:", this._scrollThreshold); - //what's this for?? comment out for now -// if((isIE6)&&(db)&&(domStyle.set or get TODO(db, "backgroundIimage")=="none")){ -// db.style.backgroundImage = "url(" + dojo.uri.moduleUri("dijit", "templates/blank.gif") + ")"; -// db.style.backgroundAttachment = "fixed"; -// } - } - - var scrollPos = domGeometry.docScroll(this.editor.ownerDocument).y; - var s = tdn.style; - - if(scrollPos > this._scrollThreshold && scrollPos < this._scrollThreshold+this._lastHeight){ - // dojo.debug(scrollPos); - if(!this._fixEnabled){ - var tdnbox = domGeometry.getMarginSize(tdn); - this.editor.iframe.style.marginTop = tdnbox.h+"px"; - - if(isIE6){ - s.left = domGeometry.position(tdn).x; - if(tdn.previousSibling){ - this._IEOriginalPos = ['after',tdn.previousSibling]; - }else if(tdn.nextSibling){ - this._IEOriginalPos = ['before',tdn.nextSibling]; - }else{ - this._IEOriginalPos = ['last',tdn.parentNode]; - } - this.editor.ownerDocumentBody.appendChild(tdn); - domClass.add(tdn,'dijitIEFixedToolbar'); - }else{ - s.position = "fixed"; - s.top = "0px"; - } - - domGeometry.setMarginBox(tdn, { w: tdnbox.w }); - s.zIndex = 2000; - this._fixEnabled = true; - } - // if we're showing the floating toolbar, make sure that if - // we've scrolled past the bottom of the editor that we hide - // the toolbar for this instance of the editor. - - // TODO: when we get multiple editor toolbar support working - // correctly, ensure that we check this against the scroll - // position of the bottom-most editor instance. - var eHeight = (this.height) ? parseInt(this.editor.height) : this.editor._lastHeight; - s.display = (scrollPos > this._scrollThreshold+eHeight) ? "none" : ""; - }else if(this._fixEnabled){ - this.editor.iframe.style.marginTop = ''; - s.position = ""; - s.top = ""; - s.zIndex = ""; - s.display = ""; - if(isIE6){ - s.left = ""; - domClass.remove(tdn,'dijitIEFixedToolbar'); - if(this._IEOriginalPos){ - domConstruct.place(tdn, this._IEOriginalPos[1], this._IEOriginalPos[0]); - this._IEOriginalPos = null; - }else{ - domConstruct.place(tdn, this.editor.iframe, 'before'); - } - } - s.width = ""; - this._fixEnabled = false; - } - }, - - destroy: function(){ - // Overrides _Plugin.destroy(). TODO: call this.inherited() rather than repeating code. - this._IEOriginalPos = null; - this._handleScroll = false; - this.inherited(arguments); - - if(has("ie") < 7){ - domClass.remove(this.editor.header, 'dijitIEFixedToolbar'); - } - } -}); - -}); diff --git a/lib/dijit/_editor/plugins/EnterKeyHandling.js.uncompressed.js b/lib/dijit/_editor/plugins/EnterKeyHandling.js.uncompressed.js deleted file mode 100644 index e5c7b7466..000000000 --- a/lib/dijit/_editor/plugins/EnterKeyHandling.js.uncompressed.js +++ /dev/null @@ -1,622 +0,0 @@ -define("dijit/_editor/plugins/EnterKeyHandling", [ - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.destroy domConstruct.place - "dojo/_base/event", // event.stop - "dojo/keys", // keys.ENTER - "dojo/_base/lang", - "dojo/sniff", // has("ie") has("mozilla") has("webkit") - "dojo/_base/window", // win.withGlobal - "dojo/window", // winUtils.scrollIntoView - "../_Plugin", - "../RichText", - "../range", - "../../_base/focus" -], function(declare, domConstruct, event, keys, lang, has, win, winUtils, _Plugin, RichText, rangeapi, baseFocus){ - -// module: -// dijit/_editor/plugins/EnterKeyHandling - -return declare("dijit._editor.plugins.EnterKeyHandling", _Plugin, { - // summary: - // This plugin tries to make all browsers behave consistently with regard to - // how ENTER behaves in the editor window. It traps the ENTER key and alters - // the way DOM is constructed in certain cases to try to commonize the generated - // DOM and behaviors across browsers. - // - // description: - // This plugin has three modes: - // - // - blockNodeForEnter=BR - // - blockNodeForEnter=DIV - // - blockNodeForEnter=P - // - // In blockNodeForEnter=P, the ENTER key starts a new - // paragraph, and shift-ENTER starts a new line in the current paragraph. - // For example, the input: - // - // | first paragraph - // | second line of first paragraph - // | second paragraph - // - // will generate: - // - // |

    - // | first paragraph - // |
    - // | second line of first paragraph - // |

    - // |

    - // | second paragraph - // |

    - // - // In BR and DIV mode, the ENTER key conceptually goes to a new line in the - // current paragraph, and users conceptually create a new paragraph by pressing ENTER twice. - // For example, if the user enters text into an editor like this: - // - // | one - // | two - // | three - // | - // | four - // | five - // | six - // - // It will appear on the screen as two 'paragraphs' of three lines each. Markupwise, this generates: - // - // BR: - // | one
    - // | two
    - // | three
    - // |
    - // | four
    - // | five
    - // | six
    - // - // DIV: - // |
    one
    - // |
    two
    - // |
    three
    - // |
     
    - // |
    four
    - // |
    five
    - // |
    six
    - - // blockNodeForEnter: String - // This property decides the behavior of Enter key. It can be either P, - // DIV, BR, or empty (which means disable this feature). Anything else - // will trigger errors. The default is 'BR' - // - // See class description for more details. - blockNodeForEnter: 'BR', - - constructor: function(args){ - if(args){ - if("blockNodeForEnter" in args){ - args.blockNodeForEnter = args.blockNodeForEnter.toUpperCase(); - } - lang.mixin(this,args); - } - }, - - setEditor: function(editor){ - // Overrides _Plugin.setEditor(). - if(this.editor === editor){ return; } - this.editor = editor; - if(this.blockNodeForEnter == 'BR'){ - // While Moz has a mode tht mostly works, it's still a little different, - // So, try to just have a common mode and be consistent. Which means - // we need to enable customUndo, if not already enabled. - this.editor.customUndo = true; - editor.onLoadDeferred.then(lang.hitch(this,function(d){ - this.connect(editor.document, "onkeypress", function(e){ - if(e.charOrCode == keys.ENTER){ - // Just do it manually. The handleEnterKey has a shift mode that - // Always acts like
    , so just use it. - var ne = lang.mixin({},e); - ne.shiftKey = true; - if(!this.handleEnterKey(ne)){ - event.stop(e); - } - } - }); - if(has("ie") >= 9){ - this.connect(editor.document, "onpaste", function(e){ - setTimeout(dojo.hitch(this, function(){ - // Use the old range/selection code to kick IE 9 into updating - // its range by moving it back, then forward, one 'character'. - var r = this.editor.document.selection.createRange(); - r.move('character',-1); - r.select(); - r.move('character',1); - r.select(); - }),0); - }); - } - return d; - })); - }else if(this.blockNodeForEnter){ - // add enter key handler - // FIXME: need to port to the new event code!! - var h = lang.hitch(this,this.handleEnterKey); - editor.addKeyHandler(13, 0, 0, h); //enter - editor.addKeyHandler(13, 0, 1, h); //shift+enter - this.connect(this.editor,'onKeyPressed','onKeyPressed'); - } - }, - onKeyPressed: function(){ - // summary: - // Handler for keypress events. - // tags: - // private - if(this._checkListLater){ - if(win.withGlobal(this.editor.window, 'isCollapsed', baseFocus)){ - var liparent = this.editor._sCall('getAncestorElement', ['LI']); - if(!liparent){ - // circulate the undo detection code by calling RichText::execCommand directly - RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter); - // set the innerHTML of the new block node - var block = this.editor._sCall('getAncestorElement', [this.blockNodeForEnter]); - if(block){ - block.innerHTML=this.bogusHtmlContent; - if(has("ie") <= 9){ - // move to the start by moving backwards one char - var r = this.editor.document.selection.createRange(); - r.move('character',-1); - r.select(); - } - }else{ - console.error('onKeyPressed: Cannot find the new block node'); // FIXME - } - }else{ - if(has("mozilla")){ - if(liparent.parentNode.parentNode.nodeName == 'LI'){ - liparent=liparent.parentNode.parentNode; - } - } - var fc=liparent.firstChild; - if(fc && fc.nodeType == 1 && (fc.nodeName == 'UL' || fc.nodeName == 'OL')){ - liparent.insertBefore(fc.ownerDocument.createTextNode('\xA0'),fc); - var newrange = rangeapi.create(this.editor.window); - newrange.setStart(liparent.firstChild,0); - var selection = rangeapi.getSelection(this.editor.window, true); - selection.removeAllRanges(); - selection.addRange(newrange); - } - } - } - this._checkListLater = false; - } - if(this._pressedEnterInBlock){ - // the new created is the original current P, so we have previousSibling below - if(this._pressedEnterInBlock.previousSibling){ - this.removeTrailingBr(this._pressedEnterInBlock.previousSibling); - } - delete this._pressedEnterInBlock; - } - }, - - // bogusHtmlContent: [private] String - // HTML to stick into a new empty block - bogusHtmlContent: ' ', //   - - // blockNodes: [private] Regex - // Regex for testing if a given tag is a block level (display:block) tag - blockNodes: /^(?:P|H1|H2|H3|H4|H5|H6|LI)$/, - - handleEnterKey: function(e){ - // summary: - // Handler for enter key events when blockNodeForEnter is DIV or P. - // description: - // Manually handle enter key event to make the behavior consistent across - // all supported browsers. See class description for details. - // tags: - // private - - var selection, range, newrange, startNode, endNode, brNode, doc=this.editor.document,br,rs,txt; - if(e.shiftKey){ // shift+enter always generates
    - var parent = this.editor._sCall('getParentElement', []); - var header = rangeapi.getAncestor(parent,this.blockNodes); - if(header){ - if(header.tagName == 'LI'){ - return true; // let browser handle - } - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - if(!range.collapsed){ - range.deleteContents(); - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - } - if(rangeapi.atBeginningOfContainer(header, range.startContainer, range.startOffset)){ - br=doc.createElement('br'); - newrange = rangeapi.create(this.editor.window); - header.insertBefore(br,header.firstChild); - newrange.setStartAfter(br); - selection.removeAllRanges(); - selection.addRange(newrange); - }else if(rangeapi.atEndOfContainer(header, range.startContainer, range.startOffset)){ - newrange = rangeapi.create(this.editor.window); - br=doc.createElement('br'); - header.appendChild(br); - header.appendChild(doc.createTextNode('\xA0')); - newrange.setStart(header.lastChild,0); - selection.removeAllRanges(); - selection.addRange(newrange); - }else{ - rs = range.startContainer; - if(rs && rs.nodeType == 3){ - // Text node, we have to split it. - txt = rs.nodeValue; - startNode = doc.createTextNode(txt.substring(0, range.startOffset)); - endNode = doc.createTextNode(txt.substring(range.startOffset)); - brNode = doc.createElement("br"); - - if(endNode.nodeValue == "" && has("webkit")){ - endNode = doc.createTextNode('\xA0') - } - domConstruct.place(startNode, rs, "after"); - domConstruct.place(brNode, startNode, "after"); - domConstruct.place(endNode, brNode, "after"); - domConstruct.destroy(rs); - newrange = rangeapi.create(this.editor.window); - newrange.setStart(endNode,0); - selection.removeAllRanges(); - selection.addRange(newrange); - return false; - } - return true; // let browser handle - } - }else{ - selection = rangeapi.getSelection(this.editor.window); - if(selection.rangeCount){ - range = selection.getRangeAt(0); - if(range && range.startContainer){ - if(!range.collapsed){ - range.deleteContents(); - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - } - rs = range.startContainer; - if(rs && rs.nodeType == 3){ - // Text node, we have to split it. - var endEmpty = false; - - var offset = range.startOffset; - if(rs.length < offset){ - //We are not splitting the right node, try to locate the correct one - ret = this._adjustNodeAndOffset(rs, offset); - rs = ret.node; - offset = ret.offset; - } - txt = rs.nodeValue; - - startNode = doc.createTextNode(txt.substring(0, offset)); - endNode = doc.createTextNode(txt.substring(offset)); - brNode = doc.createElement("br"); - - if(!endNode.length){ - endNode = doc.createTextNode('\xA0'); - endEmpty = true; - } - - if(startNode.length){ - domConstruct.place(startNode, rs, "after"); - }else{ - startNode = rs; - } - domConstruct.place(brNode, startNode, "after"); - domConstruct.place(endNode, brNode, "after"); - domConstruct.destroy(rs); - newrange = rangeapi.create(this.editor.window); - newrange.setStart(endNode,0); - newrange.setEnd(endNode, endNode.length); - selection.removeAllRanges(); - selection.addRange(newrange); - if(endEmpty && !has("webkit")){ - this.editor._sCall("remove", []); - }else{ - this.editor._sCall("collapse", [true]); - } - }else{ - var targetNode; - if(range.startOffset >= 0){ - targetNode = rs.childNodes[range.startOffset]; - } - var brNode = doc.createElement("br"); - var endNode = doc.createTextNode('\xA0'); - if(!targetNode){ - rs.appendChild(brNode); - rs.appendChild(endNode); - }else{ - domConstruct.place(brNode, targetNode, "before"); - domConstruct.place(endNode, brNode, "after"); - } - newrange = rangeapi.create(this.editor.window); - newrange.setStart(endNode,0); - newrange.setEnd(endNode, endNode.length); - selection.removeAllRanges(); - selection.addRange(newrange); - this.editor._sCall("collapse", [true]); - } - } - }else{ - // don't change this: do not call this.execCommand, as that may have other logic in subclass - RichText.prototype.execCommand.call(this.editor, 'inserthtml', '
    '); - } - } - return false; - } - var _letBrowserHandle = true; - - // first remove selection - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - if(!range.collapsed){ - range.deleteContents(); - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - } - - var block = rangeapi.getBlockAncestor(range.endContainer, null, this.editor.editNode); - var blockNode = block.blockNode; - - // if this is under a LI or the parent of the blockNode is LI, just let browser to handle it - if((this._checkListLater = (blockNode && (blockNode.nodeName == 'LI' || blockNode.parentNode.nodeName == 'LI')))){ - if(has("mozilla")){ - // press enter in middle of P may leave a trailing
    , let's remove it later - this._pressedEnterInBlock = blockNode; - } - // if this li only contains spaces, set the content to empty so the browser will outdent this item - if(/^(\s| | |\xA0|]*\bclass=['"]Apple-style-span['"][^>]*>(\s| | |\xA0)<\/span>)?(
    )?$/.test(blockNode.innerHTML)){ - // empty LI node - blockNode.innerHTML = ''; - if(has("webkit")){ // WebKit tosses the range when innerHTML is reset - newrange = rangeapi.create(this.editor.window); - newrange.setStart(blockNode, 0); - selection.removeAllRanges(); - selection.addRange(newrange); - } - this._checkListLater = false; // nothing to check since the browser handles outdent - } - return true; - } - - // text node directly under body, let's wrap them in a node - if(!block.blockNode || block.blockNode===this.editor.editNode){ - try{ - RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter); - }catch(e2){ /*squelch FF3 exception bug when editor content is a single BR*/ } - // get the newly created block node - // FIXME - block = {blockNode: this.editor._sCall('getAncestorElement', [this.blockNodeForEnter]), - blockContainer: this.editor.editNode}; - if(block.blockNode){ - if(block.blockNode != this.editor.editNode && - (!(block.blockNode.textContent || block.blockNode.innerHTML).replace(/^\s+|\s+$/g, "").length)){ - this.removeTrailingBr(block.blockNode); - return false; - } - }else{ // we shouldn't be here if formatblock worked - block.blockNode = this.editor.editNode; - } - selection = rangeapi.getSelection(this.editor.window); - range = selection.getRangeAt(0); - } - - var newblock = doc.createElement(this.blockNodeForEnter); - newblock.innerHTML=this.bogusHtmlContent; - this.removeTrailingBr(block.blockNode); - var endOffset = range.endOffset; - var node = range.endContainer; - if(node.length < endOffset){ - //We are not checking the right node, try to locate the correct one - var ret = this._adjustNodeAndOffset(node, endOffset); - node = ret.node; - endOffset = ret.offset; - } - if(rangeapi.atEndOfContainer(block.blockNode, node, endOffset)){ - if(block.blockNode === block.blockContainer){ - block.blockNode.appendChild(newblock); - }else{ - domConstruct.place(newblock, block.blockNode, "after"); - } - _letBrowserHandle = false; - // lets move caret to the newly created block - newrange = rangeapi.create(this.editor.window); - newrange.setStart(newblock, 0); - selection.removeAllRanges(); - selection.addRange(newrange); - if(this.editor.height){ - winUtils.scrollIntoView(newblock); - } - }else if(rangeapi.atBeginningOfContainer(block.blockNode, - range.startContainer, range.startOffset)){ - domConstruct.place(newblock, block.blockNode, block.blockNode === block.blockContainer ? "first" : "before"); - if(newblock.nextSibling && this.editor.height){ - // position input caret - mostly WebKit needs this - newrange = rangeapi.create(this.editor.window); - newrange.setStart(newblock.nextSibling, 0); - selection.removeAllRanges(); - selection.addRange(newrange); - // browser does not scroll the caret position into view, do it manually - winUtils.scrollIntoView(newblock.nextSibling); - } - _letBrowserHandle = false; - }else{ //press enter in the middle of P/DIV/Whatever/ - if(block.blockNode === block.blockContainer){ - block.blockNode.appendChild(newblock); - }else{ - domConstruct.place(newblock, block.blockNode, "after"); - } - _letBrowserHandle = false; - - // Clone any block level styles. - if(block.blockNode.style){ - if(newblock.style){ - if(block.blockNode.style.cssText){ - newblock.style.cssText = block.blockNode.style.cssText; - } - } - } - - // Okay, we probably have to split. - rs = range.startContainer; - var firstNodeMoved; - if(rs && rs.nodeType == 3){ - // Text node, we have to split it. - var nodeToMove, tNode; - endOffset = range.endOffset; - if(rs.length < endOffset){ - //We are not splitting the right node, try to locate the correct one - ret = this._adjustNodeAndOffset(rs, endOffset); - rs = ret.node; - endOffset = ret.offset; - } - - txt = rs.nodeValue; - startNode = doc.createTextNode(txt.substring(0, endOffset)); - endNode = doc.createTextNode(txt.substring(endOffset, txt.length)); - - // Place the split, then remove original nodes. - domConstruct.place(startNode, rs, "before"); - domConstruct.place(endNode, rs, "after"); - domConstruct.destroy(rs); - - // Okay, we split the text. Now we need to see if we're - // parented to the block element we're splitting and if - // not, we have to split all the way up. Ugh. - var parentC = startNode.parentNode; - while(parentC !== block.blockNode){ - var tg = parentC.tagName; - var newTg = doc.createElement(tg); - // Clone over any 'style' data. - if(parentC.style){ - if(newTg.style){ - if(parentC.style.cssText){ - newTg.style.cssText = parentC.style.cssText; - } - } - } - // If font also need to clone over any font data. - if(parentC.tagName === "FONT"){ - if(parentC.color){ - newTg.color = parentC.color; - } - if(parentC.face){ - newTg.face = parentC.face; - } - if(parentC.size){ // this check was necessary on IE - newTg.size = parentC.size; - } - } - - nodeToMove = endNode; - while(nodeToMove){ - tNode = nodeToMove.nextSibling; - newTg.appendChild(nodeToMove); - nodeToMove = tNode; - } - domConstruct.place(newTg, parentC, "after"); - startNode = parentC; - endNode = newTg; - parentC = parentC.parentNode; - } - - // Lastly, move the split out tags to the new block. - // as they should now be split properly. - nodeToMove = endNode; - if(nodeToMove.nodeType == 1 || (nodeToMove.nodeType == 3 && nodeToMove.nodeValue)){ - // Non-blank text and non-text nodes need to clear out that blank space - // before moving the contents. - newblock.innerHTML = ""; - } - firstNodeMoved = nodeToMove; - while(nodeToMove){ - tNode = nodeToMove.nextSibling; - newblock.appendChild(nodeToMove); - nodeToMove = tNode; - } - } - - //lets move caret to the newly created block - newrange = rangeapi.create(this.editor.window); - var nodeForCursor; - var innerMostFirstNodeMoved = firstNodeMoved; - if(this.blockNodeForEnter !== 'BR'){ - while(innerMostFirstNodeMoved){ - nodeForCursor = innerMostFirstNodeMoved; - tNode = innerMostFirstNodeMoved.firstChild; - innerMostFirstNodeMoved = tNode; - } - if(nodeForCursor && nodeForCursor.parentNode){ - newblock = nodeForCursor.parentNode; - newrange.setStart(newblock, 0); - selection.removeAllRanges(); - selection.addRange(newrange); - if(this.editor.height){ - winUtils.scrollIntoView(newblock); - } - if(has("mozilla")){ - // press enter in middle of P may leave a trailing
    , let's remove it later - this._pressedEnterInBlock = block.blockNode; - } - }else{ - _letBrowserHandle = true; - } - }else{ - newrange.setStart(newblock, 0); - selection.removeAllRanges(); - selection.addRange(newrange); - if(this.editor.height){ - winUtils.scrollIntoView(newblock); - } - if(has("mozilla")){ - // press enter in middle of P may leave a trailing
    , let's remove it later - this._pressedEnterInBlock = block.blockNode; - } - } - } - return _letBrowserHandle; - }, - - _adjustNodeAndOffset: function(/*DomNode*/node, /*Int*/offset){ - // summary: - // In the case there are multiple text nodes in a row the offset may not be within the node. If the offset is larger than the node length, it will attempt to find - // the next text sibling until it locates the text node in which the offset refers to - // node: - // The node to check. - // offset: - // The position to find within the text node - // tags: - // private. - while(node.length < offset && node.nextSibling && node.nextSibling.nodeType==3){ - //Adjust the offset and node in the case of multiple text nodes in a row - offset = offset - node.length; - node = node.nextSibling; - } - return {"node": node, "offset": offset}; - }, - - removeTrailingBr: function(container){ - // summary: - // If last child of container is a `
    `, then remove it. - // tags: - // private - var para = /P|DIV|LI/i.test(container.tagName) ? - container : this.editor._sCall("getParentOfType", [container,['P','DIV','LI']]); - - if(!para){ return; } - if(para.lastChild){ - if((para.childNodes.length > 1 && para.lastChild.nodeType == 3 && /^[\s\xAD]*$/.test(para.lastChild.nodeValue)) || - para.lastChild.tagName=='BR'){ - - domConstruct.destroy(para.lastChild); - } - } - if(!para.childNodes.length){ - para.innerHTML=this.bogusHtmlContent; - } - } -}); - -}); diff --git a/lib/dijit/_editor/plugins/FontChoice.js.uncompressed.js b/lib/dijit/_editor/plugins/FontChoice.js.uncompressed.js deleted file mode 100644 index 713717351..000000000 --- a/lib/dijit/_editor/plugins/FontChoice.js.uncompressed.js +++ /dev/null @@ -1,583 +0,0 @@ -define("dijit/_editor/plugins/FontChoice", [ - "dojo/_base/array", // array.indexOf array.map - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.place - "dojo/i18n", // i18n.getLocalization - "dojo/_base/lang", // lang.delegate lang.hitch lang.isString - "dojo/store/Memory", // MemoryStore - "../../registry", // registry.getUniqueId - "../../_Widget", - "../../_TemplatedMixin", - "../../_WidgetsInTemplateMixin", - "../../form/FilteringSelect", - "../_Plugin", - "../range", - "dojo/i18n!../nls/FontChoice" -], function(array, declare, domConstruct, i18n, lang, MemoryStore, - registry, _Widget, _TemplatedMixin, _WidgetsInTemplateMixin, FilteringSelect, _Plugin, rangeapi){ - - -// module: -// dijit/_editor/plugins/FontChoice - - -var _FontDropDown = declare("dijit._editor.plugins._FontDropDown", - [_Widget, _TemplatedMixin, _WidgetsInTemplateMixin], { - // summary: - // Base class for widgets that contains a label (like "Font:") - // and a FilteringSelect drop down to pick a value. - // Used as Toolbar entry. - - // label: [public] String - // The label to apply to this particular FontDropDown. - label: "", - - // plainText: [public] boolean - // Flag to indicate that the returned label should be plain text - // instead of an example. - plainText: false, - - // templateString: [public] String - // The template used to construct the labeled dropdown. - templateString: - "" + - "" + - "" + - "", - - postMixInProperties: function(){ - // summary: - // Over-ride to set specific properties. - this.inherited(arguments); - - this.strings = i18n.getLocalization("dijit._editor", "FontChoice"); - - // Set some substitution variables used in the template - this.label = this.strings[this.command]; - - // _WidgetBase sets the id after postMixInProperties(), but we need it now. - // Alternative is to have a buildRendering() method and move this.selectId setting there, - // or alternately get rid of selectId variable and just access ${id} in template? - this.id = registry.getUniqueId(this.declaredClass.replace(/\./g,"_")); - - this.selectId = this.id + "_select"; // used in template - - this.inherited(arguments); - }, - - postCreate: function(){ - // summary: - // Over-ride for the default postCreate action - // This establishes the filtering selects and the like. - - // Initialize the list of items in the drop down by creating data store with items like: - // {value: 1, name: "xx-small", label: "xx-small" } - this.select.set("store", new MemoryStore({ - idProperty: "value", - data: array.map(this.values, function(value){ - var name = this.strings[value] || value; - return { - label: this.getLabel(value, name), - name: name, - value: value - }; - }, this) - })); - - this.select.set("value", "", false); - this.disabled = this.select.get("disabled"); - }, - - _setValueAttr: function(value, priorityChange){ - // summary: - // Over-ride for the default action of setting the - // widget value, maps the input to known values - // value: Object|String - // The value to set in the select. - // priorityChange: - // Optional parameter used to tell the select whether or not to fire - // onChange event. - - // if the value is not a permitted value, just set empty string to prevent showing the warning icon - priorityChange = priorityChange !== false; - this.select.set('value', array.indexOf(this.values,value) < 0 ? "" : value, priorityChange); - if(!priorityChange){ - // Clear the last state in case of updateState calls. Ref: #10466 - this.select._lastValueReported=null; - } - }, - - _getValueAttr: function(){ - // summary: - // Allow retrieving the value from the composite select on - // call to button.get("value"); - return this.select.get('value'); - }, - - focus: function(){ - // summary: - // Over-ride for focus control of this widget. Delegates focus down to the - // filtering select. - this.select.focus(); - }, - - _setDisabledAttr: function(value){ - // summary: - // Over-ride for the button's 'disabled' attribute so that it can be - // disabled programmatically. - - // Save off ths disabled state so the get retrieves it correctly - //without needing to have a function proxy it. - this.disabled = value; - this.select.set("disabled", value); - } -}); - - -var _FontNameDropDown = declare("dijit._editor.plugins._FontNameDropDown", _FontDropDown, { - // summary: - // Dropdown to select a font; goes in editor toolbar. - - // generic: [const] Boolean - // Use generic (web standard) font names - generic: false, - - // command: [public] String - // The editor 'command' implemented by this plugin. - command: "fontName", - - postMixInProperties: function(){ - // summary: - // Over-ride for the default posr mixin control - if(!this.values){ - this.values = this.generic ? - ["serif", "sans-serif", "monospace", "cursive", "fantasy"] : // CSS font-family generics - ["Arial", "Times New Roman", "Comic Sans MS", "Courier New"]; - } - this.inherited(arguments); - }, - - getLabel: function(value, name){ - // summary: - // Function used to generate the labels of the format dropdown - // will return a formatted, or plain label based on the value - // of the plainText option. - // value: String - // The 'insert value' associated with a name - // name: String - // The text name of the value - if(this.plainText){ - return name; - }else{ - return "
    " + name + "
    "; - } - }, - - _setValueAttr: function(value, priorityChange){ - // summary: - // Over-ride for the default action of setting the - // widget value, maps the input to known values - - priorityChange = priorityChange !== false; - if(this.generic){ - var map = { - "Arial": "sans-serif", - "Helvetica": "sans-serif", - "Myriad": "sans-serif", - "Times": "serif", - "Times New Roman": "serif", - "Comic Sans MS": "cursive", - "Apple Chancery": "cursive", - "Courier": "monospace", - "Courier New": "monospace", - "Papyrus": "fantasy", - "Estrangelo Edessa": "cursive", // Windows 7 - "Gabriola": "fantasy" // Windows 7 - }; - value = map[value] || value; - } - this.inherited(arguments, [value, priorityChange]); - } -}); - -var _FontSizeDropDown = declare("dijit._editor.plugins._FontSizeDropDown", _FontDropDown, { - // summary: - // Dropdown to select a font size; goes in editor toolbar. - - // command: [public] String - // The editor 'command' implemented by this plugin. - command: "fontSize", - - // values: [public] Number[] - // The HTML font size values supported by this plugin - values: [1,2,3,4,5,6,7], // sizes according to the old HTML FONT SIZE - - getLabel: function(value, name){ - // summary: - // Function used to generate the labels of the format dropdown - // will return a formatted, or plain label based on the value - // of the plainText option. - // We're stuck using the deprecated FONT tag to correspond - // with the size measurements used by the editor - // value: String - // The 'insert value' associated with a name - // name: String - // The text name of the value - if(this.plainText){ - return name; - }else{ - return "" + name + ""; - } - }, - - _setValueAttr: function(value, priorityChange){ - // summary: - // Over-ride for the default action of setting the - // widget value, maps the input to known values - priorityChange = priorityChange !== false; - if(value.indexOf && value.indexOf("px") != -1){ - var pixels = parseInt(value, 10); - value = {10:1, 13:2, 16:3, 18:4, 24:5, 32:6, 48:7}[pixels] || value; - } - - this.inherited(arguments, [value, priorityChange]); - } -}); - - -var _FormatBlockDropDown = declare("dijit._editor.plugins._FormatBlockDropDown", _FontDropDown, { - // summary: - // Dropdown to select a format (like paragraph or heading); goes in editor toolbar. - - // command: [public] String - // The editor 'command' implemented by this plugin. - command: "formatBlock", - - // values: [public] Array - // The HTML format tags supported by this plugin - values: ["noFormat", "p", "h1", "h2", "h3", "pre"], - - postCreate: function(){ - // Init and set the default value to no formatting. Update state will adjust it - // as needed. - this.inherited(arguments); - this.set("value", "noFormat", false); - }, - - getLabel: function(value, name){ - // summary: - // Function used to generate the labels of the format dropdown - // will return a formatted, or plain label based on the value - // of the plainText option. - // value: String - // The 'insert value' associated with a name - // name: String - // The text name of the value - if(this.plainText || value == "noFormat"){ - return name; - }else{ - return "<" + value + ">" + name + ""; - } - }, - - _execCommand: function(editor, command, choice){ - // summary: - // Over-ride for default exec-command label. - // Allows us to treat 'none' as special. - if(choice === "noFormat"){ - var start; - var end; - var sel = rangeapi.getSelection(editor.window); - if(sel && sel.rangeCount > 0){ - var range = sel.getRangeAt(0); - var node, tag; - if(range){ - start = range.startContainer; - end = range.endContainer; - - // find containing nodes of start/end. - while(start && start !== editor.editNode && - start !== editor.document.body && - start.nodeType !== 1){ - start = start.parentNode; - } - - while(end && end !== editor.editNode && - end !== editor.document.body && - end.nodeType !== 1){ - end = end.parentNode; - } - - var processChildren = lang.hitch(this, function(node, ary){ - if(node.childNodes && node.childNodes.length){ - var i; - for(i = 0; i < node.childNodes.length; i++){ - var c = node.childNodes[i]; - if(c.nodeType == 1){ - if(editor._sCall("inSelection", [c])){ - var tag = c.tagName? c.tagName.toLowerCase(): ""; - if(array.indexOf(this.values, tag) !== -1){ - ary.push(c); - } - processChildren(c, ary); - } - } - } - } - }); - - var unformatNodes = lang.hitch(this, function(nodes){ - // summary: - // Internal function to clear format nodes. - // nodes: - // The array of nodes to strip formatting from. - if(nodes && nodes.length){ - editor.beginEditing(); - while(nodes.length){ - this._removeFormat(editor, nodes.pop()); - } - editor.endEditing(); - } - }); - - var clearNodes = []; - if(start == end){ - //Contained within the same block, may be collapsed, but who cares, see if we - // have a block element to remove. - var block; - node = start; - while(node && node !== editor.editNode && node !== editor.document.body){ - if(node.nodeType == 1){ - tag = node.tagName? node.tagName.toLowerCase(): ""; - if(array.indexOf(this.values, tag) !== -1){ - block = node; - break; - } - } - node = node.parentNode; - } - - //Also look for all child nodes in the selection that may need to be - //cleared of formatting - processChildren(start, clearNodes); - if(block){ clearNodes = [block].concat(clearNodes); } - unformatNodes(clearNodes); - }else{ - // Probably a multi select, so we have to process it. Whee. - node = start; - while(editor._sCall("inSelection", [node])){ - if(node.nodeType == 1){ - tag = node.tagName? node.tagName.toLowerCase(): ""; - if(array.indexOf(this.values, tag) !== -1){ - clearNodes.push(node); - } - processChildren(node,clearNodes); - } - node = node.nextSibling; - } - unformatNodes(clearNodes); - } - editor.onDisplayChanged(); - } - } - }else{ - editor.execCommand(command, choice); - } - }, - - _removeFormat: function(editor, node){ - // summary: - // function to remove the block format node. - // node: - // The block format node to remove (and leave the contents behind) - if(editor.customUndo){ - // So of course IE doesn't work right with paste-overs. - // We have to do this manually, which is okay since IE already uses - // customUndo and we turned it on for WebKit. WebKit pasted funny, - // so couldn't use the execCommand approach - while(node.firstChild){ - domConstruct.place(node.firstChild, node, "before"); - } - node.parentNode.removeChild(node); - }else{ - // Everyone else works fine this way, a paste-over and is native - // undo friendly. - editor._sCall("selectElementChildren", [node]) - var html = editor._sCall("getSelectedHtml", []) - editor._sCall("selectElement", [node]) - editor.execCommand("inserthtml", html||""); - } - } -}); - -// TODO: for 2.0, split into FontChoice plugin into three separate classes, -// one for each command (and change registry below) -var FontChoice = declare("dijit._editor.plugins.FontChoice", _Plugin,{ - // summary: - // This plugin provides three drop downs for setting style in the editor - // (font, font size, and format block), as controlled by command. - // - // description: - // The commands provided by this plugin are: - // - // - fontName: Provides a drop down to select from a list of font names - // - fontSize: Provides a drop down to select from a list of font sizes - // - formatBlock: Provides a drop down to select from a list of block styles - // which can easily be added to an editor by including one or more of the above commands - // in the `plugins` attribute as follows: - // - // | plugins="['fontName','fontSize',...]" - // - // It is possible to override the default dropdown list by providing an Array for the `custom` property when - // instantiating this plugin, e.g. - // - // | plugins="[{name:'dijit._editor.plugins.FontChoice', command:'fontName', values:['Verdana','Myriad','Garamond']},...]" - // - // Alternatively, for `fontName` only, `generic:true` may be specified to provide a dropdown with - // [CSS generic font families](http://www.w3.org/TR/REC-CSS2/fonts.html#generic-font-families). - // - // Note that the editor is often unable to properly handle font styling information defined outside - // the context of the current editor instance, such as pre-populated HTML. - - // useDefaultCommand: [protected] Boolean - // Override _Plugin.useDefaultCommand... - // processing is handled by this plugin, not by dijit/Editor. - useDefaultCommand: false, - - _initButton: function(){ - // summary: - // Overrides _Plugin._initButton(), to initialize the FilteringSelect+label in toolbar, - // rather than a simple button. - // tags: - // protected - - // Create the widget to go into the toolbar (the so-called "button") - var clazz = { - fontName: _FontNameDropDown, - fontSize: _FontSizeDropDown, - formatBlock: _FormatBlockDropDown - }[this.command], - params = this.params; - - // For back-compat reasons support setting custom values via "custom" parameter - // rather than "values" parameter. Remove in 2.0. - if(this.params.custom){ - params.values = this.params.custom; - } - - var editor = this.editor; - this.button = new clazz(lang.delegate({dir: editor.dir, lang: editor.lang}, params)); - - // Reflect changes to the drop down in the editor - this.connect(this.button.select, "onChange", function(choice){ - // User invoked change, since all internal updates set priorityChange to false and will - // not trigger an onChange event. - this.editor.focus(); - - if(this.command == "fontName" && choice.indexOf(" ") != -1){ choice = "'" + choice + "'"; } - - // Invoke, the editor already normalizes commands called through its - // execCommand. - if(this.button._execCommand){ - this.button._execCommand(this.editor, this.command, choice); - }else{ - this.editor.execCommand(this.command, choice); - } - }); - }, - - updateState: function(){ - // summary: - // Overrides _Plugin.updateState(). This controls updating the menu - // options to the right values on state changes in the document (that trigger a - // test of the actions.) - // It set value of drop down in toolbar to reflect font/font size/format block - // of text at current caret position. - // tags: - // protected - var _e = this.editor; - var _c = this.command; - if(!_e || !_e.isLoaded || !_c.length){ return; } - - if(this.button){ - var disabled = this.get("disabled"); - this.button.set("disabled", disabled); - if(disabled){ return; } - var value; - try{ - value = _e.queryCommandValue(_c) || ""; - }catch(e){ - //Firefox may throw error above if the editor is just loaded, ignore it - value = ""; - } - - // strip off single quotes, if any - var quoted = lang.isString(value) && value.match(/'([^']*)'/); - if(quoted){ value = quoted[1]; } - - if(_c === "formatBlock"){ - if(!value || value == "p"){ - // Some browsers (WebKit) doesn't actually get the tag info right. - // and IE returns paragraph when in a DIV!, so incorrect a lot, - // so we have double-check it. - value = null; - var elem; - // Try to find the current element where the caret is. - var sel = rangeapi.getSelection(this.editor.window); - if(sel && sel.rangeCount > 0){ - var range = sel.getRangeAt(0); - if(range){ - elem = range.endContainer; - } - } - - // Okay, now see if we can find one of the formatting types we're in. - while(elem && elem !== _e.editNode && elem !== _e.document){ - var tg = elem.tagName?elem.tagName.toLowerCase():""; - if(tg && array.indexOf(this.button.values, tg) > -1){ - value = tg; - break; - } - elem = elem.parentNode; - } - if(!value){ - // Still no value, so lets select 'none'. - value = "noFormat"; - } - }else{ - // Check that the block format is one allowed, if not, - // null it so that it gets set to empty. - if(array.indexOf(this.button.values, value) < 0){ - value = "noFormat"; - } - } - } - if(value !== this.button.get("value")){ - // Set the value, but denote it is not a priority change, so no - // onchange fires. - this.button.set('value', value, false); - } - } - } -}); - -// Register these plugins -array.forEach(["fontName", "fontSize", "formatBlock"], function(name){ - _Plugin.registry[name] = function(args){ - return new FontChoice({ - command: name, - plainText: args.plainText - }); - }; -}); - -// Make all classes available through AMD, and return main class -FontChoice._FontDropDown = _FontDropDown; -FontChoice._FontNameDropDown = _FontNameDropDown; -FontChoice._FontSizeDropDown = _FontSizeDropDown; -FontChoice._FormatBlockDropDown = _FormatBlockDropDown; -return FontChoice; - -}); diff --git a/lib/dijit/_editor/plugins/FullScreen.js.uncompressed.js b/lib/dijit/_editor/plugins/FullScreen.js.uncompressed.js deleted file mode 100644 index 68f27954b..000000000 --- a/lib/dijit/_editor/plugins/FullScreen.js.uncompressed.js +++ /dev/null @@ -1,450 +0,0 @@ -define("dijit/_editor/plugins/FullScreen", [ - "dojo/aspect", - "dojo/_base/declare", // declare - "dojo/dom-class", // domClass.add domClass.remove - "dojo/dom-geometry", - "dojo/dom-style", - "dojo/_base/event", // event.stop - "dojo/i18n", // i18n.getLocalization - "dojo/keys", // keys.F11 keys.TAB - "dojo/_base/lang", // lang.hitch - "dojo/on", // on() - "dojo/sniff", // has("ie"), has("quirks") - "dojo/_base/window", // win.body - "dojo/window", // winUtils.getBox winUtils.scrollIntoView - "../../focus", // focus.focus(), focus.curNode - "../_Plugin", - "../../form/ToggleButton", - "../../registry", // registry.getEnclosingWidget() - "dojo/i18n!../nls/commands" -], function(aspect, declare, domClass, domGeometry, domStyle, event, i18n, keys, lang, on, has, win, winUtils, - focus, _Plugin, ToggleButton, registry){ - - -// module: -// dijit/_editor/plugins/FullScreen - - -var FullScreen = declare("dijit._editor.plugins.FullScreen",_Plugin,{ - // summary: - // This plugin provides FullScreen capability to the editor. When - // toggled on, it will render the editor into the full window and - // overlay everything. It also binds to the hotkey: CTRL-SHIFT-F11 - // for toggling fullscreen mode. - - // zIndex: [public] Number - // zIndex value used for overlaying the full page. - // default is 500. - zIndex: 500, - - // _origState: [private] Object - // The original view state of the editor. - _origState: null, - - // _origiFrameState: [private] Object - // The original view state of the iframe of the editor. - _origiFrameState: null, - - // _resizeHandle: [private] Object - // Connection point used for handling resize when window resizes. - _resizeHandle: null, - - // isFullscreen: [const] boolean - // Read-Only variable used to denote of the editor is in fullscreen mode or not. - isFullscreen: false, - - toggle: function(){ - // summary: - // Function to allow programmatic toggling of the view. - this.button.set("checked", !this.button.get("checked")); - }, - - _initButton: function(){ - // summary: - // Over-ride for creation of the resize button. - var strings = i18n.getLocalization("dijit._editor", "commands"), - editor = this.editor; - this.button = new ToggleButton({ - label: strings["fullScreen"], - ownerDocument: editor.ownerDocument, - dir: editor.dir, - lang: editor.lang, - showLabel: false, - iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "FullScreen", - tabIndex: "-1", - onChange: lang.hitch(this, "_setFullScreen") - }); - }, - - setEditor: function(editor){ - // summary: - // Over-ride for the setting of the editor. - // editor: Object - // The editor to configure for this plugin to use. - this.editor = editor; - this._initButton(); - - this.editor.addKeyHandler(keys.F11, true, true, lang.hitch(this, function(e){ - // Enable the CTRL-SHIFT-F11 hotkey for fullscreen mode. - this.toggle(); - event.stop(e); - setTimeout(lang.hitch(this, function(){this.editor.focus();}), 250); - return true; - })); - this.connect(this.editor.domNode, "onkeydown", "_containFocus"); - }, - - _containFocus: function(e){ - // summary: - // When in Full Screen mode, it's good to try and retain focus in the editor - // so this function is intended to try and constrain the TAB key. - // e: Event - // The key event. - // tags: - // private - if(this.isFullscreen){ - var ed = this.editor; - if(!ed.isTabIndent && - ed._fullscreen_oldOnKeyDown && - e.keyCode === keys.TAB){ - // If we're in fullscreen mode, we want to take over how tab moves focus a bit. - // to keep it within the editor since it's hiding the rest of the page. - // IE hates changing focus IN the event handler, so need to put calls - // in a timeout. Gotta love IE. - // Also need to check for alternate view nodes if present and active. - var f = focus.curNode; - var avn = this._getAltViewNode(); - if(f == ed.iframe || - (avn && f === avn)){ - setTimeout(lang.hitch(this, function(){ - ed.toolbar.focus(); - }), 10); - }else{ - if(avn && domStyle.get(ed.iframe, "display") === "none"){ - setTimeout(lang.hitch(this, function(){ - focus.focus(avn); - }), 10); - }else{ - setTimeout(lang.hitch(this, function(){ - ed.focus(); - }), 10); - } - } - event.stop(e); - }else if(ed._fullscreen_oldOnKeyDown){ - // Only call up when it's a different function. Traps corner case event issue - // on IE which caused stack overflow on handler cleanup. - ed._fullscreen_oldOnKeyDown(e); - } - } - }, - - _resizeEditor: function(){ - // summary: - // Function to handle resizing the editor as the viewport - // resizes (window scaled) - // tags: - // private - var vp = winUtils.getBox(this.editor.ownerDocument); - domGeometry.setMarginBox(this.editor.domNode, { - w: vp.w, - h: vp.h - }); - - //Adjust the internal heights too, as they can be a bit off. - var hHeight = this.editor.getHeaderHeight(); - var fHeight = this.editor.getFooterHeight(); - var extents = domGeometry.getPadBorderExtents(this.editor.domNode); - var fcpExtents = domGeometry.getPadBorderExtents(this.editor.iframe.parentNode); - var fcmExtents = domGeometry.getMarginExtents(this.editor.iframe.parentNode); - - var cHeight = vp.h - (hHeight + extents.h + fHeight); - domGeometry.setMarginBox(this.editor.iframe.parentNode, { - h: cHeight, - w: vp.w - }); - domGeometry.setMarginBox(this.editor.iframe, { - h: cHeight - (fcpExtents.h + fcmExtents.h) - }); - }, - - _getAltViewNode: function(){ - // summary: - // This function is intended as a hook point for setting an - // alternate view node for when in full screen mode and the - // editable iframe is hidden. - // tags: - // protected. - }, - - _setFullScreen: function(full){ - // summary: - // Function to handle toggling between full screen and - // regular view. - // tags: - // private - - //Alias this for shorter code. - var ed = this.editor; - var body = ed.ownerDocumentBody; - var editorParent = ed.domNode.parentNode; - - var vp = winUtils.getBox(ed.ownerDocument); - - this.isFullscreen = full; - - if(full){ - //Parent classes can royally screw up this plugin, so we - //have to set everything to position static. - while(editorParent && editorParent !== body){ - domClass.add(editorParent, "dijitForceStatic"); - editorParent = editorParent.parentNode; - } - - // Save off the resize function. We want to kill its behavior. - this._editorResizeHolder = this.editor.resize; - ed.resize = function(){} ; - - // Try to constrain focus control. - ed._fullscreen_oldOnKeyDown = ed.onKeyDown; - ed.onKeyDown = lang.hitch(this, this._containFocus); - - this._origState = {}; - this._origiFrameState = {}; - - // Store the basic editor state we have to restore later. - // Not using domStyle.get here, had problems, didn't - // give me stuff like 100%, gave me pixel calculated values. - // Need the exact original values. - var domNode = ed.domNode, - rawStyle = domNode && domNode.style || {}; - this._origState = { - width: rawStyle.width || "", - height: rawStyle.height || "", - top: domStyle.get(domNode, "top") || "", - left: domStyle.get(domNode, "left") || "", - position: domStyle.get(domNode, "position") || "static", - marginBox: domGeometry.getMarginBox(ed.domNode) - }; - - // Store the iframe state we have to restore later. - // Not using domStyle.get here, had problems, didn't - // give me stuff like 100%, gave me pixel calculated values. - // Need the exact original values. - var iframe = ed.iframe, - iframeStyle = iframe && iframe.style || {}; - - var bc = domStyle.get(ed.iframe, "backgroundColor"); - this._origiFrameState = { - backgroundColor: bc || "transparent", - width: iframeStyle.width || "auto", - height: iframeStyle.height || "auto", - zIndex: iframeStyle.zIndex || "" - }; - - // Okay, size everything. - domStyle.set(ed.domNode, { - position: "absolute", - top: "0px", - left: "0px", - zIndex: this.zIndex, - width: vp.w + "px", - height: vp.h + "px" - }); - - domStyle.set(ed.iframe, { - height: "100%", - width: "100%", - zIndex: this.zIndex, - backgroundColor: bc !== "transparent" && - bc !== "rgba(0, 0, 0, 0)"?bc:"white" - }); - - domStyle.set(ed.iframe.parentNode, { - height: "95%", - width: "100%" - }); - - // Store the overflow state we have to restore later. - // IE had issues, so have to check that it's defined. Ugh. - if(body.style && body.style.overflow){ - this._oldOverflow = domStyle.get(body, "overflow"); - }else{ - this._oldOverflow = ""; - } - - if(has("ie") && !has("quirks")){ - // IE will put scrollbars in anyway, html (parent of body) - // also controls them in standards mode, so we have to - // remove them, argh. - if(body.parentNode && - body.parentNode.style && - body.parentNode.style.overflow){ - this._oldBodyParentOverflow = body.parentNode.style.overflow; - }else{ - try{ - this._oldBodyParentOverflow = domStyle.get(body.parentNode, "overflow"); - }catch(e){ - this._oldBodyParentOverflow = "scroll"; - } - } - domStyle.set(body.parentNode, "overflow", "hidden"); - } - domStyle.set(body, "overflow", "hidden"); - - var resizer = function(){ - // function to handle resize events. - // Will check current VP and only resize if - // different. - var vp = winUtils.getBox(ed.ownerDocument); - if("_prevW" in this && "_prevH" in this){ - // No actual size change, ignore. - if(vp.w === this._prevW && vp.h === this._prevH){ - return; - } - }else{ - this._prevW = vp.w; - this._prevH = vp.h; - } - if(this._resizer){ - clearTimeout(this._resizer); - delete this._resizer; - } - // Timeout it to help avoid spamming resize on IE. - // Works for all browsers. - this._resizer = setTimeout(lang.hitch(this, function(){ - delete this._resizer; - this._resizeEditor(); - }), 10); - }; - this._resizeHandle = on(window, "resize", lang.hitch(this, resizer)); - - // Also monitor for direct calls to resize and adapt editor. - this._resizeHandle2 = aspect.after(ed, "onResize", lang.hitch(this, function(){ - if(this._resizer){ - clearTimeout(this._resizer); - delete this._resizer; - } - this._resizer = setTimeout(lang.hitch(this, function(){ - delete this._resizer; - this._resizeEditor(); - }), 10); - })); - - // Call it once to work around IE glitchiness. Safe for other browsers too. - this._resizeEditor(); - var dn = this.editor.toolbar.domNode; - setTimeout(function(){winUtils.scrollIntoView(dn);}, 250); - }else{ - if(this._resizeHandle){ - // Cleanup resizing listeners - this._resizeHandle.remove(); - this._resizeHandle = null; - } - if(this._resizeHandle2){ - // Cleanup resizing listeners - this._resizeHandle2.remove(); - this._resizeHandle2 = null; - } - if(this._rst){ - clearTimeout(this._rst); - this._rst = null; - } - - //Remove all position static class assigns. - while(editorParent && editorParent !== body){ - domClass.remove(editorParent, "dijitForceStatic"); - editorParent = editorParent.parentNode; - } - - // Restore resize function - if(this._editorResizeHolder){ - this.editor.resize = this._editorResizeHolder; - } - - if(!this._origState && !this._origiFrameState){ - // If we actually didn't toggle, then don't do anything. - return; - } - if(ed._fullscreen_oldOnKeyDown){ - ed.onKeyDown = ed._fullscreen_oldOnKeyDown; - delete ed._fullscreen_oldOnKeyDown; - } - - // Add a timeout to make sure we don't have a resize firing in the - // background at the time of minimize. - var self = this; - setTimeout(function(){ - // Restore all the editor state. - var mb = self._origState.marginBox; - var oh = self._origState.height; - if(has("ie") && !has("quirks")){ - body.parentNode.style.overflow = self._oldBodyParentOverflow; - delete self._oldBodyParentOverflow; - } - domStyle.set(body, "overflow", self._oldOverflow); - delete self._oldOverflow; - - domStyle.set(ed.domNode, self._origState); - domStyle.set(ed.iframe.parentNode, { - height: "", - width: "" - }); - domStyle.set(ed.iframe, self._origiFrameState); - delete self._origState; - delete self._origiFrameState; - // In case it is contained in a layout and the layout changed size, - // go ahead and call resize. - var pWidget = registry.getEnclosingWidget(ed.domNode.parentNode); - if(pWidget && pWidget.resize){ - pWidget.resize(); - }else{ - if(!oh || oh.indexOf("%") < 0){ - // Resize if the original size wasn't set - // or wasn't in percent. Timeout is to avoid - // an IE crash in unit testing. - setTimeout(lang.hitch(this, function(){ed.resize({h: mb.h});}), 0); - } - } - winUtils.scrollIntoView(self.editor.toolbar.domNode); - }, 100); - } - }, - - updateState: function(){ - // summary: - // Over-ride for button state control for disabled to work. - this.button.set("disabled", this.get("disabled")); - }, - - destroy: function(){ - // summary: - // Over-ride to ensure the resize handle gets cleaned up. - if(this._resizeHandle){ - // Cleanup resizing listeners - this._resizeHandle.remove(); - this._resizeHandle = null; - } - if(this._resizeHandle2){ - // Cleanup resizing listeners - this._resizeHandle2.remove(); - this._resizeHandle2 = null; - } - if(this._resizer){ - clearTimeout(this._resizer); - this._resizer = null; - } - this.inherited(arguments); - } -}); - -// Register this plugin. -// For back-compat accept "fullscreen" (all lowercase) too, remove in 2.0 -_Plugin.registry["fullScreen"] = _Plugin.registry["fullscreen"] = function(args){ - return new FullScreen({ - zIndex: ("zIndex" in args)?args.zIndex:500 - }); -}; - -return FullScreen; -}); diff --git a/lib/dijit/_editor/plugins/LinkDialog.js.uncompressed.js b/lib/dijit/_editor/plugins/LinkDialog.js.uncompressed.js deleted file mode 100644 index 5ed6ce3da..000000000 --- a/lib/dijit/_editor/plugins/LinkDialog.js.uncompressed.js +++ /dev/null @@ -1,609 +0,0 @@ -define("dijit/_editor/plugins/LinkDialog", [ - "require", - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.get - "dojo/keys", // keys.ENTER - "dojo/_base/lang", // lang.delegate lang.hitch lang.trim - "dojo/sniff", // has("ie") - "dojo/_base/query", // query - "dojo/string", // string.substitute - "../../_Widget", - "../_Plugin", - "../../form/DropDownButton", - "../range" -], function(require, declare, domAttr, keys, lang, has, query, string, - _Widget, _Plugin, DropDownButton, rangeapi){ - - -// module: -// dijit/_editor/plugins/LinkDialog -// summary: -// Editor plugins: LinkDialog (for inserting links) and ImgLinkDialog (for inserting images) - - -var LinkDialog = declare("dijit._editor.plugins.LinkDialog", _Plugin, { - // summary: - // This plugin provides the basis for an 'anchor' (link) dialog and an extension of it - // provides the image link dialog. - // description: - // The command provided by this plugin is: - // - // - createLink - - // Override _Plugin.buttonClass. This plugin is controlled by a DropDownButton - // (which triggers a TooltipDialog). - buttonClass: DropDownButton, - - // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit/Editor. - useDefaultCommand: false, - - // urlRegExp: [protected] String - // Used for validating input as correct URL. While file:// urls are not terribly - // useful, they are technically valid. - urlRegExp: "((https?|ftps?|file)\\://|\./|\.\./|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]{0,}(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?", - - // emailRegExp: [protected] String - // Used for validating input as correct email address. Taken from dojox.validate - emailRegExp: "?", // host. - - // htmlTemplate: [protected] String - // String used for templating the HTML to insert at the desired point. - htmlTemplate: "${textInput}", - - // tag: [protected] String - // Tag used for the link type. - tag: "a", - - // _hostRxp [private] RegExp - // Regular expression used to validate url fragments (ip address, hostname, etc) - _hostRxp: /^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/, - - // _userAtRxp [private] RegExp - // Regular expression used to validate e-mail address fragment. - _userAtRxp: /^([!#-'*+\-\/-9=?A-Z^-~]+[.])*[!#-'*+\-\/-9=?A-Z^-~]+@/i, - - // linkDialogTemplate: [protected] String - // Template for contents of TooltipDialog to pick URL - linkDialogTemplate: [ - "
    ", - "", - "", - "", - "
    ", - "", - "", - "", - "
    ", - "", - "", - "", - "
    ", - "", - "", - "
    " - ].join(""), - - _initButton: function(){ - this.inherited(arguments); - - // Setup to lazy create TooltipDialog first time the button is clicked - this.button.loadDropDown = lang.hitch(this, "_loadDropDown"); - - this._connectTagEvents(); - }, - _loadDropDown: function(callback){ - // Called the first time the button is pressed. Initialize TooltipDialog. - require([ - "dojo/i18n", // i18n.getLocalization - "../../TooltipDialog", - "../../registry", // registry.byId, registry.getUniqueId - "../../form/Button", // used by template - "../../form/Select", // used by template - "../../form/ValidationTextBox", // used by template - "dojo/i18n!../../nls/common", - "dojo/i18n!../nls/LinkDialog" - ], lang.hitch(this, function(i18n, TooltipDialog, registry){ - var _this = this; - this.tag = this.command == 'insertImage' ? 'img' : 'a'; - var messages = lang.delegate(i18n.getLocalization("dijit", "common", this.lang), - i18n.getLocalization("dijit._editor", "LinkDialog", this.lang)); - var dropDown = (this.dropDown = this.button.dropDown = new TooltipDialog({ - title: messages[this.command + "Title"], - ownerDocument: this.editor.ownerDocument, - dir: this.editor.dir, - execute: lang.hitch(this, "setValue"), - onOpen: function(){ - _this._onOpenDialog(); - TooltipDialog.prototype.onOpen.apply(this, arguments); - }, - onCancel: function(){ - setTimeout(lang.hitch(_this, "_onCloseDialog"),0); - } - })); - messages.urlRegExp = this.urlRegExp; - messages.id = registry.getUniqueId(this.editor.id); - this._uniqueId = messages.id; - this._setContent(dropDown.title + - "
    " + - string.substitute(this.linkDialogTemplate, messages)); - dropDown.startup(); - this._urlInput = registry.byId(this._uniqueId + "_urlInput"); - this._textInput = registry.byId(this._uniqueId + "_textInput"); - this._setButton = registry.byId(this._uniqueId + "_setButton"); - this.connect(registry.byId(this._uniqueId + "_cancelButton"), "onClick", function(){ - this.dropDown.onCancel(); - }); - if(this._urlInput){ - this.connect(this._urlInput, "onChange", "_checkAndFixInput"); - } - if(this._textInput){ - this.connect(this._textInput, "onChange", "_checkAndFixInput"); - } - - // Build up the dual check for http/https/file:, and mailto formats. - this._urlRegExp = new RegExp("^" + this.urlRegExp + "$", "i"); - this._emailRegExp = new RegExp("^" + this.emailRegExp + "$", "i"); - this._urlInput.isValid = lang.hitch(this, function(){ - // Function over-ride of isValid to test if the input matches a url or a mailto style link. - var value = this._urlInput.get("value"); - return this._urlRegExp.test(value) || this._emailRegExp.test(value); - }); - - // Listen for enter and execute if valid. - this.connect(dropDown.domNode, "onkeypress", function(e){ - if(e && e.charOrCode == keys.ENTER && - !e.shiftKey && !e.metaKey && !e.ctrlKey && !e.altKey){ - if(!this._setButton.get("disabled")){ - dropDown.onExecute(); - dropDown.execute(dropDown.get('value')); - } - } - }); - - callback(); - })); - }, - - _checkAndFixInput: function(){ - // summary: - // A function to listen for onChange events and test the input contents - // for valid information, such as valid urls with http/https/ftp and if - // not present, try and guess if the input url is relative or not, and if - // not, append http:// to it. Also validates other fields as determined by - // the internal _isValid function. - var self = this; - var url = this._urlInput.get("value"); - var fixupUrl = function(url){ - var appendHttp = false; - var appendMailto = false; - if(url && url.length > 1){ - url = lang.trim(url); - if(url.indexOf("mailto:") !== 0){ - if(url.indexOf("/") > 0){ - if(url.indexOf("://") === -1){ - // Check that it doesn't start with /, ./, or ../, which would - // imply 'target server relativeness' - if(url.charAt(0) !== '/' && url.indexOf("./") && url.indexOf("../") !== 0){ - if(self._hostRxp.test(url)){ - appendHttp = true; - } - } - } - }else if(self._userAtRxp.test(url)){ - // If it looks like a foo@, append a mailto. - appendMailto = true; - } - } - } - if(appendHttp){ - self._urlInput.set("value", "http://" + url); - } - if(appendMailto){ - self._urlInput.set("value", "mailto:" + url); - } - self._setButton.set("disabled", !self._isValid()); - }; - if(this._delayedCheck){ - clearTimeout(this._delayedCheck); - this._delayedCheck = null; - } - this._delayedCheck = setTimeout(function(){ - fixupUrl(url); - }, 250); - }, - - _connectTagEvents: function(){ - // summary: - // Over-ridable function that connects tag specific events. - this.editor.onLoadDeferred.then(lang.hitch(this, function(){ - this.connect(this.editor.editNode, "ondblclick", this._onDblClick); - })); - }, - - _isValid: function(){ - // summary: - // Internal function to allow validating of the inputs - // for a link to determine if set should be disabled or not - // tags: - // protected - return this._urlInput.isValid() && this._textInput.isValid(); - }, - - _setContent: function(staticPanel){ - // summary: - // Helper for _initButton above. Not sure why it's a separate method. - this.dropDown.set({ - parserScope: "dojo", // make parser search for dojoType/data-dojo-type even if page is multi-version - content: staticPanel - }); - }, - - _checkValues: function(args){ - // summary: - // Function to check the values in args and 'fix' them up as needed. - // args: Object - // Content being set. - // tags: - // protected - if(args && args.urlInput){ - args.urlInput = args.urlInput.replace(/"/g, """); - } - return args; - }, - - setValue: function(args){ - // summary: - // Callback from the dialog when user presses "set" button. - // tags: - // private - - // TODO: prevent closing popup if the text is empty - this._onCloseDialog(); - if(has("ie") < 9){ //see #4151 - var sel = rangeapi.getSelection(this.editor.window); - var range = sel.getRangeAt(0); - var a = range.endContainer; - if(a.nodeType === 3){ - // Text node, may be the link contents, so check parent. - // This plugin doesn't really support nested HTML elements - // in the link, it assumes all link content is text. - a = a.parentNode; - } - if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){ - // Still nothing, one last thing to try on IE, as it might be 'img' - // and thus considered a control. - a = this.editor._sCall("getSelectedElement", [this.tag]); - } - if(a && (a.nodeName && a.nodeName.toLowerCase() === this.tag)){ - // Okay, we do have a match. IE, for some reason, sometimes pastes before - // instead of removing the targeted paste-over element, so we unlink the - // old one first. If we do not the tag remains, but it has no content, - // so isn't readily visible (but is wrong for the action). - if(this.editor.queryCommandEnabled("unlink")){ - // Select all the link children, then unlink. The following insert will - // then replace the selected text. - this.editor._sCall("selectElementChildren", [a]); - this.editor.execCommand("unlink"); - } - } - } - // make sure values are properly escaped, etc. - args = this._checkValues(args); - this.editor.execCommand('inserthtml', - string.substitute(this.htmlTemplate, args)); - - // IE sometimes leaves a blank link, so we need to fix it up. - // Go ahead and do this for everyone just to avoid blank links - // in the page. - query("a", this.editor.document).forEach(function(a){ - if(!a.innerHTML && !domAttr.has(a, "name")){ - // Remove empty anchors that do not have "name" set. - // Empty ones with a name set could be a hidden hash - // anchor. - a.parentNode.removeChild(a); - } - }, this); - }, - - _onCloseDialog: function(){ - // summary: - // Handler for close event on the dialog - this.editor.focus(); - }, - - _getCurrentValues: function(a){ - // summary: - // Over-ride for getting the values to set in the dropdown. - // a: - // The anchor/link to process for data for the dropdown. - // tags: - // protected - var url, text, target; - if(a && a.tagName.toLowerCase() === this.tag){ - url = a.getAttribute('_djrealurl') || a.getAttribute('href'); - target = a.getAttribute('target') || "_self"; - text = a.textContent || a.innerText; - this.editor._sCall("selectElement", [a, true]); - }else{ - text = this.editor._sCall("getSelectedText"); - } - return {urlInput: url || '', textInput: text || '', targetSelect: target || ''}; //Object; - }, - - _onOpenDialog: function(){ - // summary: - // Handler for when the dialog is opened. - // If the caret is currently in a URL then populate the URL's info into the dialog. - var a,b,fc; - if(has("ie")){ - // IE, even IE10, is difficult to select the element in, using the range unified - // API seems to work reasonably well. - var sel = rangeapi.getSelection(this.editor.window); - if(sel.rangeCount){ - var range = sel.getRangeAt(0); - a = range.endContainer; - if(a.nodeType === 3){ - // Text node, may be the link contents, so check parent. - // This plugin doesn't really support nested HTML elements - // in the link, it assumes all link content is text. - a = a.parentNode; - } - if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){ - // Still nothing, one last thing to try on IE, as it might be 'img' - // and thus considered a control. - a = this.editor._sCall("getSelectedElement", [this.tag]); - } - if(!a || (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){ - // Try another lookup, IE's selection is just terrible. - b = this.editor._sCall("getAncestorElement", [this.tag]); - if(b && (b.nodeName && b.nodeName.toLowerCase() == this.tag)){ - // Looks like we found an A tag, use it and make sure just it is - // selected. - a = b; - this.editor._sCall("selectElement", [a]); - }else if (range.startContainer === range.endContainer){ - // STILL nothing. Trying one more thing. Lets look at the first child. - // It might be an anchor tag in a div by itself or the like. If it is, - // we'll use it otherwise we give up. The selection is not easily - // determinable to be on an existing anchor tag. - fc = range.startContainer.firstChild; - if(fc && (fc.nodeName && fc.nodeName.toLowerCase() == this.tag)){ - a = fc; - this.editor._sCall("selectElement", [a]); - } - } - } - } - }else{ - a = this.editor._sCall("getAncestorElement", [this.tag]); - } - this.dropDown.reset(); - this._setButton.set("disabled", true); - this.dropDown.set("value", this._getCurrentValues(a)); - }, - - _onDblClick: function(e){ - // summary: - // Function to define a behavior on double clicks on the element - // type this dialog edits to select it and pop up the editor - // dialog. - // e: Object - // The double-click event. - // tags: - // protected. - if(e && e.target){ - var t = e.target; - var tg = t.tagName ? t.tagName.toLowerCase() : ""; - if(tg === this.tag && domAttr.get(t,"href")){ - var editor = this.editor; - - this.editor._sCall("selectElement", [t]); - editor.onDisplayChanged(); - - // Call onNormalizedDisplayChange() now, rather than on timer. - // On IE, when focus goes to the first in the TooltipDialog, the editor loses it's selection. - // Later if onNormalizedDisplayChange() gets called via the timer it will disable the LinkDialog button - // (actually, all the toolbar buttons), at which point clicking the will close the dialog, - // since (for unknown reasons) focus.js ignores disabled controls. - if(editor._updateTimer){ - editor._updateTimer.remove(); - delete editor._updateTimer; - } - editor.onNormalizedDisplayChanged(); - - var button = this.button; - setTimeout(function(){ - // Focus shift outside the event handler. - // IE doesn't like focus changes in event handles. - button.set("disabled", false); - button.loadAndOpenDropDown().then(function(){ - if(button.dropDown.focus){ - button.dropDown.focus(); - } - }); - }, 10); - } - } - } -}); - -var ImgLinkDialog = declare("dijit._editor.plugins.ImgLinkDialog", [LinkDialog], { - // summary: - // This plugin extends LinkDialog and adds in a plugin for handling image links. - // provides the image link dialog. - // description: - // The command provided by this plugin is: - // - // - insertImage - - // linkDialogTemplate: [protected] String - // Over-ride for template since img dialog doesn't need target that anchor tags may. - linkDialogTemplate: [ - "
    ", - "", - "", - "", - "
    ", - "", - "", - "", - "
    ", - "", - "
    ", - "", - "", - "
    " - ].join(""), - - // htmlTemplate: [protected] String - // String used for templating the `` HTML to insert at the desired point. - htmlTemplate: "\"${textInput}\"", - - // tag: [protected] String - // Tag used for the link type (img). - tag: "img", - - _getCurrentValues: function(img){ - // summary: - // Over-ride for getting the values to set in the dropdown. - // a: - // The anchor/link to process for data for the dropdown. - // tags: - // protected - var url, text; - if(img && img.tagName.toLowerCase() === this.tag){ - url = img.getAttribute('_djrealurl') || img.getAttribute('src'); - text = img.getAttribute('alt'); - this.editor._sCall("selectElement", [img, true]); - }else{ - text = this.editor._sCall("getSelectedText", []); - } - return {urlInput: url || '', textInput: text || ''}; //Object - }, - - _isValid: function(){ - // summary: - // Over-ride for images. You can have alt text of blank, it is valid. - // tags: - // protected - return this._urlInput.isValid(); - }, - - _connectTagEvents: function(){ - // summary: - // Over-ridable function that connects tag specific events. - this.inherited(arguments); - this.editor.onLoadDeferred.then(lang.hitch(this, function(){ - // Use onmousedown instead of onclick. Seems that IE eats the first onclick - // to wrap it in a selector box, then the second one acts as onclick. See #10420 - this.connect(this.editor.editNode, "onmousedown", this._selectTag); - })); - }, - - _selectTag: function(e){ - // summary: - // A simple event handler that lets me select an image if it is clicked on. - // makes it easier to select images in a standard way across browsers. Otherwise - // selecting an image for edit becomes difficult. - // e: Event - // The mousedown event. - // tags: - // private - if(e && e.target){ - var t = e.target; - var tg = t.tagName? t.tagName.toLowerCase() : ""; - if(tg === this.tag){ - this.editor._sCall("selectElement", [t]); - } - } - }, - - _checkValues: function(args){ - // summary: - // Function to check the values in args and 'fix' them up as needed - // (special characters in the url or alt text) - // args: Object - // Content being set. - // tags: - // protected - if(args && args.urlInput){ - args.urlInput = args.urlInput.replace(/"/g, """); - } - if(args && args.textInput){ - args.textInput = args.textInput.replace(/"/g, """); - } - return args; - }, - - _onDblClick: function(e){ - // summary: - // Function to define a behavior on double clicks on the element - // type this dialog edits to select it and pop up the editor - // dialog. - // e: Object - // The double-click event. - // tags: - // protected. - if(e && e.target){ - var t = e.target; - var tg = t.tagName ? t.tagName.toLowerCase() : ""; - if(tg === this.tag && domAttr.get(t,"src")){ - var editor = this.editor; - - this.editor._sCall("selectElement", [t]); - editor.onDisplayChanged(); - - // Call onNormalizedDisplayChange() now, rather than on timer. - // On IE, when focus goes to the first in the TooltipDialog, the editor loses it's selection. - // Later if onNormalizedDisplayChange() gets called via the timer it will disable the LinkDialog button - // (actually, all the toolbar buttons), at which point clicking the will close the dialog, - // since (for unknown reasons) focus.js ignores disabled controls. - if(editor._updateTimer){ - editor._updateTimer.remove(); - delete editor._updateTimer; - } - editor.onNormalizedDisplayChanged(); - - var button = this.button; - setTimeout(function(){ - // Focus shift outside the event handler. - // IE doesn't like focus changes in event handles. - button.set("disabled", false); - button.loadAndOpenDropDown().then(function(){ - if(button.dropDown.focus){ - button.dropDown.focus(); - } - }); - }, 10); - } - } - } -}); - -// Register these plugins -_Plugin.registry["createLink"] = function(){ - return new LinkDialog({command: "createLink"}); -}; -_Plugin.registry["insertImage"] = function(){ - return new ImgLinkDialog({command: "insertImage"}); -}; - - -// Export both LinkDialog and ImgLinkDialog -// TODO for 2.0: either return both classes in a hash, or split this file into two separate files. -// Then the documentation for the module can be applied to the hash, and will show up in the API doc. -LinkDialog.ImgLinkDialog = ImgLinkDialog; -return LinkDialog; -}); diff --git a/lib/dijit/_editor/plugins/NewPage.js.uncompressed.js b/lib/dijit/_editor/plugins/NewPage.js.uncompressed.js deleted file mode 100644 index 72b6f686a..000000000 --- a/lib/dijit/_editor/plugins/NewPage.js.uncompressed.js +++ /dev/null @@ -1,77 +0,0 @@ -define("dijit/_editor/plugins/NewPage", [ - "dojo/_base/declare", // declare - "dojo/i18n", // i18n.getLocalization - "dojo/_base/lang", // lang.hitch - "../_Plugin", - "../../form/Button", - "dojo/i18n!../nls/commands" -], function(declare, i18n, lang, _Plugin, Button){ - -// module: -// dijit/_editor/plugins/NewPage - - -var NewPage = declare("dijit._editor.plugins.NewPage",_Plugin,{ - // summary: - // This plugin provides a simple 'new page' capability. In other - // words, set content to some default user defined string. - - // content: [public] String - // The default content to insert into the editor as the new page. - // The default is the `
    ` tag, a single blank line. - content: "
    ", - - _initButton: function(){ - // summary: - // Over-ride for creation of the Print button. - var strings = i18n.getLocalization("dijit._editor", "commands"), - editor = this.editor; - this.button = new Button({ - label: strings["newPage"], - ownerDocument: editor.ownerDocument, - dir: editor.dir, - lang: editor.lang, - showLabel: false, - iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "NewPage", - tabIndex: "-1", - onClick: lang.hitch(this, "_newPage") - }); - }, - - setEditor: function(/*dijit/Editor*/ editor){ - // summary: - // Tell the plugin which Editor it is associated with. - // editor: Object - // The editor object to attach the newPage capability to. - this.editor = editor; - this._initButton(); - }, - - updateState: function(){ - // summary: - // Over-ride for button state control for disabled to work. - this.button.set("disabled", this.get("disabled")); - }, - - _newPage: function(){ - // summary: - // Function to set the content to blank. - // tags: - // private - this.editor.beginEditing(); - this.editor.set("value", this.content); - this.editor.endEditing(); - this.editor.focus(); - } -}); - -// Register this plugin. -// For back-compat accept "newpage" (all lowercase) too, remove in 2.0 -_Plugin.registry["newPage"] = _Plugin.registry["newpage"] = function(args){ - return new NewPage({ - content: ("content" in args)?args.content:"
    " - }); -}; - -return NewPage; -}); diff --git a/lib/dijit/_editor/plugins/Print.js.uncompressed.js b/lib/dijit/_editor/plugins/Print.js.uncompressed.js deleted file mode 100644 index 933633d24..000000000 --- a/lib/dijit/_editor/plugins/Print.js.uncompressed.js +++ /dev/null @@ -1,123 +0,0 @@ -define("dijit/_editor/plugins/Print", [ - "dojo/_base/declare", // declare - "dojo/i18n", // i18n.getLocalization - "dojo/_base/lang", // lang.hitch - "dojo/sniff", // has("chrome") has("opera") - "../../focus", // focus.focus() - "../_Plugin", - "../../form/Button", - "dojo/i18n!../nls/commands" -], function(declare, i18n, lang, has, focus, _Plugin, Button){ - -// module: -// dijit/_editor/plugins/Print - - -var Print = declare("dijit._editor.plugins.Print",_Plugin,{ - // summary: - // This plugin provides Print capability to the editor. When - // clicked, the document in the editor frame will be printed. - - _initButton: function(){ - // summary: - // Over-ride for creation of the Print button. - var strings = i18n.getLocalization("dijit._editor", "commands"), - editor = this.editor; - this.button = new Button({ - label: strings["print"], - ownerDocument: editor.ownerDocument, - dir: editor.dir, - lang: editor.lang, - showLabel: false, - iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Print", - tabIndex: "-1", - onClick: lang.hitch(this, "_print") - }); - }, - - setEditor: function(/*dijit/Editor*/ editor){ - // summary: - // Tell the plugin which Editor it is associated with. - // editor: Object - // The editor object to attach the print capability to. - this.editor = editor; - this._initButton(); - - // Set up a check that we have a print function - // and disable button if we do not. - this.editor.onLoadDeferred.then( - lang.hitch(this, function(){ - if(!this.editor.iframe.contentWindow["print"]){ - this.button.set("disabled", true); - } - }) - ); - }, - - updateState: function(){ - // summary: - // Over-ride for button state control for disabled to work. - var disabled = this.get("disabled"); - if(!this.editor.iframe.contentWindow["print"]){ - disabled = true; - } - this.button.set("disabled", disabled); - }, - - _print: function(){ - // summary: - // Function to trigger printing of the editor document - // tags: - // private - var edFrame = this.editor.iframe; - if(edFrame.contentWindow["print"]){ - // IE requires the frame to be focused for - // print to work, but since this is okay for all - // no special casing. - if(!has("opera") && !has("chrome")){ - focus.focus(edFrame); - edFrame.contentWindow.print(); - }else{ - // Neither Opera nor Chrome 3 et you print single frames. - // So, open a new 'window', print it, and close it. - // Also, can't use size 0x0, have to use 1x1 - var edDoc = this.editor.document; - var content = this.editor.get("value"); - content = "" + - content + ""; - var win = window.open("javascript: ''", - "", - "status=0,menubar=0,location=0,toolbar=0," + - "width=1,height=1,resizable=0,scrollbars=0"); - win.document.open(); - win.document.write(content); - win.document.close(); - - var styleNodes = edDoc.getElementsByTagName("style"); - if(styleNodes){ - // Clone over any editor view styles, since we can't print the iframe - // directly. - var i; - for(i = 0; i < styleNodes.length; i++){ - var style = styleNodes[i].innerHTML; - var sNode = win.document.createElement("style"); - sNode.appendChild(win.document.createTextNode(style)); - win.document.getElementsByTagName("head")[0].appendChild(sNode); - } - } - win.print(); - win.close(); - } - } - } -}); - -// Register this plugin. -_Plugin.registry["print"] = function(){ - return new Print({command: "print"}); -}; - - -return Print; -}); diff --git a/lib/dijit/_editor/plugins/TabIndent.js.uncompressed.js b/lib/dijit/_editor/plugins/TabIndent.js.uncompressed.js deleted file mode 100644 index 3cd0a136b..000000000 --- a/lib/dijit/_editor/plugins/TabIndent.js.uncompressed.js +++ /dev/null @@ -1,60 +0,0 @@ -define("dijit/_editor/plugins/TabIndent", [ - "dojo/_base/declare", // declare - "dojo/_base/kernel", // kernel.experimental - "../_Plugin", - "../../form/ToggleButton" -], function(declare, kernel, _Plugin, ToggleButton){ - - // module: - // dijit/_editor/plugins/TabIndent - - kernel.experimental("dijit._editor.plugins.TabIndent"); - - - var TabIndent = declare("dijit._editor.plugins.TabIndent", _Plugin, { - // summary: - // This plugin is used to allow the use of the tab and shift-tab keys - // to indent/outdent list items. This overrides the default behavior - // of moving focus from/to the toolbar - - // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit/Editor. - useDefaultCommand: false, - - // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button - buttonClass: ToggleButton, - - command: "tabIndent", - - _initButton: function(){ - // Override _Plugin._initButton() to setup listener on button click - this.inherited(arguments); - - var e = this.editor; - this.connect(this.button, "onChange", function(val){ - e.set("isTabIndent", val); - }); - - // Set initial checked state of button based on Editor.isTabIndent - this.updateState(); - }, - - updateState: function(){ - // Overrides _Plugin.updateState(). - // Ctrl-m in the editor will switch tabIndent mode on/off, so we need to react to that. - var disabled = this.get("disabled"); - this.button.set("disabled", disabled); - if(disabled){ - return; - } - this.button.set('checked', this.editor.isTabIndent, false); - } - }); - - // Register this plugin. - _Plugin.registry["tabIndent"] = function(){ - return new TabIndent({command: "tabIndent"}); - }; - - - return TabIndent; -}); diff --git a/lib/dijit/_editor/plugins/TextColor.js.uncompressed.js b/lib/dijit/_editor/plugins/TextColor.js.uncompressed.js deleted file mode 100644 index b8da7c4a6..000000000 --- a/lib/dijit/_editor/plugins/TextColor.js.uncompressed.js +++ /dev/null @@ -1,115 +0,0 @@ -define("dijit/_editor/plugins/TextColor", [ - "require", - "dojo/colors", // colors.fromRgb - "dojo/_base/declare", // declare - "dojo/_base/lang", - "../_Plugin", - "../../form/DropDownButton" -], function(require, colors, declare, lang, _Plugin, DropDownButton){ - -// module: -// dijit/_editor/plugins/TextColor - - -var TextColor = declare("dijit._editor.plugins.TextColor", _Plugin, { - // summary: - // This plugin provides dropdown color pickers for setting text color and background color - // description: - // The commands provided by this plugin are: - // - // - foreColor - sets the text color - // - hiliteColor - sets the background color - - // Override _Plugin.buttonClass to use DropDownButton (with ColorPalette) to control this plugin - buttonClass: DropDownButton, - - // useDefaultCommand: Boolean - // False as we do not use the default editor command/click behavior. - useDefaultCommand: false, - - _initButton: function(){ - this.inherited(arguments); - - // Setup to lazy load ColorPalette first time the button is clicked - var self = this; - this.button.loadDropDown = function(callback){ - require(["../../ColorPalette"], lang.hitch(this, function(ColorPalette){ - this.dropDown = new ColorPalette({ - dir: self.editor.dir, - ownerDocument: self.editor.ownerDocument, - value: self.value, - onChange: function(color){ - self.editor.execCommand(self.command, color); - } - }); - callback(); - })); - }; - }, - - updateState: function(){ - // summary: - // Overrides _Plugin.updateState(). This updates the ColorPalette - // to show the color of the currently selected text. - // tags: - // protected - - var _e = this.editor; - var _c = this.command; - if(!_e || !_e.isLoaded || !_c.length){ - return; - } - - if(this.button){ - var disabled = this.get("disabled"); - this.button.set("disabled", disabled); - if(disabled){ return; } - - var value; - try{ - value = _e.queryCommandValue(_c)|| ""; - }catch(e){ - //Firefox may throw error above if the editor is just loaded, ignore it - value = ""; - } - } - - if(value == ""){ - value = "#000000"; - } - if(value == "transparent"){ - value = "#ffffff"; - } - - if(typeof value == "string"){ - //if RGB value, convert to hex value - if(value.indexOf("rgb")> -1){ - value = colors.fromRgb(value).toHex(); - } - }else{ //it's an integer(IE returns an MS access #) - value =((value & 0x0000ff)<< 16)|(value & 0x00ff00)|((value & 0xff0000)>>> 16); - value = value.toString(16); - value = "#000000".slice(0, 7 - value.length)+ value; - - } - - this.value = value; - - var dropDown = this.button.dropDown; - if(dropDown && value !== dropDown.get('value')){ - dropDown.set('value', value, false); - } - } -}); - -// Register this plugin. -_Plugin.registry["foreColor"] = function(){ - return new TextColor({command: "foreColor"}); -}; -_Plugin.registry["hiliteColor"] = function(){ - return new TextColor({command: "hiliteColor"}); -}; - - -return TextColor; -}); diff --git a/lib/dijit/_editor/plugins/ToggleDir.js.uncompressed.js b/lib/dijit/_editor/plugins/ToggleDir.js.uncompressed.js deleted file mode 100644 index 7b36a21d9..000000000 --- a/lib/dijit/_editor/plugins/ToggleDir.js.uncompressed.js +++ /dev/null @@ -1,69 +0,0 @@ -define("dijit/_editor/plugins/ToggleDir", [ - "dojo/_base/declare", // declare - "dojo/dom-style", // domStyle.getComputedStyle - "dojo/_base/kernel", // kernel.experimental - "dojo/_base/lang", // lang.hitch - "../_Plugin", - "../../form/ToggleButton" -], function(declare, domStyle, kernel, lang, _Plugin, ToggleButton){ - - // module: - // dijit/_editor/plugins/ToggleDir - - kernel.experimental("dijit._editor.plugins.ToggleDir"); - - var ToggleDir = declare("dijit._editor.plugins.ToggleDir", _Plugin, { - // summary: - // This plugin is used to toggle direction of the edited document, - // independent of what direction the whole page is. - - // Override _Plugin.useDefaultCommand: processing is done in this plugin - // rather than by sending commands to the Editor - useDefaultCommand: false, - - command: "toggleDir", - - // Override _Plugin.buttonClass to use a ToggleButton for this plugin rather than a vanilla Button - buttonClass: ToggleButton, - - _initButton: function(){ - // Override _Plugin._initButton() to setup handler for button click events. - this.inherited(arguments); - this.editor.onLoadDeferred.then(lang.hitch(this, function(){ - var editDoc = this.editor.editorObject.contentWindow.document.documentElement; - //IE direction has to toggle on the body, not document itself. - //If you toggle just the document, things get very strange in the - //view. But, the nice thing is this works for all supported browsers. - editDoc = editDoc.getElementsByTagName("body")[0]; - var isLtr = domStyle.getComputedStyle(editDoc).direction == "ltr"; - this.button.set("checked", !isLtr); - this.connect(this.button, "onChange", "_setRtl"); - })); - }, - - updateState: function(){ - // summary: - // Over-ride for button state control for disabled to work. - this.button.set("disabled", this.get("disabled")); - }, - - _setRtl: function(rtl){ - // summary: - // Handler for button click events, to switch the text direction of the editor - var dir = "ltr"; - if(rtl){ - dir = "rtl"; - } - var editDoc = this.editor.editorObject.contentWindow.document.documentElement; - editDoc = editDoc.getElementsByTagName("body")[0]; - editDoc.dir/*html node*/ = dir; - } - }); - - // Register this plugin. - _Plugin.registry["toggleDir"] = function(){ - return new ToggleDir({command: "toggleDir"}); - }; - - return ToggleDir; -}); diff --git a/lib/dijit/_editor/plugins/ViewSource.js.uncompressed.js b/lib/dijit/_editor/plugins/ViewSource.js.uncompressed.js deleted file mode 100644 index e70e05c22..000000000 --- a/lib/dijit/_editor/plugins/ViewSource.js.uncompressed.js +++ /dev/null @@ -1,577 +0,0 @@ -define("dijit/_editor/plugins/ViewSource", [ - "dojo/_base/array", // array.forEach - "dojo/_base/declare", // declare - "dojo/dom-attr", // domAttr.set - "dojo/dom-construct", // domConstruct.create domConstruct.place - "dojo/dom-geometry", // domGeometry.setMarginBox domGeometry.position - "dojo/dom-style", // domStyle.set - "dojo/_base/event", // event.stop - "dojo/i18n", // i18n.getLocalization - "dojo/keys", // keys.F12 - "dojo/_base/lang", // lang.hitch - "dojo/on", // on() - "dojo/sniff", // has("ie") has("webkit") - "dojo/_base/window", // win.body win.global - "dojo/window", // winUtils.getBox - "../../focus", // focus.focus() - "../_Plugin", - "../../form/ToggleButton", - "../..", // dijit._scopeName - "../../registry", // registry.getEnclosingWidget() - "dojo/aspect", // Aspect commands for adice - "dojo/i18n!../nls/commands" -], function(array, declare, domAttr, domConstruct, domGeometry, domStyle, event, i18n, keys, lang, on, has, win, - winUtils, focus, _Plugin, ToggleButton, dijit, registry, aspect){ - -// module: -// dijit/_editor/plugins/ViewSource - - -var ViewSource = declare("dijit._editor.plugins.ViewSource",_Plugin, { - // summary: - // This plugin provides a simple view source capability. When view - // source mode is enabled, it disables all other buttons/plugins on the RTE. - // It also binds to the hotkey: CTRL-SHIFT-F11 for toggling ViewSource mode. - - // stripScripts: [public] Boolean - // Boolean flag used to indicate if script tags should be stripped from the document. - // Defaults to true. - stripScripts: true, - - // stripComments: [public] Boolean - // Boolean flag used to indicate if comment tags should be stripped from the document. - // Defaults to true. - stripComments: true, - - // stripComments: [public] Boolean - // Boolean flag used to indicate if iframe tags should be stripped from the document. - // Defaults to true. - stripIFrames: true, - - // readOnly: [const] Boolean - // Boolean flag used to indicate if the source view should be readonly or not. - // Cannot be changed after initialization of the plugin. - // Defaults to false. - readOnly: false, - - // _fsPlugin: [private] Object - // Reference to a registered fullscreen plugin so that viewSource knows - // how to scale. - _fsPlugin: null, - - toggle: function(){ - // summary: - // Function to allow programmatic toggling of the view. - - // For Webkit, we have to focus a very particular way. - // when swapping views, otherwise focus doesn't shift right - // but can't focus this way all the time, only for VS changes. - // If we did it all the time, buttons like bold, italic, etc - // break. - if(has("webkit")){this._vsFocused = true;} - this.button.set("checked", !this.button.get("checked")); - - }, - - _initButton: function(){ - // summary: - // Over-ride for creation of the resize button. - var strings = i18n.getLocalization("dijit._editor", "commands"), - editor = this.editor; - this.button = new ToggleButton({ - label: strings["viewSource"], - ownerDocument: editor.ownerDocument, - dir: editor.dir, - lang: editor.lang, - showLabel: false, - iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "ViewSource", - tabIndex: "-1", - onChange: lang.hitch(this, "_showSource") - }); - - // IE 7 has a horrible bug with zoom, so we have to create this node - // to cross-check later. Sigh. - if(has("ie") == 7){ - this._ieFixNode = domConstruct.create("div", { - style: { - opacity: "0", - zIndex: "-1000", - position: "absolute", - top: "-1000px" - } - }, editor.ownerDocumentBody); - } - // Make sure readonly mode doesn't make the wrong cursor appear over the button. - this.button.set("readOnly", false); - }, - - - setEditor: function(/*dijit/Editor*/ editor){ - // summary: - // Tell the plugin which Editor it is associated with. - // editor: Object - // The editor object to attach the print capability to. - this.editor = editor; - this._initButton(); - - this.editor.addKeyHandler(keys.F12, true, true, lang.hitch(this, function(e){ - // Move the focus before switching - // It'll focus back. Hiding a focused - // node causes issues. - this.button.focus(); - this.toggle(); - event.stop(e); - - // Call the focus shift outside of the handler. - setTimeout(lang.hitch(this, function(){ - // We over-ride focus, so we just need to call. - this.editor.focus(); - }), 100); - })); - }, - - _showSource: function(source){ - // summary: - // Function to toggle between the source and RTE views. - // source: boolean - // Boolean value indicating if it should be in source mode or not. - // tags: - // private - var ed = this.editor; - var edPlugins = ed._plugins; - var html; - this._sourceShown = source; - var self = this; - try{ - if(!this.sourceArea){ - this._createSourceView(); - } - if(source){ - // Update the QueryCommandEnabled function to disable everything but - // the source view mode. Have to over-ride a function, then kick all - // plugins to check their state. - ed._sourceQueryCommandEnabled = ed.queryCommandEnabled; - ed.queryCommandEnabled = function(cmd){ - return cmd.toLowerCase() === "viewsource"; - }; - this.editor.onDisplayChanged(); - html = ed.get("value"); - html = this._filter(html); - ed.set("value", html); - array.forEach(edPlugins, function(p){ - // Turn off any plugins not controlled by queryCommandenabled. - if(p && !(p instanceof ViewSource) && p.isInstanceOf(_Plugin)){ - p.set("disabled", true) - } - }); - - // We actually do need to trap this plugin and adjust how we - // display the textarea. - if(this._fsPlugin){ - this._fsPlugin._getAltViewNode = function(){ - return self.sourceArea; - }; - } - - this.sourceArea.value = html; - - // Since neither iframe nor textarea have margin, border, or padding, - // just set sizes equal - this.sourceArea.style.height = ed.iframe.style.height; - this.sourceArea.style.width = ed.iframe.style.width; - domStyle.set(ed.iframe, "display", "none"); - domStyle.set(this.sourceArea, { - display: "block" - }); - - var resizer = function(){ - // function to handle resize events. - // Will check current VP and only resize if - // different. - var vp = winUtils.getBox(ed.ownerDocument); - - if("_prevW" in this && "_prevH" in this){ - // No actual size change, ignore. - if(vp.w === this._prevW && vp.h === this._prevH){ - return; - }else{ - this._prevW = vp.w; - this._prevH = vp.h; - } - }else{ - this._prevW = vp.w; - this._prevH = vp.h; - } - if(this._resizer){ - clearTimeout(this._resizer); - delete this._resizer; - } - // Timeout it to help avoid spamming resize on IE. - // Works for all browsers. - this._resizer = setTimeout(lang.hitch(this, function(){ - delete this._resizer; - this._resize(); - }), 10); - }; - this._resizeHandle = on(window, "resize", lang.hitch(this, resizer)); - - //Call this on a delay once to deal with IE glitchiness on initial size. - setTimeout(lang.hitch(this, this._resize), 100); - - //Trigger a check for command enablement/disablement. - this.editor.onNormalizedDisplayChanged(); - - this.editor.__oldGetValue = this.editor.getValue; - this.editor.getValue = lang.hitch(this, function(){ - var txt = this.sourceArea.value; - txt = this._filter(txt); - return txt; - }); - - this._setListener = aspect.after(this.editor, "setValue", lang.hitch(this, function(htmlTxt){ - htmlTxt = htmlTxt || ""; - htmlTxt = this._filter(htmlTxt); - this.sourceArea.value = htmlTxt; - }), true); - }else{ - // First check that we were in source view before doing anything. - // corner case for being called with a value of false and we hadn't - // actually been in source display mode. - if(!ed._sourceQueryCommandEnabled){ - return; - } - - // Remove the set listener. - this._setListener.remove(); - delete this._setListener; - - this._resizeHandle.remove(); - delete this._resizeHandle; - - if(this.editor.__oldGetValue){ - this.editor.getValue = this.editor.__oldGetValue; - delete this.editor.__oldGetValue; - } - - // Restore all the plugin buttons state. - ed.queryCommandEnabled = ed._sourceQueryCommandEnabled; - if(!this._readOnly){ - html = this.sourceArea.value; - html = this._filter(html); - ed.beginEditing(); - ed.set("value", html); - ed.endEditing(); - } - - array.forEach(edPlugins, function(p){ - // Turn back on any plugins we turned off. - if(p && p.isInstanceOf(_Plugin)){ - p.set("disabled", false); - } - }); - - domStyle.set(this.sourceArea, "display", "none"); - domStyle.set(ed.iframe, "display", "block"); - delete ed._sourceQueryCommandEnabled; - - //Trigger a check for command enablement/disablement. - this.editor.onDisplayChanged(); - } - // Call a delayed resize to wait for some things to display in header/footer. - setTimeout(lang.hitch(this, function(){ - // Make resize calls. - var parent = ed.domNode.parentNode; - if(parent){ - var container = registry.getEnclosingWidget(parent); - if(container && container.resize){ - container.resize(); - } - } - ed.resize(); - }), 300); - }catch(e){ - console.log(e); - } - }, - - updateState: function(){ - // summary: - // Over-ride for button state control for disabled to work. - this.button.set("disabled", this.get("disabled")); - }, - - _resize: function(){ - // summary: - // Internal function to resize the source view - // tags: - // private - var ed = this.editor; - var tbH = ed.getHeaderHeight(); - var fH = ed.getFooterHeight(); - var eb = domGeometry.position(ed.domNode); - - // Styles are now applied to the internal source container, so we have - // to subtract them off. - var containerPadding = domGeometry.getPadBorderExtents(ed.iframe.parentNode); - var containerMargin = domGeometry.getMarginExtents(ed.iframe.parentNode); - - var extents = domGeometry.getPadBorderExtents(ed.domNode); - var edb = { - w: eb.w - extents.w, - h: eb.h - (tbH + extents.h + fH) - }; - - // Fullscreen gets odd, so we need to check for the FS plugin and - // adapt. - if(this._fsPlugin && this._fsPlugin.isFullscreen){ - //Okay, probably in FS, adjust. - var vp = winUtils.getBox(ed.ownerDocument); - edb.w = (vp.w - extents.w); - edb.h = (vp.h - (tbH + extents.h + fH)); - } - - if(has("ie")){ - // IE is always off by 2px, so we have to adjust here - // Note that IE ZOOM is broken here. I can't get - //it to scale right. - edb.h -= 2; - } - - // IE has a horrible zoom bug. So, we have to try and account for - // it and fix up the scaling. - if(this._ieFixNode){ - var _ie7zoom = -this._ieFixNode.offsetTop / 1000; - edb.w = Math.floor((edb.w + 0.9) / _ie7zoom); - edb.h = Math.floor((edb.h + 0.9) / _ie7zoom); - } - - domGeometry.setMarginBox(this.sourceArea, { - w: edb.w - (containerPadding.w + containerMargin.w), - h: edb.h - (containerPadding.h + containerMargin.h) - }); - - // Scale the parent container too in this case. - domGeometry.setMarginBox(ed.iframe.parentNode, { - h: edb.h - }); - }, - - _createSourceView: function(){ - // summary: - // Internal function for creating the source view area. - // tags: - // private - var ed = this.editor; - var edPlugins = ed._plugins; - this.sourceArea = domConstruct.create("textarea"); - if(this.readOnly){ - domAttr.set(this.sourceArea, "readOnly", true); - this._readOnly = true; - } - domStyle.set(this.sourceArea, { - padding: "0px", - margin: "0px", - borderWidth: "0px", - borderStyle: "none" - }); - domConstruct.place(this.sourceArea, ed.iframe, "before"); - - if(has("ie") && ed.iframe.parentNode.lastChild !== ed.iframe){ - // There's some weirdo div in IE used for focus control - // But is messed up scaling the textarea if we don't config - // it some so it doesn't have a varying height. - domStyle.set(ed.iframe.parentNode.lastChild,{ - width: "0px", - height: "0px", - padding: "0px", - margin: "0px", - borderWidth: "0px", - borderStyle: "none" - }); - } - - // We also need to take over editor focus a bit here, so that focus calls to - // focus the editor will focus to the right node when VS is active. - ed._viewsource_oldFocus = ed.focus; - var self = this; - ed.focus = function(){ - if(self._sourceShown){ - self.setSourceAreaCaret(); - }else{ - try{ - if(this._vsFocused){ - delete this._vsFocused; - // Must focus edit node in this case (webkit only) or - // focus doesn't shift right, but in normal - // cases we focus with the regular function. - focus.focus(ed.editNode); - }else{ - ed._viewsource_oldFocus(); - } - }catch(e){ - console.log(e); - } - } - }; - - var i, p; - for(i = 0; i < edPlugins.length; i++){ - // We actually do need to trap this plugin and adjust how we - // display the textarea. - p = edPlugins[i]; - if(p && (p.declaredClass === "dijit._editor.plugins.FullScreen" || - p.declaredClass === (dijit._scopeName + - "._editor.plugins.FullScreen"))){ - this._fsPlugin = p; - break; - } - } - if(this._fsPlugin){ - // Found, we need to over-ride the alt-view node function - // on FullScreen with our own, chain up to parent call when appropriate. - this._fsPlugin._viewsource_getAltViewNode = this._fsPlugin._getAltViewNode; - this._fsPlugin._getAltViewNode = function(){ - return self._sourceShown?self.sourceArea:this._viewsource_getAltViewNode(); - }; - } - - // Listen to the source area for key events as well, as we need to be able to hotkey toggle - // it from there too. - this.connect(this.sourceArea, "onkeydown", lang.hitch(this, function(e){ - if(this._sourceShown && e.keyCode == keys.F12 && e.ctrlKey && e.shiftKey){ - this.button.focus(); - this.button.set("checked", false); - setTimeout(lang.hitch(this, function(){ed.focus();}), 100); - event.stop(e); - } - })); - }, - - _stripScripts: function(html){ - // summary: - // Strips out script tags from the HTML used in editor. - // html: String - // The HTML to filter - // tags: - // private - if(html){ - // Look for closed and unclosed (malformed) script attacks. - html = html.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig, ""); - html = html.replace(/<\s*script\b([^<>]|\s)*>?/ig, ""); - html = html.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig, ""); - } - return html; - }, - - _stripComments: function(html){ - // summary: - // Strips out comments from the HTML used in editor. - // html: String - // The HTML to filter - // tags: - // private - if(html){ - html = html.replace(//g, ""); - } - return html; - }, - - _stripIFrames: function(html){ - // summary: - // Strips out iframe tags from the content, to avoid iframe script - // style injection attacks. - // html: String - // The HTML to filter - // tags: - // private - if(html){ - html = html.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig, ""); - } - return html; - }, - - _filter: function(html){ - // summary: - // Internal function to perform some filtering on the HTML. - // html: String - // The HTML to filter - // tags: - // private - if(html){ - if(this.stripScripts){ - html = this._stripScripts(html); - } - if(this.stripComments){ - html = this._stripComments(html); - } - if(this.stripIFrames){ - html = this._stripIFrames(html); - } - } - return html; - }, - - setSourceAreaCaret: function(){ - // summary: - // Internal function to set the caret in the sourceArea - // to 0x0 - var global = win.global; - var elem = this.sourceArea; - focus.focus(elem); - if(this._sourceShown && !this.readOnly){ - if(has("ie")){ - if(this.sourceArea.createTextRange){ - var range = elem.createTextRange(); - range.collapse(true); - range.moveStart("character", -99999); // move to 0 - range.moveStart("character", 0); // delta from 0 is the correct position - range.moveEnd("character", 0); - range.select(); - } - }else if(global.getSelection){ - if(elem.setSelectionRange){ - elem.setSelectionRange(0,0); - } - } - } - }, - - destroy: function(){ - // summary: - // Over-ride to remove the node used to correct for IE's - // zoom bug. - if(this._ieFixNode){ - domConstruct.destroy(this._ieFixNode); - } - if(this._resizer){ - clearTimeout(this._resizer); - delete this._resizer; - } - if(this._resizeHandle){ - this._resizeHandle.remove(); - delete this._resizeHandle; - } - if(this._setListener){ - this._setListener.remove(); - delete this._setListener; - } - this.inherited(arguments); - } -}); - -// Register this plugin. -// For back-compat accept "viewsource" (all lowercase) too, remove in 2.0 -_Plugin.registry["viewSource"] = _Plugin.registry["viewsource"] = function(args){ - return new ViewSource({ - readOnly: ("readOnly" in args)?args.readOnly:false, - stripComments: ("stripComments" in args)?args.stripComments:true, - stripScripts: ("stripScripts" in args)?args.stripScripts:true, - stripIFrames: ("stripIFrames" in args)?args.stripIFrames:true - }); -}; - - - - -return ViewSource; -}); diff --git a/lib/dijit/_editor/range.js.uncompressed.js b/lib/dijit/_editor/range.js.uncompressed.js deleted file mode 100644 index b1f55e1ce..000000000 --- a/lib/dijit/_editor/range.js.uncompressed.js +++ /dev/null @@ -1,559 +0,0 @@ -define("dijit/_editor/range", [ - "dojo/_base/array", // array.every - "dojo/_base/declare", // declare - "dojo/_base/lang", // lang.isArray - "dojo/_base/window", // win.doc TODO: remove in 2.0 - "../main" // for exporting symbols to dijit, TODO: remove in 2.0 -], function(array, declare, lang, win, dijit){ - -// module: -// dijit/_editor/range -// summary: -// W3C range API - - -dijit.range={}; - -dijit.range.getIndex = function(/*DomNode*/node, /*DomNode*/parent){ -// dojo.profile.start("dijit.range.getIndex"); - var ret = [], retR = []; - var onode = node; - - var pnode, n; - while(node != parent){ - var i = 0; - pnode = node.parentNode; - while((n = pnode.childNodes[i++])){ - if(n === node){ - --i; - break; - } - } - //if(i>=pnode.childNodes.length){ - //dojo.debug("Error finding index of a node in dijit/range.getIndex()"); - //} - ret.unshift(i); - retR.unshift(i - pnode.childNodes.length); - node = pnode; - } - - //normalized() can not be called so often to prevent - //invalidating selection/range, so we have to detect - //here that any text nodes in a row - if(ret.length > 0 && onode.nodeType == 3){ - n = onode.previousSibling; - while(n && n.nodeType == 3){ - ret[ret.length - 1]--; - n = n.previousSibling; - } - n = onode.nextSibling; - while(n && n.nodeType == 3){ - retR[retR.length - 1]++; - n = n.nextSibling; - } - } -// dojo.profile.end("dijit/range.getIndex()"); - return {o: ret, r:retR}; -}; - -dijit.range.getNode = function(/*Array*/index, /*DomNode*/parent){ - if(!lang.isArray(index) || index.length == 0){ - return parent; - } - var node = parent; -// if(!node)debugger - array.every(index, function(i){ - if(i >= 0 && i < node.childNodes.length){ - node = node.childNodes[i]; - }else{ - node = null; - //console.debug('Error: can not find node with index',index,'under parent node',parent ); - return false; //terminate array.every - } - return true; //carry on the every loop - }); - - return node; -}; - -dijit.range.getCommonAncestor = function(n1, n2, root){ - root = root || n1.ownerDocument.body; - var getAncestors = function(n){ - var as = []; - while(n){ - as.unshift(n); - if(n !== root){ - n = n.parentNode; - }else{ - break; - } - } - return as; - }; - var n1as = getAncestors(n1); - var n2as = getAncestors(n2); - - var m = Math.min(n1as.length, n2as.length); - var com = n1as[0]; //at least, one element should be in the array: the root (BODY by default) - for(var i = 1; i < m; i++){ - if(n1as[i] === n2as[i]){ - com = n1as[i] - }else{ - break; - } - } - return com; -}; - -dijit.range.getAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){ - root = root || node.ownerDocument.body; - while(node && node !== root){ - var name = node.nodeName.toUpperCase(); - if(regex.test(name)){ - return node; - } - - node = node.parentNode; - } - return null; -}; - -dijit.range.BlockTagNames = /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/; -dijit.range.getBlockAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){ - root = root || node.ownerDocument.body; - regex = regex || dijit.range.BlockTagNames; - var block = null, blockContainer; - while(node && node !== root){ - var name = node.nodeName.toUpperCase(); - if(!block && regex.test(name)){ - block = node; - } - if(!blockContainer && (/^(?:BODY|TD|TH|CAPTION)$/).test(name)){ - blockContainer = node; - } - - node = node.parentNode; - } - return {blockNode:block, blockContainer:blockContainer || node.ownerDocument.body}; -}; - -dijit.range.atBeginningOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){ - var atBeginning = false; - var offsetAtBeginning = (offset == 0); - if(!offsetAtBeginning && node.nodeType == 3){ //if this is a text node, check whether the left part is all space - if(/^[\s\xA0]+$/.test(node.nodeValue.substr(0, offset))){ - offsetAtBeginning = true; - } - } - if(offsetAtBeginning){ - var cnode = node; - atBeginning = true; - while(cnode && cnode !== container){ - if(cnode.previousSibling){ - atBeginning = false; - break; - } - cnode = cnode.parentNode; - } - } - return atBeginning; -}; - -dijit.range.atEndOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){ - var atEnd = false; - var offsetAtEnd = (offset == (node.length || node.childNodes.length)); - if(!offsetAtEnd && node.nodeType == 3){ //if this is a text node, check whether the right part is all space - if(/^[\s\xA0]+$/.test(node.nodeValue.substr(offset))){ - offsetAtEnd = true; - } - } - if(offsetAtEnd){ - var cnode = node; - atEnd = true; - while(cnode && cnode !== container){ - if(cnode.nextSibling){ - atEnd = false; - break; - } - cnode = cnode.parentNode; - } - } - return atEnd; -}; - -dijit.range.adjacentNoneTextNode = function(startnode, next){ - var node = startnode; - var len = (0 - startnode.length) || 0; - var prop = next ? 'nextSibling' : 'previousSibling'; - while(node){ - if(node.nodeType != 3){ - break; - } - len += node.length; - node = node[prop]; - } - return [node,len]; -}; - -dijit.range.create = function(/*Window?*/ win){ // TODO: for 2.0, replace optional window param w/mandatory window or document param - win = win || window; - if(win.getSelection){ - return win.document.createRange(); - }else{//IE - return new dijit.range.W3CRange(); - } -}; - -dijit.range.getSelection = function(/*Window*/ window, /*Boolean?*/ ignoreUpdate){ - if(window.getSelection){ - return window.getSelection(); - }else{//IE - var s = new dijit.range.ie.selection(window); - if(!ignoreUpdate){ - s._getCurrentSelection(); - } - return s; - } -}; - -// TODO: convert to has() test? But remember IE9 issues with quirks vs. standards in main frame vs. iframe. -if(!window.getSelection){ - dijit.range.ie = { - cachedSelection: {}, - selection: function(window){ - this._ranges = []; - this.addRange = function(r, /*boolean*/ internal){ - this._ranges.push(r); - if(!internal){ - r._select(); - } - this.rangeCount = this._ranges.length; - }; - this.removeAllRanges = function(){ - //don't detach, the range may be used later -// for(var i=0;i 0){ - array.every(parentNode.childNodes, function(node, i){ - var calOffset; - if(node.nodeType != 3){ - atmrange.moveToElementText(node); - - if(atmrange.compareEndPoints(cmpstr, range) > 0){ - //startnode = node.previousSibling; - if(lastNode && lastNode.nodeType == 3){ - //where shall we put the start? in the text node or after? - startnode = lastNode; - calOffset = true; - }else{ - startnode = parentNode; - startOffset = i; - return false; - } - }else{ - if(i == parentNode.childNodes.length - 1){ - startnode = parentNode; - startOffset = parentNode.childNodes.length; - return false; - } - } - }else{ - if(i == parentNode.childNodes.length - 1){//at the end of this node - startnode = node; - calOffset = true; - } - } - // try{ - if(calOffset && startnode){ - var prevnode = dijit.range.adjacentNoneTextNode(startnode)[0]; - if(prevnode){ - startnode = prevnode.nextSibling; - }else{ - startnode = parentNode.firstChild; //firstChild must be a text node - } - var prevnodeobj = dijit.range.adjacentNoneTextNode(startnode); - prevnode = prevnodeobj[0]; - var lenoffset = prevnodeobj[1]; - if(prevnode){ - atmrange.moveToElementText(prevnode); - atmrange.collapse(false); - }else{ - atmrange.moveToElementText(parentNode); - } - atmrange.setEndPoint(cmpstr, range); - startOffset = atmrange.text.length - lenoffset; - - return false; - } - // }catch(e){ debugger } - lastNode = node; - return true; - }); - }else{ - startnode = parentNode; - startOffset = 0; - } - - //if at the end of startnode and we are dealing with start container, then - //move the startnode to nextSibling if it is a text node - //TODO: do this for end container? - if(!end && startnode.nodeType == 1 && startOffset == startnode.childNodes.length){ - var nextnode = startnode.nextSibling; - if(nextnode && nextnode.nodeType == 3){ - startnode = nextnode; - startOffset = 0; - } - } - return [startnode, startOffset]; - }, - setEndPoint: function(range, container, offset){ - //text node - var atmrange = range.duplicate(), node, len; - if(container.nodeType != 3){ //normal node - if(offset > 0){ - node = container.childNodes[offset - 1]; - if(node){ - if(node.nodeType == 3){ - container = node; - offset = node.length; - //pass through - }else{ - if(node.nextSibling && node.nextSibling.nodeType == 3){ - container = node.nextSibling; - offset = 0; - //pass through - }else{ - atmrange.moveToElementText(node.nextSibling ? node : container); - var parent = node.parentNode; - var tempNode = parent.insertBefore(node.ownerDocument.createTextNode(' '), node.nextSibling); - atmrange.collapse(false); - parent.removeChild(tempNode); - } - } - } - }else{ - atmrange.moveToElementText(container); - atmrange.collapse(true); - } - } - if(container.nodeType == 3){ - var prevnodeobj = dijit.range.adjacentNoneTextNode(container); - var prevnode = prevnodeobj[0]; - len = prevnodeobj[1]; - if(prevnode){ - atmrange.moveToElementText(prevnode); - atmrange.collapse(false); - //if contentEditable is not inherit, the above collapse won't make the end point - //in the correctly position: it always has a -1 offset, so compensate it - if(prevnode.contentEditable != 'inherit'){ - len++; - } - }else{ - atmrange.moveToElementText(container.parentNode); - atmrange.collapse(true); - - // Correct internal cursor position - // http://bugs.dojotoolkit.org/ticket/15578 - atmrange.move('character', 1); - atmrange.move('character', -1); - } - - offset += len; - if(offset > 0){ - if(atmrange.move('character', offset) != offset){ - console.error('Error when moving!'); - } - } - } - - return atmrange; - }, - decomposeTextRange: function(range){ - var tmpary = dijit.range.ie.getEndPoint(range); - var startContainer = tmpary[0], startOffset = tmpary[1]; - var endContainer = tmpary[0], endOffset = tmpary[1]; - - if(range.htmlText.length){ - if(range.htmlText == range.text){ //in the same text node - endOffset = startOffset + range.text.length; - }else{ - tmpary = dijit.range.ie.getEndPoint(range, true); - endContainer = tmpary[0],endOffset = tmpary[1]; -// if(startContainer.tagName == "BODY"){ -// startContainer = startContainer.firstChild; -// } - } - } - return [startContainer, startOffset, endContainer, endOffset]; - }, - setRange: function(range, startContainer, startOffset, endContainer, endOffset, collapsed){ - var start = dijit.range.ie.setEndPoint(range, startContainer, startOffset); - - range.setEndPoint('StartToStart', start); - if(!collapsed){ - var end = dijit.range.ie.setEndPoint(range, endContainer, endOffset); - } - range.setEndPoint('EndToEnd', end || start); - - return range; - } - }; - -declare("dijit.range.W3CRange",null, { - constructor: function(){ - if(arguments.length>0){ - this.setStart(arguments[0][0],arguments[0][1]); - this.setEnd(arguments[0][2],arguments[0][3]); - }else{ - this.commonAncestorContainer = null; - this.startContainer = null; - this.startOffset = 0; - this.endContainer = null; - this.endOffset = 0; - this.collapsed = true; - } - }, - _updateInternal: function(){ - if(this.startContainer !== this.endContainer){ - this.commonAncestorContainer = dijit.range.getCommonAncestor(this.startContainer, this.endContainer); - }else{ - this.commonAncestorContainer = this.startContainer; - } - this.collapsed = (this.startContainer === this.endContainer) && (this.startOffset == this.endOffset); - }, - setStart: function(node, offset){ - offset=parseInt(offset); - if(this.startContainer === node && this.startOffset == offset){ - return; - } - delete this._cachedBookmark; - - this.startContainer = node; - this.startOffset = offset; - if(!this.endContainer){ - this.setEnd(node, offset); - }else{ - this._updateInternal(); - } - }, - setEnd: function(node, offset){ - offset=parseInt(offset); - if(this.endContainer === node && this.endOffset == offset){ - return; - } - delete this._cachedBookmark; - - this.endContainer = node; - this.endOffset = offset; - if(!this.startContainer){ - this.setStart(node, offset); - }else{ - this._updateInternal(); - } - }, - setStartAfter: function(node, offset){ - this._setPoint('setStart', node, offset, 1); - }, - setStartBefore: function(node, offset){ - this._setPoint('setStart', node, offset, 0); - }, - setEndAfter: function(node, offset){ - this._setPoint('setEnd', node, offset, 1); - }, - setEndBefore: function(node, offset){ - this._setPoint('setEnd', node, offset, 0); - }, - _setPoint: function(what, node, offset, ext){ - var index = dijit.range.getIndex(node, node.parentNode).o; - this[what](node.parentNode, index.pop()+ext); - }, - _getIERange: function(){ - var r = (this._body || this.endContainer.ownerDocument.body).createTextRange(); - dijit.range.ie.setRange(r, this.startContainer, this.startOffset, this.endContainer, this.endOffset, this.collapsed); - return r; - }, - getBookmark: function(){ - this._getIERange(); - return this._cachedBookmark; - }, - _select: function(){ - var r = this._getIERange(); - r.select(); - }, - deleteContents: function(){ - var s = this.startContainer, r = this._getIERange(); - if(s.nodeType === 3 && !this.startOffset){ - //if the range starts at the beginning of a - //text node, move it to before the textnode - //to make sure the range is still valid - //after deleteContents() finishes - this.setStartBefore(s); - } - r.pasteHTML(''); - this.endContainer = this.startContainer; - this.endOffset = this.startOffset; - this.collapsed = true; - }, - cloneRange: function(){ - var r = new dijit.range.W3CRange([this.startContainer,this.startOffset, - this.endContainer,this.endOffset]); - r._body = this._body; - return r; - }, - detach: function(){ - this._body = null; - this.commonAncestorContainer = null; - this.startContainer = null; - this.startOffset = 0; - this.endContainer = null; - this.endOffset = 0; - this.collapsed = true; -} -}); -} //if(!window.getSelection) - - -return dijit.range; -}); diff --git a/lib/dijit/_editor/selection.js.uncompressed.js b/lib/dijit/_editor/selection.js.uncompressed.js deleted file mode 100644 index 272ac7787..000000000 --- a/lib/dijit/_editor/selection.js.uncompressed.js +++ /dev/null @@ -1,383 +0,0 @@ -define("dijit/_editor/selection", [ - "dojo/dom", // dom.byId - "dojo/_base/lang", - "dojo/sniff", // has("ie") has("opera") - "dojo/_base/window", // win.body win.doc win.doc.createElement win.doc.selection win.doc.selection.createRange win.doc.selection.type.toLowerCase win.global win.global.getSelection - "../main" // for exporting symbols to dijit._editor.selection (TODO: remove in 2.0) -], function(dom, lang, has, win, dijit){ - -// module: -// dijit/_editor/selection -// summary: -// Text selection API - -// FIXME: -// all of these methods branch internally for IE. This is probably -// sub-optimal in terms of runtime performance. We should investigate the -// size difference for differentiating at definition time. - -var selection = { - getType: function(){ - // summary: - // Get the selection type (like win.doc.select.type in IE). - if(win.doc.getSelection){ - // W3C path - var stype = "text"; - - // Check if the actual selection is a CONTROL (IMG, TABLE, HR, etc...). - var oSel; - try{ - oSel = win.global.getSelection(); - }catch(e){ /*squelch*/ } - - if(oSel && oSel.rangeCount == 1){ - var oRange = oSel.getRangeAt(0); - if( (oRange.startContainer == oRange.endContainer) && - ((oRange.endOffset - oRange.startOffset) == 1) && - (oRange.startContainer.nodeType != 3 /* text node*/) - ){ - stype = "control"; - } - } - return stype; //String - }else{ - // IE6-8 - return win.doc.selection.type.toLowerCase(); - } - }, - - getSelectedText: function(){ - // summary: - // Return the text (no html tags) included in the current selection or null if no text is selected - if(win.doc.getSelection){ - // W3C path - var selection = win.global.getSelection(); - return selection ? selection.toString() : ""; //String - }else{ - // IE6-8 - if(dijit._editor.selection.getType() == 'control'){ - return null; - } - return win.doc.selection.createRange().text; - } - }, - - getSelectedHtml: function(){ - // summary: - // Return the html text of the current selection or null if unavailable - if(win.doc.getSelection){ - // W3C path - var selection = win.global.getSelection(); - if(selection && selection.rangeCount){ - var i; - var html = ""; - for(i = 0; i < selection.rangeCount; i++){ - //Handle selections spanning ranges, such as Opera - var frag = selection.getRangeAt(i).cloneContents(); - var div = win.doc.createElement("div"); - div.appendChild(frag); - html += div.innerHTML; - } - return html; //String - } - return null; - }else{ - // IE6-8 - if(dijit._editor.selection.getType() == 'control'){ - return null; - } - return win.doc.selection.createRange().htmlText; - } - }, - - getSelectedElement: function(){ - // summary: - // Retrieves the selected element (if any), just in the case that - // a single element (object like and image or a table) is - // selected. - if(dijit._editor.selection.getType() == "control"){ - if(win.doc.getSelection){ - // W3C path - var selection = win.global.getSelection(); - return selection.anchorNode.childNodes[ selection.anchorOffset ]; - }else{ - // IE6-8 - var range = win.doc.selection.createRange(); - if(range && range.item){ - return win.doc.selection.createRange().item(0); - } - } - } - return null; - }, - - getParentElement: function(){ - // summary: - // Get the parent element of the current selection - if(dijit._editor.selection.getType() == "control"){ - var p = this.getSelectedElement(); - if(p){ return p.parentNode; } - }else{ - if(win.doc.getSelection){ - var selection = win.global.getSelection(); - if(selection){ - var node = selection.anchorNode; - while(node && (node.nodeType != 1)){ // not an element - node = node.parentNode; - } - return node; - } - }else{ - var r = win.doc.selection.createRange(); - r.collapse(true); - return r.parentElement(); - } - } - return null; - }, - - hasAncestorElement: function(/*String*/ tagName /* ... */){ - // summary: - // Check whether current selection has a parent element which is - // of type tagName (or one of the other specified tagName) - // tagName: String - // The tag name to determine if it has an ancestor of. - return this.getAncestorElement.apply(this, arguments) != null; //Boolean - }, - - getAncestorElement: function(/*String*/ tagName /* ... */){ - // summary: - // Return the parent element of the current selection which is of - // type tagName (or one of the other specified tagName) - // tagName: String - // The tag name to determine if it has an ancestor of. - var node = this.getSelectedElement() || this.getParentElement(); - return this.getParentOfType(node, arguments); //DOMNode - }, - - isTag: function(/*DomNode*/ node, /*String[]*/ tags){ - // summary: - // Function to determine if a node is one of an array of tags. - // node: - // The node to inspect. - // tags: - // An array of tag name strings to check to see if the node matches. - if(node && node.tagName){ - var _nlc = node.tagName.toLowerCase(); - for(var i=0; i nodes and possibly others ... so - //we use the W3C range API - if(selection.rangeCount){ - range = selection.getRangeAt(0); - }else{ - range = doc.createRange(); - } - range.setStart(element, 0); - range.setEnd(element,(element.nodeType == 3) ? element.length : element.childNodes.length); - selection.addRange(range); - }else{ - selection.selectAllChildren(element); - } - }else{ - // IE6-8 - range = element.ownerDocument.body.createTextRange(); - range.moveToElementText(element); - if(!nochangefocus){ - try{ - range.select(); // IE throws an exception here if the widget is hidden. See #5439 - }catch(e){ /* squelch */} - } - } - }, - - selectElement: function(/*DomNode*/ element, /*Boolean?*/ nochangefocus){ - // summary: - // clear previous selection and select element (including all its children) - // element: DOMNode - // The element to select. - // nochangefocus: Boolean - // Boolean indicating if the focus should be changed. IE only. - var range; - element = dom.byId(element); // TODO: remove for 2.0 or sooner, spec listed above doesn't allow for string - var doc = element.ownerDocument; - var global = win.global; // TODO: use winUtils.get(doc)? - if(doc.getSelection){ - // W3C path - var selection = global.getSelection(); - range = doc.createRange(); - if(selection.removeAllRanges){ // Mozilla - // FIXME: does this work on Safari? - if(has("opera")){ - //Opera works if you use the current range on - //the selection if present. - if(selection.getRangeAt(0)){ - range = selection.getRangeAt(0); - } - } - range.selectNode(element); - selection.removeAllRanges(); - selection.addRange(range); - } - }else{ - // IE6-8 - try{ - var tg = element.tagName ? element.tagName.toLowerCase() : ""; - if(tg === "img" || tg === "table"){ - range = win.body(doc).createControlRange(); - }else{ - range = win.body(doc).createRange(); - } - range.addElement(element); - if(!nochangefocus){ - range.select(); - } - }catch(e){ - this.selectElementChildren(element, nochangefocus); - } - } - }, - - inSelection: function(node){ - // summary: - // This function determines if 'node' is - // in the current selection. - // tags: - // public - if(node){ - var newRange; - var doc = win.doc; - var range; - - if(win.doc.getSelection){ - // WC3 - var sel = win.global.getSelection(); - if(sel && sel.rangeCount > 0){ - range = sel.getRangeAt(0); - } - if(range && range.compareBoundaryPoints && doc.createRange){ - try{ - newRange = doc.createRange(); - newRange.setStart(node, 0); - if(range.compareBoundaryPoints(range.START_TO_END, newRange) === 1){ - return true; - } - }catch(e){ /* squelch */} - } - }else{ - // IE6-8, so we can't use the range object as the pseudo - // range doesn't implement the boundary checking, we have to - // use IE specific crud. - range = doc.selection.createRange(); - try{ - newRange = node.ownerDocument.body.createControlRange(); - if(newRange){ - newRange.addElement(node); - } - }catch(e1){ - try{ - newRange = node.ownerDocument.body.createTextRange(); - newRange.moveToElementText(node); - }catch(e2){/* squelch */} - } - if(range && newRange){ - // We can finally compare similar to W3C - if(range.compareEndPoints("EndToStart", newRange) === 1){ - return true; - } - } - } - } - return false; // Boolean - } -}; - - -lang.setObject("dijit._editor.selection", selection); - -return selection; -}); diff --git a/lib/dijit/_tree/dndSource.js.uncompressed.js b/lib/dijit/_tree/dndSource.js.uncompressed.js deleted file mode 100644 index 155e3ff38..000000000 --- a/lib/dijit/_tree/dndSource.js.uncompressed.js +++ /dev/null @@ -1,20 +0,0 @@ -define("dijit/_tree/dndSource", [ - "dojo/_base/kernel", // kernel.deprecated - "dojo/_base/lang", // lang.setObject - "../tree/dndSource" -], function(kernel, lang, dndSource){ - // module: - // dijit/_tree/dndSource - - /*===== - return { - // summary: - // Deprecated module, use dijit/tree/dndSource instead. - }; - =====*/ - - // TODO: remove this file in 2.0 - kernel.deprecated("dijit._tree.dndSource has been moved to dijit.tree.dndSource, use that instead", "", "2.0"); - - lang.setObject("dijit._tree.dndSource", dndSource); -}); diff --git a/lib/dijit/a11y.js.uncompressed.js b/lib/dijit/a11y.js.uncompressed.js deleted file mode 100644 index 91a57d2ca..000000000 --- a/lib/dijit/a11y.js.uncompressed.js +++ /dev/null @@ -1,177 +0,0 @@ -define("dijit/a11y", [ - "dojo/_base/array", // array.forEach array.map - "dojo/_base/config", // defaultDuration - "dojo/_base/declare", // declare - "dojo/dom", // dom.byId - "dojo/dom-attr", // domAttr.attr domAttr.has - "dojo/dom-style", // style.style - "dojo/sniff", // has("ie") - "./main" // for exporting methods to dijit namespace -], function(array, config, declare, dom, domAttr, domStyle, has, dijit){ - - // module: - // dijit/a11y - - var shown = (dijit._isElementShown = function(/*Element*/ elem){ - var s = domStyle.get(elem); - return (s.visibility != "hidden") - && (s.visibility != "collapsed") - && (s.display != "none") - && (domAttr.get(elem, "type") != "hidden"); - }); - - dijit.hasDefaultTabStop = function(/*Element*/ elem){ - // summary: - // Tests if element is tab-navigable even without an explicit tabIndex setting - - // No explicit tabIndex setting, need to investigate node type - switch(elem.nodeName.toLowerCase()){ - case "a": - // An
    w/out a tabindex is only navigable if it has an href - return domAttr.has(elem, "href"); - case "area": - case "button": - case "input": - case "object": - case "select": - case "textarea": - // These are navigable by default - return true; - case "iframe": - // If it's an editor '); - } - }; - - back.setInitialState = function(/*Object*/args){ - // summary: - // Sets the state object and back callback for the very first page - // that is loaded. - // - // It is recommended that you call this method as part of an event - // listener that is registered via dojo/ready. - // args: Object - // See the addToHistory() function for the list of valid args properties. - initialState = createState(initialHref, args, initialHash); - }; - - //FIXME: Make these doc comments not be awful. At least they're not wrong. - //FIXME: Would like to support arbitrary back/forward jumps. Have to rework iframeLoaded among other things. - //FIXME: is there a slight race condition in moz using change URL with the timer check and when - // the hash gets set? I think I have seen a back/forward call in quick succession, but not consistent. - - - /*===== - var __backArgs = { - // back: Function? - // A function to be called when this state is reached via the user - // clicking the back button. - // forward: Function? - // Upon return to this state from the "back, forward" combination - // of navigation steps, this function will be called. Somewhat - // analogous to the semantic of an "onRedo" event handler. - // changeUrl: Boolean|String? - // Boolean indicating whether or not to create a unique hash for - // this state. If a string is passed instead, it is used as the - // hash. - }; - =====*/ - - back.addToHistory = function(args){ - // summary: - // adds a state object (args) to the history list. - // args: __backArgs - // The state object that will be added to the history list. - // description: - // To support getting back button notifications, the object - // argument should implement a function called either "back", - // "backButton", or "handle". The string "back" will be passed as - // the first and only argument to this callback. - // - // To support getting forward button notifications, the object - // argument should implement a function called either "forward", - // "forwardButton", or "handle". The string "forward" will be - // passed as the first and only argument to this callback. - // - // If you want the browser location string to change, define "changeUrl" on the object. If the - // value of "changeUrl" is true, then a unique number will be appended to the URL as a fragment - // identifier (http://some.domain.com/path#uniquenumber). If it is any other value that does - // not evaluate to false, that value will be used as the fragment identifier. For example, - // if changeUrl: 'page1', then the URL will look like: http://some.domain.com/path#page1 - // - // There are problems with using dojo/back with semantically-named fragment identifiers - // ("hash values" on an URL). In most browsers it will be hard for dojo/back to know - // distinguish a back from a forward event in those cases. For back/forward support to - // work best, the fragment ID should always be a unique value (something using new Date().getTime() - // for example). If you want to detect hash changes using semantic fragment IDs, then - // consider using dojo/hash instead (in Dojo 1.4+). - // - // example: - // | back.addToHistory({ - // | back: function(){ console.log('back pressed'); }, - // | forward: function(){ console.log('forward pressed'); }, - // | changeUrl: true - // | }); - - // BROWSER NOTES: - // Safari 1.2: - // back button "works" fine, however it's not possible to actually - // DETECT that you've moved backwards by inspecting window.location. - // Unless there is some other means of locating. - // FIXME: perhaps we can poll on history.length? - // Safari 2.0.3+ (and probably 1.3.2+): - // works fine, except when changeUrl is used. When changeUrl is used, - // Safari jumps all the way back to whatever page was shown before - // the page that uses dojo.undo.browser support. - // IE 5.5 SP2: - // back button behavior is macro. It does not move back to the - // previous hash value, but to the last full page load. This suggests - // that the iframe is the correct way to capture the back button in - // these cases. - // Don't test this page using local disk for MSIE. MSIE will not create - // a history list for iframe_history.html if served from a file: URL. - // The XML served back from the XHR tests will also not be properly - // created if served from local disk. Serve the test pages from a web - // server to test in that browser. - // IE 6.0: - // same behavior as IE 5.5 SP2 - // Firefox 1.0+: - // the back button will return us to the previous hash on the same - // page, thereby not requiring an iframe hack, although we do then - // need to run a timer to detect inter-page movement. - - //If addToHistory is called, then that means we prune the - //forward stack -- the user went back, then wanted to - //start a new forward path. - forwardStack = []; - - var hash = null; - var url = null; - if(!historyIframe){ - if(config["useXDomain"] && !config["dojoIframeHistoryUrl"]){ - console.warn("dojo/back: When using cross-domain Dojo builds," - + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" - + " to the path on your domain to iframe_history.html"); - } - historyIframe = window.frames["dj_history"]; - } - if(!bookmarkAnchor){ - bookmarkAnchor = domConstruct.create("a", {style: {display: "none"}}, baseWindow.body()); - } - if(args["changeUrl"]){ - hash = ""+ ((args["changeUrl"]!==true) ? args["changeUrl"] : (new Date()).getTime()); - - //If the current hash matches the new one, just replace the history object with - //this new one. It doesn't make sense to track different state objects for the same - //logical URL. This matches the browser behavior of only putting in one history - //item no matter how many times you click on the same #hash link, at least in Firefox - //and Safari, and there is no reliable way in those browsers to know if a #hash link - //has been clicked on multiple times. So making this the standard behavior in all browsers - //so that dojo/back's behavior is the same in all browsers. - if(historyStack.length == 0 && initialState.urlHash == hash){ - initialState = createState(url, args, hash); - return; - }else if(historyStack.length > 0 && historyStack[historyStack.length - 1].urlHash == hash){ - historyStack[historyStack.length - 1] = createState(url, args, hash); - return; - } - - changingUrl = true; - setTimeout(function(){ - setHash(hash); - changingUrl = false; - }, 1); - bookmarkAnchor.href = hash; - - if(has("ie")){ - url = loadIframeHistory(); - - var oldCB = args["back"]||args["backButton"]||args["handle"]; - - //The function takes handleName as a parameter, in case the - //callback we are overriding was "handle". In that case, - //we will need to pass the handle name to handle. - var tcb = function(handleName){ - if(getHash() != ""){ - setTimeout(function(){ setHash(hash); }, 1); - } - //Use apply to set "this" to args, and to try to avoid memory leaks. - oldCB.apply(this, [handleName]); - }; - - //Set interceptor function in the right place. - if(args["back"]){ - args.back = tcb; - }else if(args["backButton"]){ - args.backButton = tcb; - }else if(args["handle"]){ - args.handle = tcb; - } - - var oldFW = args["forward"]||args["forwardButton"]||args["handle"]; - - //The function takes handleName as a parameter, in case the - //callback we are overriding was "handle". In that case, - //we will need to pass the handle name to handle. - var tfw = function(handleName){ - if(getHash() != ""){ - setHash(hash); - } - if(oldFW){ // we might not actually have one - //Use apply to set "this" to args, and to try to avoid memory leaks. - oldFW.apply(this, [handleName]); - } - }; - - //Set interceptor function in the right place. - if(args["forward"]){ - args.forward = tfw; - }else if(args["forwardButton"]){ - args.forwardButton = tfw; - }else if(args["handle"]){ - args.handle = tfw; - } - - }else if(!has("ie")){ - // start the timer - if(!locationTimer){ - locationTimer = setInterval(checkLocation, 200); - } - - } - }else{ - url = loadIframeHistory(); - } - - historyStack.push(createState(url, args, hash)); - }; - - back._iframeLoaded = function(evt, ifrLoc){ - // summary: - // private method. Do not call this directly. - var query = getUrlQuery(ifrLoc.href); - if(query == null){ - // alert("iframeLoaded"); - // we hit the end of the history, so we should go back - if(historyStack.length == 1){ - handleBackButton(); - } - return; - } - if(moveForward){ - // we were expecting it, so it's not either a forward or backward movement - moveForward = false; - return; - } - - //Check the back stack first, since it is more likely. - //Note that only one step back or forward is supported. - if(historyStack.length >= 2 && query == getUrlQuery(historyStack[historyStack.length-2].url)){ - handleBackButton(); - }else if(forwardStack.length > 0 && query == getUrlQuery(forwardStack[forwardStack.length-1].url)){ - handleForwardButton(); - } - }; - - return back; - -}); diff --git a/lib/dojo/behavior.js.uncompressed.js b/lib/dojo/behavior.js.uncompressed.js deleted file mode 100644 index 508081f37..000000000 --- a/lib/dojo/behavior.js.uncompressed.js +++ /dev/null @@ -1,249 +0,0 @@ -define("dojo/behavior", ["./_base/kernel", "./_base/lang", "./_base/array", "./_base/connect", "./query", "./ready"], -function(dojo, lang, darray, connect, query, ready){ - -// module: -// dojo/behavior - -dojo.deprecated("dojo.behavior", "Use dojo/on with event delegation (on.selector())"); - -var Behavior = function(){ - // summary: - // Deprecated. dojo/behavior's functionality can be achieved using event delegation using dojo/on - // and on.selector(). - // description: - // A very simple, lightweight mechanism for applying code to - // existing documents, based around `dojo/query` (CSS3 selectors) for node selection, - // and a simple two-command API: `add()` and `apply()`; - // - // Behaviors apply to a given page, and are registered following the syntax - // options described by `add()` to match nodes to actions, or "behaviors". - // - // Added behaviors are applied to the current DOM when .apply() is called, - // matching only new nodes found since .apply() was last called. - - function arrIn(obj, name){ - if(!obj[name]){ obj[name] = []; } - return obj[name]; - } - - var _inc = 0; - - function forIn(obj, scope, func){ - var tmpObj = {}; - for(var x in obj){ - if(typeof tmpObj[x] == "undefined"){ - if(!func){ - scope(obj[x], x); - }else{ - func.call(scope, obj[x], x); - } - } - } - } - - // FIXME: need a better test so we don't exclude nightly Safari's! - this._behaviors = {}; - this.add = function(/* Object */behaviorObj){ - // summary: - // Add the specified behavior to the list of behaviors, ignoring existing - // matches. - // behaviorObj: Object - // The behavior object that will be added to behaviors list. The behaviors - // in the list will be applied the next time apply() is called. - // description: - // Add the specified behavior to the list of behaviors which will - // be applied the next time apply() is called. Calls to add() for - // an already existing behavior do not replace the previous rules, - // but are instead additive. New nodes which match the rule will - // have all add()-ed behaviors applied to them when matched. - // - // The "found" method is a generalized handler that's called as soon - // as the node matches the selector. Rules for values that follow also - // apply to the "found" key. - // - // The "on*" handlers are attached with `dojo.connect()`, using the - // matching node - // - // If the value corresponding to the ID key is a function and not a - // list, it's treated as though it was the value of "found". - // - // dojo/behavior.add() can be called any number of times before - // the DOM is ready. `dojo/behavior.apply()` is called automatically - // by `dojo.addOnLoad`, though can be called to re-apply previously added - // behaviors anytime the DOM changes. - // - // There are a variety of formats permitted in the behaviorObject - // - // example: - // Simple list of properties. "found" is special. "Found" is assumed if - // no property object for a given selector, and property is a function. - // - // | behavior.add({ - // | "#id": { - // | "found": function(element){ - // | // node match found - // | }, - // | "onclick": function(evt){ - // | // register onclick handler for found node - // | } - // | }, - // | "#otherid": function(element){ - // | // assumes "found" with this syntax - // | } - // | }); - // - // example: - // If property is a string, a dojo.publish will be issued on the channel: - // - // | behavior.add({ - // | // topic.publish() whenever class="noclick" found on anchors - // | "a.noclick": "/got/newAnchor", - // | "div.wrapper": { - // | "onclick": "/node/wasClicked" - // | } - // | }); - // | topic.subscribe("/got/newAnchor", function(node){ - // | // handle node finding when dojo/behavior.apply() is called, - // | // provided a newly matched node is found. - // | }); - // - // example: - // Scoping can be accomplished by passing an object as a property to - // a connection handle (on*): - // - // | behavior.add({ - // | "#id": { - // | // like calling dojo.hitch(foo,"bar"). execute foo.bar() in scope of foo - // | "onmouseenter": { targetObj: foo, targetFunc: "bar" }, - // | "onmouseleave": { targetObj: foo, targetFunc: "baz" } - // | } - // | }); - // - // example: - // Behaviors match on CSS3 Selectors, powered by dojo/query. Example selectors: - // - // | behavior.add({ - // | // match all direct descendants - // | "#id4 > *": function(element){ - // | // ... - // | }, - // | - // | // match the first child node that's an element - // | "#id4 > :first-child": { ... }, - // | - // | // match the last child node that's an element - // | "#id4 > :last-child": { ... }, - // | - // | // all elements of type tagname - // | "tagname": { - // | // ... - // | }, - // | - // | "tagname1 tagname2 tagname3": { - // | // ... - // | }, - // | - // | ".classname": { - // | // ... - // | }, - // | - // | "tagname.classname": { - // | // ... - // | } - // | }); - // - - forIn(behaviorObj, this, function(behavior, name){ - var tBehavior = arrIn(this._behaviors, name); - if(typeof tBehavior["id"] != "number"){ - tBehavior.id = _inc++; - } - var cversion = []; - tBehavior.push(cversion); - if((lang.isString(behavior))||(lang.isFunction(behavior))){ - behavior = { found: behavior }; - } - forIn(behavior, function(rule, ruleName){ - arrIn(cversion, ruleName).push(rule); - }); - }); - }; - - var _applyToNode = function(node, action, ruleSetName){ - if(lang.isString(action)){ - if(ruleSetName == "found"){ - connect.publish(action, [ node ]); - }else{ - connect.connect(node, ruleSetName, function(){ - connect.publish(action, arguments); - }); - } - }else if(lang.isFunction(action)){ - if(ruleSetName == "found"){ - action(node); - }else{ - connect.connect(node, ruleSetName, action); - } - } - }; - - this.apply = function(){ - // summary: - // Applies all currently registered behaviors to the document. - // - // description: - // Applies all currently registered behaviors to the document, - // taking care to ensure that only incremental updates are made - // since the last time add() or apply() were called. - // - // If new matching nodes have been added, all rules in a behavior will be - // applied to that node. For previously matched nodes, only - // behaviors which have been added since the last call to apply() - // will be added to the nodes. - // - // apply() is called once automatically by `dojo.addOnLoad`, so - // registering behaviors with `dojo/behavior.add()` before the DOM is - // ready is acceptable, provided the dojo.behavior module is ready. - // - // Calling appy() manually after manipulating the DOM is required - // to rescan the DOM and apply newly .add()ed behaviors, or to match - // nodes that match existing behaviors when those nodes are added to - // the DOM. - // - forIn(this._behaviors, function(tBehavior, id){ - query(id).forEach( - function(elem){ - var runFrom = 0; - var bid = "_dj_behavior_"+tBehavior.id; - if(typeof elem[bid] == "number"){ - runFrom = elem[bid]; - if(runFrom == (tBehavior.length)){ - return; - } - } - // run through the versions, applying newer rules at each step - - for(var x=runFrom, tver; tver = tBehavior[x]; x++){ - forIn(tver, function(ruleSet, ruleSetName){ - if(lang.isArray(ruleSet)){ - darray.forEach(ruleSet, function(action){ - _applyToNode(elem, action, ruleSetName); - }); - } - }); - } - - // ensure that re-application only adds new rules to the node - elem[bid] = tBehavior.length; - } - ); - }); - }; -}; - -dojo.behavior = new Behavior(); - -ready(dojo.behavior, "apply"); // FIXME: should this use a priority? before/after parser priority? - -return dojo.behavior; -}); diff --git a/lib/dojo/cache.js.uncompressed.js b/lib/dojo/cache.js.uncompressed.js deleted file mode 100644 index 1bd2310af..000000000 --- a/lib/dojo/cache.js.uncompressed.js +++ /dev/null @@ -1,7 +0,0 @@ -define("dojo/cache", ["./_base/kernel", "./text"], function(dojo){ - // module: - // dojo/cache - - // dojo.cache is defined in dojo/text - return dojo.cache; -}); diff --git a/lib/dojo/cldr/monetary.js.uncompressed.js b/lib/dojo/cldr/monetary.js.uncompressed.js deleted file mode 100644 index 95817c22b..000000000 --- a/lib/dojo/cldr/monetary.js.uncompressed.js +++ /dev/null @@ -1,40 +0,0 @@ -define("dojo/cldr/monetary", ["../_base/kernel", "../_base/lang"], function(dojo, lang){ - -// module: -// dojo/cldr/monetary - -var monetary = { - // summary: - // TODOC -}; -lang.setObject("dojo.cldr.monetary", monetary); - -monetary.getData = function(/*String*/ code){ - // summary: - // A mapping of currency code to currency-specific formatting information. Returns a unique object with properties: places, round. - // code: - // an [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code - - // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/currencyData/fractions - - var placesData = { - ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0, - COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0, - IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3, - LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0, - MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0, - SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0, - XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0 - }; - - var roundingData = {CHF:5}; - - var places = placesData[code], round = roundingData[code]; - if(typeof places == "undefined"){ places = 2; } - if(typeof round == "undefined"){ round = 0; } - - return {places: places, round: round}; // Object -}; - -return monetary; -}); diff --git a/lib/dojo/cldr/nls/ar/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ar/buddhist.js.uncompressed.js deleted file mode 100644 index 3fc6f54b1..000000000 --- a/lib/dojo/cldr/nls/ar/buddhist.js.uncompressed.js +++ /dev/null @@ -1,201 +0,0 @@ -define( -"dojo/cldr/nls/ar/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M‏/y G", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "م", - "eraNames": [ - "التقويم البوذي" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd‏/MM", - "days-standAlone-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "ي", - "ف", - "م", - "أ", - "و", - "ن", - "ل", - "غ", - "س", - "ك", - "ب", - "د" - ], - "dayPeriods-format-wide-am": "ص", - "dateFormatItem-y": "y G", - "timeFormat-full": "h:mm:ss a zzzz", - "months-standAlone-abbr": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "dateFormatItem-Ed": "E، d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - "eraAbbr": [ - "التقويم البوذي" - ], - "dateFormatItem-yyyyMM": "MM‏/y G", - "dateFormatItem-yyyyMMMM": "MMMM، y G", - "dateFormat-long": "d MMMM، y G", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "dd‏/MM‏/y G", - "dateFormatItem-yMd": "d/‏M/‏y G", - "dateFormatItem-yMMMM": "MMMM y G", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "months-standAlone-wide": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "timeFormat-long": "h:mm:ss a z", - "months-format-abbr": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "timeFormat-short": "h:mm a", - "dateFormatItem-MMMMd": "d MMMM", - "days-format-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM، y G", - "dateFormatItem-MEd": "E، d/M", - "days-standAlone-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "days-standAlone-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormat-short": "d‏/M‏/y G", - "dateFormatItem-yMMMEd": "E، d MMM، y G", - "dateFormat-full": "EEEE، d MMMM، y G", - "dateFormatItem-Md": "d/‏M", - "dateFormatItem-yMEd": "E، d/‏M/‏y G", - "months-format-wide": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "days-format-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "eraNarrow": [ - "التقويم البوذي" - ], - "days-format-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ar/currency.js.uncompressed.js deleted file mode 100644 index f6987be29..000000000 --- a/lib/dojo/cldr/nls/ar/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/ar/currency", //begin v1.x content -{ - "HKD_displayName": "دولار هونج كونج", - "CHF_displayName": "فرنك سويسري", - "JPY_symbol": "JP¥", - "CAD_displayName": "دولار كندي", - "HKD_symbol": "HK$", - "CNY_displayName": "يوان صيني", - "USD_symbol": "US$", - "AUD_displayName": "دولار أسترالي", - "JPY_displayName": "ين ياباني", - "CAD_symbol": "CA$", - "USD_displayName": "دولار أمريكي", - "EUR_symbol": "€", - "CNY_symbol": "ي.ص", - "GBP_displayName": "جنيه إسترليني", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "يورو" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ar/gregorian.js.uncompressed.js deleted file mode 100644 index 361027a82..000000000 --- a/lib/dojo/cldr/nls/ar/gregorian.js.uncompressed.js +++ /dev/null @@ -1,280 +0,0 @@ -define( -"dojo/cldr/nls/ar/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "months-format-narrow": [ - "ي", - "ف", - "م", - "أ", - "و", - "ن", - "ل", - "غ", - "س", - "ك", - "ب", - "د" - ], - "quarters-standAlone-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "field-weekday": "اليوم", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E، d/‏M/‏yyyy", - "dateFormatItem-MMMEd": "E، d MMM", - "eraNarrow": [ - "ق.م", - "م" - ], - "days-format-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormat-long": "d MMMM، y", - "months-format-wide": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "م", - "dateFormat-full": "EEEE، d MMMM، y", - "dateFormatItem-Md": "d/‏M", - "dateFormatItem-yMd": "d‏/M‏/yyyy", - "field-era": "العصر", - "dateFormatItem-yM": "M‏/yyyy", - "months-standAlone-wide": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "timeFormat-short": "h:mm a", - "quarters-format-wide": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "timeFormat-long": "h:mm:ss a z", - "field-year": "السنة", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yyyyMMMM": "MMMM، y", - "field-hour": "الساعات", - "dateFormatItem-MMdd": "dd‏/MM", - "months-format-abbr": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "h:mm:ss a zzzz", - "field-day-relative+0": "اليوم", - "field-day-relative+1": "غدًا", - "field-day-relative+2": "بعد الغد", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "quarters-format-abbr": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "quarters-standAlone-wide": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-MMMMd": "d MMMM", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "eraAbbr": [ - "ق.م", - "م" - ], - "field-minute": "الدقائق", - "field-dayperiod": "ص/م", - "days-standAlone-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "field-day-relative+-1": "أمس", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "أول أمس", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E، d/M", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "MMMM y", - "field-day": "يوم", - "days-format-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "field-zone": "التوقيت", - "dateFormatItem-yyyyMM": "MM‏/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "ي", - "ف", - "م", - "أ", - "و", - "ن", - "ل", - "غ", - "س", - "ك", - "ب", - "د" - ], - "field-year-relative+-1": "السنة الماضية", - "field-month-relative+-1": "الشهر الماضي", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-yMMMd": "d MMM، y", - "eraNames": [ - "قبل الميلاد", - "ميلادي" - ], - "days-format-narrow": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - "field-month": "الشهر", - "days-standAlone-narrow": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "ص", - "dateFormatItem-MMMMEd": "E، d MMMM", - "dateFormat-short": "d‏/M‏/yyyy", - "field-second": "الثواني", - "dateFormatItem-yMMMEd": "E، d MMM، y", - "field-month-relative+0": "هذا الشهر", - "field-month-relative+1": "الشهر التالي", - "dateFormatItem-Ed": "E، d", - "field-week": "الأسبوع", - "dateFormat-medium": "dd‏/MM‏/yyyy", - "field-year-relative+0": "هذه السنة", - "field-week-relative+-1": "الأسبوع الماضي", - "field-year-relative+1": "السنة التالية", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "هذا الأسبوع", - "field-week-relative+1": "الأسبوع التالي" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/ar/hebrew.js.uncompressed.js deleted file mode 100644 index 15faf83af..000000000 --- a/lib/dojo/cldr/nls/ar/hebrew.js.uncompressed.js +++ /dev/null @@ -1,180 +0,0 @@ -define( -"dojo/cldr/nls/ar/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "م", - "eraNames": [ - "ص" - ], - "dateFormatItem-MMMEd": "E، d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dayPeriods-format-wide-am": "ص", - "timeFormat-full": "h:mm:ss a zzzz", - "months-standAlone-abbr": [ - "تشري", - "مرحشوان", - "كيسلو", - "طيفت", - "شباط", - "آذار الأول", - "آذار", - "نيسان", - "أيار", - "سيفان", - "تموز", - "آب", - "أيلول" - ], - "dateFormatItem-Ed": "E، d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - "eraAbbr": [ - "ص" - ], - "dateFormat-long": "d MMMM، y", - "timeFormat-medium": "h:mm:ss a", - "dateFormat-medium": "dd/MM/yyyy", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "months-standAlone-wide": [ - "تشري", - "مرحشوان", - "كيسلو", - "طيفت", - "شباط", - "آذار الأول", - "آذار", - "نيسان", - "أيار", - "سيفان", - "تموز", - "آب", - "أيلول" - ], - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "timeFormat-long": "h:mm:ss a z", - "months-format-abbr": [ - "تشري", - "مرحشوان", - "كيسلو", - "طيفت", - "شباط", - "آذار الأول", - "آذار", - "نيسان", - "أيار", - "سيفان", - "تموز", - "آب", - "أيلول" - ], - "timeFormat-short": "h:mm a", - "days-format-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-yMMMd": "d MMM، y", - "dateFormatItem-MEd": "E، d/M", - "days-standAlone-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "days-standAlone-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E، d MMM، y", - "dateFormat-full": "EEEE، d MMMM، y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E، d/M/yyyy", - "months-format-wide": [ - "تشري", - "مرحشوان", - "كيسلو", - "طيفت", - "شباط", - "آذار الأول", - "آذار", - "نيسان", - "أيار", - "سيفان", - "تموز", - "آب", - "أيلول" - ], - "days-format-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "quarters-format-wide": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "months-format-wide-leap": "آذار الثاني", - "eraNarrow": [ - "ص" - ], - "days-format-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/ar/islamic.js.uncompressed.js deleted file mode 100644 index 2cffd7da9..000000000 --- a/lib/dojo/cldr/nls/ar/islamic.js.uncompressed.js +++ /dev/null @@ -1,217 +0,0 @@ -define( -"dojo/cldr/nls/ar/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M‏/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "م", - "eraNames": [ - "هـ" - ], - "dateFormatItem-MMMEd": "E، d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "١", - "٢", - "٣", - "4", - "٥", - "٦", - "٧", - "٨", - "٩", - "١٠", - "١١", - "١٢" - ], - "dayPeriods-format-wide-am": "ص", - "dateFormatItem-y": "y", - "timeFormat-full": "h:mm:ss a zzzz", - "months-standAlone-abbr": [ - "محرم", - "صفر", - "ربيع الأول", - "ربيع الآخر", - "جمادى الأولى", - "جمادى الآخرة", - "رجب", - "شعبان", - "رمضان", - "شوال", - "ذو القعدة", - "ذو الحجة" - ], - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - "eraAbbr": [ - "هـ" - ], - "dateFormat-long": "d MMMM y", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM، y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yMd": "d/M/yyyy", - "dateFormatItem-yMMMM": "MMMM y", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "months-standAlone-wide": [ - "محرم", - "صفر", - "ربيع الأول", - "ربيع الآخر", - "جمادى الأولى", - "جمادى الآخرة", - "رجب", - "شعبان", - "رمضان", - "شوال", - "ذو القعدة", - "ذو الحجة" - ], - "dateFormatItem-MMMMEd": "E، d MMMM", - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "١", - "٢", - "٣", - "٤" - ], - "timeFormat-long": "h:mm:ss a z", - "months-format-abbr": [ - "محرم", - "صفر", - "ربيع الأول", - "ربيع الآخر", - "جمادى الأولى", - "جمادى الآخرة", - "رجب", - "شعبان", - "رمضان", - "شوال", - "ذو القعدة", - "ذو الحجة" - ], - "timeFormat-short": "h:mm a", - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "d MMMM", - "days-format-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM، y", - "dateFormatItem-MEd": "E، d/M", - "months-format-narrow": [ - "١", - "٢", - "٣", - "٤", - "٥", - "٦", - "٧", - "٨", - "٩", - "١٠", - "١١", - "١٢" - ], - "days-standAlone-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormat-short": "d‏/M‏/yyyy", - "dateFormatItem-yMMMEd": "E، d MMM y", - "dateFormat-full": "EEEE، d MMMM y", - "dateFormatItem-Md": "d/‏M", - "dateFormatItem-yMEd": "E، d/‏M/‏yyyy", - "months-format-wide": [ - "محرم", - "صفر", - "ربيع الأول", - "ربيع الآخر", - "جمادى الأولى", - "جمادى الآخرة", - "رجب", - "شعبان", - "رمضان", - "شوال", - "ذو القعدة", - "ذو الحجة" - ], - "days-format-short": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "الربع الأول", - "الربع الثاني", - "الربع الثالث", - "الربع الرابع" - ], - "eraNarrow": [ - "هـ" - ], - "days-format-wide": [ - "الأحد", - "الاثنين", - "الثلاثاء", - "الأربعاء", - "الخميس", - "الجمعة", - "السبت" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ar/number.js.uncompressed.js b/lib/dojo/cldr/nls/ar/number.js.uncompressed.js deleted file mode 100644 index b9d0b1ce4..000000000 --- a/lib/dojo/cldr/nls/ar/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ar/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###;#,##0.###-", - "currencyFormat": "¤ #,##0.00;¤ #,##0.00-", - "plusSign": "+", - "decimalFormat-long": "000 تريليون", - "decimalFormat-short": "000 ترليو" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/buddhist.js.uncompressed.js deleted file mode 100644 index 3a41ed8dc..000000000 --- a/lib/dojo/cldr/nls/buddhist.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define("dojo/cldr/nls/buddhist", { root: - -//begin v1.x content -{ - "days-standAlone-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-yQQQ": "G y QQQ", - "dateFormatItem-yMEd": "E, GGGGG yyyy-MM-dd", - "dateFormatItem-MMMEd": "E MMM d", - "eraNarrow": [ - "BE" - ], - "days-format-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day-Of-Week": "{0} {1}", - "dateFormat-long": "G y MMMM d", - "months-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, G y MMMM dd", - "dateFormatItem-Md": "M-d", - "dayPeriods-format-abbr-am": "AM", - "dateTimeFormats-appendItem-Second": "{0} ({2}: {1})", - "dateFormatItem-yMd": "GGGGG yyyy-MM-dd", - "dateFormatItem-yM": "GGGGG yyyy-MM", - "months-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "dateTimeFormat": "{1} {0}", - "timeFormat-long": "HH:mm:ss z", - "dateFormatItem-yMMM": "G y MMM", - "dateFormatItem-yQ": "GGGGG yyyy Q", - "dateTimeFormats-appendItem-Era": "{0} {1}", - "months-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "timeFormat-full": "HH:mm:ss zzzz", - "dateTimeFormats-appendItem-Week": "{0} ({2}: {1})", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "dateFormatItem-Gy": "G y", - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "BE" - ], - "days-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-h": "h a", - "dayPeriods-format-narrow-am": "AM", - "dateFormatItem-MMMd": "MMM d", - "dateFormatItem-MEd": "E, M-d", - "days-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day": "{0} ({2}: {1})", - "dateFormatItem-y": "G y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateFormatItem-hm": "h:mm a", - "dateTimeFormats-appendItem-Year": "{0} {1}", - "dateTimeFormats-appendItem-Hour": "{0} ({2}: {1})", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-yMMMd": "G y MMM d", - "eraNames": [ - "BE" - ], - "days-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "days-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormats-appendItem-Quarter": "{0} ({2}: {1})", - "dayPeriods-format-wide-am": "AM", - "dateTimeFormats-appendItem-Month": "{0} ({2}: {1})", - "dateTimeFormats-appendItem-Minute": "{0} ({2}: {1})", - "dateFormat-short": "GGGGG yyyy-MM-dd", - "dateFormatItem-yMMMEd": "E, G y MMM d", - "dateFormatItem-Ed": "d E", - "dateTimeFormats-appendItem-Timezone": "{0} {1}", - "dateFormat-medium": "G y MMM d", - "dayPeriods-format-narrow-pm": "PM", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a" -} -//end v1.x content -, - "ar": true, - "ca": true, - "cs": true, - "da": true, - "de": true, - "el": true, - "en": true, - "en-gb": true, - "es": true, - "fi": true, - "fr": true, - "hu": true, - "it": true, - "ja": true, - "ko": true, - "nb": true, - "nl": true, - "pl": true, - "pt": true, - "pt-pt": true, - "ro": true, - "ru": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ca/buddhist.js.uncompressed.js deleted file mode 100644 index cba725d28..000000000 --- a/lib/dojo/cldr/nls/ca/buddhist.js.uncompressed.js +++ /dev/null @@ -1,231 +0,0 @@ -define( -"dojo/cldr/nls/ca/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM/yyyy GGGGG", - "dateFormatItem-yQ": "Q yyyy GGGGG", - "dayPeriods-format-wide-pm": "p.m.", - "eraNames": [ - "eB" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "days-standAlone-wide": [ - "Diumenge", - "Dilluns", - "Dimarts", - "Dimecres", - "Dijous", - "Divendres", - "Dissabte" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "g", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "dayPeriods-format-wide-am": "a.m.", - "quarters-standAlone-abbr": [ - "1T", - "2T", - "3T", - "4T" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "H.mm.ss zzzz", - "months-standAlone-abbr": [ - "gen.", - "febr.", - "març", - "abr.", - "maig", - "juny", - "jul.", - "ag.", - "set.", - "oct.", - "nov.", - "des." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "eraAbbr": [ - "eB" - ], - "dateFormat-long": "d MMMM y G", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p.m.", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "1r trimestre", - "2n trimestre", - "3r trimestre", - "4t trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a.m.", - "months-standAlone-wide": [ - "gener", - "febrer", - "març", - "abril", - "maig", - "juny", - "juliol", - "agost", - "setembre", - "octubre", - "novembre", - "desembre" - ], - "dateFormatItem-MMMd": "d MMM", - "timeFormat-long": "H.mm.ss z", - "months-format-abbr": [ - "de gen.", - "de febr.", - "de març", - "d’abr.", - "de maig", - "de juny", - "de jul.", - "d’ag.", - "de set.", - "d’oct.", - "de nov.", - "de des." - ], - "timeFormat-short": "H.mm", - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "1T", - "2T", - "3T", - "4T" - ], - "days-format-abbr": [ - "dg.", - "dl.", - "dt.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "months-format-narrow": [ - "G", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "dg.", - "dl.", - "dm.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "dateFormat-short": "dd/MM/yyyy GGGGG", - "dateFormatItem-yMMMEd": "E, d MMM y G", - "dateFormat-full": "EEEE, dd MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy GGGGG", - "months-format-wide": [ - "de gener", - "de febrer", - "de març", - "d’abril", - "de maig", - "de juny", - "de juliol", - "d’agost", - "de setembre", - "d’octubre", - "de novembre", - "de desembre" - ], - "days-format-short": [ - "dg.", - "dl.", - "dt.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1r trimestre", - "2n trimestre", - "3r trimestre", - "4t trimestre" - ], - "eraNarrow": [ - "eB" - ], - "days-format-wide": [ - "diumenge", - "dilluns", - "dimarts", - "dimecres", - "dijous", - "divendres", - "dissabte" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ca/currency.js.uncompressed.js deleted file mode 100644 index 35ee37257..000000000 --- a/lib/dojo/cldr/nls/ca/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/ca/currency", //begin v1.x content -{ - "HKD_displayName": "dòlar de Hong Kong", - "CHF_displayName": "franc suís", - "JPY_symbol": "JP¥", - "CAD_displayName": "dòlar canadenc", - "HKD_symbol": "HK$", - "CNY_displayName": "iuan renmimbi xinès", - "USD_symbol": "US$", - "AUD_displayName": "dòlar australià", - "JPY_displayName": "ien japonès", - "CAD_symbol": "CA$", - "USD_displayName": "dòlar dels Estats Units", - "EUR_symbol": "€", - "CNY_symbol": "¥", - "GBP_displayName": "lliura esterlina britànica", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ca/gregorian.js.uncompressed.js deleted file mode 100644 index 868afb04f..000000000 --- a/lib/dojo/cldr/nls/ca/gregorian.js.uncompressed.js +++ /dev/null @@ -1,281 +0,0 @@ -define( -"dojo/cldr/nls/ca/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "dg.", - "dl.", - "dm.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "months-format-narrow": [ - "G", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "dia de la setmana", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, d.M.y", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "aC", - "dC" - ], - "days-format-short": [ - "dg.", - "dl.", - "dt.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "dateFormat-long": "d MMMM 'de' y", - "months-format-wide": [ - "de gener", - "de febrer", - "de març", - "d’abril", - "de maig", - "de juny", - "de juliol", - "d’agost", - "de setembre", - "d’octubre", - "de novembre", - "de desembre" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "p.m.", - "dateFormat-full": "EEEE d MMMM 'de' y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d/M/yyyy", - "field-era": "era", - "dateFormatItem-yM": "M/yyyy", - "months-standAlone-wide": [ - "gener", - "febrer", - "març", - "abril", - "maig", - "juny", - "juliol", - "agost", - "setembre", - "octubre", - "novembre", - "desembre" - ], - "timeFormat-short": "H.mm", - "quarters-format-wide": [ - "1r trimestre", - "2n trimestre", - "3r trimestre", - "4t trimestre" - ], - "timeFormat-long": "H.mm.ss z", - "field-year": "any", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "Q yyyy", - "field-hour": "hora", - "months-format-abbr": [ - "de gen.", - "de febr.", - "de març", - "d’abr.", - "de maig", - "de juny", - "de jul.", - "d’ag.", - "de set.", - "d’oct.", - "de nov.", - "de des." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "H.mm.ss zzzz", - "field-day-relative+0": "avui", - "field-day-relative+1": "demà", - "field-day-relative+2": "demà passat", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "gen.", - "febr.", - "març", - "abr.", - "maig", - "juny", - "jul.", - "ag.", - "set.", - "oct.", - "nov.", - "des." - ], - "quarters-format-abbr": [ - "1T", - "2T", - "3T", - "4T" - ], - "quarters-standAlone-wide": [ - "1r trimestre", - "2n trimestre", - "3r trimestre", - "4t trimestre" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Diumenge", - "Dilluns", - "Dimarts", - "Dimecres", - "Dijous", - "Divendres", - "Dissabte" - ], - "dateFormatItem-MMMMd": "d MMMM", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "H.mm", - "quarters-standAlone-abbr": [ - "1T", - "2T", - "3T", - "4T" - ], - "eraAbbr": [ - "aC", - "dC" - ], - "field-minute": "minut", - "field-dayperiod": "a.m./p.m.", - "days-standAlone-abbr": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm.ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "ahir", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "a.m.", - "field-day-relative+-2": "abans d'ahir", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E d/M", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "LLLL 'de' y", - "field-day": "dia", - "days-format-wide": [ - "diumenge", - "dilluns", - "dimarts", - "dimecres", - "dijous", - "divendres", - "dissabte" - ], - "field-zone": "zona", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "g", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "field-year-relative+-1": "Últim any", - "field-month-relative+-1": "Últim mes", - "dateFormatItem-hm": "h.mm a", - "days-format-abbr": [ - "dg.", - "dl.", - "dt.", - "dc.", - "dj.", - "dv.", - "ds." - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "abans de Crist", - "després de Crist" - ], - "days-format-narrow": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "days-standAlone-narrow": [ - "dg", - "dl", - "dt", - "dc", - "dj", - "dv", - "ds" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "mes", - "dayPeriods-format-wide-am": "a.m.", - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormat-short": "dd/MM/yy", - "field-second": "segon", - "dateFormatItem-yMMMEd": "E, d MMM, y", - "field-month-relative+0": "Aquest mes", - "field-month-relative+1": "Mes següent", - "dateFormatItem-Ed": "E d", - "field-week": "setmana", - "dateFormat-medium": "dd/MM/yyyy", - "field-year-relative+0": "Aquest any", - "field-week-relative+-1": "Última setmana", - "field-year-relative+1": "Any següent", - "dateFormatItem-mmss": "mm:ss", - "dayPeriods-format-narrow-pm": "p.m.", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H.mm.ss", - "dateFormatItem-hms": "h.mm.ss a", - "field-week-relative+0": "Aquesta setmana", - "field-week-relative+1": "Setmana següent" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ca/number.js.uncompressed.js b/lib/dojo/cldr/nls/ca/number.js.uncompressed.js deleted file mode 100644 index 6b9332dd2..000000000 --- a/lib/dojo/cldr/nls/ca/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ca/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000 bilions", - "decimalFormat-short": "000 B" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/cs/buddhist.js.uncompressed.js deleted file mode 100644 index d6f32e3ab..000000000 --- a/lib/dojo/cldr/nls/cs/buddhist.js.uncompressed.js +++ /dev/null @@ -1,186 +0,0 @@ -define( -"dojo/cldr/nls/cs/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "LLLL y GGGGG", - "dateFormatItem-yQ": "Q., y GGGGG", - "dateFormatItem-MMMEd": "E, d. M.", - "dateFormatItem-yQQQ": "QQQ, y G", - "days-standAlone-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ], - "months-standAlone-narrow": [ - "l", - "ú", - "b", - "d", - "k", - "č", - "č", - "s", - "z", - "ř", - "l", - "p" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "H:mm:ss zzzz", - "months-standAlone-abbr": [ - "led", - "úno", - "bře", - "dub", - "kvě", - "čvn", - "čvc", - "srp", - "zář", - "říj", - "lis", - "pro" - ], - "dateFormatItem-Ed": "E, d.", - "dateFormatItem-yMMM": "LLLL y G", - "days-standAlone-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "dateFormat-long": "d. MMMM y G", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "d. M. y G", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-yMd": "d. M. y", - "quarters-standAlone-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "months-standAlone-wide": [ - "leden", - "únor", - "březen", - "duben", - "květen", - "červen", - "červenec", - "srpen", - "září", - "říjen", - "listopad", - "prosinec" - ], - "dateFormatItem-MMMd": "d. M.", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "led", - "úno", - "bře", - "dub", - "kvě", - "čvn", - "čvc", - "srp", - "zář", - "říj", - "lis", - "pro" - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H", - "days-format-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "days-format-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "dateFormatItem-yMMMd": "d. M. y", - "dateFormatItem-MEd": "E, d. M.", - "days-standAlone-short": [ - "Ne", - "Po", - "Út", - "St", - "Čt", - "Pá", - "So" - ], - "days-standAlone-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormat-short": "dd.MM.yy GGGGG", - "dateFormatItem-yMMMEd": "E, d. M. y G", - "dateFormat-full": "EEEE, d. MMMM y G", - "dateFormatItem-Md": "d. M.", - "dateFormatItem-yMEd": "E, d. M. y GGGGG", - "months-format-wide": [ - "ledna", - "února", - "března", - "dubna", - "května", - "června", - "července", - "srpna", - "září", - "října", - "listopadu", - "prosince" - ], - "days-format-short": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormatItem-d": "d.", - "quarters-format-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "days-format-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/currency.js.uncompressed.js b/lib/dojo/cldr/nls/cs/currency.js.uncompressed.js deleted file mode 100644 index e6b3837e1..000000000 --- a/lib/dojo/cldr/nls/cs/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/cs/currency", //begin v1.x content -{ - "HKD_displayName": "hongkongský dolar", - "CHF_displayName": "švýcarský frank", - "JPY_symbol": "JP¥", - "CAD_displayName": "kanadský dolar", - "HKD_symbol": "HK$", - "CNY_displayName": "čínský jüan", - "USD_symbol": "US$", - "AUD_displayName": "australský dolar", - "JPY_displayName": "japonský jen", - "CAD_symbol": "CA$", - "USD_displayName": "americký dolar", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "britská libra", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/cs/gregorian.js.uncompressed.js deleted file mode 100644 index 50bca319d..000000000 --- a/lib/dojo/cldr/nls/cs/gregorian.js.uncompressed.js +++ /dev/null @@ -1,279 +0,0 @@ -define( -"dojo/cldr/nls/cs/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "Ne", - "Po", - "Út", - "St", - "Čt", - "Pá", - "So" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Den v týdnu", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, d. M. y", - "dateFormatItem-MMMEd": "E, d. M.", - "eraNarrow": [ - "př.n.l.", - "n. l." - ], - "days-format-short": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormat-long": "d. MMMM y", - "months-format-wide": [ - "ledna", - "února", - "března", - "dubna", - "května", - "června", - "července", - "srpna", - "září", - "října", - "listopadu", - "prosince" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, d. MMMM y", - "dateFormatItem-Md": "d. M.", - "dateFormatItem-yMd": "d. M. y", - "field-era": "Letopočet", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "leden", - "únor", - "březen", - "duben", - "květen", - "červen", - "červenec", - "srpen", - "září", - "říjen", - "listopad", - "prosinec" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "timeFormat-long": "H:mm:ss z", - "field-year": "Rok", - "dateFormatItem-yMMM": "LLLL y", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "Hodina", - "months-format-abbr": [ - "led", - "úno", - "bře", - "dub", - "kvě", - "čvn", - "čvc", - "srp", - "zář", - "říj", - "lis", - "pro" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "H:mm:ss zzzz", - "field-day-relative+0": "Dnes", - "field-day-relative+1": "Zítra", - "field-day-relative+2": "Pozítří", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "led", - "úno", - "bře", - "dub", - "kvě", - "čvn", - "čvc", - "srp", - "zář", - "říj", - "lis", - "pro" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ], - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "př. n. l.", - "n. l." - ], - "field-minute": "Minuta", - "field-dayperiod": "AM/PM", - "days-standAlone-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormatItem-d": "d.", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Včera", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "AM", - "field-day-relative+-2": "Předevčírem", - "dateFormatItem-MMMd": "d. M.", - "dateFormatItem-MEd": "E, d. M.", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Den", - "days-format-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ], - "field-zone": "Časové pásmo", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "l", - "ú", - "b", - "d", - "k", - "č", - "č", - "s", - "z", - "ř", - "l", - "p" - ], - "field-year-relative+-1": "Minulý rok", - "field-month-relative+-1": "Minulý měsíc", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormatItem-yMMMd": "d. M. y", - "eraNames": [ - "př. n. l.", - "n. l." - ], - "days-format-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "days-standAlone-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Měsíc", - "dayPeriods-format-wide-am": "AM", - "dateFormat-short": "dd.MM.yy", - "field-second": "Sekunda", - "dateFormatItem-yMMMEd": "E, d. M. y", - "field-month-relative+0": "Tento měsíc", - "field-month-relative+1": "Příští měsíc", - "dateFormatItem-Ed": "E, d.", - "field-week": "Týden", - "dateFormat-medium": "d. M. yyyy", - "field-year-relative+0": "Tento rok", - "field-week-relative+-1": "Minulý týden", - "dateFormatItem-yyyyM": "M/yyyy", - "field-year-relative+1": "Příští rok", - "dayPeriods-format-narrow-pm": "PM", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "Tento týden", - "field-week-relative+1": "Příští týden" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/cs/islamic.js.uncompressed.js deleted file mode 100644 index ca9c69294..000000000 --- a/lib/dojo/cldr/nls/cs/islamic.js.uncompressed.js +++ /dev/null @@ -1,115 +0,0 @@ -define( -"dojo/cldr/nls/cs/islamic", //begin v1.x content -{ - "quarters-standAlone-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "dateFormatItem-yMd": "d. M. y", - "dateFormat-medium": "d. MMM. y G", - "dateFormatItem-MMMEd": "E, d. MMM.", - "dateFormatItem-MEd": "E, d. M.", - "dateFormatItem-yMEd": "E, d. M. y", - "dateFormatItem-Hm": "H:mm", - "dateFormatItem-H": "H", - "dateFormatItem-yMMMd": "d. M. y", - "timeFormat-full": "H:mm:ss zzzz", - "days-format-short": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormatItem-Md": "d. M.", - "days-standAlone-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-short": [ - "Ne", - "Po", - "Út", - "St", - "Čt", - "Pá", - "So" - ], - "timeFormat-medium": "H:mm:ss", - "dateFormat-long": "d. MMMM y", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormat-short": "dd.MM.yy. G", - "dateFormatItem-yMMMEd": "E, d. MMM y", - "days-standAlone-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ], - "dateFormatItem-d": "d.", - "days-format-narrow": [ - "N", - "P", - "Ú", - "S", - "Č", - "P", - "S" - ], - "dateFormatItem-yM": "MM/y", - "timeFormat-short": "H:mm", - "days-standAlone-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "timeFormat-long": "H:mm:ss z", - "days-format-wide": [ - "neděle", - "pondělí", - "úterý", - "středa", - "čtvrtek", - "pátek", - "sobota" - ], - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yMMM": "LLL y", - "quarters-format-wide": [ - "1. čtvrtletí", - "2. čtvrtletí", - "3. čtvrtletí", - "4. čtvrtletí" - ], - "dateFormat-full": "EEEE, d. MMMM y G", - "dateFormatItem-MMMd": "d. MMM.", - "days-format-abbr": [ - "ne", - "po", - "út", - "st", - "čt", - "pá", - "so" - ], - "dateFormatItem-Ed": "E, d." -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/cs/number.js.uncompressed.js b/lib/dojo/cldr/nls/cs/number.js.uncompressed.js deleted file mode 100644 index f3eccb860..000000000 --- a/lib/dojo/cldr/nls/cs/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/cs/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 bilionů", - "decimalFormat-short": "000 bil'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/currency.js.uncompressed.js b/lib/dojo/cldr/nls/currency.js.uncompressed.js deleted file mode 100644 index c3c0ef5f8..000000000 --- a/lib/dojo/cldr/nls/currency.js.uncompressed.js +++ /dev/null @@ -1,50 +0,0 @@ -define("dojo/cldr/nls/currency", { root: - -//begin v1.x content -{ - "USD_symbol": "US$", - "CAD_symbol": "CA$", - "GBP_symbol": "£", - "HKD_symbol": "HK$", - "JPY_symbol": "JP¥", - "AUD_symbol": "A$", - "CNY_symbol": "CN¥", - "EUR_symbol": "€" -} -//end v1.x content -, - "ar": true, - "ca": true, - "cs": true, - "da": true, - "de": true, - "el": true, - "en": true, - "en-au": true, - "en-ca": true, - "en-gb": true, - "es": true, - "fi": true, - "fr": true, - "he": true, - "hu": true, - "it": true, - "ja": true, - "ko": true, - "nb": true, - "nl": true, - "pl": true, - "pt": true, - "pt-pt": true, - "ro": true, - "ru": true, - "sk": true, - "sl": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true, - "zh-hk": true, - "zh-tw": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/da/buddhist.js.uncompressed.js deleted file mode 100644 index 429284b42..000000000 --- a/lib/dojo/cldr/nls/da/buddhist.js.uncompressed.js +++ /dev/null @@ -1,226 +0,0 @@ -define( -"dojo/cldr/nls/da/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y G", - "dateFormatItem-yQ": "Q y G", - "dateFormatItem-MMMEd": "E d. MMM", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-MMM": "MMM", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "HH.mm.ss zzzz", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormat-long": "d. MMMM y G", - "timeFormat-medium": "HH.mm.ss", - "dateFormatItem-Hm": "HH.mm", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH.mm.ss", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yMd": "d/M/y G", - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-ms": "mm.ss", - "months-standAlone-wide": [ - "januar", - "februar", - "marts", - "april", - "maj", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "december" - ], - "dateFormatItem-MMMMEd": "E d. MMMM", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q. 'kvartal' y G", - "timeFormat-long": "HH.mm.ss z", - "months-format-abbr": [ - "jan.", - "feb.", - "mar.", - "apr.", - "maj", - "jun.", - "jul.", - "aug.", - "sep.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-H": "HH", - "timeFormat-short": "HH.mm", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-M": "M", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y G", - "dateFormatItem-MEd": "E d/M", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "dateFormatItem-hm": "h.mm a", - "days-standAlone-abbr": [ - "søn", - "man", - "tir", - "ons", - "tor", - "fre", - "lør" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E d. MMM y G", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/y G", - "months-format-wide": [ - "januar", - "februar", - "marts", - "april", - "maj", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "december" - ], - "days-format-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d.", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/currency.js.uncompressed.js b/lib/dojo/cldr/nls/da/currency.js.uncompressed.js deleted file mode 100644 index 2664e416f..000000000 --- a/lib/dojo/cldr/nls/da/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/da/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkong dollar", - "CHF_displayName": "Schweizisk franc", - "JPY_symbol": "JP¥", - "CAD_displayName": "Canadisk dollar", - "HKD_symbol": "HK$", - "CNY_displayName": "Kinesisk yuan renminbi", - "USD_symbol": "$", - "AUD_displayName": "Australsk dollar", - "JPY_displayName": "Japansk yen", - "CAD_symbol": "CA$", - "USD_displayName": "Amerikansk dollar", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "Britisk pund", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/da/gregorian.js.uncompressed.js deleted file mode 100644 index f07858b34..000000000 --- a/lib/dojo/cldr/nls/da/gregorian.js.uncompressed.js +++ /dev/null @@ -1,284 +0,0 @@ -define( -"dojo/cldr/nls/da/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "ugedag", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d/M/y", - "dateFormatItem-MMMEd": "E d. MMM", - "eraNarrow": [ - "f.Kr.", - "e.Kr." - ], - "days-format-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "dateFormat-long": "d. MMM y", - "months-format-wide": [ - "januar", - "februar", - "marts", - "april", - "maj", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "december" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE 'den' d. MMMM y", - "dateFormatItem-Md": "d/M", - "dayPeriods-format-wide-noon": "middag", - "dateFormatItem-yMd": "d/M/y", - "field-era": "æra", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "januar", - "februar", - "marts", - "april", - "maj", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "december" - ], - "timeFormat-short": "HH.mm", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "timeFormat-long": "HH.mm.ss z", - "field-year": "år", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q yyyy", - "field-hour": "time", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "jan.", - "feb.", - "mar.", - "apr.", - "maj", - "jun.", - "jul.", - "aug.", - "sep.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-yyQ": "Q. 'kvartal' yy", - "timeFormat-full": "HH.mm.ss zzzz", - "field-day-relative+0": "i dag", - "field-day-relative+1": "i morgen", - "field-day-relative+2": "i overmorgen", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-M": "M", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-yyyyMMM": "MMM y", - "dayPeriods-format-abbr-noon": "middag", - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH.mm.ss", - "dateFormatItem-Hm": "HH.mm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "eraAbbr": [ - "f.Kr.", - "e.Kr." - ], - "field-minute": "minut", - "field-dayperiod": "dagtid", - "days-standAlone-abbr": [ - "søn", - "man", - "tir", - "ons", - "tor", - "fre", - "lør" - ], - "dateFormatItem-d": "d.", - "dateFormatItem-ms": "mm.ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "i går", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "i forgårs", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-MEd": "E d/M", - "dateTimeFormat-full": "{1} {0}", - "field-day": "dag", - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "field-zone": "tidszone", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "sidste år", - "field-month-relative+-1": "sidste måned", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "h.mm a", - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-yMMMd": "d. MMM y", - "eraNames": [ - "f.Kr.", - "e.Kr." - ], - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-MMM": "MMM", - "field-month": "måned", - "dayPeriods-format-wide-am": "AM", - "dateFormatItem-MMMMEd": "E d. MMMM", - "dateFormat-short": "dd/MM/yy", - "dayPeriods-format-narrow-noon": "middag", - "field-second": "sekund", - "dateFormatItem-yMMMEd": "E d. MMM y", - "field-month-relative+0": "denne måned", - "field-month-relative+1": "næste måned", - "dateFormatItem-Ed": "E 'd'. d.", - "field-week": "uge", - "dateFormat-medium": "dd/MM/yyyy", - "field-year-relative+0": "i år", - "field-week-relative+-1": "sidste uge", - "field-year-relative+1": "næste år", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH.mm.ss", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "denne uge", - "field-week-relative+1": "næste uge" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/da/islamic.js.uncompressed.js deleted file mode 100644 index 6983c447a..000000000 --- a/lib/dojo/cldr/nls/da/islamic.js.uncompressed.js +++ /dev/null @@ -1,146 +0,0 @@ -define( -"dojo/cldr/nls/da/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/y", - "dateFormatItem-yyyyMMMEd": "E d. MMM y G", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-MMMEd": "E d. MMM", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-MMM": "MMM", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "timeFormat-full": "HH.mm.ss zzzz", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormat-long": "d. MMMM y G", - "timeFormat-medium": "HH.mm.ss", - "dateFormatItem-Hm": "HH.mm", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH.mm.ss", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yMd": "d/M/y", - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-ms": "mm.ss", - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-yyyyMMMd": "d. MMM y G", - "dateFormatItem-MMMMEd": "E d. MMMM", - "dateFormatItem-yyyyMEd": "E d/M/y G", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q. 'kvartal' y G", - "timeFormat-long": "HH.mm.ss z", - "timeFormat-short": "HH.mm", - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-M": "M", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E d/M", - "days-standAlone-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "dateFormatItem-hm": "h.mm a", - "days-standAlone-abbr": [ - "søn", - "man", - "tir", - "ons", - "tor", - "fre", - "lør" - ], - "dateFormat-short": "d/M/y G", - "dateFormatItem-yyyyM": "M/y G", - "dateFormatItem-yMMMEd": "E d. MMM y", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "E d/M/y", - "days-format-short": [ - "sø", - "ma", - "ti", - "on", - "to", - "fr", - "lø" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d.", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/da/number.js.uncompressed.js b/lib/dojo/cldr/nls/da/number.js.uncompressed.js deleted file mode 100644 index dde564ea6..000000000 --- a/lib/dojo/cldr/nls/da/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/da/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ",", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 billioner", - "decimalFormat-short": "000 bill" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/de/buddhist.js.uncompressed.js deleted file mode 100644 index 241ce7296..000000000 --- a/lib/dojo/cldr/nls/de/buddhist.js.uncompressed.js +++ /dev/null @@ -1,212 +0,0 @@ -define( -"dojo/cldr/nls/de/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M.y G", - "dateFormatItem-yyMMdd": "dd.MM.y G", - "dateFormatItem-yQ": "Q y G", - "dayPeriods-format-wide-pm": "nachm.", - "dateFormatItem-MMMEd": "E, d. MMM", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd.MM.", - "days-standAlone-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "vorm.", - "dateFormatItem-y": "y G", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Jan", - "Feb", - "Mär", - "Apr", - "Mai", - "Jun", - "Jul", - "Aug", - "Sep", - "Okt", - "Nov", - "Dez" - ], - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d. MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d.MM.", - "dateFormatItem-yyMM": "MM.y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d.M.y G", - "quarters-standAlone-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "dateFormatItem-ms": "mm:ss", - "months-standAlone-wide": [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "Jan.", - "Feb.", - "Mär.", - "Apr.", - "Mai", - "Juni", - "Juli", - "Aug.", - "Sep.", - "Okt.", - "Nov.", - "Dez." - ], - "dateFormatItem-H": "HH 'Uhr'", - "dateFormatItem-MMMMdd": "dd. MMMM", - "days-format-abbr": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "dateFormatItem-yMMMd": "d. MMM y G", - "dateFormatItem-MEd": "E, d.M.", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "days-standAlone-abbr": [ - "So", - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa" - ], - "dateFormat-short": "d.M.yyyy", - "dateFormatItem-yMMMEd": "E, d. MMM y G", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yMEd": "E, d.M.y G", - "months-format-wide": [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - "days-format-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "days-format-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/currency.js.uncompressed.js b/lib/dojo/cldr/nls/de/currency.js.uncompressed.js deleted file mode 100644 index 44dcf22c2..000000000 --- a/lib/dojo/cldr/nls/de/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/de/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkong-Dollar", - "CHF_displayName": "Schweizer Franken", - "JPY_symbol": "¥", - "CAD_displayName": "Kanadischer Dollar", - "HKD_symbol": "HK$", - "CNY_displayName": "Renminbi Yuan", - "USD_symbol": "$", - "AUD_displayName": "Australischer Dollar", - "JPY_displayName": "Japanische Yen", - "CAD_symbol": "CA$", - "USD_displayName": "US-Dollar", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "Britisches Pfund Sterling", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/de/gregorian.js.uncompressed.js deleted file mode 100644 index 7183c7e00..000000000 --- a/lib/dojo/cldr/nls/de/gregorian.js.uncompressed.js +++ /dev/null @@ -1,290 +0,0 @@ -define( -"dojo/cldr/nls/de/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Wochentag", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, d.M.y", - "dateFormatItem-MMMEd": "E, d. MMM", - "eraNarrow": [ - "v. Chr.", - "n. Chr." - ], - "dayPeriods-format-wide-earlyMorning": "morgens", - "dayPeriods-format-wide-morning": "vormittags", - "days-format-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormat-long": "d. MMMM y", - "months-format-wide": [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - "dayPeriods-format-wide-evening": "abends", - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "nachm.", - "dateFormat-full": "EEEE, d. MMMM y", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yyMMdd": "dd.MM.yy", - "dayPeriods-format-wide-noon": "Mittag", - "dateFormatItem-yMd": "d.M.y", - "field-era": "Epoche", - "dateFormatItem-yM": "M.y", - "months-standAlone-wide": [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Jahr", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q y", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "Stunde", - "dateFormatItem-MMdd": "dd.MM.", - "months-format-abbr": [ - "Jan.", - "Feb.", - "Mär.", - "Apr.", - "Mai", - "Juni", - "Juli", - "Aug.", - "Sep.", - "Okt.", - "Nov.", - "Dez." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Heute", - "field-day-relative+1": "Morgen", - "field-day-relative+2": "Übermorgen", - "dateFormatItem-H": "HH 'Uhr'", - "months-standAlone-abbr": [ - "Jan", - "Feb", - "Mär", - "Apr", - "Mai", - "Jun", - "Jul", - "Aug", - "Sep", - "Okt", - "Nov", - "Dez" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "v. Chr.", - "n. Chr." - ], - "field-minute": "Minute", - "field-dayperiod": "Tageshälfte", - "days-standAlone-abbr": [ - "So", - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa" - ], - "dayPeriods-format-wide-night": "nachts", - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Gestern", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Vorgestern", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-MEd": "E, d.M.", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Tag", - "days-format-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - "field-zone": "Zone", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Letztes Jahr", - "field-month-relative+-1": "Letzter Monat", - "dateFormatItem-yyMM": "MM.yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormatItem-yMMMd": "d. MMM y", - "eraNames": [ - "v. Chr.", - "n. Chr." - ], - "days-format-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "days-standAlone-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Monat", - "dayPeriods-format-wide-am": "vorm.", - "dateFormatItem-MMMMEd": "E, d. MMMM", - "dateFormatItem-MMMMdd": "dd. MMMM", - "dateFormat-short": "dd.MM.yy", - "dateFormatItem-MMd": "d.MM.", - "dayPeriods-format-wide-afternoon": "nachmittags", - "field-second": "Sekunde", - "dateFormatItem-yMMMEd": "E, d. MMM y", - "field-month-relative+0": "Dieser Monat", - "field-month-relative+1": "Nächster Monat", - "dateFormatItem-Ed": "E, d.", - "field-week": "Woche", - "dateFormat-medium": "dd.MM.yyyy", - "field-year-relative+0": "Dieses Jahr", - "field-week-relative+-1": "Letzte Woche", - "field-year-relative+1": "Nächstes Jahr", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "Diese Woche", - "field-week-relative+1": "Nächste Woche" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/de/islamic.js.uncompressed.js deleted file mode 100644 index cabdc546f..000000000 --- a/lib/dojo/cldr/nls/de/islamic.js.uncompressed.js +++ /dev/null @@ -1,134 +0,0 @@ -define( -"dojo/cldr/nls/de/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M.y", - "dateFormatItem-yyyyMMMEd": "E, d. MMM y G", - "dateFormatItem-yyMMdd": "dd.MM.y G", - "dateFormatItem-yQ": "Q y", - "dayPeriods-format-wide-pm": "nachm.", - "dateFormatItem-MMMEd": "E, d. MMM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd.MM.", - "days-standAlone-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "vorm.", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d. MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d.MM.", - "dateFormatItem-yyMM": "MM.y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d.M.y", - "quarters-standAlone-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyyyMd": "d.M.y G", - "dateFormatItem-yyyyMMMd": "d. MMM y G", - "dateFormatItem-yyyyMEd": "E, d.M.y G", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q y G", - "dateFormatItem-H": "HH 'Uhr'", - "days-format-abbr": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormatItem-MMMMdd": "dd. MMMM", - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "D", - "M", - "D", - "F", - "S" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E, d.M.", - "days-standAlone-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "days-standAlone-abbr": [ - "So", - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa" - ], - "dateFormat-short": "d.M.y G", - "dateFormatItem-yyyyM": "M.y G", - "dateFormatItem-yMMMEd": "E, d. MMM y", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "E, d.M.y", - "days-format-short": [ - "So.", - "Mo.", - "Di.", - "Mi.", - "Do.", - "Fr.", - "Sa." - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. Quartal", - "2. Quartal", - "3. Quartal", - "4. Quartal" - ], - "days-format-wide": [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/de/number.js.uncompressed.js b/lib/dojo/cldr/nls/de/number.js.uncompressed.js deleted file mode 100644 index 196a0cb05..000000000 --- a/lib/dojo/cldr/nls/de/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/de/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 Billionen", - "decimalFormat-short": "000 Bio" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/el/buddhist.js.uncompressed.js deleted file mode 100644 index c0ba2fbd0..000000000 --- a/lib/dojo/cldr/nls/el/buddhist.js.uncompressed.js +++ /dev/null @@ -1,212 +0,0 @@ -define( -"dojo/cldr/nls/el/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y", - "dateFormatItem-yQ": "y Q", - "dayPeriods-format-wide-pm": "μ.μ.", - "dateFormatItem-MMMEd": "E, d MMM", - "dateFormatItem-yQQQ": "y QQQ", - "days-standAlone-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "Ι", - "Φ", - "Μ", - "Α", - "Μ", - "Ι", - "Ι", - "Α", - "Σ", - "Ο", - "Ν", - "Δ" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "π.μ.", - "quarters-standAlone-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "h:mm:ss a zzzz", - "months-standAlone-abbr": [ - "Ιαν", - "Φεβ", - "Μάρ", - "Απρ", - "Μάι", - "Ιούν", - "Ιούλ", - "Αύγ", - "Σεπ", - "Οκτ", - "Νοέ", - "Δεκ" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "LLL, y G", - "days-standAlone-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "dateFormat-long": "d MMMM, y G", - "timeFormat-medium": "h:mm:ss a", - "dateFormat-medium": "d MMM, y G", - "dateFormatItem-yMd": "d/M/y", - "quarters-standAlone-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "months-standAlone-wide": [ - "Ιανουάριος", - "Φεβρουάριος", - "Μάρτιος", - "Απρίλιος", - "Μάιος", - "Ιούνιος", - "Ιούλιος", - "Αύγουστος", - "Σεπτέμβριος", - "Οκτώβριος", - "Νοέμβριος", - "Δεκέμβριος" - ], - "dateFormatItem-MMMd": "d MMM", - "timeFormat-long": "h:mm:ss a z", - "months-format-abbr": [ - "Ιαν", - "Φεβ", - "Μαρ", - "Απρ", - "Μαϊ", - "Ιουν", - "Ιουλ", - "Αυγ", - "Σεπ", - "Οκτ", - "Νοε", - "Δεκ" - ], - "timeFormat-short": "h:mm a", - "quarters-format-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "days-format-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "days-format-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "dateFormatItem-yMMMd": "d MMM, y G", - "dateFormatItem-MEd": "E, d/M", - "months-format-narrow": [ - "Ι", - "Φ", - "Μ", - "Α", - "Μ", - "Ι", - "Ι", - "Α", - "Σ", - "Ο", - "Ν", - "Δ" - ], - "days-standAlone-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "days-standAlone-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E, d MMM, y G", - "dateFormat-full": "EEEE, d MMMM, y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, d/M/y", - "months-format-wide": [ - "Ιανουαρίου", - "Φεβρουαρίου", - "Μαρτίου", - "Απριλίου", - "Μαΐου", - "Ιουνίου", - "Ιουλίου", - "Αυγούστου", - "Σεπτεμβρίου", - "Οκτωβρίου", - "Νοεμβρίου", - "Δεκεμβρίου" - ], - "days-format-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "quarters-format-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "days-format-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/currency.js.uncompressed.js b/lib/dojo/cldr/nls/el/currency.js.uncompressed.js deleted file mode 100644 index b8d0a36ed..000000000 --- a/lib/dojo/cldr/nls/el/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/el/currency", //begin v1.x content -{ - "HKD_displayName": "Δολάριο Χονγκ Κονγκ", - "CHF_displayName": "Φράγκο Ελβετίας", - "CAD_displayName": "Δολάριο Καναδά", - "CNY_displayName": "Γιουάν Ρενμίμπι Κίνας", - "USD_symbol": "$", - "AUD_displayName": "Δολάριο Αυστραλίας", - "JPY_displayName": "Γιεν Ιαπωνίας", - "USD_displayName": "Δολάριο ΗΠΑ", - "GBP_displayName": "Λίρα Στερλίνα Βρετανίας", - "EUR_displayName": "Ευρώ" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/el/gregorian.js.uncompressed.js deleted file mode 100644 index 3932fc5d9..000000000 --- a/lib/dojo/cldr/nls/el/gregorian.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define( -"dojo/cldr/nls/el/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "months-format-narrow": [ - "Ι", - "Φ", - "Μ", - "Α", - "Μ", - "Ι", - "Ι", - "Α", - "Σ", - "Ο", - "Ν", - "Δ" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Ημέρα εβδομάδας", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, d/M/yyyy", - "dateFormatItem-MMMEd": "E, d MMM", - "eraNarrow": [ - "π.Χ.", - "μ.Χ." - ], - "days-format-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "Ιανουαρίου", - "Φεβρουαρίου", - "Μαρτίου", - "Απριλίου", - "Μαΐου", - "Ιουνίου", - "Ιουλίου", - "Αυγούστου", - "Σεπτεμβρίου", - "Οκτωβρίου", - "Νοεμβρίου", - "Δεκεμβρίου" - ], - "dateTimeFormat-medium": "{1} - {0}", - "dayPeriods-format-wide-pm": "μ.μ.", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d/M/yyyy", - "field-era": "Περίοδος", - "dateFormatItem-yM": "M/yyyy", - "months-standAlone-wide": [ - "Ιανουάριος", - "Φεβρουάριος", - "Μάρτιος", - "Απρίλιος", - "Μάιος", - "Ιούνιος", - "Ιούλιος", - "Αύγουστος", - "Σεπτέμβριος", - "Οκτώβριος", - "Νοέμβριος", - "Δεκέμβριος" - ], - "timeFormat-short": "h:mm a", - "quarters-format-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "timeFormat-long": "h:mm:ss a z", - "field-year": "Έτος", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "y Q", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "Ώρα", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "Ιαν", - "Φεβ", - "Μαρ", - "Απρ", - "Μαϊ", - "Ιουν", - "Ιουλ", - "Αυγ", - "Σεπ", - "Οκτ", - "Νοε", - "Δεκ" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "h:mm:ss a zzzz", - "field-day-relative+0": "Σήμερα", - "field-day-relative+1": "Αύριο", - "field-day-relative+2": "Μεθαύριο", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "Ιαν", - "Φεβ", - "Μάρ", - "Απρ", - "Μάι", - "Ιούν", - "Ιούλ", - "Αύγ", - "Σεπ", - "Οκτ", - "Νοέ", - "Δεκ" - ], - "quarters-format-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "quarters-standAlone-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ], - "dateFormatItem-MMMMd": "d MMMM", - "dateFormatItem-yyMMM": "LLL yy", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "eraAbbr": [ - "π.Χ.", - "μ.Χ." - ], - "field-minute": "Λεπτό", - "field-dayperiod": "π.μ./μ.μ.", - "days-standAlone-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Χτες", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} - {0}", - "field-day-relative+-2": "Προχτές", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, d/M", - "dateTimeFormat-full": "{1} - {0}", - "field-day": "Ημέρα", - "days-format-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ], - "field-zone": "Ζώνη", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "Ι", - "Φ", - "Μ", - "Α", - "Μ", - "Ι", - "Ι", - "Α", - "Σ", - "Ο", - "Ν", - "Δ" - ], - "field-year-relative+-1": "Προηγούμενο έτος", - "field-month-relative+-1": "Προηγούμενος μήνας", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "π.Χ.", - "μ.Χ." - ], - "days-format-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "days-standAlone-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Μήνας", - "dateFormatItem-HHmm": "HH:mm", - "dayPeriods-format-wide-am": "π.μ.", - "dateFormatItem-MMMMEd": "E, d MMMM", - "dateFormatItem-MMMMdd": "dd MMMM", - "dateFormat-short": "d/M/yy", - "field-second": "Δευτερόλεπτο", - "dateFormatItem-yMMMEd": "E, d MMM y", - "field-month-relative+0": "Τρέχων μήνας", - "field-month-relative+1": "Επόμενος μήνας", - "dateFormatItem-Ed": "E d", - "field-week": "Εβδομάδα", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "Φέτος", - "field-week-relative+-1": "Προηγούμενη εβδομάδα", - "field-year-relative+1": "Επόμενο έτος", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1} - {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "Αυτήν την εβδομάδα", - "field-week-relative+1": "Επόμενη εβδομάδα" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/el/hebrew.js.uncompressed.js deleted file mode 100644 index 3001e5059..000000000 --- a/lib/dojo/cldr/nls/el/hebrew.js.uncompressed.js +++ /dev/null @@ -1,136 +0,0 @@ -define( -"dojo/cldr/nls/el/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dayPeriods-format-wide-pm": "μ.μ.", - "eraNames": [ - "π.μ." - ], - "dateFormatItem-MMMEd": "E, d MMM", - "dateTimeFormat-full": "{1} - {0}", - "days-standAlone-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ], - "dateTimeFormat-short": "{1} - {0}", - "dayPeriods-format-wide-am": "π.μ.", - "dateTimeFormat-medium": "{1} - {0}", - "quarters-standAlone-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "timeFormat-full": "h:mm:ss a zzzz", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "eraAbbr": [ - "π.μ." - ], - "dateFormat-long": "d MMMM y", - "timeFormat-medium": "h:mm:ss a", - "dateFormat-medium": "d MMM y", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "dateTimeFormat-long": "{1} - {0}", - "dateFormatItem-MMMd": "d MMM", - "timeFormat-long": "h:mm:ss a z", - "timeFormat-short": "h:mm a", - "quarters-format-abbr": [ - "Τ1", - "Τ2", - "Τ3", - "Τ4" - ], - "days-format-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "days-format-narrow": [ - "Κ", - "Δ", - "Τ", - "Τ", - "Π", - "Π", - "Σ" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "days-standAlone-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "days-standAlone-abbr": [ - "Κυρ", - "Δευ", - "Τρί", - "Τετ", - "Πέμ", - "Παρ", - "Σάβ" - ], - "dateFormat-short": "d/M/yy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, d/M/yyyy", - "days-format-short": [ - "Κυ", - "Δε", - "Τρ", - "Τε", - "Πε", - "Πα", - "Σα" - ], - "quarters-format-wide": [ - "1ο τρίμηνο", - "2ο τρίμηνο", - "3ο τρίμηνο", - "4ο τρίμηνο" - ], - "days-format-wide": [ - "Κυριακή", - "Δευτέρα", - "Τρίτη", - "Τετάρτη", - "Πέμπτη", - "Παρασκευή", - "Σάββατο" - ], - "eraNarrow": [ - "π.μ." - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/el/number.js.uncompressed.js b/lib/dojo/cldr/nls/el/number.js.uncompressed.js deleted file mode 100644 index 0a4386296..000000000 --- a/lib/dojo/cldr/nls/el/number.js.uncompressed.js +++ /dev/null @@ -1,21 +0,0 @@ -define( -"dojo/cldr/nls/el/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "e", - "percentFormat": "#,##0%", - "list": ",", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 τρισεκατομμύρια", - "decimalFormat-short": "000 τρις" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/currency.js.uncompressed.js b/lib/dojo/cldr/nls/en-au/currency.js.uncompressed.js deleted file mode 100644 index f70bd28f1..000000000 --- a/lib/dojo/cldr/nls/en-au/currency.js.uncompressed.js +++ /dev/null @@ -1,8 +0,0 @@ -define( -"dojo/cldr/nls/en-au/currency", //begin v1.x content -{ - "AUD_symbol": "$", - "USD_symbol": "US$" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/en-au/gregorian.js.uncompressed.js deleted file mode 100644 index 7ee341619..000000000 --- a/lib/dojo/cldr/nls/en-au/gregorian.js.uncompressed.js +++ /dev/null @@ -1,24 +0,0 @@ -define( -"dojo/cldr/nls/en-au/gregorian", //begin v1.x content -{ - "dateFormatItem-yMd": "d/M/y", - "dateFormat-medium": "dd/MM/yyyy", - "dateFormatItem-MMMEd": "E, d MMM", - "dateFormatItem-MMdd": "dd/MM", - "dateFormatItem-MEd": "E, d/M", - "dateFormatItem-yMEd": "E, d/M/y", - "dateFormatItem-yMMMd": "d MMM y", - "timeFormat-full": "h:mm:ss a zzzz", - "dateFormatItem-yyyyMMMM": "MMMM y", - "dateFormatItem-MMMMd": "d MMMM", - "dateFormatItem-yyyyMM": "MM/yyyy", - "timeFormat-medium": "h:mm:ss a", - "dateFormat-long": "d MMMM y", - "dateFormat-short": "d/MM/yy", - "timeFormat-short": "h:mm a", - "timeFormat-long": "h:mm:ss a z", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-MMMd": "d MMM" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-au/number.js.uncompressed.js b/lib/dojo/cldr/nls/en-au/number.js.uncompressed.js deleted file mode 100644 index bb5a8446c..000000000 --- a/lib/dojo/cldr/nls/en-au/number.js.uncompressed.js +++ /dev/null @@ -1,7 +0,0 @@ -define( -"dojo/cldr/nls/en-au/number", //begin v1.x content -{ - "currencyFormat": "¤#,##0.00" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-ca/currency.js.uncompressed.js b/lib/dojo/cldr/nls/en-ca/currency.js.uncompressed.js deleted file mode 100644 index 53cb37866..000000000 --- a/lib/dojo/cldr/nls/en-ca/currency.js.uncompressed.js +++ /dev/null @@ -1,8 +0,0 @@ -define( -"dojo/cldr/nls/en-ca/currency", //begin v1.x content -{ - "CAD_symbol": "$", - "USD_symbol": "US$" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-ca/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/en-ca/gregorian.js.uncompressed.js deleted file mode 100644 index 0b6351efa..000000000 --- a/lib/dojo/cldr/nls/en-ca/gregorian.js.uncompressed.js +++ /dev/null @@ -1,10 +0,0 @@ -define( -"dojo/cldr/nls/en-ca/gregorian", //begin v1.x content -{ - "dateFormatItem-MMMMEd": "E, MMMM d", - "dateFormatItem-MMdd": "MM/dd", - "dateFormatItem-yyMMM": "MMM yy", - "dateFormatItem-MMMMd": "MMMM d" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/en-gb/buddhist.js.uncompressed.js deleted file mode 100644 index 68096a07d..000000000 --- a/lib/dojo/cldr/nls/en-gb/buddhist.js.uncompressed.js +++ /dev/null @@ -1,119 +0,0 @@ -define( -"dojo/cldr/nls/en-gb/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y", - "dateFormatItem-yQ": "Q y", - "dayPeriods-format-wide-pm": "pm", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd/MM", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dayPeriods-format-wide-am": "am", - "dateFormatItem-y": "y", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormat-medium": "d MMM y G", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yMd": "dd/MM/yyyy", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-MMMd": "d MMM", - "months-format-abbr": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "dateFormatItem-MMMMd": "d MMMM", - "days-format-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-M": "LL", - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E, d/M", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yMMMEd": "E, d MMM y G", - "dateFormat-full": "EEEE, d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, d/M/y G", - "months-format-wide": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - "days-format-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "quarters-format-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "days-format-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/currency.js.uncompressed.js b/lib/dojo/cldr/nls/en-gb/currency.js.uncompressed.js deleted file mode 100644 index 8bf06a41b..000000000 --- a/lib/dojo/cldr/nls/en-gb/currency.js.uncompressed.js +++ /dev/null @@ -1,18 +0,0 @@ -define( -"dojo/cldr/nls/en-gb/currency", //begin v1.x content -{ - "HKD_displayName": "Hong Kong Dollar", - "CAD_displayName": "Canadian Dollar", - "HKD_symbol": "HK$", - "CNY_displayName": "Chinese Yuan", - "AUD_displayName": "Australian Dollar", - "CAD_symbol": "CA$", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "British Pound", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/en-gb/gregorian.js.uncompressed.js deleted file mode 100644 index f02047898..000000000 --- a/lib/dojo/cldr/nls/en-gb/gregorian.js.uncompressed.js +++ /dev/null @@ -1,54 +0,0 @@ -define( -"dojo/cldr/nls/en-gb/gregorian", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y", - "field-dayperiod": "am/pm", - "dayPeriods-format-wide-pm": "pm", - "dateFormatItem-yQ": "Q y", - "dateFormatItem-MMMEd": "E d MMM", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-MMdd": "dd/MM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMM": "LLL", - "dateTimeFormat-short": "{1} {0}", - "dayPeriods-format-wide-am": "am", - "dateTimeFormat-medium": "{1} {0}", - "dateFormatItem-y": "y", - "timeFormat-full": "HH:mm:ss zzzz", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-yyyyMMMM": "MMMM y", - "dateFormat-long": "d MMMM y", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Ehm": "E h:mm a", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM y", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM yy", - "dateFormatItem-yMd": "dd/MM/yyyy", - "dateFormatItem-ms": "mm:ss", - "dateTimeFormat-long": "{1} {0}", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-Ehms": "E h:mm:ss a", - "timeFormat-long": "HH:mm:ss z", - "timeFormat-short": "HH:mm", - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "d MMMM", - "dateFormatItem-M": "LL", - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E dd/MM", - "dateFormatItem-hm": "h:mm a", - "dateFormat-short": "dd/MM/yyyy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-EHms": "E HH:mm:ss", - "dateFormatItem-Md": "dd/MM", - "dateFormatItem-EHm": "E HH:mm", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "dateFormatItem-d": "d", - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/en-gb/islamic.js.uncompressed.js deleted file mode 100644 index 87e2b0849..000000000 --- a/lib/dojo/cldr/nls/en-gb/islamic.js.uncompressed.js +++ /dev/null @@ -1,79 +0,0 @@ -define( -"dojo/cldr/nls/en-gb/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y", - "dateFormatItem-yyyyMMMEd": "E, d MMM y G", - "dateFormatItem-yQ": "Q y", - "dayPeriods-format-wide-pm": "pm", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd/MM", - "dayPeriods-format-wide-am": "am", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormat-medium": "d MMM y G", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yMd": "dd/MM/yyyy", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyyyMEd": "E, d/M/y G", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MMMMd": "d MMMM", - "days-format-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-M": "LL", - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "days-format-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "quarters-format-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "days-format-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en-gb/number.js.uncompressed.js b/lib/dojo/cldr/nls/en-gb/number.js.uncompressed.js deleted file mode 100644 index bb98e61c7..000000000 --- a/lib/dojo/cldr/nls/en-gb/number.js.uncompressed.js +++ /dev/null @@ -1,8 +0,0 @@ -define( -"dojo/cldr/nls/en-gb/number", //begin v1.x content -{ - "currencyFormat": "¤#,##0.00", - "decimalFormat-short": "000T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/en/buddhist.js.uncompressed.js deleted file mode 100644 index 80c363a7c..000000000 --- a/lib/dojo/cldr/nls/en/buddhist.js.uncompressed.js +++ /dev/null @@ -1,123 +0,0 @@ -define( -"dojo/cldr/nls/en/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y GGGGG", - "dateFormatItem-yQ": "Q y G", - "dateFormatItem-MMMEd": "E, MMM d", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "dateFormatItem-y": "y G", - "timeFormat-full": "h:mm:ss a zzzz", - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "dateFormat-long": "MMMM d, y G", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "MMM d, y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yMd": "M/d/y GGGGG", - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-MMMd": "MMM d", - "timeFormat-long": "h:mm:ss a z", - "months-format-abbr": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "timeFormat-short": "h:mm a", - "days-format-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "MMM d, y G", - "dateFormatItem-MEd": "E, M/d", - "dateFormatItem-hm": "h:mm a", - "dateFormat-short": "M/d/yy GGGGG", - "dateFormatItem-yMMMEd": "E, MMM d, y G", - "dateFormat-full": "EEEE, MMMM d, y G", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "E, M/d/y GGGGG", - "months-format-wide": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - "days-format-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "days-format-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/currency.js.uncompressed.js b/lib/dojo/cldr/nls/en/currency.js.uncompressed.js deleted file mode 100644 index 26d61d0ae..000000000 --- a/lib/dojo/cldr/nls/en/currency.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define( -"dojo/cldr/nls/en/currency", //begin v1.x content -{ - "HKD_displayName": "Hong Kong Dollar", - "CHF_displayName": "Swiss Franc", - "JPY_symbol": "¥", - "CAD_displayName": "Canadian Dollar", - "CNY_displayName": "Chinese Yuan", - "USD_symbol": "$", - "AUD_displayName": "Australian Dollar", - "JPY_displayName": "Japanese Yen", - "USD_displayName": "US Dollar", - "GBP_displayName": "British Pound Sterling", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/en/gregorian.js.uncompressed.js deleted file mode 100644 index 7fe40b962..000000000 --- a/lib/dojo/cldr/nls/en/gregorian.js.uncompressed.js +++ /dev/null @@ -1,265 +0,0 @@ -define( -"dojo/cldr/nls/en/gregorian", //begin v1.x content -{ - "dateFormatItem-Ehm": "E h:mm a", - "days-standAlone-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Day of the Week", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, M/d/y", - "dateFormatItem-MMMEd": "E, MMM d", - "eraNarrow": [ - "B", - "A" - ], - "days-format-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "dateFormat-long": "MMMM d, y", - "months-format-wide": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, MMMM d, y", - "dateFormatItem-Md": "M/d", - "dayPeriods-format-wide-noon": "noon", - "dateFormatItem-yMd": "M/d/y", - "field-era": "Era", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - "timeFormat-short": "h:mm a", - "quarters-format-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "timeFormat-long": "h:mm:ss a z", - "field-year": "Year", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q y", - "field-hour": "Hour", - "months-format-abbr": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "timeFormat-full": "h:mm:ss a zzzz", - "field-day-relative+0": "Today", - "field-day-relative+1": "Tomorrow", - "months-standAlone-abbr": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "eraAbbr": [ - "BC", - "AD" - ], - "field-minute": "Minute", - "field-dayperiod": "AM/PM", - "days-standAlone-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "field-day-relative+-1": "Yesterday", - "dateTimeFormat-long": "{1} 'at' {0}", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-MMMd": "MMM d", - "dateFormatItem-MEd": "E, M/d", - "dateTimeFormat-full": "{1} 'at' {0}", - "field-day": "Day", - "days-format-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - "field-zone": "Time Zone", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Last year", - "field-month-relative+-1": "Last month", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-yMMMd": "MMM d, y", - "eraNames": [ - "Before Christ", - "Anno Domini" - ], - "days-format-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "field-month": "Month", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "AM", - "dateFormatItem-EHm": "E HH:mm", - "dateFormat-short": "M/d/yy", - "dateFormatItem-EHms": "E HH:mm:ss", - "dateFormatItem-Ehms": "E h:mm:ss a", - "dayPeriods-format-narrow-noon": "n", - "field-second": "Second", - "dateFormatItem-yMMMEd": "E, MMM d, y", - "field-month-relative+0": "This month", - "field-month-relative+1": "Next month", - "dateFormatItem-Ed": "d E", - "field-week": "Week", - "dateFormat-medium": "MMM d, y", - "field-year-relative+0": "This year", - "field-week-relative+-1": "Last week", - "field-year-relative+1": "Next year", - "dayPeriods-format-narrow-pm": "p", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "This week", - "field-week-relative+1": "Next week" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/en/islamic.js.uncompressed.js deleted file mode 100644 index 5a6bf2c6a..000000000 --- a/lib/dojo/cldr/nls/en/islamic.js.uncompressed.js +++ /dev/null @@ -1,92 +0,0 @@ -define( -"dojo/cldr/nls/en/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/y", - "dateFormatItem-yyyyMMMEd": "E, MMM d, y G", - "dateFormatItem-yQ": "Q y", - "dateFormatItem-MMMEd": "E, MMM d", - "dateTimeFormat-full": "{1} 'at' {0}", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMM": "LLL", - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-medium": "{1}, {0}", - "timeFormat-full": "h:mm:ss a zzzz", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - "dateFormat-long": "MMMM d, y G", - "timeFormat-medium": "h:mm:ss a", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "MMM d, y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yMd": "M/d/y", - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a", - "dateTimeFormat-long": "{1} 'at' {0}", - "dateFormatItem-yyyyMd": "M/d/y G", - "dateFormatItem-yyyyMMMd": "MMM d, y G", - "dateFormatItem-yyyyMEd": "E, M/d/y G", - "dateFormatItem-MMMd": "MMM d", - "timeFormat-long": "h:mm:ss a z", - "timeFormat-short": "h:mm a", - "days-format-abbr": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "MMM d, y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E, M/d", - "dateFormatItem-hm": "h:mm a", - "dateFormat-short": "M/d/yy G", - "dateFormatItem-yyyyM": "M/y G", - "dateFormatItem-yMMMEd": "E, MMM d, y", - "dateFormat-full": "EEEE, MMMM d, y G", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "E, M/d/y", - "days-format-short": [ - "Su", - "Mo", - "Tu", - "We", - "Th", - "Fr", - "Sa" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1st quarter", - "2nd quarter", - "3rd quarter", - "4th quarter" - ], - "days-format-wide": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/en/number.js.uncompressed.js b/lib/dojo/cldr/nls/en/number.js.uncompressed.js deleted file mode 100644 index 7ab7c4151..000000000 --- a/lib/dojo/cldr/nls/en/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/en/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000 trillion", - "decimalFormat-short": "000T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/es/buddhist.js.uncompressed.js deleted file mode 100644 index ef00f6b58..000000000 --- a/lib/dojo/cldr/nls/es/buddhist.js.uncompressed.js +++ /dev/null @@ -1,176 +0,0 @@ -define( -"dojo/cldr/nls/es/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y G", - "dateFormatItem-yQ": "Q y G", - "dayPeriods-format-wide-pm": "p.m.", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "E", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "a.m.", - "dateFormatItem-y": "y G", - "dateFormatItem-MMMdd": "dd-MMM", - "months-standAlone-abbr": [ - "ene", - "feb", - "mar", - "abr", - "mayo", - "jun", - "jul", - "ago", - "sep", - "oct", - "nov", - "dic" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormat-long": "d 'de' MMMM 'de' y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/MM", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "dd/MM/y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM-y G", - "dateFormatItem-yyQQQQ": "QQQQ 'de' y G", - "dateFormatItem-yMd": "d/M/y G", - "quarters-standAlone-wide": [ - "1.er trimestre", - "2.º trimestre", - "3.er trimestre", - "4.º trimestre" - ], - "dateFormatItem-yMMMM": "MMMM 'de' y G", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "ene", - "feb", - "mar", - "abr", - "may", - "jun", - "jul", - "ago", - "sep", - "oct", - "nov", - "dic" - ], - "dateFormatItem-MMMMd": "d 'de' MMMM", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mié", - "jue", - "vie", - "sáb" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E, d/M", - "days-standAlone-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-hm": "hh:mm a", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yMMMEd": "E, d MMM y G", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/y G", - "months-format-wide": [ - "enero", - "febrero", - "marzo", - "abril", - "mayo", - "junio", - "julio", - "agosto", - "septiembre", - "octubre", - "noviembre", - "diciembre" - ], - "days-format-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1er trimestre", - "2º trimestre", - "3er trimestre", - "4º trimestre" - ], - "days-format-wide": [ - "domingo", - "lunes", - "martes", - "miércoles", - "jueves", - "viernes", - "sábado" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/currency.js.uncompressed.js b/lib/dojo/cldr/nls/es/currency.js.uncompressed.js deleted file mode 100644 index 1e1f1d700..000000000 --- a/lib/dojo/cldr/nls/es/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/es/currency", //begin v1.x content -{ - "HKD_displayName": "dólar de Hong Kong", - "CHF_displayName": "franco suizo", - "CAD_displayName": "dólar canadiense", - "CNY_displayName": "yuan chino", - "AUD_displayName": "dólar australiano", - "JPY_displayName": "yen japonés", - "USD_displayName": "dólar estadounidense", - "GBP_displayName": "libra esterlina británica", - "AUD_symbol": "AU$", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/es/gregorian.js.uncompressed.js deleted file mode 100644 index c231133f8..000000000 --- a/lib/dojo/cldr/nls/es/gregorian.js.uncompressed.js +++ /dev/null @@ -1,283 +0,0 @@ -define( -"dojo/cldr/nls/es/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "months-format-narrow": [ - "E", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "field-weekday": "día de la semana", - "dateFormatItem-yyQQQQ": "QQQQ 'de' yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "EEE, d/M/y", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "a.C.", - "d.C." - ], - "dateFormatItem-MMMdd": "dd-MMM", - "days-format-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormat-long": "d 'de' MMMM 'de' y", - "months-format-wide": [ - "enero", - "febrero", - "marzo", - "abril", - "mayo", - "junio", - "julio", - "agosto", - "septiembre", - "octubre", - "noviembre", - "diciembre" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "p.m.", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d/M/y", - "field-era": "era", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "enero", - "febrero", - "marzo", - "abril", - "mayo", - "junio", - "julio", - "agosto", - "septiembre", - "octubre", - "noviembre", - "diciembre" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1er trimestre", - "2º trimestre", - "3er trimestre", - "4º trimestre" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "año", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q y", - "field-hour": "hora", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "ene", - "feb", - "mar", - "abr", - "may", - "jun", - "jul", - "ago", - "sep", - "oct", - "nov", - "dic" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "hoy", - "field-day-relative+1": "mañana", - "field-day-relative+2": "pasado mañana", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "ene", - "feb", - "mar", - "abr", - "mayo", - "jun", - "jul", - "ago", - "sep", - "oct", - "nov", - "dic" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "quarters-standAlone-wide": [ - "1.er trimestre", - "2.º trimestre", - "3.er trimestre", - "4.º trimestre" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "domingo", - "lunes", - "martes", - "miércoles", - "jueves", - "viernes", - "sábado" - ], - "dateFormatItem-MMMMd": "d 'de' MMMM", - "dateFormatItem-yyMMM": "MMM-yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "eraAbbr": [ - "a.C.", - "d.C." - ], - "field-minute": "minuto", - "field-dayperiod": "periodo del día", - "days-standAlone-abbr": [ - "dom", - "lun", - "mar", - "mié", - "jue", - "vie", - "sáb" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "field-day-relative+-1": "ayer", - "dateFormatItem-h": "hh a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "antes de ayer", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, d/M", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "MMMM 'de' y", - "field-day": "día", - "days-format-wide": [ - "domingo", - "lunes", - "martes", - "miércoles", - "jueves", - "viernes", - "sábado" - ], - "field-zone": "zona", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "E", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "el año pasado", - "field-month-relative+-1": "el mes pasado", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "hh:mm a", - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mié", - "jue", - "vie", - "sáb" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "antes de Cristo", - "anno Dómini" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "field-month": "mes", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "a.m.", - "dateFormat-short": "dd/MM/yy", - "dateFormatItem-MMd": "d/MM", - "field-second": "segundo", - "dateFormatItem-yMMMEd": "EEE, d 'de' MMMM 'de' y", - "field-month-relative+0": "este mes", - "field-month-relative+1": "el próximo mes", - "dateFormatItem-Ed": "E d", - "field-week": "semana", - "dateFormat-medium": "dd/MM/yyyy", - "field-year-relative+0": "este año", - "field-week-relative+-1": "la semana pasada", - "field-year-relative+1": "el próximo año", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "hh:mm:ss a", - "field-week-relative+0": "esta semana", - "field-week-relative+1": "la próxima semana" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/es/islamic.js.uncompressed.js deleted file mode 100644 index c44fddee4..000000000 --- a/lib/dojo/cldr/nls/es/islamic.js.uncompressed.js +++ /dev/null @@ -1,126 +0,0 @@ -define( -"dojo/cldr/nls/es/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/y", - "dateFormatItem-yyyyMMMEd": "E, d MMM y G", - "dateFormatItem-yQ": "Q y", - "dayPeriods-format-wide-pm": "p.m.", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "a.m.", - "dateFormatItem-MMMdd": "dd-MMM", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-yyyyMMMM": "MMMM 'de' y G", - "dateFormat-long": "d 'de' MMMM 'de' y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/MM", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "dd/MM/y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM-y G", - "dateFormatItem-yyQQQQ": "QQQQ 'de' y G", - "dateFormatItem-yMd": "d/M/y", - "quarters-standAlone-wide": [ - "1.er trimestre", - "2.º trimestre", - "3.er trimestre", - "4.º trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyyyMEd": "E d/M/y G", - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "1T", - "2T", - "3T", - "4T" - ], - "dateFormatItem-yyQ": "Q y G", - "dateFormatItem-MMMMd": "d 'de' MMMM", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mié", - "jue", - "vie", - "sáb" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "days-standAlone-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-hm": "hh:mm a", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yyyyM": "M/y G", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "EEE, d/M/y", - "days-format-short": [ - "D", - "L", - "M", - "X", - "J", - "V", - "S" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1er trimestre", - "2º trimestre", - "3er trimestre", - "4º trimestre" - ], - "days-format-wide": [ - "domingo", - "lunes", - "martes", - "miércoles", - "jueves", - "viernes", - "sábado" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/es/number.js.uncompressed.js b/lib/dojo/cldr/nls/es/number.js.uncompressed.js deleted file mode 100644 index 09fee7781..000000000 --- a/lib/dojo/cldr/nls/es/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/es/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 billones", - "decimalFormat-short": "000 B" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/fi/buddhist.js.uncompressed.js deleted file mode 100644 index bb681036d..000000000 --- a/lib/dojo/cldr/nls/fi/buddhist.js.uncompressed.js +++ /dev/null @@ -1,232 +0,0 @@ -define( -"dojo/cldr/nls/fi/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "L.y G", - "dateFormatItem-yMMMMccccd": "cccc, d. MMMM y G", - "dateFormatItem-yQ": "Q/y G", - "dayPeriods-format-wide-pm": "ip.", - "dateFormatItem-MMMEd": "E d. MMM", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "days-standAlone-wide": [ - "sunnuntai", - "maanantai", - "tiistai", - "keskiviikko", - "torstai", - "perjantai", - "lauantai" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "T", - "H", - "M", - "H", - "T", - "K", - "H", - "E", - "S", - "L", - "M", - "J" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "ap.", - "quarters-standAlone-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "H.mm.ss zzzz", - "months-standAlone-abbr": [ - "tammi", - "helmi", - "maalis", - "huhti", - "touko", - "kesä", - "heinä", - "elo", - "syys", - "loka", - "marras", - "joulu" - ], - "dateFormatItem-Ed": "ccc d.", - "dateFormatItem-yMMM": "LLLL y G", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormat-long": "d. MMMM y G", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "H.mm", - "dateFormatItem-yyMM": "M.y G", - "dateFormat-medium": "d.M.y G", - "dateFormatItem-Hms": "H.mm.ss", - "dayPeriods-format-narrow-pm": "ip.", - "dateFormatItem-yyMMM": "LLLL y G", - "dateFormatItem-yMd": "d.M.y G", - "quarters-standAlone-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "dateFormatItem-ms": "mm.ss", - "dateFormatItem-yyyyQQQQ": "QQQQ y G", - "dayPeriods-format-narrow-am": "ap.", - "months-standAlone-wide": [ - "tammikuu", - "helmikuu", - "maaliskuu", - "huhtikuu", - "toukokuu", - "kesäkuu", - "heinäkuu", - "elokuu", - "syyskuu", - "lokakuu", - "marraskuu", - "joulukuu" - ], - "dateFormatItem-yyyyMEd": "E d.M.y G", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q/y G", - "timeFormat-long": "H.mm.ss z", - "months-format-abbr": [ - "tammikuuta", - "helmikuuta", - "maaliskuuta", - "huhtikuuta", - "toukokuuta", - "kesäkuuta", - "heinäkuuta", - "elokuuta", - "syyskuuta", - "lokakuuta", - "marraskuuta", - "joulukuuta" - ], - "dateFormatItem-H": "H", - "timeFormat-short": "H.mm", - "quarters-format-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "days-format-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y G", - "dateFormatItem-MEd": "E d.M.", - "months-format-narrow": [ - "T", - "H", - "M", - "H", - "T", - "K", - "H", - "E", - "S", - "L", - "M", - "J" - ], - "days-standAlone-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-hm": "h.mm a", - "days-standAlone-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dayPeriods-format-abbr-pm": "ip.", - "dateFormat-short": "d.M.y G", - "dateFormatItem-yyyyM": "M.y G", - "dateFormatItem-yMMMEd": "E d. MMM y G", - "dateFormat-full": "cccc d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yMEd": "E d.M.y G", - "months-format-wide": [ - "tammikuuta", - "helmikuuta", - "maaliskuuta", - "huhtikuuta", - "toukokuuta", - "kesäkuuta", - "heinäkuuta", - "elokuuta", - "syyskuuta", - "lokakuuta", - "marraskuuta", - "joulukuuta" - ], - "dayPeriods-format-abbr-am": "ap.", - "days-format-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "days-format-wide": [ - "sunnuntaina", - "maanantaina", - "tiistaina", - "keskiviikkona", - "torstaina", - "perjantaina", - "lauantaina" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/currency.js.uncompressed.js b/lib/dojo/cldr/nls/fi/currency.js.uncompressed.js deleted file mode 100644 index 87238332c..000000000 --- a/lib/dojo/cldr/nls/fi/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/fi/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkongin dollari", - "CHF_displayName": "Sveitsin frangi", - "JPY_symbol": "¥", - "CAD_displayName": "Kanadan dollari", - "HKD_symbol": "HKD", - "CNY_displayName": "Kiinan yuan", - "USD_symbol": "$", - "AUD_displayName": "Australian dollari", - "JPY_displayName": "Japanin jeni", - "CAD_symbol": "CAD", - "USD_displayName": "Yhdysvaltain dollari", - "EUR_symbol": "€", - "CNY_symbol": "CNY", - "GBP_displayName": "Englannin punta", - "GBP_symbol": "£", - "AUD_symbol": "AUD", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/fi/gregorian.js.uncompressed.js deleted file mode 100644 index b8798d675..000000000 --- a/lib/dojo/cldr/nls/fi/gregorian.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define( -"dojo/cldr/nls/fi/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "months-format-narrow": [ - "T", - "H", - "M", - "H", - "T", - "K", - "H", - "E", - "S", - "L", - "M", - "J" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "viikonpäivä", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d.M.yyyy", - "dateFormatItem-MMMEd": "ccc d. MMM", - "eraNarrow": [ - "eK", - "jK" - ], - "days-format-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormat-long": "d. MMMM y", - "months-format-wide": [ - "tammikuuta", - "helmikuuta", - "maaliskuuta", - "huhtikuuta", - "toukokuuta", - "kesäkuuta", - "heinäkuuta", - "elokuuta", - "syyskuuta", - "lokakuuta", - "marraskuuta", - "joulukuuta" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "ip.", - "dateFormat-full": "cccc d. MMMM y", - "dateFormatItem-yyyyMEd": "E d.M.yyyy", - "dateFormatItem-Md": "d.M.", - "dayPeriods-standAlone-wide-pm": "ip.", - "dayPeriods-format-abbr-am": "ap.", - "dateFormatItem-yMd": "d.M.yyyy", - "dateFormatItem-yM": "L.yyyy", - "field-era": "aikakausi", - "months-standAlone-wide": [ - "tammikuu", - "helmikuu", - "maaliskuu", - "huhtikuu", - "toukokuu", - "kesäkuu", - "heinäkuu", - "elokuu", - "syyskuu", - "lokakuu", - "marraskuu", - "joulukuu" - ], - "timeFormat-short": "H.mm", - "quarters-format-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "timeFormat-long": "H.mm.ss z", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "Q/yyyy", - "field-year": "vuosi", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "tunti", - "months-format-abbr": [ - "tammikuuta", - "helmikuuta", - "maaliskuuta", - "huhtikuuta", - "toukokuuta", - "kesäkuuta", - "heinäkuuta", - "elokuuta", - "syyskuuta", - "lokakuuta", - "marraskuuta", - "joulukuuta" - ], - "dateFormatItem-yyQ": "Q/yy", - "timeFormat-full": "H.mm.ss zzzz", - "field-day-relative+0": "tänään", - "field-day-relative+1": "huomenna", - "field-day-relative+2": "ylihuomenna", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "tammi", - "helmi", - "maalis", - "huhti", - "touko", - "kesä", - "heinä", - "elo", - "syys", - "loka", - "marras", - "joulu" - ], - "quarters-format-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "quarters-standAlone-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "sunnuntai", - "maanantai", - "tiistai", - "keskiviikko", - "torstai", - "perjantai", - "lauantai" - ], - "dateFormatItem-yyMMM": "LLLL yy", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "H.mm", - "quarters-standAlone-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "eraAbbr": [ - "eKr.", - "jKr." - ], - "field-minute": "minuutti", - "field-dayperiod": "vuorokaudenaika", - "days-standAlone-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm.ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "eilen", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "ap.", - "field-day-relative+-2": "toissapäivänä", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-MEd": "E d.M.", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMMccccd": "cccc d. MMMM y", - "field-day": "päivä", - "days-format-wide": [ - "sunnuntaina", - "maanantaina", - "tiistaina", - "keskiviikkona", - "torstaina", - "perjantaina", - "lauantaina" - ], - "field-zone": "aikavyöhyke", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "T", - "H", - "M", - "H", - "T", - "K", - "H", - "E", - "S", - "L", - "M", - "J" - ], - "field-year-relative+-1": "viime vuonna", - "field-month-relative+-1": "viime kuussa", - "dateFormatItem-yyMM": "M.yy", - "dateFormatItem-hm": "h.mm a", - "dayPeriods-format-abbr-pm": "ip.", - "days-format-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "eraNames": [ - "ennen Kristuksen syntymää", - "jälkeen Kristuksen syntymän" - ], - "days-format-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "days-standAlone-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "kuukausi", - "dayPeriods-format-wide-am": "ap.", - "dayPeriods-standAlone-wide-am": "ap.", - "dateFormat-short": "d.M.yyyy", - "field-second": "sekunti", - "dateFormatItem-yMMMEd": "E d. MMM y", - "field-month-relative+0": "tässä kuussa", - "field-month-relative+1": "ensi kuussa", - "dateFormatItem-Ed": "E d.", - "field-week": "viikko", - "dateFormat-medium": "d.M.yyyy", - "field-year-relative+0": "tänä vuonna", - "field-week-relative+-1": "viime viikolla", - "dateFormatItem-yyyyM": "M.yyyy", - "field-year-relative+1": "ensi vuonna", - "dayPeriods-format-narrow-pm": "ip.", - "dateFormatItem-yyyyQQQQ": "QQQQ y", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H.mm.ss", - "dateFormatItem-hms": "h.mm.ss a", - "field-week-relative+0": "tällä viikolla", - "field-week-relative+1": "ensi viikolla" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/fi/hebrew.js.uncompressed.js deleted file mode 100644 index 56a69a9a0..000000000 --- a/lib/dojo/cldr/nls/fi/hebrew.js.uncompressed.js +++ /dev/null @@ -1,229 +0,0 @@ -define( -"dojo/cldr/nls/fi/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "L.yyyy", - "dateFormatItem-yQ": "Q/yyyy", - "months-standAlone-abbr-leap": "adár II", - "dayPeriods-format-wide-pm": "ip.", - "dateFormatItem-MMMEd": "ccc d. MMM", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "sunnuntai", - "maanantai", - "tiistai", - "keskiviikko", - "torstai", - "perjantai", - "lauantai" - ], - "months-standAlone-narrow": [ - "T", - "H", - "K", - "T", - "S", - "A", - "A", - "N", - "I", - "S", - "T", - "A", - "E" - ], - "dayPeriods-format-wide-am": "ap.", - "quarters-standAlone-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "timeFormat-full": "H.mm.ss zzzz", - "months-standAlone-narrow-leap": "A", - "months-standAlone-abbr": [ - "tišrí", - "hešván", - "kislév", - "tevét", - "ševát", - "adár I", - "adár", - "nisán", - "ijjár", - "siván", - "tammúz", - "ab", - "elúl" - ], - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormat-long": "d. MMMM y", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "H.mm", - "dateFormat-medium": "d.M.yyyy", - "dateFormatItem-Hms": "H.mm.ss", - "dayPeriods-format-narrow-pm": "ip.", - "dateFormatItem-yMd": "d.M.yyyy", - "quarters-standAlone-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "dateFormatItem-ms": "mm.ss", - "dayPeriods-format-narrow-am": "ap.", - "months-standAlone-wide": [ - "tišríkuu", - "hešvánkuu", - "kislévkuu", - "tevétkuu", - "ševátkuu", - "adárkuu I", - "adárkuu", - "nisánkuu", - "ijjárkuu", - "sivánkuu", - "tammúzkuu", - "abkuu", - "elúlkuu" - ], - "dateFormatItem-MMMd": "d. MMM", - "timeFormat-long": "H.mm.ss z", - "months-format-abbr": [ - "tišríkuuta", - "hešvánkuuta", - "kislévkuuta", - "tevétkuuta", - "ševátkuuta", - "adárkuuta I", - "adárkuuta", - "nisánkuuta", - "ijjárkuuta", - "sivánkuuta", - "tammúzkuuta", - "abkuuta", - "elúlkuuta" - ], - "timeFormat-short": "H.mm", - "dateFormatItem-H": "H", - "quarters-format-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "days-format-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "days-format-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "dateFormatItem-MEd": "E d.M.", - "months-format-narrow": [ - "T", - "H", - "K", - "T", - "S", - "A", - "A", - "N", - "I", - "S", - "T", - "A", - "E" - ], - "days-standAlone-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-hm": "h.mm a", - "days-standAlone-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "months-standAlone-wide-leap": "adárkuu II", - "dayPeriods-format-abbr-pm": "ip.", - "dateFormat-short": "d.M.yyyy", - "dateFormatItem-yMMMEd": "E d. MMM y", - "dateFormat-full": "cccc d. MMMM y", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yMEd": "E d.M.yyyy", - "months-format-wide": [ - "tišríkuuta", - "hešvánkuuta", - "kislévkuuta", - "tevétkuuta", - "ševátkuuta", - "adárkuuta I", - "adárkuuta", - "nisánkuuta", - "ijjárkuuta", - "sivánkuuta", - "tammúzkuuta", - "abkuuta", - "elúlkuuta" - ], - "dayPeriods-format-abbr-am": "ap.", - "days-format-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "quarters-format-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "months-format-wide-leap": "adárkuuta II", - "days-format-wide": [ - "sunnuntaina", - "maanantaina", - "tiistaina", - "keskiviikkona", - "torstaina", - "perjantaina", - "lauantaina" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/fi/islamic.js.uncompressed.js deleted file mode 100644 index 091490b28..000000000 --- a/lib/dojo/cldr/nls/fi/islamic.js.uncompressed.js +++ /dev/null @@ -1,209 +0,0 @@ -define( -"dojo/cldr/nls/fi/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "L.yyyy", - "dateFormatItem-yyyyMMMEd": "E d. MMM y G", - "dateFormatItem-yQ": "Q/yyyy", - "dayPeriods-format-wide-pm": "ip.", - "dateFormatItem-MMMEd": "E d. MMM", - "dateFormatItem-hms": "h.mm.ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "sunnuntai", - "maanantai", - "tiistai", - "keskiviikko", - "torstai", - "perjantai", - "lauantai" - ], - "dateFormatItem-MMM": "LLL", - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "ap.", - "quarters-standAlone-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "H.mm.ss zzzz", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "džumada-l-ula", - "džumada-l-akhira", - "radžab", - "ša’ban", - "ramadan", - "šawwal", - "dhu-l-qa’da", - "dhu-l-hiddža" - ], - "dateFormatItem-Ed": "ccc d.", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-yyyyMMMMccccd": "cccc, d. MMMM y G", - "dateFormatItem-yyyyMM": "M.y G", - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormat-long": "d. MMMM y G", - "timeFormat-medium": "H.mm.ss", - "dateFormatItem-Hm": "H.mm", - "dateFormat-medium": "d.M.y G", - "dateFormatItem-Hms": "H.mm.ss", - "dayPeriods-format-narrow-pm": "ip.", - "dateFormatItem-yMd": "d.M.yyyy", - "quarters-standAlone-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "dateFormatItem-ms": "mm.ss", - "dateFormatItem-yyyyQQQQ": "QQQQ y G", - "dayPeriods-format-narrow-am": "ap.", - "months-standAlone-wide": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "džumada-l-ula", - "džumada-l-akhira", - "radžab", - "ša’ban", - "ramadan", - "šawwal", - "dhu-l-qa’da", - "dhu-l-hiddža" - ], - "dateFormatItem-yyyyMd": "d.M.y G", - "dateFormatItem-yyyyMMMd": "d. MMM y G", - "dateFormatItem-yyyyMEd": "E d.M.y G", - "dateFormatItem-MMMd": "d. MMM", - "months-format-abbr": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "džumada-l-ula", - "džumada-l-akhira", - "radžab", - "ša’ban", - "ramadan", - "šawwal", - "dhu-l-qa’da", - "dhu-l-hiddža" - ], - "timeFormat-long": "H.mm.ss z", - "dateFormatItem-H": "H", - "timeFormat-short": "H.mm", - "quarters-format-abbr": [ - "1. nelj.", - "2. nelj.", - "3. nelj.", - "4. nelj." - ], - "days-format-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "K", - "T", - "P", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E d.M.", - "days-standAlone-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-hm": "h.mm a", - "days-standAlone-abbr": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dayPeriods-format-abbr-pm": "ip.", - "dateFormat-short": "d.M.y G", - "dateFormatItem-yyyyM": "M.y G", - "dateFormatItem-yMMMEd": "E d. MMM y", - "dateFormat-full": "cccc d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yyyyQ": "Q/y G", - "dateFormatItem-yMEd": "E d.M.yyyy", - "months-format-wide": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "džumada-l-ula", - "džumada-l-akhira", - "radžab", - "ša’ban", - "ramadan", - "šawwal", - "dhu-l-qa’da", - "dhu-l-hiddža" - ], - "dayPeriods-format-abbr-am": "ap.", - "days-format-short": [ - "su", - "ma", - "ti", - "ke", - "to", - "pe", - "la" - ], - "dateFormatItem-yyyyMMM": "LLLL y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. neljännes", - "2. neljännes", - "3. neljännes", - "4. neljännes" - ], - "days-format-wide": [ - "sunnuntaina", - "maanantaina", - "tiistaina", - "keskiviikkona", - "torstaina", - "perjantaina", - "lauantaina" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fi/number.js.uncompressed.js b/lib/dojo/cldr/nls/fi/number.js.uncompressed.js deleted file mode 100644 index 431cd4bd1..000000000 --- a/lib/dojo/cldr/nls/fi/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/fi/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "epäluku", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 biljoonaa", - "decimalFormat-short": "000 bilj'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr-ch/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/fr-ch/gregorian.js.uncompressed.js deleted file mode 100644 index e5d47dd14..000000000 --- a/lib/dojo/cldr/nls/fr-ch/gregorian.js.uncompressed.js +++ /dev/null @@ -1,9 +0,0 @@ -define( -"dojo/cldr/nls/fr-ch/gregorian", //begin v1.x content -{ - "timeFormat-full": "HH.mm:ss 'h' zzzz", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormat-short": "dd.MM.yy" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr-ch/number.js.uncompressed.js b/lib/dojo/cldr/nls/fr-ch/number.js.uncompressed.js deleted file mode 100644 index 25743295d..000000000 --- a/lib/dojo/cldr/nls/fr-ch/number.js.uncompressed.js +++ /dev/null @@ -1,9 +0,0 @@ -define( -"dojo/cldr/nls/fr-ch/number", //begin v1.x content -{ - "currencyFormat": "¤ #,##0.00;¤-#,##0.00", - "group": "'", - "decimal": "." -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/fr/buddhist.js.uncompressed.js deleted file mode 100644 index afb50268d..000000000 --- a/lib/dojo/cldr/nls/fr/buddhist.js.uncompressed.js +++ /dev/null @@ -1,230 +0,0 @@ -define( -"dojo/cldr/nls/fr/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y G", - "dateFormatItem-yQ": "'T'Q y G", - "eraNames": [ - "ère bouddhiste" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y G", - "dateFormatItem-MMMdd": "dd MMM", - "months-standAlone-abbr": [ - "janv.", - "févr.", - "mars", - "avr.", - "mai", - "juin", - "juil.", - "août", - "sept.", - "oct.", - "nov.", - "déc." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "eraAbbr": [ - "ère b." - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/MM", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "d MMM, y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d/M/y G", - "quarters-standAlone-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyMMMd": "d MMM y G", - "months-standAlone-wide": [ - "janvier", - "février", - "mars", - "avril", - "mai", - "juin", - "juillet", - "août", - "septembre", - "octobre", - "novembre", - "décembre" - ], - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyMMMEd": "E d MMM y G", - "dateFormatItem-yyQ": "'T'Q y G", - "months-format-abbr": [ - "janv.", - "févr.", - "mars", - "avr.", - "mai", - "juin", - "juil.", - "août", - "sept.", - "oct.", - "nov.", - "déc." - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E d/M", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "days-standAlone-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E d MMM y G", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/y G", - "months-format-wide": [ - "janvier", - "février", - "mars", - "avril", - "mai", - "juin", - "juillet", - "août", - "septembre", - "octobre", - "novembre", - "décembre" - ], - "days-format-short": [ - "di", - "lu", - "ma", - "me", - "je", - "ve", - "sa" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "eraNarrow": "E.B.", - "days-format-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/currency.js.uncompressed.js b/lib/dojo/cldr/nls/fr/currency.js.uncompressed.js deleted file mode 100644 index 065d2286b..000000000 --- a/lib/dojo/cldr/nls/fr/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/fr/currency", //begin v1.x content -{ - "HKD_displayName": "dollar de Hong Kong", - "CHF_displayName": "franc suisse", - "JPY_symbol": "¥JP", - "CAD_displayName": "dollar canadien", - "HKD_symbol": "$HK", - "CNY_displayName": "yuan renminbi chinois", - "USD_symbol": "$US", - "AUD_displayName": "dollar australien", - "JPY_displayName": "yen japonais", - "CAD_symbol": "$CA", - "USD_displayName": "dollar des États-Unis", - "EUR_symbol": "€", - "CNY_symbol": "¥CN", - "GBP_displayName": "livre sterling", - "GBP_symbol": "£UK", - "AUD_symbol": "$AU", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/fr/gregorian.js.uncompressed.js deleted file mode 100644 index dae04173f..000000000 --- a/lib/dojo/cldr/nls/fr/gregorian.js.uncompressed.js +++ /dev/null @@ -1,294 +0,0 @@ -define( -"dojo/cldr/nls/fr/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "jour de la semaine", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yyMMMEd": "E d MMM yy", - "dateFormatItem-yMEd": "E d/M/yyyy", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "av. J.-C.", - "ap. J.-C." - ], - "dayPeriods-format-wide-morning": "matin", - "dateFormatItem-MMMdd": "dd MMM", - "days-format-short": [ - "di", - "lu", - "ma", - "me", - "je", - "ve", - "sa" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "janvier", - "février", - "mars", - "avril", - "mai", - "juin", - "juillet", - "août", - "septembre", - "octobre", - "novembre", - "décembre" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE d MMMM y", - "dateFormatItem-Md": "d/M", - "dayPeriods-format-abbr-am": "AM", - "dayPeriods-format-wide-noon": "midi", - "dateFormatItem-yMd": "d/M/yyyy", - "field-era": "ère", - "dateFormatItem-yM": "M/yyyy", - "months-standAlone-wide": [ - "janvier", - "février", - "mars", - "avril", - "mai", - "juin", - "juillet", - "août", - "septembre", - "octobre", - "novembre", - "décembre" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "année", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "'T'Q y", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "heure", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "janv.", - "févr.", - "mars", - "avr.", - "mai", - "juin", - "juil.", - "août", - "sept.", - "oct.", - "nov.", - "déc." - ], - "dateFormatItem-yyQ": "'T'Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "dayPeriods-format-narrow-morning": "matin", - "field-day-relative+0": "aujourd’hui", - "field-day-relative+1": "demain", - "field-day-relative+2": "après-demain", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "janv.", - "févr.", - "mars", - "avr.", - "mai", - "juin", - "juil.", - "août", - "sept.", - "oct.", - "nov.", - "déc." - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "quarters-standAlone-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "eraAbbr": [ - "av. J.-C.", - "ap. J.-C." - ], - "field-minute": "minute", - "field-dayperiod": "cadran", - "days-standAlone-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dayPeriods-format-wide-night": "soir", - "dateFormatItem-yyMMMd": "d MMM yy", - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "hier", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "avant-hier", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E d/M", - "dateTimeFormat-full": "{1} {0}", - "field-day": "jour", - "days-format-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "field-zone": "fuseau horaire", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "l’année dernière", - "dayPeriods-format-narrow-night": "soir", - "field-month-relative+-1": "le mois dernier", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "h:mm a", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "avant Jésus-Christ", - "après Jésus-Christ" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "mois", - "dayPeriods-format-wide-am": "AM", - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormat-short": "dd/MM/yy", - "dateFormatItem-MMd": "d/MM", - "dayPeriods-format-wide-afternoon": "après-midi", - "dayPeriods-format-narrow-noon": "midi", - "field-second": "seconde", - "dateFormatItem-yMMMEd": "E d MMM y", - "field-month-relative+0": "ce mois-ci", - "field-month-relative+1": "le mois prochain", - "dateFormatItem-Ed": "E d", - "field-week": "semaine", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "cette année", - "field-week-relative+-1": "la semaine dernière", - "field-year-relative+1": "l’année prochaine", - "dayPeriods-format-narrow-pm": "p", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "cette semaine", - "field-week-relative+1": "la semaine prochaine" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/fr/hebrew.js.uncompressed.js deleted file mode 100644 index e90a046d5..000000000 --- a/lib/dojo/cldr/nls/fr/hebrew.js.uncompressed.js +++ /dev/null @@ -1,181 +0,0 @@ -define( -"dojo/cldr/nls/fr/hebrew", //begin v1.x content -{ - "quarters-standAlone-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-yMd": "d/M/yyyy", - "dateFormat-medium": "d MMM y", - "dateFormatItem-MMMEd": "E d MMM", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-MEd": "E d/M", - "dateFormatItem-yMEd": "E d/M/yyyy", - "dateFormatItem-yMMMd": "d MMM y", - "days-format-short": [ - "di", - "lu", - "ma", - "me", - "je", - "ve", - "sa" - ], - "dateFormatItem-Md": "d/M", - "months-standAlone-wide": [ - "Tisseri", - "Hesvan", - "Kislev", - "Tébeth", - "Schébat", - "Adar I", - "Adar", - "Nissan", - "Iyar", - "Sivan", - "Tamouz", - "Ab", - "Elloul" - ], - "months-format-wide-leap": "Adar II", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "months-standAlone-abbr": [ - "Tisseri", - "Hesvan", - "Kislev", - "Tébeth", - "Schébat", - "Adar I", - "Adar", - "Nissan", - "Iyar", - "Sivan", - "Tamouz", - "Ab", - "Elloul" - ], - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-short": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormat-long": "d MMMM y", - "dateFormat-short": "dd/MM/yy", - "dateFormatItem-yMMMEd": "E d MMM y", - "months-format-wide": [ - "Tisseri", - "Hesvan", - "Kislev", - "Tébeth", - "Schébat", - "Adar I", - "Adar", - "Nissan", - "Iyar", - "Sivan", - "Tamouz", - "Ab", - "Elloul" - ], - "days-standAlone-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yM": "M/yyyy", - "dayPeriods-format-narrow-pm": "p", - "months-format-abbr": [ - "Tisseri", - "Hesvan", - "Kislev", - "Tébeth", - "Schébat", - "Adar I", - "Adar", - "Nissan", - "Iyar", - "Sivan", - "Tamouz", - "Ab", - "Elloul" - ], - "days-standAlone-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "days-format-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "dateFormatItem-yQ": "'T'Q y", - "dateFormatItem-yMMM": "MMM y", - "quarters-format-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "dateFormat-full": "EEEE d MMMM y", - "dateFormatItem-MMMd": "d MMM", - "days-format-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormatItem-Ed": "E d" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/fr/islamic.js.uncompressed.js deleted file mode 100644 index 7b13ec173..000000000 --- a/lib/dojo/cldr/nls/fr/islamic.js.uncompressed.js +++ /dev/null @@ -1,238 +0,0 @@ -define( -"dojo/cldr/nls/fr/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yyyyMMMEd": "E d MMM y G", - "dateFormatItem-yQ": "'T'Q y", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y", - "dateFormatItem-MMMdd": "dd MMM", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "mouh.", - "saf.", - "rab.aw.", - "rab.th.", - "joum.ou.", - "joum.th.", - "raj.", - "chaa.", - "ram.", - "chaw.", - "dhou.qi.", - "dhou.hi." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "eraAbbr": [ - "AH" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/MM", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "d MMM, y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyMMMd": "d MMM y G", - "months-standAlone-wide": [ - "mouharram", - "safar", - "rabia al awal", - "rabia ath-thani", - "joumada al oula", - "joumada ath-thania", - "rajab", - "chaabane", - "ramadan", - "chawwal", - "dhou al qi`da", - "dhou al-hijja" - ], - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormatItem-yyyyMEd": "E d/M/y G", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyMMMEd": "E d MMM y G", - "dateFormatItem-yyQ": "'T'Q y G", - "months-format-abbr": [ - "mouh.", - "saf.", - "rab.aw.", - "rab.th.", - "joum.oul.", - "joum.tha.", - "raj.", - "chaa.", - "ram.", - "chaw.", - "dhou.q.", - "dhou.h." - ], - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E d/M", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "dim.", - "lun.", - "mar.", - "mer.", - "jeu.", - "ven.", - "sam." - ], - "dateFormat-short": "d/M/y G", - "dateFormatItem-yyyyM": "M/y G", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/yyyy", - "dateFormatItem-yyyyQ": "'T'Q y G", - "months-format-wide": [ - "mouharram", - "safar", - "rabia al awal", - "rabia ath-thani", - "joumada al oula", - "joumada ath-thania", - "rajab", - "chaabane", - "ramadan", - "chawwal", - "dhou al qi`da", - "dhou al-hijja" - ], - "days-format-short": [ - "di", - "lu", - "ma", - "me", - "je", - "ve", - "sa" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1er trimestre", - "2e trimestre", - "3e trimestre", - "4e trimestre" - ], - "days-format-wide": [ - "dimanche", - "lundi", - "mardi", - "mercredi", - "jeudi", - "vendredi", - "samedi" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/fr/number.js.uncompressed.js b/lib/dojo/cldr/nls/fr/number.js.uncompressed.js deleted file mode 100644 index 75fde8035..000000000 --- a/lib/dojo/cldr/nls/fr/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/fr/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤;(#,##0.00 ¤)", - "plusSign": "+", - "decimalFormat-long": "000 billions", - "decimalFormat-short": "000 Bn" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/gregorian.js.uncompressed.js deleted file mode 100644 index 2e145125a..000000000 --- a/lib/dojo/cldr/nls/gregorian.js.uncompressed.js +++ /dev/null @@ -1,314 +0,0 @@ -define("dojo/cldr/nls/gregorian", { root: - -//begin v1.x content -{ - "days-standAlone-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Day of the Week", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, y-M-d", - "dateFormatItem-MMMEd": "E MMM d", - "eraNarrow": [ - "BCE", - "CE" - ], - "days-format-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day-Of-Week": "{0} {1}", - "dateFormat-long": "y MMMM d", - "months-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, y MMMM dd", - "dateFormatItem-Md": "M-d", - "dayPeriods-format-abbr-am": "AM", - "dateTimeFormats-appendItem-Second": "{0} ({2}: {1})", - "dateFormatItem-yMd": "y-M-d", - "field-era": "Era", - "dateFormatItem-yM": "y-M", - "months-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Year", - "dateFormatItem-yMMM": "y MMM", - "dateFormatItem-yQ": "y Q", - "dateTimeFormats-appendItem-Era": "{0} {1}", - "field-hour": "Hour", - "months-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "timeFormat-full": "HH:mm:ss zzzz", - "dateTimeFormats-appendItem-Week": "{0} ({2}: {1})", - "field-day-relative+0": "Today", - "field-day-relative+1": "Tomorrow", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "BCE", - "CE" - ], - "field-minute": "Minute", - "field-dayperiod": "Dayperiod", - "days-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Yesterday", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "AM", - "dateFormatItem-MMMd": "MMM d", - "dateFormatItem-MEd": "E, M-d", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Day", - "days-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "field-zone": "Zone", - "dateTimeFormats-appendItem-Day": "{0} ({2}: {1})", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateFormatItem-hm": "h:mm a", - "dateTimeFormats-appendItem-Year": "{0} {1}", - "dateTimeFormats-appendItem-Hour": "{0} ({2}: {1})", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-yMMMd": "y MMM d", - "eraNames": [ - "BCE", - "CE" - ], - "days-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "days-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Month", - "dateTimeFormats-appendItem-Quarter": "{0} ({2}: {1})", - "dayPeriods-format-wide-am": "AM", - "dateTimeFormats-appendItem-Month": "{0} ({2}: {1})", - "dateTimeFormats-appendItem-Minute": "{0} ({2}: {1})", - "dateFormat-short": "yyyy-MM-dd", - "field-second": "Second", - "dateFormatItem-yMMMEd": "E, y MMM d", - "dateFormatItem-Ed": "d E", - "dateTimeFormats-appendItem-Timezone": "{0} {1}", - "field-week": "Week", - "dateFormat-medium": "y MMM d", - "dayPeriods-format-narrow-pm": "PM", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a" -} -//end v1.x content -, - "ar": true, - "ca": true, - "cs": true, - "da": true, - "de": true, - "el": true, - "en": true, - "en-au": true, - "en-ca": true, - "en-gb": true, - "es": true, - "fi": true, - "fr": true, - "fr-ch": true, - "he": true, - "hu": true, - "it": true, - "ja": true, - "ko": true, - "nb": true, - "nl": true, - "pl": true, - "pt": true, - "pt-pt": true, - "ro": true, - "ru": true, - "sk": true, - "sl": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true, - "zh-hk": true, - "zh-tw": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/currency.js.uncompressed.js b/lib/dojo/cldr/nls/he/currency.js.uncompressed.js deleted file mode 100644 index e98bfafa5..000000000 --- a/lib/dojo/cldr/nls/he/currency.js.uncompressed.js +++ /dev/null @@ -1,15 +0,0 @@ -define( -"dojo/cldr/nls/he/currency", //begin v1.x content -{ - "HKD_displayName": "דולר הונג קונגי", - "CHF_displayName": "פרנק שוויצרי", - "CAD_displayName": "דולר קנדי", - "CNY_displayName": "יואן רנמינבי סיני", - "AUD_displayName": "דולר אוסטרלי", - "JPY_displayName": "ין יפני", - "USD_displayName": "דולר אמריקאי", - "GBP_displayName": "לירה שטרלינג", - "EUR_displayName": "אירו" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/he/gregorian.js.uncompressed.js deleted file mode 100644 index cc3ca3c99..000000000 --- a/lib/dojo/cldr/nls/he/gregorian.js.uncompressed.js +++ /dev/null @@ -1,282 +0,0 @@ -define( -"dojo/cldr/nls/he/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "ר1", - "ר2", - "ר3", - "ר4" - ], - "field-weekday": "יום בשבוע", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, d/M/y", - "dateFormatItem-MMMEd": "E, d בMMM", - "eraNarrow": [ - "לפנה״ס", - "לסה״נ" - ], - "days-format-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "dateFormat-long": "d בMMMM y", - "months-format-wide": [ - "ינואר", - "פברואר", - "מרץ", - "אפריל", - "מאי", - "יוני", - "יולי", - "אוגוסט", - "ספטמבר", - "אוקטובר", - "נובמבר", - "דצמבר" - ], - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "אחה״צ", - "dateFormat-full": "EEEE, d בMMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d.M.yyyy", - "field-era": "תקופה", - "dateFormatItem-yM": "M.yyyy", - "months-standAlone-wide": [ - "ינואר", - "פברואר", - "מרץ", - "אפריל", - "מאי", - "יוני", - "יולי", - "אוגוסט", - "ספטמבר", - "אוקטובר", - "נובמבר", - "דצמבר" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "שנה", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "yyyy Q", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "שעה", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "ינו", - "פבר", - "מרץ", - "אפר", - "מאי", - "יונ", - "יול", - "אוג", - "ספט", - "אוק", - "נוב", - "דצמ" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "היום", - "field-day-relative+1": "מחר", - "field-day-relative+2": "מחרתיים", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "ינו׳", - "פבר׳", - "מרץ", - "אפר׳", - "מאי", - "יונ׳", - "יול׳", - "אוג׳", - "ספט׳", - "אוק׳", - "נוב׳", - "דצמ׳" - ], - "quarters-format-abbr": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "quarters-standAlone-wide": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "יום ראשון", - "יום שני", - "יום שלישי", - "יום רביעי", - "יום חמישי", - "יום שישי", - "יום שבת" - ], - "dateFormatItem-MMMMd": "d בMMMM", - "dateFormatItem-yyMMM": "MMM yyyy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "eraAbbr": [ - "לפנה״ס", - "לסה״נ" - ], - "field-minute": "דקה", - "field-dayperiod": "לפה״צ/אחה״צ", - "days-standAlone-abbr": [ - "יום א׳", - "יום ב׳", - "יום ג׳", - "יום ד׳", - "יום ה׳", - "יום ו׳", - "שבת" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "אתמול", - "dateFormatItem-h": "‏h a", - "field-day-relative+-2": "שלשום", - "dateFormatItem-MMMd": "d בMMM", - "dateFormatItem-MEd": "E, d/M", - "dateFormatItem-yMMMM": "MMMM y", - "field-day": "יום", - "days-format-wide": [ - "יום ראשון", - "יום שני", - "יום שלישי", - "יום רביעי", - "יום חמישי", - "יום שישי", - "יום שבת" - ], - "field-zone": "אזור", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "field-year-relative+-1": "שנה שעברה", - "field-month-relative+-1": "חודש שעבר", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "יום א׳", - "יום ב׳", - "יום ג׳", - "יום ד׳", - "יום ה׳", - "יום ו׳", - "שבת" - ], - "dateFormatItem-yMMMd": "d בMMM y", - "eraNames": [ - "לפני הספירה", - "לספירה" - ], - "days-format-narrow": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו׳", - "ש׳" - ], - "field-month": "חודש", - "days-standAlone-narrow": [ - "א׳", - "ב׳", - "ג׳", - "ד׳", - "ה׳", - "ו", - "ש" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "לפנה״צ", - "dateFormatItem-MMMMEd": "E, d בMMMM", - "dateFormat-short": "dd/MM/yy", - "field-second": "שנייה", - "dateFormatItem-yMMMEd": "E, d בMMM y", - "field-month-relative+0": "החודש", - "field-month-relative+1": "חודש הבא", - "dateFormatItem-Ed": "E ה-d", - "field-week": "שבוע", - "dateFormat-medium": "d בMMM yyyy", - "field-year-relative+0": "השנה", - "field-week-relative+-1": "שבוע שעבר", - "field-year-relative+1": "שנה הבאה", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "השבוע", - "field-week-relative+1": "שבוע הבא" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/he/hebrew.js.uncompressed.js deleted file mode 100644 index 925c76184..000000000 --- a/lib/dojo/cldr/nls/he/hebrew.js.uncompressed.js +++ /dev/null @@ -1,202 +0,0 @@ -define( -"dojo/cldr/nls/he/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MMMM y", - "dateFormatItem-yQ": "yyyy Q", - "months-standAlone-abbr-leap": "אדר ב׳", - "dayPeriods-format-wide-pm": "אחה״צ", - "eraNames": [ - "לבה״ע" - ], - "dateFormatItem-MMMEd": "E, d בMMMM", - "dateFormatItem-MMM": "MMMM", - "months-standAlone-narrow": [ - "תש", - "חש", - "כס", - "טב", - "שב", - "אא", - "אד", - "ני", - "אי", - "סי", - "תמ", - "אב", - "אל" - ], - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "לפנה״צ", - "months-format-narrow-leap": "א2", - "dateTimeFormat-medium": "{1}, {0}", - "months-format-abbr-leap": "אדר ב׳", - "months-standAlone-narrow-leap": "א2", - "months-standAlone-abbr": [ - "תשרי", - "חשוון", - "כסלו", - "טבת", - "שבט", - "אדר א׳", - "אדר", - "ניסן", - "אייר", - "סיוון", - "תמוז", - "אב", - "אלול" - ], - "dateFormatItem-Ed": "E ה-d", - "dateFormatItem-yMMM": "MMMM y", - "days-standAlone-narrow": [ - "א׳", - "ב׳", - "ג׳", - "ד׳", - "ה׳", - "ו", - "ש" - ], - "eraAbbr": [ - "לבה״ע" - ], - "dateFormat-long": "d בMMMM y", - "dateFormat-medium": "d בMMMM y", - "dateFormatItem-yMd": "d בMMMM y", - "dateFormatItem-yMMMM": "MMMM y", - "quarters-standAlone-narrow": [ - "ר1", - "ר2", - "ר3", - "ר4" - ], - "months-standAlone-wide": [ - "תשרי", - "חשון", - "כסלו", - "טבת", - "שבט", - "אדר א׳", - "אדר", - "ניסן", - "אייר", - "סיון", - "תמוז", - "אב", - "אלול" - ], - "dateFormatItem-MMMMEd": "E, d בMMMM", - "dateFormatItem-MMMd": "d בMMMM", - "months-format-abbr": [ - "תשרי", - "חשוון", - "כסלו", - "טבת", - "שבט", - "אדר א׳", - "אדר", - "ניסן", - "אייר", - "סיון", - "תמוז", - "אב", - "אלול" - ], - "dateFormatItem-MMMMd": "d בMMMM", - "days-format-abbr": [ - "יום א׳", - "יום ב׳", - "יום ג׳", - "יום ד׳", - "יום ה׳", - "יום ו׳", - "שבת" - ], - "days-format-narrow": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו׳", - "ש׳" - ], - "dateFormatItem-M": "MMMM", - "dateFormatItem-yMMMd": "d בMMMM y", - "dateFormatItem-MEd": "E, d בMMMM", - "months-format-narrow": [ - "תש", - "חש", - "כס", - "טב", - "שב", - "אא", - "אד", - "ני", - "אי", - "סי", - "תמ", - "אב", - "אל" - ], - "days-standAlone-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "months-standAlone-wide-leap": "אדר ב׳", - "dateFormat-short": "d בMMMM y", - "dateFormatItem-yMMMEd": "E, d בMMMM y", - "dateFormat-full": "EEEE, d בMMMM y", - "dateFormatItem-Md": "d בMMMM", - "dateFormatItem-yMEd": "E, d בMMMM y", - "months-format-wide": [ - "תשרי", - "חשוון", - "כסלו", - "טבת", - "שבט", - "אדר א׳", - "אדר", - "ניסן", - "אייר", - "סיון", - "תמוז", - "אב", - "אלול" - ], - "days-format-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "months-format-wide-leap": "אדר ב׳", - "quarters-format-wide": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "eraNarrow": [ - "לבה״ע" - ], - "days-format-wide": [ - "יום ראשון", - "יום שני", - "יום שלישי", - "יום רביעי", - "יום חמישי", - "יום שישי", - "יום שבת" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/he/islamic.js.uncompressed.js deleted file mode 100644 index 35d0d832e..000000000 --- a/lib/dojo/cldr/nls/he/islamic.js.uncompressed.js +++ /dev/null @@ -1,179 +0,0 @@ -define( -"dojo/cldr/nls/he/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "אחה״צ", - "eraNames": [ - "שנת היג׳רה" - ], - "dateFormatItem-MMMEd": "E, d בMMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "לפנה״צ", - "dateTimeFormat-medium": "{1}, {0}", - "months-standAlone-abbr": [ - "מוחרם", - "צפר", - "רביע א׳", - "רביע ב׳", - "ג׳ומאדא א׳", - "ג׳ומאדא ב׳", - "רג׳ב", - "שעבאן", - "רמדאן", - "שוואל", - "ד׳ו אל-קעדה", - "ד׳ו אל-חיג׳ה" - ], - "dateFormatItem-Ed": "E ה-d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "א׳", - "ב׳", - "ג׳", - "ד׳", - "ה׳", - "ו", - "ש" - ], - "eraAbbr": [ - "שנת היג׳רה" - ], - "dateFormat-long": "d בMMMM y", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d בMMM yyyy", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yMd": "d.M.yyyy", - "quarters-standAlone-narrow": [ - "ר1", - "ר2", - "ר3", - "ר4" - ], - "months-standAlone-wide": [ - "מוחרם", - "צפר", - "רביע אל-אוול", - "רביע א-ת׳אני", - "ג׳ומאדא אל-אולא", - "ג׳ומאדא א-ת׳אניה", - "רג׳ב", - "שעבאן", - "רמדאן", - "שוואל", - "ד׳ו אל-קעדה", - "ד׳ו אל-חיג׳ה" - ], - "dateFormatItem-MMMMEd": "E, d בMMMM", - "dateFormatItem-MMMd": "d בMMM", - "months-format-abbr": [ - "מוחרם", - "צפר", - "רביע א׳", - "רביע ב׳", - "ג׳ומאדא א׳", - "ג׳ומאדא ב׳", - "רג׳ב", - "שעבאן", - "רמדאן", - "שוואל", - "ד׳ו אל-קעדה", - "ד׳ו אל-חיג׳ה" - ], - "dateFormatItem-MMMMd": "d בMMMM", - "days-format-abbr": [ - "יום א׳", - "יום ב׳", - "יום ג׳", - "יום ד׳", - "יום ה׳", - "יום ו׳", - "שבת" - ], - "days-format-narrow": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו׳", - "ש׳" - ], - "dateFormatItem-yMMMd": "d בMMM y", - "dateFormatItem-MEd": "E, d/M", - "days-standAlone-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "dateFormatItem-hm": "h:mm a", - "dateFormat-short": "dd/MM/yy", - "dateFormatItem-yMMMEd": "E, d בMMM y", - "dateFormat-full": "EEEE, d בMMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, d.M.yyyy", - "months-format-wide": [ - "מוחרם", - "צפר", - "רביע אל-אוול", - "רביע א-ת׳אני", - "ג׳ומאדא אל-אולא", - "ג׳ומאדא א-ת׳אניה", - "רג׳ב", - "שעבאן", - "רמדאן", - "שוואל", - "ד׳ו אל-קעדה", - "ד׳ו אל-חיג׳ה" - ], - "days-format-short": [ - "א'", - "ב'", - "ג'", - "ד'", - "ה'", - "ו'", - "ש'" - ], - "quarters-format-wide": [ - "רבעון 1", - "רבעון 2", - "רבעון 3", - "רבעון 4" - ], - "eraNarrow": [ - "שנת היג׳רה" - ], - "days-format-wide": [ - "יום ראשון", - "יום שני", - "יום שלישי", - "יום רביעי", - "יום חמישי", - "יום שישי", - "יום שבת" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/he/number.js.uncompressed.js b/lib/dojo/cldr/nls/he/number.js.uncompressed.js deleted file mode 100644 index 5bbc19981..000000000 --- a/lib/dojo/cldr/nls/he/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/he/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "‏000 טריליון", - "decimalFormat-short": "000T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/hebrew.js.uncompressed.js deleted file mode 100644 index 04dca25cc..000000000 --- a/lib/dojo/cldr/nls/hebrew.js.uncompressed.js +++ /dev/null @@ -1,289 +0,0 @@ -define("dojo/cldr/nls/hebrew", { root: - -//begin v1.x content -{ - "days-standAlone-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, y-M-d", - "dateFormatItem-MMMEd": "E MMM d", - "eraNarrow": [ - "AM" - ], - "days-format-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day-Of-Week": "{0} {1}", - "dateFormat-long": "y MMMM d", - "months-format-wide": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, y MMMM dd", - "dateFormatItem-Md": "M-d", - "dayPeriods-format-abbr-am": "AM", - "dateTimeFormats-appendItem-Second": "{0} ({2}: {1})", - "dateFormatItem-yMd": "y-M-d", - "dateFormatItem-yM": "y-M", - "months-standAlone-wide": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "timeFormat-long": "HH:mm:ss z", - "dateFormatItem-yMMM": "y MMM", - "dateFormatItem-yQ": "y Q", - "dateTimeFormats-appendItem-Era": "{0} {1}", - "months-format-abbr-leap": "Adar II", - "months-format-abbr": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "timeFormat-full": "HH:mm:ss zzzz", - "dateTimeFormats-appendItem-Week": "{0} ({2}: {1})", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-standAlone-wide-leap": "Adar II", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "AM" - ], - "days-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "AM", - "dateFormatItem-MMMd": "MMM d", - "dateFormatItem-MEd": "E, M-d", - "dateTimeFormat-full": "{1} {0}", - "days-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-standAlone-abbr-leap": "Adar II", - "dateTimeFormats-appendItem-Day": "{0} ({2}: {1})", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13" - ], - "dateFormatItem-hm": "h:mm a", - "dateTimeFormats-appendItem-Year": "{0} {1}", - "dateTimeFormats-appendItem-Hour": "{0} ({2}: {1})", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-yMMMd": "y MMM d", - "eraNames": [ - "AM" - ], - "days-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "days-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormats-appendItem-Quarter": "{0} ({2}: {1})", - "dayPeriods-format-wide-am": "AM", - "dateTimeFormats-appendItem-Month": "{0} ({2}: {1})", - "dateTimeFormats-appendItem-Minute": "{0} ({2}: {1})", - "dateFormat-short": "yyyy-MM-dd", - "dateFormatItem-yMMMEd": "E, y MMM d", - "dateFormatItem-Ed": "d E", - "dateTimeFormats-appendItem-Timezone": "{0} {1}", - "dateFormat-medium": "y MMM d", - "dayPeriods-format-narrow-pm": "PM", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "months-format-wide-leap": "Adar II" -} -//end v1.x content -, - "ar": true, - "el": true, - "fi": true, - "fr": true, - "he": true, - "hu": true, - "ja": true, - "nl": true, - "pl": true, - "pt": true, - "ro": true, - "ru": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/hu/buddhist.js.uncompressed.js deleted file mode 100644 index b0725042c..000000000 --- a/lib/dojo/cldr/nls/hu/buddhist.js.uncompressed.js +++ /dev/null @@ -1,224 +0,0 @@ -define( -"dojo/cldr/nls/hu/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "y.M.", - "dateFormatItem-yQ": "y. Q", - "dayPeriods-format-wide-pm": "du.", - "eraNames": [ - "BK" - ], - "dateFormatItem-MMMEd": "MMM d., E", - "dateFormatItem-hms": "a h:mm:ss", - "dateFormatItem-yQQQ": "y. QQQ", - "days-standAlone-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "months-standAlone-narrow": [ - "J", - "F", - "M", - "Á", - "M", - "J", - "J", - "A", - "Sz", - "O", - "N", - "D" - ], - "dayPeriods-format-wide-am": "de.", - "quarters-standAlone-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "dateFormatItem-y": "y", - "timeFormat-full": "H:mm:ss zzzz", - "months-standAlone-abbr": [ - "jan.", - "febr.", - "márc.", - "ápr.", - "máj.", - "jún.", - "júl.", - "aug.", - "szept.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-Ed": "d., E", - "dateFormatItem-yMMM": "y. MMM", - "days-standAlone-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "eraAbbr": [ - "BK" - ], - "dateFormat-long": "y. MMMM d.", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy.MM.dd.", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "du.", - "dateFormatItem-yMd": "yyyy.MM.dd.", - "quarters-standAlone-wide": [ - "1. negyedév", - "2. negyedév", - "3. negyedév", - "4. negyedév" - ], - "dayPeriods-format-narrow-am": "de.", - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "január", - "február", - "március", - "április", - "május", - "június", - "július", - "augusztus", - "szeptember", - "október", - "november", - "december" - ], - "dateFormatItem-MMMd": "MMM d.", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "jan.", - "febr.", - "márc.", - "ápr.", - "máj.", - "jún.", - "júl.", - "aug.", - "szept.", - "okt.", - "nov.", - "dec." - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H", - "quarters-format-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "days-format-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "days-format-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "dateFormatItem-yMMMd": "y. MMM d.", - "dateFormatItem-MEd": "M. d., E", - "months-format-narrow": [ - "J", - "F", - "M", - "Á", - "M", - "J", - "J", - "Á", - "Sz", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-hm": "a h:mm", - "days-standAlone-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormat-short": "yyyy.MM.dd.", - "dateFormatItem-yMMMEd": "y. MMM d., E", - "dateFormat-full": "y. MMMM d., EEEE", - "dateFormatItem-Md": "M.d.", - "dateFormatItem-yMEd": "yyyy.MM.dd., E", - "months-format-wide": [ - "január", - "február", - "március", - "április", - "május", - "június", - "július", - "augusztus", - "szeptember", - "október", - "november", - "december" - ], - "quarters-format-wide": [ - "I. negyedév", - "II. negyedév", - "III. negyedév", - "IV. negyedév" - ], - "eraNarrow": [ - "BK" - ], - "days-format-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "dateFormatItem-h": "a h" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/currency.js.uncompressed.js b/lib/dojo/cldr/nls/hu/currency.js.uncompressed.js deleted file mode 100644 index 5bc5fcded..000000000 --- a/lib/dojo/cldr/nls/hu/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/hu/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkongi dollár", - "CHF_displayName": "Svájci frank", - "JPY_symbol": "¥", - "CAD_displayName": "Kanadai dollár", - "HKD_symbol": "HKD", - "CNY_displayName": "Kínai jüan renminbi", - "USD_symbol": "$", - "AUD_displayName": "Ausztrál dollár", - "JPY_displayName": "Japán jen", - "CAD_symbol": "CAD", - "USD_displayName": "USA dollár", - "EUR_symbol": "EUR", - "CNY_symbol": "CNY", - "GBP_displayName": "Brit font sterling", - "GBP_symbol": "GBP", - "AUD_symbol": "AUD", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/hu/gregorian.js.uncompressed.js deleted file mode 100644 index 292cd1019..000000000 --- a/lib/dojo/cldr/nls/hu/gregorian.js.uncompressed.js +++ /dev/null @@ -1,276 +0,0 @@ -define( -"dojo/cldr/nls/hu/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "Á", - "M", - "J", - "J", - "Á", - "Sz", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "field-weekday": "hét napja", - "dateFormatItem-yQQQ": "y. QQQ", - "dateFormatItem-yMEd": "yyyy.MM.dd., E", - "dateFormatItem-MMMEd": "MMM d., E", - "eraNarrow": [ - "ie.", - "isz." - ], - "days-format-short": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormat-long": "y. MMMM d.", - "months-format-wide": [ - "január", - "február", - "március", - "április", - "május", - "június", - "július", - "augusztus", - "szeptember", - "október", - "november", - "december" - ], - "dayPeriods-format-wide-pm": "du.", - "dateFormat-full": "y. MMMM d., EEEE", - "dateFormatItem-Md": "M. d.", - "dateFormatItem-yMd": "yyyy.MM.dd.", - "field-era": "éra", - "dateFormatItem-yM": "y.M.", - "months-standAlone-wide": [ - "január", - "február", - "március", - "április", - "május", - "június", - "július", - "augusztus", - "szeptember", - "október", - "november", - "december" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "I. negyedév", - "II. negyedév", - "III. negyedév", - "IV. negyedév" - ], - "timeFormat-long": "H:mm:ss z", - "field-year": "év", - "dateFormatItem-yMMM": "y. MMM", - "dateFormatItem-yQ": "y. Q", - "dateFormatItem-yyyyMMMM": "y. MMMM", - "field-hour": "óra", - "dateFormatItem-MMdd": "MM.dd.", - "months-format-abbr": [ - "jan.", - "febr.", - "márc.", - "ápr.", - "máj.", - "jún.", - "júl.", - "aug.", - "szept.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-yyQ": "yy/Q", - "timeFormat-full": "H:mm:ss zzzz", - "field-day-relative+0": "ma", - "field-day-relative+1": "holnap", - "field-day-relative+2": "holnapután", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "jan.", - "febr.", - "márc.", - "ápr.", - "máj.", - "jún.", - "júl.", - "aug.", - "szept.", - "okt.", - "nov.", - "dec." - ], - "quarters-format-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "quarters-standAlone-wide": [ - "1. negyedév", - "2. negyedév", - "3. negyedév", - "4. negyedév" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "dateFormatItem-MMMMd": "MMMM d.", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "eraAbbr": [ - "i. e.", - "i. sz." - ], - "field-minute": "perc", - "field-dayperiod": "napszak", - "days-standAlone-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "tegnap", - "dateFormatItem-h": "a h", - "dayPeriods-format-narrow-am": "de.", - "field-day-relative+-2": "tegnapelőtt", - "dateFormatItem-MMMd": "MMM d.", - "dateFormatItem-MEd": "M. d., E", - "field-day": "nap", - "days-format-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "field-zone": "időzóna", - "dateFormatItem-yyyyMM": "yyyy.MM", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "Á", - "M", - "J", - "J", - "A", - "Sz", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Előző év", - "field-month-relative+-1": "Előző hónap", - "dateFormatItem-hm": "a h:mm", - "days-format-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-yMMMd": "y. MMM d.", - "eraNames": [ - "időszámításunk előtt", - "időszámításunk szerint" - ], - "days-format-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "field-month": "hónap", - "days-standAlone-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "de.", - "dateFormat-short": "yyyy.MM.dd.", - "field-second": "másodperc", - "dateFormatItem-yMMMEd": "y. MMM d., E", - "field-month-relative+0": "Ez a hónap", - "field-month-relative+1": "Következő hónap", - "dateFormatItem-Ed": "d., E", - "field-week": "hét", - "dateFormat-medium": "yyyy.MM.dd.", - "field-year-relative+0": "Ez az év", - "field-week-relative+-1": "Előző hét", - "field-year-relative+1": "Következő év", - "dateFormatItem-mmss": "mm:ss", - "dayPeriods-format-narrow-pm": "du.", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "a h:mm:ss", - "field-week-relative+0": "Ez a hét", - "field-week-relative+1": "Következő hét" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/hu/hebrew.js.uncompressed.js deleted file mode 100644 index 047eaebb1..000000000 --- a/lib/dojo/cldr/nls/hu/hebrew.js.uncompressed.js +++ /dev/null @@ -1,203 +0,0 @@ -define( -"dojo/cldr/nls/hu/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "y.M.", - "dateFormatItem-yQ": "y. Q", - "months-standAlone-abbr-leap": "Ádár II", - "dayPeriods-format-wide-pm": "du.", - "eraNames": [ - "TÉ" - ], - "dateFormatItem-MMMEd": "MMM d., E", - "dateFormatItem-hms": "a h:mm:ss", - "dateFormatItem-yQQQ": "y. QQQ", - "days-standAlone-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "dayPeriods-format-wide-am": "de.", - "months-format-abbr-leap": "Ádár II", - "quarters-standAlone-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "timeFormat-full": "H:mm:ss zzzz", - "months-standAlone-abbr": [ - "Tisri", - "Hesván", - "Kiszlév", - "Tévész", - "Svát", - "Ádár risón", - "Ádár", - "Niszán", - "Ijár", - "Sziván", - "Tamuz", - "Áv", - "Elul" - ], - "dateFormatItem-Ed": "d., E", - "dateFormatItem-yMMM": "y. MMM", - "days-standAlone-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "eraAbbr": [ - "TÉ" - ], - "dateFormat-long": "y. MMMM d.", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy.MM.dd.", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "du.", - "dateFormatItem-yMd": "yyyy.MM.dd.", - "quarters-standAlone-wide": [ - "1. negyedév", - "2. negyedév", - "3. negyedév", - "4. negyedév" - ], - "dayPeriods-format-narrow-am": "de.", - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "Tisri", - "Hesván", - "Kiszlév", - "Tévész", - "Svát", - "Ádár risón", - "Ádár", - "Niszán", - "Ijár", - "Sziván", - "Tamuz", - "Áv", - "Elul" - ], - "dateFormatItem-MMMd": "MMM d.", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "Tisri", - "Hesván", - "Kiszlév", - "Tévész", - "Svát", - "Ádár I", - "Ádár", - "Niszán", - "Ijár", - "Sziván", - "Tamuz", - "Áv", - "Elul" - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H", - "quarters-format-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "days-format-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "days-format-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "dateFormatItem-yMMMd": "y. MMM d.", - "dateFormatItem-MEd": "M. d., E", - "days-standAlone-short": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-hm": "a h:mm", - "days-standAlone-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "months-standAlone-wide-leap": "Ádár II", - "dateFormat-short": "yyyy.MM.dd.", - "dateFormatItem-yMMMEd": "y. MMM d., E", - "dateFormat-full": "y. MMMM d., EEEE", - "dateFormatItem-Md": "M. d.", - "dateFormatItem-yMEd": "yyyy.MM.dd., E", - "months-format-wide": [ - "Tisri", - "Hesván", - "Kiszlév", - "Tévész", - "Svát", - "Ádár risón", - "Ádár", - "Niszán", - "Ijár", - "Sziván", - "Tamuz", - "Áv", - "Elul" - ], - "quarters-format-wide": [ - "I. negyedév", - "II. negyedév", - "III. negyedév", - "IV. negyedév" - ], - "months-format-wide-leap": "Ádár séni", - "eraNarrow": [ - "TÉ" - ], - "days-format-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "dateFormatItem-h": "a h" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/hu/islamic.js.uncompressed.js deleted file mode 100644 index a31b22825..000000000 --- a/lib/dojo/cldr/nls/hu/islamic.js.uncompressed.js +++ /dev/null @@ -1,214 +0,0 @@ -define( -"dojo/cldr/nls/hu/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "y-M", - "dateFormatItem-yQ": "y Q", - "dayPeriods-format-wide-pm": "du.", - "eraNames": [ - "MF" - ], - "dateFormatItem-MMMEd": "MMM. d., E", - "dateFormatItem-hms": "a h:mm:ss", - "dateFormatItem-yQQQ": "y QQQ", - "days-standAlone-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dayPeriods-format-wide-am": "de.", - "quarters-standAlone-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "dateFormatItem-y": "y", - "timeFormat-full": "H:mm:ss zzzz", - "months-standAlone-abbr": [ - "Moh.", - "Saf.", - "Rébi I", - "Rébi II", - "Dsem. I", - "Dsem. II", - "Red.", - "Sab.", - "Ram.", - "Sev.", - "Dsül k.", - "Dsül h." - ], - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "y MMM", - "days-standAlone-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "eraAbbr": [ - "MF" - ], - "dateFormat-long": "y. MMMM d.", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy.MM.dd.", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "du.", - "dateFormatItem-yMd": "yyyy.MM.dd.", - "quarters-standAlone-wide": [ - "1. negyedév", - "2. negyedév", - "3. negyedév", - "4. negyedév" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "de.", - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "Moharrem", - "Safar", - "Rébi I", - "Rébi II", - "Dsemádi I", - "Dsemádi II", - "Redseb", - "Sabán", - "Ramadán", - "Sevvál", - "Dsül kade", - "Dsül hedse" - ], - "dateFormatItem-MMMd": "MMM d.", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "Moh.", - "Saf.", - "Rébi I", - "Rébi II", - "Dsem. I", - "Dsem. II", - "Red.", - "Sab.", - "Ram.", - "Sev.", - "Dsül k.", - "Dsül h." - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "MMMM d.", - "quarters-format-abbr": [ - "N1", - "N2", - "N3", - "N4" - ], - "days-format-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "V", - "H", - "K", - "Sz", - "Cs", - "P", - "Sz" - ], - "dateFormatItem-yMMMd": "y. MMM d.", - "dateFormatItem-MEd": "M. d., E", - "days-standAlone-short": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormatItem-hm": "a h:mm", - "days-standAlone-abbr": [ - "V", - "H", - "K", - "Sze", - "Cs", - "P", - "Szo" - ], - "dateFormat-short": "yyyy.MM.dd.", - "dateFormatItem-yMMMEd": "y. MMM d., E", - "dateFormat-full": "y. MMMM d., EEEE", - "dateFormatItem-Md": "M. d.", - "dateFormatItem-yMEd": "yyyy.MM.dd., E", - "months-format-wide": [ - "Moharrem", - "Safar", - "Rébi el avvel", - "Rébi el accher", - "Dsemádi el avvel", - "Dsemádi el accher", - "Redseb", - "Sabán", - "Ramadán", - "Sevvál", - "Dsül kade", - "Dsül hedse" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "I. negyedév", - "II. negyedév", - "III. negyedév", - "IV. negyedév" - ], - "eraNarrow": [ - "MF" - ], - "days-format-wide": [ - "vasárnap", - "hétfő", - "kedd", - "szerda", - "csütörtök", - "péntek", - "szombat" - ], - "dateFormatItem-h": "a h" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/hu/number.js.uncompressed.js b/lib/dojo/cldr/nls/hu/number.js.uncompressed.js deleted file mode 100644 index 1d098c645..000000000 --- a/lib/dojo/cldr/nls/hu/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/hu/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 billió", - "decimalFormat-short": "000 B" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/islamic.js.uncompressed.js deleted file mode 100644 index 0ee75e28d..000000000 --- a/lib/dojo/cldr/nls/islamic.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define("dojo/cldr/nls/islamic", { root: - -//begin v1.x content -{ - "days-standAlone-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, y-M-d", - "dateFormatItem-MMMEd": "E MMM d", - "eraNarrow": [ - "AH" - ], - "days-format-short": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day-Of-Week": "{0} {1}", - "dateFormat-long": "y MMMM d", - "months-format-wide": [ - "Muharram", - "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", - "Rajab", - "Shaʻban", - "Ramadan", - "Shawwal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, y MMMM dd", - "dateFormatItem-Md": "M-d", - "dayPeriods-format-abbr-am": "AM", - "dateTimeFormats-appendItem-Second": "{0} ({2}: {1})", - "dateFormatItem-yMd": "y-M-d", - "dateFormatItem-yM": "y-M", - "months-standAlone-wide": [ - "Muharram", - "Safar", - "Rabiʻ I", - "Rabiʻ II", - "Jumada I", - "Jumada II", - "Rajab", - "Shaʻban", - "Ramadan", - "Shawwal", - "Dhuʻl-Qiʻdah", - "Dhuʻl-Hijjah" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "timeFormat-long": "HH:mm:ss z", - "dateFormatItem-yMMM": "y MMM", - "dateFormatItem-yQ": "y Q", - "dateTimeFormats-appendItem-Era": "{0} {1}", - "months-format-abbr": [ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", - "Raj.", - "Sha.", - "Ram.", - "Shaw.", - "Dhuʻl-Q.", - "Dhuʻl-H." - ], - "timeFormat-full": "HH:mm:ss zzzz", - "dateTimeFormats-appendItem-Week": "{0} ({2}: {1})", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Jum. I", - "Jum. II", - "Raj.", - "Sha.", - "Ram.", - "Shaw.", - "Dhuʻl-Q.", - "Dhuʻl-H." - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "AH" - ], - "days-standAlone-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "AM", - "dateFormatItem-MMMd": "MMM d", - "dateFormatItem-MEd": "E, M-d", - "dateTimeFormat-full": "{1} {0}", - "days-format-wide": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateTimeFormats-appendItem-Day": "{0} ({2}: {1})", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateFormatItem-hm": "h:mm a", - "dateTimeFormats-appendItem-Year": "{0} {1}", - "dateTimeFormats-appendItem-Hour": "{0} ({2}: {1})", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-yMMMd": "y MMM d", - "eraNames": [ - "AH" - ], - "days-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "days-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormats-appendItem-Quarter": "{0} ({2}: {1})", - "dayPeriods-format-wide-am": "AM", - "dateTimeFormats-appendItem-Month": "{0} ({2}: {1})", - "dateTimeFormats-appendItem-Minute": "{0} ({2}: {1})", - "dateFormat-short": "yyyy-MM-dd", - "dateFormatItem-yMMMEd": "E, y MMM d", - "dateFormatItem-Ed": "d E", - "dateTimeFormats-appendItem-Timezone": "{0} {1}", - "dateFormat-medium": "y MMM d", - "dayPeriods-format-narrow-pm": "PM", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a" -} -//end v1.x content -, - "ar": true, - "cs": true, - "da": true, - "de": true, - "en": true, - "en-gb": true, - "es": true, - "fi": true, - "fr": true, - "he": true, - "hu": true, - "it": true, - "ja": true, - "nb": true, - "nl": true, - "pl": true, - "pt": true, - "pt-pt": true, - "ro": true, - "ru": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/it/buddhist.js.uncompressed.js deleted file mode 100644 index 4f84ed5ab..000000000 --- a/lib/dojo/cldr/nls/it/buddhist.js.uncompressed.js +++ /dev/null @@ -1,213 +0,0 @@ -define( -"dojo/cldr/nls/it/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/y G", - "dateFormatItem-yQ": "Q-y G", - "eraNames": [ - "EB" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "Domenica", - "Lunedì", - "Martedì", - "Mercoledì", - "Giovedì", - "Venerdì", - "Sabato" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "G", - "F", - "M", - "A", - "M", - "G", - "L", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y G", - "months-standAlone-abbr": [ - "gen", - "feb", - "mar", - "apr", - "mag", - "giu", - "lug", - "ago", - "set", - "ott", - "nov", - "dic" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "G", - "V", - "S" - ], - "eraAbbr": [ - "EB" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "dd MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "dd/MMM/y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p.", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d/M/y G", - "quarters-standAlone-wide": [ - "Primo trimestre", - "Secondo trimestre", - "Terzo trimestre", - "Quarto trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "m.", - "months-standAlone-wide": [ - "Gennaio", - "Febbraio", - "Marzo", - "Aprile", - "Maggio", - "Giugno", - "Luglio", - "Agosto", - "Settembre", - "Ottobre", - "Novembre", - "Dicembre" - ], - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "gen", - "feb", - "mar", - "apr", - "mag", - "giu", - "lug", - "ago", - "set", - "ott", - "nov", - "dic" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-MMMMdd": "dd MMMM", - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E d/M", - "months-format-narrow": [ - "G", - "F", - "M", - "A", - "M", - "G", - "L", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-hm": "hh:mm a", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yMMMEd": "E d MMM y G", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, d/M/y G", - "months-format-wide": [ - "gennaio", - "febbraio", - "marzo", - "aprile", - "maggio", - "giugno", - "luglio", - "agosto", - "settembre", - "ottobre", - "novembre", - "dicembre" - ], - "days-format-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1o trimestre", - "2o trimestre", - "3o trimestre", - "4o trimestre" - ], - "eraNarrow": [ - "EB" - ], - "days-format-wide": [ - "domenica", - "lunedì", - "martedì", - "mercoledì", - "giovedì", - "venerdì", - "sabato" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/currency.js.uncompressed.js b/lib/dojo/cldr/nls/it/currency.js.uncompressed.js deleted file mode 100644 index deb45498a..000000000 --- a/lib/dojo/cldr/nls/it/currency.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define( -"dojo/cldr/nls/it/currency", //begin v1.x content -{ - "HKD_displayName": "Dollaro di Hong Kong", - "CHF_displayName": "Franco Svizzero", - "CAD_displayName": "Dollaro Canadese", - "CNY_displayName": "Renmimbi Cinese", - "USD_symbol": "US$", - "AUD_displayName": "Dollaro Australiano", - "JPY_displayName": "Yen Giapponese", - "CAD_symbol": "CA$", - "USD_displayName": "Dollaro Statunitense", - "GBP_displayName": "Sterlina Inglese", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/it/gregorian.js.uncompressed.js deleted file mode 100644 index ccb299783..000000000 --- a/lib/dojo/cldr/nls/it/gregorian.js.uncompressed.js +++ /dev/null @@ -1,281 +0,0 @@ -define( -"dojo/cldr/nls/it/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "months-format-narrow": [ - "G", - "F", - "M", - "A", - "M", - "G", - "L", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "giorno della settimana", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d/M/y", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "aC", - "dC" - ], - "days-format-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormat-long": "dd MMMM y", - "months-format-wide": [ - "gennaio", - "febbraio", - "marzo", - "aprile", - "maggio", - "giugno", - "luglio", - "agosto", - "settembre", - "ottobre", - "novembre", - "dicembre" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE d MMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d/M/y", - "field-era": "era", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "Gennaio", - "Febbraio", - "Marzo", - "Aprile", - "Maggio", - "Giugno", - "Luglio", - "Agosto", - "Settembre", - "Ottobre", - "Novembre", - "Dicembre" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1o trimestre", - "2o trimestre", - "3o trimestre", - "4o trimestre" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "anno", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q-yyyy", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "ora", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "gen", - "feb", - "mar", - "apr", - "mag", - "giu", - "lug", - "ago", - "set", - "ott", - "nov", - "dic" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "oggi", - "field-day-relative+1": "domani", - "field-day-relative+2": "dopodomani", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "gen", - "feb", - "mar", - "apr", - "mag", - "giu", - "lug", - "ago", - "set", - "ott", - "nov", - "dic" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "quarters-standAlone-wide": [ - "Primo trimestre", - "Secondo trimestre", - "Terzo trimestre", - "Quarto trimestre" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Domenica", - "Lunedì", - "Martedì", - "Mercoledì", - "Giovedì", - "Venerdì", - "Sabato" - ], - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "eraAbbr": [ - "aC", - "dC" - ], - "field-minute": "minuto", - "field-dayperiod": "periodo del giorno", - "days-standAlone-abbr": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "ieri", - "dateFormatItem-h": "hh a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "m.", - "field-day-relative+-2": "l'altro ieri", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E d/M", - "dateTimeFormat-full": "{1} {0}", - "field-day": "giorno", - "days-format-wide": [ - "domenica", - "lunedì", - "martedì", - "mercoledì", - "giovedì", - "venerdì", - "sabato" - ], - "field-zone": "zona", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "G", - "F", - "M", - "A", - "M", - "G", - "L", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Anno scorso", - "field-month-relative+-1": "Mese scorso", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "hh:mm a", - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "a.C.", - "d.C" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "G", - "V", - "S" - ], - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "G", - "V", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "mese", - "dayPeriods-format-wide-am": "AM", - "dateFormatItem-MMMMdd": "dd MMMM", - "dateFormat-short": "dd/MM/yy", - "field-second": "secondo", - "dateFormatItem-yMMMEd": "E d MMM y", - "field-month-relative+0": "Questo mese", - "field-month-relative+1": "Mese prossimo", - "dateFormatItem-Ed": "E d", - "field-week": "settimana", - "dateFormat-medium": "dd/MMM/y", - "field-year-relative+0": "Questo anno", - "field-week-relative+-1": "Settimana scorsa", - "field-year-relative+1": "Anno prossimo", - "dayPeriods-format-narrow-pm": "p.", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "hh:mm:ss a", - "field-week-relative+0": "Questa settimana", - "field-week-relative+1": "Settimana prossima" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/it/islamic.js.uncompressed.js deleted file mode 100644 index 307e5c2bd..000000000 --- a/lib/dojo/cldr/nls/it/islamic.js.uncompressed.js +++ /dev/null @@ -1,125 +0,0 @@ -define( -"dojo/cldr/nls/it/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/y", - "dateFormatItem-yyyyMMMEd": "E d MMM y G", - "dateFormatItem-yQ": "Q-y G", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "Domenica", - "Lunedì", - "Martedì", - "Mercoledì", - "Giovedì", - "Venerdì", - "Sabato" - ], - "dateFormatItem-MMM": "LLL", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "G", - "V", - "S" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "dd MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM/y G", - "dateFormat-medium": "dd/MMM/y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p.", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d/M/y", - "quarters-standAlone-wide": [ - "Primo trimestre", - "Secondo trimestre", - "Terzo trimestre", - "Quarto trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "m.", - "dateFormatItem-yyyyMd": "d/M/y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyyyMEd": "E, d/M/y G", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q y G", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-MMMMdd": "dd MMMM", - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E d/M", - "days-standAlone-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-hm": "hh:mm a", - "dateFormat-short": "dd/MM/y G", - "dateFormatItem-yyyyM": "M/y G", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/y", - "days-format-short": [ - "dom", - "lun", - "mar", - "mer", - "gio", - "ven", - "sab" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1o trimestre", - "2o trimestre", - "3o trimestre", - "4o trimestre" - ], - "days-format-wide": [ - "domenica", - "lunedì", - "martedì", - "mercoledì", - "giovedì", - "venerdì", - "sabato" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/it/number.js.uncompressed.js b/lib/dojo/cldr/nls/it/number.js.uncompressed.js deleted file mode 100644 index 858e3d7ae..000000000 --- a/lib/dojo/cldr/nls/it/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/it/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤ #,##0.00", - "plusSign": "+", - "decimalFormat-long": "000 bilioni", - "decimalFormat-short": "000 B" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ja/buddhist.js.uncompressed.js deleted file mode 100644 index 9af943c51..000000000 --- a/lib/dojo/cldr/nls/ja/buddhist.js.uncompressed.js +++ /dev/null @@ -1,132 +0,0 @@ -define( -"dojo/cldr/nls/ja/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "GGGGy年M月", - "dateFormatItem-yyyyMMMEd": "GGGGy年M月d日(E)", - "dateFormatItem-yQ": "GGGGy QQQ", - "dayPeriods-format-wide-pm": "午後", - "dateFormatItem-GGGGyMd": "GGGGy年M月d日", - "eraNames": [ - "仏暦" - ], - "dateFormatItem-MMMEd": "M月d日(E)", - "dateFormatItem-hms": "aK:mm:ss", - "dateFormatItem-yQQQ": "GGGGy第Q四半期", - "dateFormatItem-MMdd": "MM/dd", - "dateFormatItem-MMM": "M月", - "dateFormatItem-Gy": "Gy年", - "dayPeriods-format-wide-am": "午前", - "dateFormatItem-y": "GGGGy年", - "timeFormat-full": "H時mm分ss秒 zzzz", - "dateFormatItem-yyyy": "GGGGy年", - "dateFormatItem-yyyyMMMEEEEd": "GGGGy年M月d日EEEE", - "dateFormatItem-EEEEd": "d日EEEE", - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "GGGGy年M月", - "days-standAlone-narrow": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "eraAbbr": [ - "BE" - ], - "dateFormatItem-yyyyMM": "Gy/MM", - "dateFormat-long": "GGGGy年M月d日", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormatItem-MMMEEEEd": "M月d日EEEE", - "dateFormat-medium": "Gy/MM/dd", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-yMMMEEEEd": "GGGGy年M月d日EEEE", - "dateFormatItem-yMd": "y/M/d", - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyyyMd": "Gy/M/d", - "dateFormatItem-yyyyMMMd": "GGGGy年M月d日", - "dateFormatItem-yyyyMEd": "Gy/M/d(E)", - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "H:mm:ss z", - "dateFormatItem-H": "H時", - "timeFormat-short": "H:mm", - "quarters-format-abbr": [ - "1Q", - "2Q", - "3Q", - "4Q" - ], - "days-format-abbr": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-M": "M月", - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "days-standAlone-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-hm": "aK:mm", - "dateFormat-short": "Gy/MM/dd", - "dateFormatItem-yMMMEd": "GGGGy年M月d日(E)", - "dateFormat-full": "GGGGy年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "GGGGy年M/d(E)", - "dateFormatItem-yyyyQ": "Gy/Q", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "days-format-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-yyyyMMM": "GGGGy年M月", - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1四半期", - "第2四半期", - "第3四半期", - "第4四半期" - ], - "days-format-wide": [ - "日曜日", - "月曜日", - "火曜日", - "水曜日", - "木曜日", - "金曜日", - "土曜日" - ], - "dateFormatItem-h": "aK時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ja/currency.js.uncompressed.js deleted file mode 100644 index 2e090ef39..000000000 --- a/lib/dojo/cldr/nls/ja/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/ja/currency", //begin v1.x content -{ - "HKD_displayName": "香港ドル", - "CHF_displayName": "スイス フラン", - "JPY_symbol": "¥", - "CAD_displayName": "カナダ ドル", - "HKD_symbol": "HK$", - "CNY_displayName": "中国人民元", - "USD_symbol": "$", - "AUD_displayName": "オーストラリア ドル", - "JPY_displayName": "日本円", - "CAD_symbol": "CA$", - "USD_displayName": "米ドル", - "EUR_symbol": "€", - "CNY_symbol": "元", - "GBP_displayName": "英国ポンド", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "ユーロ" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ja/gregorian.js.uncompressed.js deleted file mode 100644 index 465a6ef83..000000000 --- a/lib/dojo/cldr/nls/ja/gregorian.js.uncompressed.js +++ /dev/null @@ -1,269 +0,0 @@ -define( -"dojo/cldr/nls/ja/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "曜日", - "dateFormatItem-yQQQ": "yQQQ", - "dateFormatItem-yMEd": "y/M/d(E)", - "dateFormatItem-MMMEd": "M月d日(E)", - "eraNarrow": [ - "BC", - "AD" - ], - "days-format-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormat-long": "y年M月d日", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "午後", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dayPeriods-format-wide-noon": "正午", - "dateFormatItem-yMd": "y/M/d", - "field-era": "時代", - "dateFormatItem-yM": "y/M", - "months-standAlone-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "第1四半期", - "第2四半期", - "第3四半期", - "第4四半期" - ], - "timeFormat-long": "H:mm:ss z", - "field-year": "年", - "dateFormatItem-yMMM": "y年M月", - "dateFormatItem-yQ": "y/Q", - "field-hour": "時", - "dateFormatItem-MMdd": "MM/dd", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-yyQ": "yy/Q", - "timeFormat-full": "H時mm分ss秒 zzzz", - "field-day-relative+0": "今日", - "field-day-relative+1": "明日", - "field-day-relative+2": "明後日", - "dateFormatItem-H": "H時", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "quarters-format-abbr": [ - "1Q", - "2Q", - "3Q", - "4Q" - ], - "quarters-standAlone-wide": [ - "第1四半期", - "第2四半期", - "第3四半期", - "第4四半期" - ], - "dateFormatItem-M": "M月", - "days-standAlone-wide": [ - "日曜日", - "月曜日", - "火曜日", - "水曜日", - "木曜日", - "金曜日", - "土曜日" - ], - "dateFormatItem-yMMMEEEEd": "y年M月d日EEEE", - "dateFormatItem-yyMMM": "y年M月", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "eraAbbr": [ - "BC", - "AD" - ], - "field-minute": "分", - "field-dayperiod": "午前/午後", - "days-standAlone-abbr": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-d": "d日", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "昨日", - "dateFormatItem-h": "aK時", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "一昨日", - "dateFormatItem-MMMd": "M月d日", - "dateFormatItem-EEEEd": "d日EEEE", - "dateFormatItem-MEd": "M/d(E)", - "dateTimeFormat-full": "{1} {0}", - "field-day": "日", - "days-format-wide": [ - "日曜日", - "月曜日", - "火曜日", - "水曜日", - "木曜日", - "金曜日", - "土曜日" - ], - "field-zone": "タイムゾーン", - "dateFormatItem-yyyyMM": "yyyy/MM", - "dateFormatItem-y": "y年", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "field-year-relative+-1": "昨年", - "field-month-relative+-1": "先月", - "dateFormatItem-hm": "aK:mm", - "dateFormatItem-GGGGyMd": "GGGGy年M月d日", - "days-format-abbr": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "eraNames": [ - "紀元前", - "西暦" - ], - "days-format-narrow": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-MMMEEEEd": "M月d日EEEE", - "field-month": "月", - "days-standAlone-narrow": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-MMM": "M月", - "dayPeriods-format-wide-am": "午前", - "dateFormat-short": "yyyy/MM/dd", - "field-second": "秒", - "dateFormatItem-yMMMEd": "y年M月d日(E)", - "field-month-relative+0": "今月", - "field-month-relative+1": "翌月", - "dateFormatItem-Ed": "d日(E)", - "field-week": "週", - "dateFormat-medium": "yyyy/MM/dd", - "field-year-relative+0": "今年", - "field-week-relative+-1": "先週", - "field-year-relative+1": "翌年", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "aK:mm:ss", - "dateFormatItem-yyyy": "y年", - "field-week-relative+0": "今週", - "field-week-relative+1": "翌週" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/ja/hebrew.js.uncompressed.js deleted file mode 100644 index 73e1c01bf..000000000 --- a/lib/dojo/cldr/nls/ja/hebrew.js.uncompressed.js +++ /dev/null @@ -1,195 +0,0 @@ -define( -"dojo/cldr/nls/ja/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "y/M", - "dateFormatItem-yQ": "y/Q", - "months-standAlone-abbr-leap": "アダル II", - "dayPeriods-format-wide-pm": "午後", - "dateFormatItem-MMMEd": "M月d日(E)", - "dateFormatItem-hms": "aK:mm:ss", - "dateFormatItem-yQQQ": "yQQQ", - "dateFormatItem-MMM": "M月", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13" - ], - "dayPeriods-format-wide-am": "午前", - "months-format-narrow-leap": "7", - "months-format-abbr-leap": "アダル II", - "dateFormatItem-y": "y年", - "timeFormat-full": "H時mm分ss秒 zzzz", - "months-standAlone-narrow-leap": "7", - "months-standAlone-abbr": [ - "ティスレ", - "へシボン", - "キスレブ", - "テベット", - "シバット", - "アダル I", - "アダル", - "ニサン", - "イヤル", - "シバン", - "タムズ", - "アヴ", - "エルル" - ], - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "eraAbbr": [ - "AM" - ], - "dateFormat-long": "y年M月d日", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy/MM/dd", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-yMd": "y/M/d", - "months-standAlone-wide": [ - "ティスレ", - "へシボン", - "キスレブ", - "テベット", - "シバット", - "アダル I", - "アダル", - "ニサン", - "イヤル", - "シバン", - "タムズ", - "アヴ", - "エルル" - ], - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "ティスレ", - "へシボン", - "キスレブ", - "テベット", - "シバット", - "アダル I", - "アダル", - "ニサン", - "イヤル", - "シバン", - "タムズ", - "アヴ", - "エルル" - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H時", - "quarters-format-abbr": [ - "1Q", - "2Q", - "3Q", - "4Q" - ], - "days-format-abbr": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-M": "M月", - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12", - "13" - ], - "days-standAlone-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-hm": "aK:mm", - "months-standAlone-wide-leap": "アダル II", - "dateFormat-short": "yyyy/MM/dd", - "dateFormatItem-yMMMEd": "y年M月d日(E)", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "y/M/d(E)", - "months-format-wide": [ - "ティスレ", - "へシボン", - "キスレブ", - "テベット", - "シバット", - "アダル I", - "アダル", - "ニサン", - "イヤル", - "シバン", - "タムズ", - "アヴ", - "エルル" - ], - "days-format-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1四半期", - "第2四半期", - "第3四半期", - "第4四半期" - ], - "months-format-wide-leap": "アダル II", - "days-format-wide": [ - "日曜日", - "月曜日", - "火曜日", - "水曜日", - "木曜日", - "金曜日", - "土曜日" - ], - "dateFormatItem-h": "aK時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/ja/islamic.js.uncompressed.js deleted file mode 100644 index 05c8f76be..000000000 --- a/lib/dojo/cldr/nls/ja/islamic.js.uncompressed.js +++ /dev/null @@ -1,183 +0,0 @@ -define( -"dojo/cldr/nls/ja/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "y/M", - "dateFormatItem-yQ": "y/Q", - "dayPeriods-format-wide-pm": "午後", - "dateFormatItem-MMMEd": "M月d日(E)", - "dateFormatItem-hms": "aK:mm:ss", - "dateFormatItem-yQQQ": "yQQQ", - "dateFormatItem-MMM": "M月", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dayPeriods-format-wide-am": "午前", - "dateFormatItem-y": "y年", - "timeFormat-full": "H時mm分ss秒 zzzz", - "months-standAlone-abbr": [ - "ムハッラム", - "サフアル", - "ラビー・ウル・アウワル", - "ラビー・ウッ・サーニー", - "ジュマーダル・アウワル", - "ジュマーダッサーニー", - "ラジャブ", - "シャアバーン", - "ラマダーン", - "シャウワール", - "ズル・カイダ", - "ズル・ヒッジャ" - ], - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "eraAbbr": [ - "AH" - ], - "dateFormat-long": "y年M月d日", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy/MM/dd", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-yMd": "y/M/d", - "months-standAlone-wide": [ - "ムハッラム", - "サフアル", - "ラビー・ウル・アウワル", - "ラビー・ウッ・サーニー", - "ジュマーダル・アウワル", - "ジュマーダッサーニー", - "ラジャブ", - "シャアバーン", - "ラマダーン", - "シャウワール", - "ズル・カイダ", - "ズル・ヒッジャ" - ], - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "ムハッラム", - "サフアル", - "ラビー・ウル・アウワル", - "ラビー・ウッ・サーニー", - "ジュマーダル・アウワル", - "ジュマーダッサーニー", - "ラジャブ", - "シャアバーン", - "ラマダーン", - "シャウワール", - "ズル・カイダ", - "ズル・ヒッジャ" - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H時", - "quarters-format-abbr": [ - "1Q", - "2Q", - "3Q", - "4Q" - ], - "days-format-abbr": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-M": "M月", - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-hm": "aK:mm", - "dateFormat-short": "yyyy/MM/dd", - "dateFormatItem-yMMMEd": "y年M月d日(E)", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "y/M/d(E)", - "months-format-wide": [ - "ムハッラム", - "サフアル", - "ラビー・ウル・アウワル", - "ラビー・ウッ・サーニー", - "ジュマーダル・アウワル", - "ジュマーダッサーニー", - "ラジャブ", - "シャアバーン", - "ラマダーン", - "シャウワール", - "ズル・カイダ", - "ズル・ヒッジャ" - ], - "days-format-short": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1四半期", - "第2四半期", - "第3四半期", - "第4四半期" - ], - "days-format-wide": [ - "日曜日", - "月曜日", - "火曜日", - "水曜日", - "木曜日", - "金曜日", - "土曜日" - ], - "dateFormatItem-h": "aK時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ja/number.js.uncompressed.js b/lib/dojo/cldr/nls/ja/number.js.uncompressed.js deleted file mode 100644 index c68365db5..000000000 --- a/lib/dojo/cldr/nls/ja/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ja/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00", - "plusSign": "+", - "decimalFormat-long": "000兆", - "decimalFormat-short": "000兆" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ko/buddhist.js.uncompressed.js deleted file mode 100644 index cb8c0da53..000000000 --- a/lib/dojo/cldr/nls/ko/buddhist.js.uncompressed.js +++ /dev/null @@ -1,145 +0,0 @@ -define( -"dojo/cldr/nls/ko/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "G y. M.", - "dateFormatItem-yQ": "G y년 Q분기", - "dayPeriods-format-wide-pm": "오후", - "eraNames": [ - "불기" - ], - "dateFormatItem-MMMEd": "MMM d일 (E)", - "dateFormatItem-hms": "a h:mm:ss", - "dateFormatItem-yQQQ": "G y년 QQQ", - "dateFormatItem-MMdd": "MM. dd", - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "dateFormatItem-Gy": "G y년", - "dayPeriods-format-wide-am": "오전", - "dateFormatItem-y": "G y년", - "timeFormat-full": "a h시 m분 s초 zzzz", - "dateFormatItem-EEEEd": "d일 EEEE", - "dateFormatItem-Ed": "d일 (E)", - "dateFormatItem-yMMM": "G y년 MMM", - "days-standAlone-narrow": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "eraAbbr": [ - "불기" - ], - "dateFormatItem-yyyyMM": "G y. MM", - "dateFormat-long": "G y년 M월 d일", - "timeFormat-medium": "a h:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "G yy. M.", - "dateFormat-medium": "G y. M. d", - "dateFormatItem-Hms": "H시 m분 s초", - "dateFormatItem-yyMMM": "G y년 MMM", - "dateFormatItem-yMMMEEEEd": "G y년 MMM d일 EEEE", - "dateFormatItem-yMd": "G y. M. d.", - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-MMMd": "MMM d일", - "dateFormatItem-yyQ": "G y년 Q분기", - "timeFormat-long": "a h시 m분 s초 z", - "dateFormatItem-H": "H시", - "timeFormat-short": "a h:mm", - "quarters-format-abbr": [ - "1분기", - "2분기", - "3분기", - "4분기" - ], - "days-format-abbr": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-mmss": "mm:ss", - "dateFormatItem-M": "M월", - "dateFormatItem-yMMMd": "G y년 MMM d일", - "dateFormatItem-MEEEEd": "M. d. EEEE", - "dateFormatItem-MEd": "M. d. (E)", - "days-standAlone-short": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-hm": "a h:mm", - "dateFormat-short": "G y. M. d", - "dateFormatItem-yMMMEd": "G y년 MMM d일 (E)", - "dateFormat-full": "G y년 M월 d일 EEEE", - "dateFormatItem-Md": "M. d.", - "dateFormatItem-yMEd": "G y. M. d. (E)", - "months-format-wide": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "days-format-short": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-d": "d일", - "quarters-format-wide": [ - "제 1/4분기", - "제 2/4분기", - "제 3/4분기", - "제 4/4분기" - ], - "eraNarrow": [ - "불기" - ], - "days-format-wide": [ - "일요일", - "월요일", - "화요일", - "수요일", - "목요일", - "금요일", - "토요일" - ], - "dateFormatItem-h": "a h시" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ko/currency.js.uncompressed.js deleted file mode 100644 index bd1512840..000000000 --- a/lib/dojo/cldr/nls/ko/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/ko/currency", //begin v1.x content -{ - "HKD_displayName": "홍콩 달러", - "CHF_displayName": "스위스 프랑", - "CAD_displayName": "캐나다 달러", - "CNY_displayName": "중국 위안 인민폐", - "AUD_displayName": "호주 달러", - "JPY_displayName": "일본 엔화", - "USD_displayName": "미국 달러", - "GBP_displayName": "영국령 파운드 스털링", - "AUD_symbol": "AU$", - "EUR_displayName": "유로화" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ko/gregorian.js.uncompressed.js deleted file mode 100644 index 6bef25b18..000000000 --- a/lib/dojo/cldr/nls/ko/gregorian.js.uncompressed.js +++ /dev/null @@ -1,283 +0,0 @@ -define( -"dojo/cldr/nls/ko/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "months-format-narrow": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "요일", - "dateFormatItem-yQQQ": "y년 QQQ", - "dateFormatItem-yMEd": "yyyy. M. d. (E)", - "dateFormatItem-MMMEd": "MMM d일 (E)", - "eraNarrow": [ - "기원전", - "서기" - ], - "days-format-short": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormat-long": "y년 M월 d일", - "months-format-wide": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "오후", - "dateFormat-full": "y년 M월 d일 EEEE", - "dateFormatItem-Md": "M. d.", - "dateFormatItem-yMd": "yyyy. M. d.", - "field-era": "연호", - "dateFormatItem-yM": "yyyy. M.", - "months-standAlone-wide": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "timeFormat-short": "a h:mm", - "quarters-format-wide": [ - "제 1/4분기", - "제 2/4분기", - "제 3/4분기", - "제 4/4분기" - ], - "dateFormatItem-MEEEEd": "M. d. EEEE", - "timeFormat-long": "a h시 m분 s초 z", - "field-year": "년", - "dateFormatItem-yMMM": "y년 MMM", - "dateFormatItem-yQ": "y년 Q분기", - "field-hour": "시", - "dateFormatItem-MMdd": "MM. dd", - "months-format-abbr": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "dateFormatItem-yyQ": "yy년 Q분기", - "timeFormat-full": "a h시 m분 s초 zzzz", - "field-day-relative+0": "오늘", - "field-day-relative+1": "내일", - "field-day-relative+2": "모레", - "dateFormatItem-H": "H시", - "months-standAlone-abbr": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "quarters-format-abbr": [ - "1분기", - "2분기", - "3분기", - "4분기" - ], - "quarters-standAlone-wide": [ - "제 1/4분기", - "제 2/4분기", - "제 3/4분기", - "제 4/4분기" - ], - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-M": "M월", - "days-standAlone-wide": [ - "일요일", - "월요일", - "화요일", - "수요일", - "목요일", - "금요일", - "토요일" - ], - "dateFormatItem-yMMMEEEEd": "y년 MMM d일 EEEE", - "dateFormatItem-yyMMM": "yy년 MMM", - "timeFormat-medium": "a h:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "1분기", - "2분기", - "3분기", - "4분기" - ], - "eraAbbr": [ - "기원전", - "서기" - ], - "field-minute": "분", - "field-dayperiod": "오전/오후", - "days-standAlone-abbr": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-d": "d일", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "어제", - "dateFormatItem-h": "a h시", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "그저께", - "dateFormatItem-MMMd": "MMM d일", - "dateFormatItem-EEEEd": "d일 EEEE", - "dateFormatItem-MEd": "M. d. (E)", - "dateTimeFormat-full": "{1} {0}", - "field-day": "일", - "days-format-wide": [ - "일요일", - "월요일", - "화요일", - "수요일", - "목요일", - "금요일", - "토요일" - ], - "field-zone": "시간대", - "dateFormatItem-yyyyMM": "yyyy. MM", - "dateFormatItem-y": "y년", - "months-standAlone-narrow": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "field-year-relative+-1": "지난해", - "field-month-relative+-1": "지난달", - "dateFormatItem-yyMM": "yy. M.", - "dateFormatItem-hm": "a h:mm", - "days-format-abbr": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-yMMMd": "y년 MMM d일", - "eraNames": [ - "서력기원전", - "서력기원" - ], - "days-format-narrow": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "field-month": "월", - "days-standAlone-narrow": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "오전", - "dateFormat-short": "yy. M. d.", - "field-second": "초", - "dateFormatItem-yMMMEd": "y년 MMM d일 (E)", - "field-month-relative+0": "이번 달", - "field-month-relative+1": "다음 달", - "dateFormatItem-Ed": "d일 (E)", - "field-week": "주", - "dateFormat-medium": "yyyy. M. d.", - "field-year-relative+0": "올해", - "field-week-relative+-1": "지난주", - "field-year-relative+1": "내년", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H시 m분 s초", - "dateFormatItem-hms": "a h:mm:ss", - "field-week-relative+0": "이번 주", - "field-week-relative+1": "다음 주" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ko/number.js.uncompressed.js b/lib/dojo/cldr/nls/ko/number.js.uncompressed.js deleted file mode 100644 index 84962ade0..000000000 --- a/lib/dojo/cldr/nls/ko/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ko/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000조", - "decimalFormat-short": "000조" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/nb/buddhist.js.uncompressed.js deleted file mode 100644 index 93dd3e1b3..000000000 --- a/lib/dojo/cldr/nls/nb/buddhist.js.uncompressed.js +++ /dev/null @@ -1,224 +0,0 @@ -define( -"dojo/cldr/nls/nb/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M y G", - "dateFormatItem-yQ": "Q y G", - "dateFormatItem-MMMEd": "E d. MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd.MM", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "mai", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "des" - ], - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d. MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM.y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d.M.y G", - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-ms": "mm.ss", - "dayPeriods-format-narrow-am": "a", - "months-standAlone-wide": [ - "januar", - "februar", - "mars", - "april", - "mai", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "desember" - ], - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "jan.", - "feb.", - "mars", - "apr.", - "mai", - "juni", - "juli", - "aug.", - "sep.", - "okt.", - "nov.", - "des." - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y G", - "dateFormatItem-MEd": "E d.M", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dayPeriods-format-abbr-pm": "p.m.", - "dateFormat-short": "d.M yyyy", - "dateFormatItem-yMMMEd": "E d. MMM y G", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yMEd": "E d.M.y G", - "months-format-wide": [ - "januar", - "februar", - "mars", - "april", - "mai", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "desember" - ], - "dayPeriods-format-abbr-am": "a.m.", - "days-format-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormatItem-d": "d.", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/currency.js.uncompressed.js b/lib/dojo/cldr/nls/nb/currency.js.uncompressed.js deleted file mode 100644 index f227c298e..000000000 --- a/lib/dojo/cldr/nls/nb/currency.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define( -"dojo/cldr/nls/nb/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkong-dollar", - "CHF_displayName": "sveitsiske franc", - "CAD_displayName": "kanadiske dollar", - "CNY_displayName": "kinesiske yuan", - "AUD_displayName": "australske dollar", - "JPY_displayName": "japanske yen", - "USD_displayName": "amerikanske dollar", - "EUR_symbol": "€", - "GBP_displayName": "britiske pund sterling", - "GBP_symbol": "£", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/nb/gregorian.js.uncompressed.js deleted file mode 100644 index daae4fb2b..000000000 --- a/lib/dojo/cldr/nls/nb/gregorian.js.uncompressed.js +++ /dev/null @@ -1,283 +0,0 @@ -define( -"dojo/cldr/nls/nb/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "ukedag", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d.MM.y", - "dateFormatItem-MMMEd": "E d. MMM", - "eraNarrow": [ - "f.Kr.", - "e.Kr." - ], - "days-format-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormat-long": "d. MMMM y", - "months-format-wide": [ - "januar", - "februar", - "mars", - "april", - "mai", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "desember" - ], - "dateTimeFormat-medium": "{0} {1}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE d. MMMM y", - "dateFormatItem-Md": "d.M.", - "dayPeriods-format-abbr-am": "a.m.", - "dateFormatItem-yMd": "d.M.yyyy", - "dateFormatItem-yM": "M y", - "field-era": "tidsalder", - "months-standAlone-wide": [ - "januar", - "februar", - "mars", - "april", - "mai", - "juni", - "juli", - "august", - "september", - "oktober", - "november", - "desember" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "timeFormat-long": "HH:mm:ss z", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q yyyy", - "field-year": "år", - "dateFormatItem-yyyyMMMM": "MMMM y", - "dateFormatItem-MMdd": "d.M.", - "field-hour": "time", - "months-format-abbr": [ - "jan.", - "feb.", - "mars", - "apr.", - "mai", - "juni", - "juli", - "aug.", - "sep.", - "okt.", - "nov.", - "des." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "field-day-relative+0": "i dag", - "field-day-relative+1": "i morgen", - "field-day-relative+2": "i overmorgen", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "mai", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "des" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "eraAbbr": [ - "f.Kr.", - "e.Kr." - ], - "field-minute": "minutt", - "field-dayperiod": "AM/PM", - "days-standAlone-abbr": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormatItem-d": "d.", - "dateFormatItem-ms": "mm.ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "i går", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{0} {1}", - "dayPeriods-format-narrow-am": "a", - "field-day-relative+-2": "i forgårs", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-MEd": "E d.M", - "dateTimeFormat-full": "{0} {1}", - "field-day": "dag", - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "field-zone": "sone", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "I fjor", - "field-month-relative+-1": "Sist måned", - "dateFormatItem-yyMM": "MM.yy", - "dateFormatItem-hm": "h:mm a", - "dayPeriods-format-abbr-pm": "p.m.", - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-yMMMd": "d. MMM y", - "eraNames": [ - "f.Kr.", - "e.Kr." - ], - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "måned", - "dayPeriods-format-wide-am": "AM", - "dateFormat-short": "dd.MM.yy", - "field-second": "sekund", - "dateFormatItem-yMMMEd": "E d. MMM y", - "field-month-relative+0": "Denne måneden", - "field-month-relative+1": "Neste måned", - "dateFormatItem-Ed": "E d.", - "field-week": "uke", - "dateFormat-medium": "d. MMM y", - "field-year-relative+0": "Dette året", - "field-week-relative+-1": "Sist uke", - "field-year-relative+1": "Neste år", - "dayPeriods-format-narrow-pm": "p", - "dateTimeFormat-short": "{0} {1}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Denne uken", - "field-week-relative+1": "Neste uke" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/nb/islamic.js.uncompressed.js deleted file mode 100644 index 3d534271c..000000000 --- a/lib/dojo/cldr/nls/nb/islamic.js.uncompressed.js +++ /dev/null @@ -1,151 +0,0 @@ -define( -"dojo/cldr/nls/nb/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M y", - "dateFormatItem-yyyyMMMEd": "E d. MMM y G", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-MMMEd": "E d. MMM", - "dateTimeFormat-full": "{0} {1}", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd.MM", - "days-standAlone-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormat-short": "{0} {1}", - "dateTimeFormat-medium": "{0} {1}", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E d.", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d. MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM.y G", - "dateFormat-medium": "d. MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM y G", - "dateFormatItem-yyQQQQ": "QQQQ y G", - "dateFormatItem-yMd": "d.M.yyyy", - "quarters-standAlone-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "dateFormatItem-ms": "mm.ss", - "dayPeriods-format-narrow-am": "a", - "dateTimeFormat-long": "{0} {1}", - "dateFormatItem-yyyyMd": "d.M.y G", - "dateFormatItem-yyyyMMMd": "d. MMM y G", - "dateFormatItem-yyyyMEd": "E d.M.y G", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-yyQ": "Q y G", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "søn.", - "man.", - "tir.", - "ons.", - "tor.", - "fre.", - "lør." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d. MMM y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E d.M", - "days-standAlone-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dayPeriods-format-abbr-pm": "p.m.", - "dateFormat-short": "d.M y G", - "dateFormatItem-yyyyM": "M y G", - "dateFormatItem-yMMMEd": "E d. MMM y", - "dateFormat-full": "EEEE d. MMMM y G", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "E d.MM.y", - "dayPeriods-format-abbr-am": "a.m.", - "days-format-short": [ - "sø.", - "ma.", - "ti.", - "on.", - "to.", - "fr.", - "lø." - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d.", - "quarters-format-wide": [ - "1. kvartal", - "2. kvartal", - "3. kvartal", - "4. kvartal" - ], - "days-format-wide": [ - "søndag", - "mandag", - "tirsdag", - "onsdag", - "torsdag", - "fredag", - "lørdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nb/number.js.uncompressed.js b/lib/dojo/cldr/nls/nb/number.js.uncompressed.js deleted file mode 100644 index 94738c842..000000000 --- a/lib/dojo/cldr/nls/nb/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/nb/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤ #,##0.00", - "plusSign": "+", - "decimalFormat-long": "000 billioner", - "decimalFormat-short": "000 bill" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/nl/buddhist.js.uncompressed.js deleted file mode 100644 index faea9ba53..000000000 --- a/lib/dojo/cldr/nls/nl/buddhist.js.uncompressed.js +++ /dev/null @@ -1,218 +0,0 @@ -define( -"dojo/cldr/nls/nl/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M-y G", - "dateFormatItem-yQ": "Q y G", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd-MM", - "days-standAlone-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-y": "y G", - "months-standAlone-abbr": [ - "jan", - "feb", - "mrt", - "apr", - "mei", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d-MM", - "dateFormatItem-yyMM": "MM-yy G", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-yyMMM": "MMM yy G", - "dateFormatItem-yyQQQQ": "QQQQ yy G", - "dateFormatItem-yMd": "d-M-y G", - "quarters-standAlone-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "dateFormatItem-ms": "mm:ss", - "months-standAlone-wide": [ - "januari", - "februari", - "maart", - "april", - "mei", - "juni", - "juli", - "augustus", - "september", - "oktober", - "november", - "december" - ], - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "jan.", - "feb.", - "mrt.", - "apr.", - "mei", - "jun.", - "jul.", - "aug.", - "sep.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "days-format-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E d-M", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "days-standAlone-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormat-short": "dd-MM-yy G", - "dateFormatItem-yMMMEd": "E d MMM y G", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d-M", - "dateFormatItem-yMEd": "E d-M-y G", - "months-format-wide": [ - "januari", - "februari", - "maart", - "april", - "mei", - "juni", - "juli", - "augustus", - "september", - "oktober", - "november", - "december" - ], - "days-format-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "days-format-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/currency.js.uncompressed.js b/lib/dojo/cldr/nls/nl/currency.js.uncompressed.js deleted file mode 100644 index 195f201db..000000000 --- a/lib/dojo/cldr/nls/nl/currency.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/nl/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkongse dollar", - "CHF_displayName": "Zwitserse frank", - "JPY_symbol": "JP¥", - "CAD_displayName": "Canadese dollar", - "HKD_symbol": "HK$", - "CNY_displayName": "Chinese yuan renminbi", - "USD_symbol": "US$", - "AUD_displayName": "Australische dollar", - "JPY_displayName": "Japanse yen", - "CAD_symbol": "C$", - "USD_displayName": "Amerikaanse dollar", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "Brits pond sterling", - "AUD_symbol": "AU $", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/nl/gregorian.js.uncompressed.js deleted file mode 100644 index 28389dc90..000000000 --- a/lib/dojo/cldr/nls/nl/gregorian.js.uncompressed.js +++ /dev/null @@ -1,284 +0,0 @@ -define( -"dojo/cldr/nls/nl/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Dag van de week", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d-M-y", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "v.Chr.", - "n.Chr." - ], - "days-format-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "januari", - "februari", - "maart", - "april", - "mei", - "juni", - "juli", - "augustus", - "september", - "oktober", - "november", - "december" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE d MMMM y", - "dateFormatItem-Md": "d-M", - "dayPeriods-format-wide-noon": "12 uur 's middags", - "dateFormatItem-yMd": "d-M-y", - "field-era": "Tijdperk", - "dateFormatItem-yM": "M-y", - "months-standAlone-wide": [ - "januari", - "februari", - "maart", - "april", - "mei", - "juni", - "juli", - "augustus", - "september", - "oktober", - "november", - "december" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Jaar", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "Uur", - "dateFormatItem-MMdd": "dd-MM", - "months-format-abbr": [ - "jan.", - "feb.", - "mrt.", - "apr.", - "mei", - "jun.", - "jul.", - "aug.", - "sep.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Vandaag", - "field-day-relative+1": "Morgen", - "field-day-relative+2": "Overmorgen", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "feb", - "mrt", - "apr", - "mei", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "quarters-standAlone-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "dateFormatItem-MMMMd": "d MMMM", - "dayPeriods-format-abbr-noon": "12 uur 's middags", - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "eraAbbr": [ - "v.Chr.", - "n.Chr." - ], - "field-minute": "Minuut", - "field-dayperiod": "AM/PM", - "days-standAlone-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Gisteren", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Eergisteren", - "dateFormatItem-MMMd": "d-MMM", - "dateFormatItem-MEd": "E d-M", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Dag", - "days-format-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "field-zone": "Zone", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Vorig jaar", - "field-month-relative+-1": "Vorige maand", - "dateFormatItem-yyMM": "MM-yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "Voor Christus", - "na Christus" - ], - "days-format-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "days-standAlone-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Maand", - "dayPeriods-format-wide-am": "AM", - "dateFormat-short": "dd-MM-yy", - "dateFormatItem-MMd": "d-MM", - "dayPeriods-format-narrow-noon": "n", - "field-second": "Seconde", - "dateFormatItem-yMMMEd": "E d MMM y", - "field-month-relative+0": "Deze maand", - "field-month-relative+1": "Volgende maand", - "dateFormatItem-Ed": "E d", - "field-week": "week", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "Dit jaar", - "field-week-relative+-1": "Vorige week", - "field-year-relative+1": "Volgend jaar", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Deze week", - "field-week-relative+1": "Volgende week" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/nl/hebrew.js.uncompressed.js deleted file mode 100644 index f093a516e..000000000 --- a/lib/dojo/cldr/nls/nl/hebrew.js.uncompressed.js +++ /dev/null @@ -1,180 +0,0 @@ -define( -"dojo/cldr/nls/nl/hebrew", //begin v1.x content -{ - "quarters-standAlone-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-yMd": "d-M-y", - "dateFormat-medium": "d MMM y", - "dateFormatItem-MMMEd": "E d MMM", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-MEd": "E d-M", - "dateFormatItem-yMEd": "E d-M-y", - "dateFormatItem-yMMMd": "d MMM y", - "days-format-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-Md": "d-M", - "months-standAlone-wide": [ - "Tisjrie", - "Chesjwan", - "Kislev", - "Tevet", - "Sjevat", - "Adar A", - "Adar", - "Nisan", - "Ijar", - "Sivan", - "Tammoez", - "Av", - "Elloel" - ], - "months-format-wide-leap": "Adar B", - "days-standAlone-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "months-standAlone-abbr": [ - "Tisjrie", - "Chesjwan", - "Kislev", - "Tevet", - "Sjevat", - "Adar A", - "Adar", - "Nisan", - "Ijar", - "Sivan", - "Tammoez", - "Av", - "Elloel" - ], - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-short": "dd-MM-yy", - "dateFormatItem-yMMMEd": "E d MMM y", - "months-format-wide": [ - "Tisjrie", - "Chesjwan", - "Kislev", - "Tevet", - "Sjevat", - "Adar A", - "Adar", - "Nisan", - "Ijar", - "Sivan", - "Tammoez", - "Av", - "Elloel" - ], - "days-standAlone-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "days-format-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "dateFormatItem-yM": "M-y", - "months-format-abbr": [ - "Tisjrie", - "Chesjwan", - "Kislev", - "Tevet", - "Sjevat", - "Adar A", - "Adar", - "Nisan", - "Ijar", - "Sivan", - "Tammoez", - "Av", - "Elloel" - ], - "days-standAlone-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "days-format-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yMMM": "MMM y", - "quarters-format-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "dateFormat-full": "EEEE d MMMM y", - "dateFormatItem-MMMd": "d-MMM", - "days-format-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-Ed": "E d" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/nl/islamic.js.uncompressed.js deleted file mode 100644 index ca4a961d7..000000000 --- a/lib/dojo/cldr/nls/nl/islamic.js.uncompressed.js +++ /dev/null @@ -1,220 +0,0 @@ -define( -"dojo/cldr/nls/nl/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M-y", - "dateFormatItem-yyyyMMMEd": "E d MMM y G", - "dateFormatItem-yQ": "Q yyyy", - "eraNames": [ - "Saʻna Hizjria" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-MMdd": "dd-MM", - "days-standAlone-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Moeh.", - "Saf.", - "Rab. I", - "Rab. II", - "Joem. I", - "Joem. II", - "Raj.", - "Sja.", - "Ram.", - "Sjaw.", - "Doe al k.", - "Doe al h." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "eraAbbr": [ - "Saʻna Hizjria" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d-MM", - "dateFormatItem-yyMM": "MM-yy G", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-yyMMM": "MMM yy G", - "dateFormatItem-yyQQQQ": "QQQQ yy G", - "dateFormatItem-yMd": "d-M-y", - "quarters-standAlone-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "dateFormatItem-ms": "mm:ss", - "months-standAlone-wide": [ - "Moeharram", - "Safar", - "Rabiʻa al awal", - "Rabiʻa al thani", - "Joemadʻal awal", - "Joemadʻal thani", - "Rajab", - "Sjaʻaban", - "Ramadan", - "Sjawal", - "Doe al kaʻaba", - "Doe al hizja" - ], - "dateFormatItem-yyyyMd": "d-M-y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyyyMEd": "E d-M-y G", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "Moeh.", - "Saf.", - "Rab. I", - "Rab. II", - "Joem. I", - "Joem. II", - "Raj.", - "Sja.", - "Ram.", - "Sjaw.", - "Doe al k.", - "Doe al h." - ], - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "Z", - "M", - "D", - "W", - "D", - "V", - "Z" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateFormatItem-MEd": "E d-M", - "days-standAlone-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "days-standAlone-abbr": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormat-short": "dd-MM-yy G", - "dateFormatItem-yyyyM": "M-y G", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d-M", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "E d-M-y", - "months-format-wide": [ - "Moeharram", - "Safar", - "Rabiʻa al awal", - "Rabiʻa al thani", - "Joemadʻal awal", - "Joemadʻal thani", - "Rajab", - "Sjaʻaban", - "Ramadan", - "Sjawal", - "Doe al kaʻaba", - "Doe al hizja" - ], - "days-format-short": [ - "zo", - "ma", - "di", - "wo", - "do", - "vr", - "za" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1e kwartaal", - "2e kwartaal", - "3e kwartaal", - "4e kwartaal" - ], - "eraNarrow": [ - "Saʻna Hizjria" - ], - "days-format-wide": [ - "zondag", - "maandag", - "dinsdag", - "woensdag", - "donderdag", - "vrijdag", - "zaterdag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/nl/number.js.uncompressed.js b/lib/dojo/cldr/nls/nl/number.js.uncompressed.js deleted file mode 100644 index 321d0d44b..000000000 --- a/lib/dojo/cldr/nls/nl/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/nl/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤ #,##0.00;¤ #,##0.00-", - "plusSign": "+", - "decimalFormat-long": "000 biljoen", - "decimalFormat-short": "000 bln'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/number.js.uncompressed.js b/lib/dojo/cldr/nls/number.js.uncompressed.js deleted file mode 100644 index 528a1089c..000000000 --- a/lib/dojo/cldr/nls/number.js.uncompressed.js +++ /dev/null @@ -1,63 +0,0 @@ -define("dojo/cldr/nls/number", { root: - -//begin v1.x content -{ - "scientificFormat": "#E0", - "currencySpacing-afterCurrency-currencyMatch": "[:letter:]", - "infinity": "∞", - "list": ";", - "percentSign": "%", - "minusSign": "-", - "currencySpacing-beforeCurrency-surroundingMatch": "[:digit:]", - "decimalFormat-short": "000T", - "currencySpacing-afterCurrency-insertBetween": " ", - "nan": "NaN", - "plusSign": "+", - "currencySpacing-afterCurrency-surroundingMatch": "[:digit:]", - "currencySpacing-beforeCurrency-currencyMatch": "[:letter:]", - "currencyFormat": "¤ #,##0.00", - "perMille": "‰", - "group": ",", - "percentFormat": "#,##0%", - "decimalFormat-long": "000T", - "decimalFormat": "#,##0.###", - "decimal": ".", - "currencySpacing-beforeCurrency-insertBetween": " ", - "exponential": "E" -} -//end v1.x content -, - "ar": true, - "ca": true, - "cs": true, - "da": true, - "de": true, - "el": true, - "en": true, - "en-gb": true, - "es": true, - "fi": true, - "fr": true, - "fr-ch": true, - "he": true, - "hu": true, - "it": true, - "ja": true, - "ko": true, - "nb": true, - "nl": true, - "pl": true, - "pt": true, - "pt-pt": true, - "ro": true, - "ru": true, - "sk": true, - "sl": true, - "sv": true, - "th": true, - "tr": true, - "zh": true, - "zh-hant": true, - "zh-hk": true, - "zh-tw": true -}); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/pl/buddhist.js.uncompressed.js deleted file mode 100644 index 491db0b81..000000000 --- a/lib/dojo/cldr/nls/pl/buddhist.js.uncompressed.js +++ /dev/null @@ -1,227 +0,0 @@ -define( -"dojo/cldr/nls/pl/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM.yyyy G", - "dateFormatItem-yQ": "G y Q", - "dateFormatItem-MMMEd": "E, d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "G y QQQ", - "dateFormatItem-MMdd": "d.MM", - "days-standAlone-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "s", - "l", - "m", - "k", - "m", - "c", - "l", - "s", - "w", - "p", - "l", - "g" - ], - "dateFormatItem-Gy": "y G", - "quarters-standAlone-abbr": [ - "1 kw.", - "2 kw.", - "3 kw.", - "4 kw." - ], - "dateFormatItem-y": "y G", - "months-standAlone-abbr": [ - "sty", - "lut", - "mar", - "kwi", - "maj", - "cze", - "lip", - "sie", - "wrz", - "paź", - "lis", - "gru" - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "LLL y G", - "days-standAlone-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-yyyyMM": "MM.yyyy G", - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormat-long": "d MMMM, y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "LLL y G", - "dateFormatItem-yMd": "d.MM.yyyy G", - "quarters-standAlone-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "dateFormatItem-yMMMM": "LLLL y G", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "K1", - "K2", - "K3", - "K4" - ], - "months-standAlone-wide": [ - "styczeń", - "luty", - "marzec", - "kwiecień", - "maj", - "czerwiec", - "lipiec", - "sierpień", - "wrzesień", - "październik", - "listopad", - "grudzień" - ], - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "sty", - "lut", - "mar", - "kwi", - "maj", - "cze", - "lip", - "sie", - "wrz", - "paź", - "lis", - "gru" - ], - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E, d.MM", - "months-format-narrow": [ - "s", - "l", - "m", - "k", - "m", - "c", - "l", - "s", - "w", - "p", - "l", - "g" - ], - "days-standAlone-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-hm": "hh:mm a", - "days-standAlone-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormat-short": "dd.MM.yyyy G", - "dateFormatItem-yMMMEd": "E, d MMM y G", - "dateFormat-full": "EEEE, d MMMM, y G", - "dateFormatItem-Md": "d.MM", - "dateFormatItem-yMEd": "E, d.MM.yyyy G", - "months-format-wide": [ - "stycznia", - "lutego", - "marca", - "kwietnia", - "maja", - "czerwca", - "lipca", - "sierpnia", - "września", - "października", - "listopada", - "grudnia" - ], - "days-format-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "days-format-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/currency.js.uncompressed.js b/lib/dojo/cldr/nls/pl/currency.js.uncompressed.js deleted file mode 100644 index 0565ebc8a..000000000 --- a/lib/dojo/cldr/nls/pl/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/pl/currency", //begin v1.x content -{ - "HKD_displayName": "dolar hongkoński", - "CHF_displayName": "frank szwajcarski", - "CAD_displayName": "dolar kanadyjski", - "CNY_displayName": "juan renminbi", - "AUD_displayName": "dolar australijski", - "JPY_displayName": "jen japoński", - "USD_displayName": "dolar amerykański ", - "GBP_displayName": "funt szterling", - "AUD_symbol": "A$", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/pl/gregorian.js.uncompressed.js deleted file mode 100644 index 9c16e654b..000000000 --- a/lib/dojo/cldr/nls/pl/gregorian.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define( -"dojo/cldr/nls/pl/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "months-format-narrow": [ - "s", - "l", - "m", - "k", - "m", - "c", - "l", - "s", - "w", - "p", - "l", - "g" - ], - "quarters-standAlone-narrow": [ - "K1", - "K2", - "K3", - "K4" - ], - "field-weekday": "Dzień tygodnia", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, d.MM.yyyy", - "dateFormatItem-MMMEd": "E, d MMM", - "eraNarrow": [ - "p.n.e.", - "n.e." - ], - "dayPeriods-format-wide-earlyMorning": "nad ranem", - "dayPeriods-format-wide-morning": "rano", - "days-format-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "stycznia", - "lutego", - "marca", - "kwietnia", - "maja", - "czerwca", - "lipca", - "sierpnia", - "września", - "października", - "listopada", - "grudnia" - ], - "dayPeriods-format-wide-evening": "wieczorem", - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "d.MM", - "dayPeriods-format-wide-noon": "w południe", - "dateFormatItem-yMd": "d.MM.yyyy", - "field-era": "Era", - "dateFormatItem-yM": "MM.yyyy", - "months-standAlone-wide": [ - "styczeń", - "luty", - "marzec", - "kwiecień", - "maj", - "czerwiec", - "lipiec", - "sierpień", - "wrzesień", - "październik", - "listopad", - "grudzień" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Rok", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "QQQ y", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "Godzina", - "dateFormatItem-MMdd": "d.MM", - "months-format-abbr": [ - "sty", - "lut", - "mar", - "kwi", - "maj", - "cze", - "lip", - "sie", - "wrz", - "paź", - "lis", - "gru" - ], - "dateFormatItem-yyQ": "QQQ yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Dzisiaj", - "field-day-relative+1": "Jutro", - "field-day-relative+2": "Pojutrze", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "sty", - "lut", - "mar", - "kwi", - "maj", - "cze", - "lip", - "sie", - "wrz", - "paź", - "lis", - "gru" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "quarters-standAlone-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-MMMMd": "d MMMM", - "dateFormatItem-yyMMM": "LLLL yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "1 kw.", - "2 kw.", - "3 kw.", - "4 kw." - ], - "eraAbbr": [ - "p.n.e.", - "n.e." - ], - "field-minute": "Minuta", - "field-dayperiod": "Dayperiod", - "days-standAlone-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dayPeriods-format-wide-night": "w nocy", - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Wczoraj", - "dateFormatItem-h": "hh a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Przedwczoraj", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, d.MM", - "dayPeriods-format-wide-lateMorning": "przed południem", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "LLLL y", - "field-day": "Dzień", - "days-format-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "field-zone": "Strefa", - "dateFormatItem-yyyyMM": "MM.yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "s", - "l", - "m", - "k", - "m", - "c", - "l", - "s", - "w", - "p", - "l", - "g" - ], - "field-year-relative+-1": "Zeszły rok", - "field-month-relative+-1": "Zeszły miesiąc", - "dateFormatItem-hm": "hh:mm a", - "days-format-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "p.n.e.", - "n.e." - ], - "days-format-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "days-standAlone-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Miesiąc", - "dayPeriods-format-wide-am": "AM", - "dateFormat-short": "dd.MM.yyyy", - "dayPeriods-format-wide-afternoon": "po południu", - "field-second": "Sekunda", - "dateFormatItem-yMMMEd": "E, d MMM y", - "field-month-relative+0": "Bieżący miesiąc", - "field-month-relative+1": "Przyszły miesiąc", - "dateFormatItem-Ed": "E, d", - "field-week": "Tydzień", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "Bieżący rok", - "field-week-relative+-1": "Zeszły tydzień", - "field-year-relative+1": "Przyszły rok", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "hh:mm:ss a", - "field-week-relative+0": "Bieżący tydzień", - "field-week-relative+1": "Przyszły tydzień" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/pl/hebrew.js.uncompressed.js deleted file mode 100644 index 91693e992..000000000 --- a/lib/dojo/cldr/nls/pl/hebrew.js.uncompressed.js +++ /dev/null @@ -1,193 +0,0 @@ -define( -"dojo/cldr/nls/pl/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MM.yyyy", - "dateFormatItem-yQ": "QQQ y", - "dateFormatItem-MMMEd": "E, d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-medium": "{1}, {0}", - "months-format-abbr-leap": "Adar II", - "quarters-standAlone-abbr": [ - "1 kw.", - "2 kw.", - "3 kw.", - "4 kw." - ], - "months-standAlone-abbr": [ - "Tiszri", - "Cheszwan", - "Kislew", - "Tewet", - "Szwat", - "Adar I", - "Adar", - "Nisan", - "Ijar", - "Siwan", - "Tamuz", - "Aw", - "Elul" - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-medium": "d MMM y", - "dateFormatItem-yMd": "d.MM.yyyy", - "quarters-standAlone-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "quarters-standAlone-narrow": [ - "K1", - "K2", - "K3", - "K4" - ], - "months-standAlone-wide": [ - "Tiszri", - "Cheszwan", - "Kislew", - "Tewet", - "Szwat", - "Adar I", - "Adar", - "Nisan", - "Ijar", - "Siwan", - "Tamuz", - "Aw", - "Elul" - ], - "dateFormatItem-MMMd": "d MMM", - "months-format-abbr": [ - "Tiszri", - "Cheszwan", - "Kislew", - "Tewet", - "Szwat", - "Adar I", - "Adar", - "Nisan", - "Ijar", - "Siwan", - "Tamuz", - "Aw", - "Elul" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "days-format-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d.MM", - "days-standAlone-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-hm": "hh:mm a", - "days-standAlone-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "months-standAlone-wide-leap": "Adar II", - "dateFormat-short": "dd.MM.yyyy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "d.MM", - "dateFormatItem-yMEd": "E, d.MM.yyyy", - "months-format-wide": [ - "Tiszri", - "Cheszwan", - "Kislew", - "Tewet", - "Szwat", - "Adar I", - "Adar", - "Nisan", - "Ijar", - "Siwan", - "Tamuz", - "Aw", - "Elul" - ], - "days-format-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "quarters-format-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "months-format-wide-leap": "Adar II", - "days-format-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/pl/islamic.js.uncompressed.js deleted file mode 100644 index 4a919c90b..000000000 --- a/lib/dojo/cldr/nls/pl/islamic.js.uncompressed.js +++ /dev/null @@ -1,222 +0,0 @@ -define( -"dojo/cldr/nls/pl/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "MM.yyyy", - "dateFormatItem-yyyyMMMEd": "E, d MMM y G", - "dateFormatItem-yQ": "yyyy Q", - "dateFormatItem-MMMEd": "E, d MMM", - "dateFormatItem-hms": "hh:mm:ss a", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-MMdd": "d.MM", - "days-standAlone-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-medium": "{1}, {0}", - "quarters-standAlone-abbr": [ - "1 kw.", - "2 kw.", - "3 kw.", - "4 kw." - ], - "dateFormatItem-y": "y", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Dżu. I", - "Dżu. II", - "Ra.", - "Sza.", - "Ram.", - "Szaw.", - "Zu al-k.", - "Zu al-h." - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-yyyyMM": "MM.yyyy G", - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormat-long": "d MMMM, y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "LLL yy G", - "dateFormatItem-yMd": "d.MM.yyyy", - "quarters-standAlone-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "dateFormatItem-yMMMM": "LLLL y", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "K1", - "K2", - "K3", - "K4" - ], - "months-standAlone-wide": [ - "Muharram", - "Safar", - "Rabi I", - "Rabi II", - "Dżumada I", - "Dżumada II", - "Radżab", - "Szaban", - "Ramadan", - "Szawwal", - "Zu al-kada", - "Zu al-hidżdża" - ], - "dateFormatItem-yyyyMd": "dd.MM.yyyy G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyyyMEd": "E, dd.MM.yyyy G", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q y G", - "months-format-abbr": [ - "Muh.", - "Saf.", - "Rab. I", - "Rab. II", - "Dżu. I", - "Dżu. II", - "Ra.", - "Sza.", - "Ram.", - "Szaw.", - "Zu al-k.", - "Zu al-h." - ], - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "N", - "P", - "W", - "Ś", - "C", - "P", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d.MM", - "dateFormatItem-yyyyQQQ": "G y QQQ", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-hm": "hh:mm a", - "days-standAlone-abbr": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormat-short": "dd.MM.yyyy G", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM, y G", - "dateFormatItem-Md": "d.MM", - "dateFormatItem-yMEd": "E, d.MM.yyyy", - "dateFormatItem-yyyyQ": "G y Q", - "months-format-wide": [ - "Muharram", - "Safar", - "Rabi I", - "Rabi II", - "Dżumada I", - "Dżumada II", - "Radżab", - "Szaban", - "Ramadan", - "Szawwal", - "Zu al-kada", - "Zu al-hidżdża" - ], - "days-format-short": [ - "niedz.", - "pon.", - "wt.", - "śr.", - "czw.", - "pt.", - "sob." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "I kwartał", - "II kwartał", - "III kwartał", - "IV kwartał" - ], - "days-format-wide": [ - "niedziela", - "poniedziałek", - "wtorek", - "środa", - "czwartek", - "piątek", - "sobota" - ], - "dateFormatItem-h": "hh a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pl/number.js.uncompressed.js b/lib/dojo/cldr/nls/pl/number.js.uncompressed.js deleted file mode 100644 index 9085de779..000000000 --- a/lib/dojo/cldr/nls/pl/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/pl/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤;(#,##0.00 ¤)", - "plusSign": "+", - "decimalFormat-long": "000 biliona", - "decimalFormat-short": "000 bln" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/pt-pt/buddhist.js.uncompressed.js deleted file mode 100644 index f7d66c34f..000000000 --- a/lib/dojo/cldr/nls/pt-pt/buddhist.js.uncompressed.js +++ /dev/null @@ -1,216 +0,0 @@ -define( -"dojo/cldr/nls/pt-pt/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM/yyyy", - "dateFormatItem-yQ": "QQQ 'de' y G", - "dateFormatItem-MMMEd": "E, d/MM", - "dateFormatItem-yQQQ": "QQQ 'de' y G", - "days-standAlone-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y", - "months-standAlone-abbr": [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - "dateFormatItem-yMMM": "MM/y", - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormat-long": "d 'de' MMMM 'de' y", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM/yy", - "dateFormat-medium": "dd/MM/yyyy", - "dayPeriods-format-narrow-pm": "p.m.", - "dateFormatItem-yyMMM": "MM/yy", - "dateFormatItem-yMd": "dd/MM/yyyy", - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a.m.", - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-yyMMMd": "d/MM/yy", - "months-standAlone-wide": [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - "dateFormatItem-MMMd": "d/MM", - "dateFormatItem-HHmm": "HH:mm", - "dateFormatItem-yyMMMEd": "E, d/MM/yy", - "dateFormatItem-yyQ": "QQQ 'de' yy G", - "months-format-abbr": [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yMMMd": "d/MM/y", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dayPeriods-format-abbr-pm": "p.m.", - "dateFormat-short": "d/M/y G", - "dateFormatItem-yMMMEd": "E, d/MM/y", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "months-format-wide": [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - "dayPeriods-format-abbr-am": "a.m.", - "days-format-short": [ - "Do", - "Sg", - "Te", - "Qu", - "Qi", - "Sx", - "Sb" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y", - "quarters-format-wide": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "days-format-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/currency.js.uncompressed.js b/lib/dojo/cldr/nls/pt-pt/currency.js.uncompressed.js deleted file mode 100644 index f2ed71659..000000000 --- a/lib/dojo/cldr/nls/pt-pt/currency.js.uncompressed.js +++ /dev/null @@ -1,8 +0,0 @@ -define( -"dojo/cldr/nls/pt-pt/currency", //begin v1.x content -{ - "CAD_displayName": "Dólar canadiano", - "USD_displayName": "Dólar dos Estados Unidos" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/pt-pt/gregorian.js.uncompressed.js deleted file mode 100644 index f7dda5b83..000000000 --- a/lib/dojo/cldr/nls/pt-pt/gregorian.js.uncompressed.js +++ /dev/null @@ -1,194 +0,0 @@ -define( -"dojo/cldr/nls/pt-pt/gregorian", //begin v1.x content -{ - "dateFormatItem-yM": "MM/yyyy", - "dateFormatItem-yQ": "QQQ 'de' yyyy", - "dayPeriods-format-wide-pm": "PM", - "dayPeriods-standAlone-abbr-pm": "p.m.", - "dateFormatItem-MMMEd": "E, d/MM", - "dateTimeFormat-full": "{1} às {0}", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ 'de' y", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "dateFormatItem-MMM": "LLL", - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "AM", - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-standAlone-abbr-am": "a.m.", - "quarters-standAlone-abbr": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "dateFormatItem-y": "y", - "months-standAlone-abbr": [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - "dateFormatItem-Ed": "E, d", - "dayPeriods-standAlone-wide-pm": "p.m.", - "dateFormatItem-yMMM": "MM/y", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-yMMMMEd": "E, d 'de' MMMM 'de' y", - "field-zone": "Fuso horário", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-standAlone-wide-am": "a.m.", - "dayPeriods-format-narrow-pm": "p.m.", - "dateFormatItem-yyMMM": "MM/yy", - "dateFormatItem-yMd": "dd/MM/yyyy", - "quarters-standAlone-wide": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "dateFormatItem-yMMMM": "MMMM 'de' y", - "dateFormatItem-yMMMMd": "d 'de' MMMM 'de' y", - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a.m.", - "dateTimeFormat-long": "{1} às {0}", - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-yyMMMd": "d/MM/yy", - "months-standAlone-wide": [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - "dateFormatItem-MMMMEd": "E, d 'de' MMMM", - "dateFormatItem-MMMd": "d/MM", - "dateFormatItem-HHmm": "HH:mm", - "dateFormatItem-yyMMMEd": "E, d/MM/yy", - "dateFormatItem-yyQ": "QQQ 'de' yy", - "months-format-abbr": [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "d 'de' MMMM", - "quarters-format-abbr": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "days-format-abbr": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "dateFormatItem-M": "L", - "dateFormatItem-yMMMd": "d/MM/y", - "dateFormatItem-MEd": "E, dd/MM", - "days-standAlone-short": [ - "Do", - "Sg", - "Te", - "Qu", - "Qi", - "Sx", - "Sb" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "dayPeriods-format-abbr-pm": "p.m.", - "dateFormatItem-yMMMEd": "E, d/MM/y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "months-format-wide": [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - "dayPeriods-format-abbr-am": "a.m.", - "days-format-short": [ - "Do", - "Sg", - "Te", - "Qu", - "Qi", - "Sx", - "Sb" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "days-format-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/pt-pt/islamic.js.uncompressed.js deleted file mode 100644 index 30783fb7f..000000000 --- a/lib/dojo/cldr/nls/pt-pt/islamic.js.uncompressed.js +++ /dev/null @@ -1,133 +0,0 @@ -define( -"dojo/cldr/nls/pt-pt/islamic", //begin v1.x content -{ - "dateFormatItem-yQ": "QQQ 'de' y G", - "dateFormatItem-MMMEd": "E, d/MM", - "dateTimeFormat-full": "{1} às {0}", - "dateFormatItem-yQQQ": "QQQ 'de' y G", - "days-standAlone-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ], - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-medium": "{1}, {0}", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-yMMM": "MM/y", - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormat-long": "d 'de' MMMM 'de' y", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM/yy", - "dateFormat-medium": "dd/MM/yyyy", - "dayPeriods-format-narrow-pm": "p.m.", - "dateFormatItem-yyMMM": "MM/yy", - "dateFormatItem-yMd": "dd/MM/yyyy", - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "a.m.", - "dateTimeFormat-long": "{1} às {0}", - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-yyMMMd": "d/MM/yy", - "dateFormatItem-MMMd": "d/MM", - "dateFormatItem-HHmm": "HH:mm", - "dateFormatItem-yyMMMEd": "E, d/MM/yy", - "dateFormatItem-yyQ": "QQQ 'de' yy G", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yMMMd": "d/MM/y", - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dayPeriods-format-abbr-pm": "p.m.", - "dateFormat-short": "d/M/y G", - "dateFormatItem-yMMMEd": "E, d/MM/y", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y", - "dayPeriods-format-abbr-am": "a.m.", - "days-format-short": [ - "Do", - "Sg", - "Te", - "Qu", - "Qi", - "Sx", - "Sb" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y", - "quarters-format-wide": [ - "1.º trimestre", - "2.º trimestre", - "3.º trimestre", - "4.º trimestre" - ], - "days-format-wide": [ - "Domingo", - "Segunda-feira", - "Terça-feira", - "Quarta-feira", - "Quinta-feira", - "Sexta-feira", - "Sábado" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt-pt/number.js.uncompressed.js b/lib/dojo/cldr/nls/pt-pt/number.js.uncompressed.js deleted file mode 100644 index c67a2ea9e..000000000 --- a/lib/dojo/cldr/nls/pt-pt/number.js.uncompressed.js +++ /dev/null @@ -1,11 +0,0 @@ -define( -"dojo/cldr/nls/pt-pt/number", //begin v1.x content -{ - "group": " ", - "decimalFormat-long": "000 biliões", - "currencyFormat": "#,##0.00 ¤", - "decimalFormat-short": "000 Bi", - "decimal": "," -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/pt/buddhist.js.uncompressed.js deleted file mode 100644 index 21dc4deac..000000000 --- a/lib/dojo/cldr/nls/pt/buddhist.js.uncompressed.js +++ /dev/null @@ -1,221 +0,0 @@ -define( -"dojo/cldr/nls/pt/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y G", - "dateFormatItem-yQ": "G y Q", - "dateFormatItem-MMMEd": "E, d 'de' MMM", - "dateFormatItem-yQQQ": "G y QQQ", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y G", - "months-standAlone-abbr": [ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez" - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "MMM 'de' y G", - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormat-long": "d 'de' MMMM 'de' y G", - "dateFormatItem-Hm": "HH'h'mm", - "dateFormatItem-yyMM": "MM/yy G", - "dateFormat-medium": "dd/MM/yyyy G", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM 'de' yy G", - "dateFormatItem-yMd": "dd/MM/yyyy G", - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dateFormatItem-ms": "mm'min'ss's'", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-HHmmss": "HH'h'mm'min'ss's'", - "dateFormatItem-yyMMMd": "d 'de' MMM 'de' yy G", - "months-standAlone-wide": [ - "janeiro", - "fevereiro", - "março", - "abril", - "maio", - "junho", - "julho", - "agosto", - "setembro", - "outubro", - "novembro", - "dezembro" - ], - "dateFormatItem-MMMd": "d 'de' MMM", - "dateFormatItem-HHmm": "HH'h'mm", - "dateFormatItem-yyMMMEd": "E, d 'de' MMM 'de' yy G", - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yMMMd": "d 'de' MMM 'de' y G", - "dateFormatItem-MEd": "E, dd/MM", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E, d 'de' MMM 'de' y G", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy G", - "months-format-wide": [ - "janeiro", - "fevereiro", - "março", - "abril", - "maio", - "junho", - "julho", - "agosto", - "setembro", - "outubro", - "novembro", - "dezembro" - ], - "days-format-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "days-format-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/currency.js.uncompressed.js b/lib/dojo/cldr/nls/pt/currency.js.uncompressed.js deleted file mode 100644 index 3f2a55dff..000000000 --- a/lib/dojo/cldr/nls/pt/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/pt/currency", //begin v1.x content -{ - "HKD_displayName": "Dólar de Hong Kong", - "CHF_displayName": "Franco suíço", - "JPY_symbol": "JP¥", - "CAD_displayName": "Dólar canadense", - "HKD_symbol": "HK$", - "CNY_displayName": "Yuan chinês", - "USD_symbol": "US$", - "AUD_displayName": "Dólar australiano", - "JPY_displayName": "Iene japonês", - "CAD_symbol": "CA$", - "USD_displayName": "Dólar norte-americano", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "Libra esterlina britânica", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/pt/gregorian.js.uncompressed.js deleted file mode 100644 index 035efabc0..000000000 --- a/lib/dojo/cldr/nls/pt/gregorian.js.uncompressed.js +++ /dev/null @@ -1,291 +0,0 @@ -define( -"dojo/cldr/nls/pt/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Dia da semana", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yyMMMEd": "E, d 'de' MMM 'de' yy", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "dateFormatItem-MMMEd": "E, d 'de' MMM", - "eraNarrow": [ - "a.C.", - "d.C." - ], - "dayPeriods-format-wide-morning": "manhã", - "days-format-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormat-long": "d 'de' MMMM 'de' y", - "months-format-wide": [ - "janeiro", - "fevereiro", - "março", - "abril", - "maio", - "junho", - "julho", - "agosto", - "setembro", - "outubro", - "novembro", - "dezembro" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y", - "dateFormatItem-Md": "d/M", - "dayPeriods-format-abbr-am": "AM", - "dayPeriods-format-wide-noon": "meio-dia", - "dateFormatItem-yMd": "dd/MM/yyyy", - "field-era": "Era", - "dateFormatItem-yM": "MM/yyyy", - "months-standAlone-wide": [ - "janeiro", - "fevereiro", - "março", - "abril", - "maio", - "junho", - "julho", - "agosto", - "setembro", - "outubro", - "novembro", - "dezembro" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Ano", - "dateFormatItem-yMMM": "MMM 'de' y", - "dateFormatItem-yQ": "yyyy Q", - "field-hour": "Hora", - "dateFormatItem-MMdd": "dd/MM", - "months-format-abbr": [ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Hoje", - "field-day-relative+1": "Amanhã", - "field-day-relative+2": "Depois de amanhã", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "fev", - "mar", - "abr", - "mai", - "jun", - "jul", - "ago", - "set", - "out", - "nov", - "dez" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dateFormatItem-HHmmss": "HH:mm:ss", - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y", - "dateFormatItem-yyMMM": "MMM 'de' yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "eraAbbr": [ - "a.C.", - "d.C." - ], - "field-minute": "Minuto", - "field-dayperiod": "Período do dia", - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dayPeriods-format-wide-night": "noite", - "dateFormatItem-yyMMMd": "d 'de' MMM 'de' yy", - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Ontem", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "a", - "field-day-relative+-2": "Anteontem", - "dateFormatItem-MMMd": "d 'de' MMM", - "dateFormatItem-MEd": "E, dd/MM", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Dia", - "days-format-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "field-zone": "Fuso", - "dateFormatItem-yyyyMM": "MM/yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Ano passado", - "field-month-relative+-1": "Mês passado", - "dateFormatItem-yyMM": "MM/yy", - "dateFormatItem-hm": "h:mm a", - "dayPeriods-format-abbr-pm": "PM", - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-yMMMd": "d 'de' MMM 'de' y", - "eraNames": [ - "Antes de Cristo", - "Ano do Senhor" - ], - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Mês", - "dateFormatItem-HHmm": "HH:mm", - "dayPeriods-format-wide-am": "AM", - "dateFormat-short": "dd/MM/yy", - "dayPeriods-format-wide-afternoon": "tarde", - "field-second": "Segundo", - "dateFormatItem-yMMMEd": "E, d 'de' MMM 'de' y", - "field-month-relative+0": "Este mês", - "field-month-relative+1": "Próximo mês", - "dateFormatItem-Ed": "E, d", - "field-week": "Semana", - "dateFormat-medium": "dd/MM/yyyy", - "field-year-relative+0": "Este ano", - "field-week-relative+-1": "Semana passada", - "field-year-relative+1": "Próximo ano", - "dayPeriods-format-narrow-pm": "p", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Esta semana", - "field-week-relative+1": "Próxima semana" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/pt/hebrew.js.uncompressed.js deleted file mode 100644 index 71a56da63..000000000 --- a/lib/dojo/cldr/nls/pt/hebrew.js.uncompressed.js +++ /dev/null @@ -1,184 +0,0 @@ -define( -"dojo/cldr/nls/pt/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MM/yyyy", - "dateFormatItem-yQ": "yyyy Q", - "months-standAlone-abbr-leap": "Adar II", - "dateFormatItem-MMMEd": "E, d 'de' MMM", - "days-standAlone-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "months-format-abbr-leap": "Adar II", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "months-standAlone-abbr": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "MMM 'de' y", - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormat-long": "d 'de' MMMM 'de' y", - "dateFormat-medium": "dd/MM/yyyy", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yMd": "dd/MM/yyyy", - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dayPeriods-format-narrow-am": "a", - "months-standAlone-wide": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "dateFormatItem-MMMd": "d 'de' MMM", - "months-format-abbr": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yMMMd": "d 'de' MMM 'de' y", - "dateFormatItem-MEd": "E, dd/MM", - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "months-standAlone-wide-leap": "Adar II", - "dateFormat-short": "dd/MM/yy", - "dateFormatItem-yMMMEd": "E, d 'de' MMM 'de' y", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "months-format-wide": [ - "Tishri", - "Heshvan", - "Kislev", - "Tevet", - "Shevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "days-format-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "quarters-format-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "months-format-wide-leap": "Adar II", - "days-format-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/pt/islamic.js.uncompressed.js deleted file mode 100644 index cd5547d95..000000000 --- a/lib/dojo/cldr/nls/pt/islamic.js.uncompressed.js +++ /dev/null @@ -1,150 +0,0 @@ -define( -"dojo/cldr/nls/pt/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "MM/yyyy", - "dateFormatItem-yyyyMMMEd": "E, d 'de' MMM 'de' y G", - "dateFormatItem-yQ": "yyyy Q", - "dateFormatItem-MMMEd": "E, d 'de' MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "dateFormatItem-MMM": "LLL", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y", - "dateFormatItem-yyyy": "y G", - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "MMM 'de' y", - "days-standAlone-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yyyyMM": "MM/y G", - "dateFormat-long": "d 'de' MMMM 'de' y G", - "dateFormatItem-Hm": "HH'h'mm", - "dateFormatItem-yyMM": "MM/yy G", - "dateFormat-medium": "dd/MM/yyyy G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "p", - "dateFormatItem-yyMMM": "MMM 'de' yy G", - "dateFormatItem-yMd": "dd/MM/yyyy", - "quarters-standAlone-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "dateFormatItem-ms": "mm'min'ss's'", - "dayPeriods-format-narrow-am": "a", - "dateFormatItem-HHmmss": "HH'h'mm'min'ss's'", - "dateFormatItem-yyMMMd": "d 'de' MMM 'de' yy G", - "dateFormatItem-yyyyMd": "dd/MM/yyyy G", - "dateFormatItem-yyyyMMMd": "d 'de' MMM 'de' y G", - "dateFormatItem-yyyyMEd": "E, dd/MM/yyyy G", - "dateFormatItem-MMMd": "d 'de' MMM", - "dateFormatItem-HHmm": "HH'h'mm", - "dateFormatItem-yyMMMEd": "E, d 'de' MMM 'de' yy G", - "dateFormatItem-yyQ": "Q yy G", - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "days-format-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "D", - "S", - "T", - "Q", - "Q", - "S", - "S" - ], - "dateFormatItem-yMMMd": "d 'de' MMM 'de' y", - "dateFormatItem-MEd": "E, dd/MM", - "dateFormatItem-yyyyQQQ": "G y QQQ", - "days-standAlone-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yyyyM": "MM/y G", - "dateFormatItem-yMMMEd": "E, d 'de' MMM 'de' y", - "dateFormat-full": "EEEE, d 'de' MMMM 'de' y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, dd/MM/yyyy", - "dateFormatItem-yyyyQ": "G y Q", - "days-format-short": [ - "dom", - "seg", - "ter", - "qua", - "qui", - "sex", - "sáb" - ], - "dateFormatItem-yyyyMMM": "MMM 'de' y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1º trimestre", - "2º trimestre", - "3º trimestre", - "4º trimestre" - ], - "days-format-wide": [ - "domingo", - "segunda-feira", - "terça-feira", - "quarta-feira", - "quinta-feira", - "sexta-feira", - "sábado" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/pt/number.js.uncompressed.js b/lib/dojo/cldr/nls/pt/number.js.uncompressed.js deleted file mode 100644 index 99702d0be..000000000 --- a/lib/dojo/cldr/nls/pt/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/pt/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000 trilhões", - "decimalFormat-short": "000 tri" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ro/buddhist.js.uncompressed.js deleted file mode 100644 index 8597c68ab..000000000 --- a/lib/dojo/cldr/nls/ro/buddhist.js.uncompressed.js +++ /dev/null @@ -1,225 +0,0 @@ -define( -"dojo/cldr/nls/ro/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM.yyyy", - "dateFormatItem-yQ": "'trimestrul' Q y", - "eraNames": [ - "era budistă" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "months-standAlone-narrow": [ - "I", - "F", - "M", - "A", - "M", - "I", - "I", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-y": "y", - "months-standAlone-abbr": [ - "ian.", - "feb.", - "mar.", - "apr.", - "mai", - "iun.", - "iul.", - "aug.", - "sept.", - "oct.", - "nov.", - "dec." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "eraAbbr": [ - "e.b." - ], - "dateFormat-long": "d MMMM y G", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-yMd": "dd.MM.yyyy", - "quarters-standAlone-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "quarters-standAlone-narrow": [ - "T1", - "T2", - "T3", - "T4" - ], - "months-standAlone-wide": [ - "ianuarie", - "februarie", - "martie", - "aprilie", - "mai", - "iunie", - "iulie", - "august", - "septembrie", - "octombrie", - "noiembrie", - "decembrie" - ], - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "1", - "2", - "3", - "T4" - ], - "months-format-abbr": [ - "ian.", - "feb.", - "mar.", - "apr.", - "mai", - "iun.", - "iul.", - "aug.", - "sept.", - "oct.", - "nov.", - "dec." - ], - "quarters-format-abbr": [ - "trim. I", - "trim. II", - "trim. III", - "trim. IV" - ], - "days-format-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, dd.MM", - "months-format-narrow": [ - "I", - "F", - "M", - "A", - "M", - "I", - "I", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "days-standAlone-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM, y G", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMEd": "E, dd.MM.yyyy", - "months-format-wide": [ - "ianuarie", - "februarie", - "martie", - "aprilie", - "mai", - "iunie", - "iulie", - "august", - "septembrie", - "octombrie", - "noiembrie", - "decembrie" - ], - "days-format-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "quarters-format-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "days-format-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "eraNarrow": [ - "e.b." - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ro/currency.js.uncompressed.js deleted file mode 100644 index 11f8740c7..000000000 --- a/lib/dojo/cldr/nls/ro/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/ro/currency", //begin v1.x content -{ - "HKD_displayName": "dolar Hong Kong", - "CHF_displayName": "franc elvețian", - "CAD_displayName": "dolar canadian", - "CNY_displayName": "yuan renminbi chinezesc", - "USD_symbol": "$", - "AUD_displayName": "dolar australian", - "JPY_displayName": "yen japonez", - "USD_displayName": "dolar american", - "GBP_displayName": "liră sterlină", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ro/gregorian.js.uncompressed.js deleted file mode 100644 index ec4e49481..000000000 --- a/lib/dojo/cldr/nls/ro/gregorian.js.uncompressed.js +++ /dev/null @@ -1,281 +0,0 @@ -define( -"dojo/cldr/nls/ro/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "months-format-narrow": [ - "I", - "F", - "M", - "A", - "M", - "I", - "I", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "T1", - "T2", - "T3", - "T4" - ], - "field-weekday": "zi a săptămânii", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, dd.MM.yyyy", - "dateFormatItem-MMMEd": "E, d MMM", - "eraNarrow": [ - "î.Hr.", - "d.Hr." - ], - "days-format-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "ianuarie", - "februarie", - "martie", - "aprilie", - "mai", - "iunie", - "iulie", - "august", - "septembrie", - "octombrie", - "noiembrie", - "decembrie" - ], - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "PM", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMd": "dd.MM.yyyy", - "field-era": "eră", - "dateFormatItem-yM": "MM.yyyy", - "months-standAlone-wide": [ - "ianuarie", - "februarie", - "martie", - "aprilie", - "mai", - "iunie", - "iulie", - "august", - "septembrie", - "octombrie", - "noiembrie", - "decembrie" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "an", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "'trimestrul' Q y", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "oră", - "dateFormatItem-MMdd": "dd.MM", - "months-format-abbr": [ - "ian.", - "feb.", - "mar.", - "apr.", - "mai", - "iun.", - "iul.", - "aug.", - "sept.", - "oct.", - "nov.", - "dec." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "azi", - "field-day-relative+1": "mâine", - "field-day-relative+2": "poimâine", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "ian.", - "feb.", - "mar.", - "apr.", - "mai", - "iun.", - "iul.", - "aug.", - "sept.", - "oct.", - "nov.", - "dec." - ], - "quarters-format-abbr": [ - "trim. I", - "trim. II", - "trim. III", - "trim. IV" - ], - "quarters-standAlone-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "dateFormatItem-MMMMd": "d MMMM", - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "eraAbbr": [ - "î.Hr.", - "d.Hr." - ], - "field-minute": "minut", - "field-dayperiod": "perioada zilei", - "days-standAlone-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "T4" - ], - "field-day-relative+-1": "ieri", - "dateTimeFormat-long": "{1}, {0}", - "field-day-relative+-2": "alaltăieri", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, dd.MM", - "dateTimeFormat-full": "{1}, {0}", - "dateFormatItem-yMMMM": "MMMM y", - "field-day": "zi", - "days-format-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "field-zone": "zonă", - "dateFormatItem-yyyyMM": "MM.yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "I", - "F", - "M", - "A", - "M", - "I", - "I", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "Anul trecut", - "field-month-relative+-1": "Luna trecută", - "dateFormatItem-yyMM": "MM.yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "înainte de Hristos", - "după Hristos" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "lună", - "dayPeriods-format-wide-am": "AM", - "dateFormatItem-MMMMEd": "E, d MMMM", - "dateFormat-short": "dd.MM.yyyy", - "field-second": "secundă", - "dateFormatItem-yMMMEd": "E, d MMM y", - "field-month-relative+0": "Luna aceasta", - "field-month-relative+1": "Luna viitoare", - "dateFormatItem-Ed": "E d", - "field-week": "săptămână", - "dateFormat-medium": "dd.MM.yyyy", - "field-year-relative+0": "Anul acesta", - "field-week-relative+-1": "Săptămâna trecută", - "field-year-relative+1": "Anul viitor", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Săptămâna aceasta", - "field-week-relative+1": "Săptămâna viitoare" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/ro/hebrew.js.uncompressed.js deleted file mode 100644 index 7915e04d7..000000000 --- a/lib/dojo/cldr/nls/ro/hebrew.js.uncompressed.js +++ /dev/null @@ -1,199 +0,0 @@ -define( -"dojo/cldr/nls/ro/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MM.yyyy", - "dateFormatItem-yQ": "'trimestrul' Q y", - "months-standAlone-abbr-leap": "Adar II", - "dateFormatItem-MMMEd": "E, d MMM", - "dateTimeFormat-full": "{1}, {0}", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-medium": "{1}, {0}", - "months-format-abbr-leap": "Adar II", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "months-standAlone-abbr": [ - "Tișrei", - "Heșvan", - "Kislev", - "Tevet", - "Șevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tammuz", - "Av", - "Elul" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-medium": "dd.MM.yyyy", - "dateFormatItem-yMd": "dd.MM.yyyy", - "quarters-standAlone-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "quarters-standAlone-narrow": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateTimeFormat-long": "{1}, {0}", - "months-standAlone-wide": [ - "Tișrei", - "Heșvan", - "Kislev", - "Tevet", - "Șevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tammuz", - "Av", - "Elul" - ], - "dateFormatItem-MMMd": "d MMM", - "quarters-format-narrow": [ - "1", - "2", - "3", - "T4" - ], - "months-format-abbr": [ - "Tișrei", - "Heșvan", - "Kislev", - "Tevet", - "Șevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tammuz", - "Av", - "Elul" - ], - "quarters-format-abbr": [ - "trim. I", - "trim. II", - "trim. III", - "trim. IV" - ], - "days-format-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, dd.MM", - "days-standAlone-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "days-standAlone-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "months-standAlone-wide-leap": "Adar II", - "dateFormat-short": "dd.MM.yyyy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMEd": "E, dd.MM.yyyy", - "months-format-wide": [ - "Tișrei", - "Heșvan", - "Kislev", - "Tevet", - "Șevat", - "Adar I", - "Adar", - "Nisan", - "Iyar", - "Sivan", - "Tammuz", - "Av", - "Elul" - ], - "days-format-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "quarters-format-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "months-format-wide-leap": "Adar II", - "days-format-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/ro/islamic.js.uncompressed.js deleted file mode 100644 index daf90b4d6..000000000 --- a/lib/dojo/cldr/nls/ro/islamic.js.uncompressed.js +++ /dev/null @@ -1,135 +0,0 @@ -define( -"dojo/cldr/nls/ro/islamic", //begin v1.x content -{ - "quarters-standAlone-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "quarters-format-abbr": [ - "trim. I", - "trim. II", - "trim. III", - "trim. IV" - ], - "dateFormatItem-yMd": "dd.MM.yyyy", - "dateFormat-medium": "dd.MM.yyyy", - "dateFormatItem-MMMEd": "E, d MMM", - "quarters-standAlone-abbr": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormatItem-MEd": "E, dd.MM", - "dateFormatItem-yMEd": "E, dd.MM.yyyy", - "dateTimeFormat-medium": "{1}, {0}", - "dateFormatItem-yMMMd": "d MMM y", - "quarters-format-narrow": [ - "1", - "2", - "3", - "T4" - ], - "days-format-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormatItem-Md": "dd.MM", - "days-standAlone-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateTimeFormat-long": "{1}, {0}", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-short": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "quarters-standAlone-narrow": [ - "T1", - "T2", - "T3", - "T4" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-short": "dd.MM.yyyy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "days-standAlone-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "dateTimeFormat-short": "{1}, {0}", - "dateTimeFormat-full": "{1}, {0}", - "days-format-narrow": [ - "D", - "L", - "M", - "M", - "J", - "V", - "S" - ], - "dateFormatItem-yM": "MM.yyyy", - "days-standAlone-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "days-format-wide": [ - "duminică", - "luni", - "marți", - "miercuri", - "joi", - "vineri", - "sâmbătă" - ], - "dateFormatItem-yQ": "'trimestrul' Q y", - "dateFormatItem-yMMM": "MMM y", - "quarters-format-wide": [ - "trimestrul I", - "trimestrul al II-lea", - "trimestrul al III-lea", - "trimestrul al IV-lea" - ], - "dateFormat-full": "EEEE, d MMMM y", - "dateFormatItem-MMMd": "d MMM", - "days-format-abbr": [ - "Du", - "Lu", - "Ma", - "Mi", - "Jo", - "Vi", - "Sâ" - ], - "dateFormatItem-Ed": "E d" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ro/number.js.uncompressed.js b/lib/dojo/cldr/nls/ro/number.js.uncompressed.js deleted file mode 100644 index 04457d3b4..000000000 --- a/lib/dojo/cldr/nls/ro/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ro/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 trilioane", - "decimalFormat-short": "000 T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/ru/buddhist.js.uncompressed.js deleted file mode 100644 index e41c61f26..000000000 --- a/lib/dojo/cldr/nls/ru/buddhist.js.uncompressed.js +++ /dev/null @@ -1,233 +0,0 @@ -define( -"dojo/cldr/nls/ru/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM.y G", - "dateFormatItem-yQ": "QQQ y 'г'.", - "dayPeriods-format-wide-pm": "после полудня", - "dateFormatItem-MMMEd": "ccc, d MMM", - "dateFormatItem-yQQQ": "QQQ y G", - "dateFormatItem-MMdd": "dd.MM", - "days-standAlone-wide": [ - "Воскресенье", - "Понедельник", - "Вторник", - "Среда", - "Четверг", - "Пятница", - "Суббота" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "Я", - "Ф", - "М", - "А", - "М", - "И", - "И", - "А", - "С", - "О", - "Н", - "Д" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "до полудня", - "quarters-standAlone-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "H:mm:ss zzzz", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Янв.", - "Февр.", - "Март", - "Апр.", - "Май", - "Июнь", - "Июль", - "Авг.", - "Сент.", - "Окт.", - "Нояб.", - "Дек." - ], - "dateFormatItem-Ed": "E, d", - "dateFormatItem-yMMM": "LLL y G", - "dateFormatItem-yyyyLLLL": "LLLL y G", - "days-standAlone-narrow": [ - "В", - "П", - "В", - "С", - "Ч", - "П", - "С" - ], - "dateFormatItem-yyyyMM": "MM.yyyy G", - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormat-long": "d MMMM y 'г'. G", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormatItem-yyMM": "MM.yy G", - "dateFormat-medium": "dd.MM.yyyy G", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "пп", - "dateFormatItem-yyMMM": "LLL yy G", - "dateFormatItem-yMd": "dd.MM.y G", - "quarters-standAlone-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyyyQQQQ": "QQQQ y 'г'. G", - "dayPeriods-format-narrow-am": "дп", - "months-standAlone-wide": [ - "Январь", - "Февраль", - "Март", - "Апрель", - "Май", - "Июнь", - "Июль", - "Август", - "Сентябрь", - "Октябрь", - "Ноябрь", - "Декабрь" - ], - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyMMMEd": "E, d MMM yy G", - "dateFormatItem-yyQ": "Q yy G", - "dateFormatItem-E": "ccc", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "янв.", - "февр.", - "марта", - "апр.", - "мая", - "июня", - "июля", - "авг.", - "сент.", - "окт.", - "нояб.", - "дек." - ], - "dateFormatItem-H": "H", - "timeFormat-short": "H:mm", - "quarters-format-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "days-format-abbr": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E, dd.MM", - "months-format-narrow": [ - "Я", - "Ф", - "М", - "А", - "М", - "И", - "И", - "А", - "С", - "О", - "Н", - "Д" - ], - "days-standAlone-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "days-standAlone-abbr": [ - "Вс", - "Пн", - "Вт", - "Ср", - "Чт", - "Пт", - "Сб" - ], - "dayPeriods-format-abbr-pm": "после полудня", - "dateFormat-short": "dd.MM.yy G", - "dateFormatItem-yMMMEd": "E, d MMM y G", - "dateFormat-full": "EEEE, d MMMM y 'г'. G", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMEd": "E, dd.MM.y G", - "months-format-wide": [ - "января", - "февраля", - "марта", - "апреля", - "мая", - "июня", - "июля", - "августа", - "сентября", - "октября", - "ноября", - "декабря" - ], - "dayPeriods-format-abbr-am": "до полудня", - "days-format-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "days-format-wide": [ - "воскресенье", - "понедельник", - "вторник", - "среда", - "четверг", - "пятница", - "суббота" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/currency.js.uncompressed.js b/lib/dojo/cldr/nls/ru/currency.js.uncompressed.js deleted file mode 100644 index e53fda8d1..000000000 --- a/lib/dojo/cldr/nls/ru/currency.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define( -"dojo/cldr/nls/ru/currency", //begin v1.x content -{ - "HKD_displayName": "Гонконгский доллар", - "CHF_displayName": "Швейцарский франк", - "JPY_symbol": "¥", - "CAD_displayName": "Канадский доллар", - "CNY_displayName": "Юань Ренминби", - "USD_symbol": "$", - "AUD_displayName": "Австралийский доллар", - "JPY_displayName": "Японская иена", - "USD_displayName": "Доллар США", - "GBP_displayName": "Английский фунт стерлингов", - "EUR_displayName": "Евро" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/ru/gregorian.js.uncompressed.js deleted file mode 100644 index 3857dc2d1..000000000 --- a/lib/dojo/cldr/nls/ru/gregorian.js.uncompressed.js +++ /dev/null @@ -1,282 +0,0 @@ -define( -"dojo/cldr/nls/ru/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "months-format-narrow": [ - "Я", - "Ф", - "М", - "А", - "М", - "И", - "И", - "А", - "С", - "О", - "Н", - "Д" - ], - "field-weekday": "День недели", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yyMMMEd": "E, d MMM yy", - "dateFormatItem-yMEd": "ccc, d.MM.y 'г'.", - "dateFormatItem-yyyyLLLL": "LLLL y", - "dateFormatItem-MMMEd": "ccc, d MMM", - "eraNarrow": [ - "до н.э.", - "н.э." - ], - "days-format-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormat-long": "d MMMM y 'г'.", - "months-format-wide": [ - "января", - "февраля", - "марта", - "апреля", - "мая", - "июня", - "июля", - "августа", - "сентября", - "октября", - "ноября", - "декабря" - ], - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "после полудня", - "dateFormat-full": "EEEE, d MMMM y 'г'.", - "dateFormatItem-Md": "dd.MM", - "dayPeriods-format-abbr-am": "до полудня", - "dateFormatItem-yMd": "dd.MM.y", - "dateFormatItem-yM": "MM.y", - "field-era": "Эра", - "months-standAlone-wide": [ - "Январь", - "Февраль", - "Март", - "Апрель", - "Май", - "Июнь", - "Июль", - "Август", - "Сентябрь", - "Октябрь", - "Ноябрь", - "Декабрь" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "timeFormat-long": "H:mm:ss z", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "QQQ y 'г'.", - "field-year": "Год", - "dateFormatItem-MMdd": "dd.MM", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "Час", - "months-format-abbr": [ - "янв.", - "февр.", - "марта", - "апр.", - "мая", - "июня", - "июля", - "авг.", - "сент.", - "окт.", - "нояб.", - "дек." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "H:mm:ss zzzz", - "dateFormatItem-E": "ccc", - "field-day-relative+0": "Сегодня", - "field-day-relative+1": "Завтра", - "field-day-relative+2": "Послезавтра", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "Янв.", - "Февр.", - "Март", - "Апр.", - "Май", - "Июнь", - "Июль", - "Авг.", - "Сент.", - "Окт.", - "Нояб.", - "Дек." - ], - "quarters-format-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "quarters-standAlone-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Воскресенье", - "Понедельник", - "Вторник", - "Среда", - "Четверг", - "Пятница", - "Суббота" - ], - "dateFormatItem-yyMMM": "LLL yy", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "eraAbbr": [ - "до н.э.", - "н.э." - ], - "field-minute": "Минута", - "field-dayperiod": "ДП/ПП", - "days-standAlone-abbr": [ - "Вс", - "Пн", - "Вт", - "Ср", - "Чт", - "Пт", - "Сб" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Вчера", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1}, {0}", - "dayPeriods-format-narrow-am": "дп", - "field-day-relative+-2": "Позавчера", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, dd.MM", - "dateTimeFormat-full": "{1}, {0}", - "field-day": "День", - "days-format-wide": [ - "воскресенье", - "понедельник", - "вторник", - "среда", - "четверг", - "пятница", - "суббота" - ], - "field-zone": "Часовой пояс", - "dateFormatItem-yyyyMM": "MM.yyyy", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "Я", - "Ф", - "М", - "А", - "М", - "И", - "И", - "А", - "С", - "О", - "Н", - "Д" - ], - "field-year-relative+-1": "В прошлом году", - "field-month-relative+-1": "В прошлом месяце", - "dateFormatItem-yyMM": "MM.yy", - "dateFormatItem-hm": "h:mm a", - "dayPeriods-format-abbr-pm": "после полудня", - "days-format-abbr": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-yMMMd": "d MMM y 'г'.", - "eraNames": [ - "до н.э.", - "н.э." - ], - "days-format-narrow": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "days-standAlone-narrow": [ - "В", - "П", - "В", - "С", - "Ч", - "П", - "С" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Месяц", - "dayPeriods-format-wide-am": "до полудня", - "dateFormat-short": "dd.MM.yy", - "field-second": "Секунда", - "dateFormatItem-yMMMEd": "E, d MMM y", - "field-month-relative+0": "В этом месяце", - "field-month-relative+1": "В следующем месяце", - "dateFormatItem-Ed": "ccc, d", - "field-week": "Неделя", - "dateFormat-medium": "dd MMM y 'г'.", - "field-year-relative+0": "В этом году", - "field-week-relative+-1": "На прошлой неделе", - "field-year-relative+1": "В следующем году", - "dayPeriods-format-narrow-pm": "пп", - "dateFormatItem-yyyyQQQQ": "QQQQ y 'г'.", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "На этой неделе", - "field-week-relative+1": "На следующей неделе" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/ru/hebrew.js.uncompressed.js deleted file mode 100644 index cd727d9f5..000000000 --- a/lib/dojo/cldr/nls/ru/hebrew.js.uncompressed.js +++ /dev/null @@ -1,199 +0,0 @@ -define( -"dojo/cldr/nls/ru/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MM.y", - "dateFormatItem-yQ": "QQQ y 'г'.", - "months-standAlone-abbr-leap": "Адар II", - "dayPeriods-format-wide-pm": "после полудня", - "dateFormatItem-MMMEd": "ccc, d MMM", - "dateTimeFormat-full": "{1}, {0}", - "days-standAlone-wide": [ - "Воскресенье", - "Понедельник", - "Вторник", - "Среда", - "Четверг", - "Пятница", - "Суббота" - ], - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "до полудня", - "dateTimeFormat-medium": "{1}, {0}", - "months-format-abbr-leap": "Адар II", - "quarters-standAlone-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "timeFormat-full": "H:mm:ss zzzz", - "months-standAlone-abbr": [ - "Тишрей", - "Хешван", - "Кислев", - "Тевет", - "Шеват", - "Адар I", - "Адар", - "Нисан", - "Ияр", - "Сиван", - "Таммуз", - "Ав", - "Элул" - ], - "dateFormatItem-Ed": "ccc, d", - "dateFormatItem-yMMM": "LLL y", - "days-standAlone-narrow": [ - "В", - "П", - "В", - "С", - "Ч", - "П", - "С" - ], - "dateFormat-long": "d MMMM y 'г'.", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "dd MMM y 'г'.", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "пп", - "dateFormatItem-yMd": "dd.MM.y", - "quarters-standAlone-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "dayPeriods-format-narrow-am": "дп", - "dateTimeFormat-long": "{1}, {0}", - "months-standAlone-wide": [ - "Тишрей", - "Хешван", - "Кислев", - "Тевет", - "Шеват", - "Адар I", - "Адар", - "Нисан", - "Ияр", - "Сиван", - "Таммуз", - "Ав", - "Элул" - ], - "dateFormatItem-MMMd": "d MMM", - "timeFormat-long": "H:mm:ss z", - "months-format-abbr": [ - "Тишрей", - "Хешван", - "Кислев", - "Тевет", - "Шеват", - "Адар I", - "Адар", - "Нисан", - "Ияр", - "Сиван", - "Таммуз", - "Ав", - "Элул" - ], - "timeFormat-short": "H:mm", - "dateFormatItem-H": "H", - "quarters-format-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "days-format-abbr": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "days-format-narrow": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-yMMMd": "d MMM y 'г'.", - "dateFormatItem-MEd": "E, dd.MM", - "days-standAlone-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "days-standAlone-abbr": [ - "Вс", - "Пн", - "Вт", - "Ср", - "Чт", - "Пт", - "Сб" - ], - "months-standAlone-wide-leap": "Адар II", - "dayPeriods-format-abbr-pm": "после полудня", - "dateFormat-short": "dd.MM.yy", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormat-full": "EEEE, d MMMM y 'г'.", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMEd": "ccc, d.MM.y 'г'.", - "months-format-wide": [ - "Тишрей", - "Хешван", - "Кислев", - "Тевет", - "Шеват", - "Адар I", - "Адар", - "Нисан", - "Ияр", - "Сиван", - "Таммуз", - "Ав", - "Элул" - ], - "dayPeriods-format-abbr-am": "до полудня", - "days-format-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "quarters-format-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "months-format-wide-leap": "Адар II", - "days-format-wide": [ - "воскресенье", - "понедельник", - "вторник", - "среда", - "четверг", - "пятница", - "суббота" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/ru/islamic.js.uncompressed.js deleted file mode 100644 index 2032a6e6a..000000000 --- a/lib/dojo/cldr/nls/ru/islamic.js.uncompressed.js +++ /dev/null @@ -1,227 +0,0 @@ -define( -"dojo/cldr/nls/ru/islamic", //begin v1.x content -{ - "days-standAlone-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateFormatItem-yyMMMEd": "E, d MMM yy G", - "dateFormatItem-yMEd": "ccc, d.MM.y 'г'.", - "dateFormatItem-yyyyLLLL": "LLLL y G", - "dateFormatItem-MMMEd": "ccc, d MMM", - "days-format-short": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormat-long": "d MMMM y 'г'. G", - "months-format-wide": [ - "Мухаррам", - "Сафар", - "Раби-уль-авваль", - "Раби-уль-ахир", - "Джумад-уль-авваль", - "Джумад-уль-ахир", - "Раджаб", - "Шаабан", - "Рамадан", - "Шавваль", - "Зуль-Каада", - "Зуль-Хиджжа" - ], - "dateFormatItem-yyyyQQQ": "QQQ y G", - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "после полудня", - "dateFormat-full": "EEEE, d MMMM y 'г'. G", - "dateFormatItem-yyyyMEd": "E, dd.MM.y G", - "dateFormatItem-Md": "dd.MM", - "dayPeriods-format-abbr-am": "до полудня", - "dateFormatItem-yMd": "dd.MM.y", - "dateFormatItem-yM": "MM.y", - "months-standAlone-wide": [ - "Мухаррам", - "Сафар", - "Раби-уль-авваль", - "Раби-уль-ахир", - "Джумад-уль-авваль", - "Джумад-уль-ахир", - "Раджаб", - "Шаабан", - "Рамадан", - "Шавваль", - "Зуль-Каада", - "Зуль-Хиджжа" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "timeFormat-long": "H:mm:ss z", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "QQQ y 'г'.", - "dateFormatItem-yyyyMMMM": "LLLL y G", - "dateFormatItem-MMdd": "dd.MM", - "months-format-abbr": [ - "Мухаррам", - "Сафар", - "Раби-уль-авваль", - "Раби-уль-ахир", - "Джумад-уль-авваль", - "Джумад-уль-ахир", - "Раджаб", - "Шаабан", - "Рамадан", - "Шавваль", - "Зуль-Каада", - "Зуль-Хиджжа" - ], - "dateFormatItem-yyQ": "Q yy G", - "timeFormat-full": "H:mm:ss zzzz", - "dateFormatItem-E": "ccc", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "Мухаррам", - "Сафар", - "Раби-уль-авваль", - "Раби-уль-ахир", - "Джумад-уль-авваль", - "Джумад-уль-ахир", - "Раджаб", - "Шаабан", - "Рамадан", - "Шавваль", - "Зуль-Каада", - "Зуль-Хиджжа" - ], - "quarters-format-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "quarters-standAlone-wide": [ - "1-й квартал", - "2-й квартал", - "3-й квартал", - "4-й квартал" - ], - "dateFormatItem-yyyyMMMEd": "E, d MMM y G", - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Воскресенье", - "Понедельник", - "Вторник", - "Среда", - "Четверг", - "Пятница", - "Суббота" - ], - "dateFormatItem-yyyyMMM": "LLL y G", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-yyMMM": "LLL yy G", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "1-й кв.", - "2-й кв.", - "3-й кв.", - "4-й кв." - ], - "days-standAlone-abbr": [ - "Вс", - "Пн", - "Вт", - "Ср", - "Чт", - "Пт", - "Сб" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "dateTimeFormat-long": "{1}, {0}", - "dayPeriods-format-narrow-am": "дп", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, dd.MM", - "dateTimeFormat-full": "{1}, {0}", - "days-format-wide": [ - "воскресенье", - "понедельник", - "вторник", - "среда", - "четверг", - "пятница", - "суббота" - ], - "dateFormatItem-yyyyMM": "MM.yyyy G", - "dateFormatItem-yyMM": "MM.yy G", - "dayPeriods-format-abbr-pm": "после полудня", - "days-format-abbr": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-yMMMd": "d MMM y 'г'.", - "days-format-narrow": [ - "вс", - "пн", - "вт", - "ср", - "чт", - "пт", - "сб" - ], - "dateFormatItem-yyyyMd": "dd.MM.y G", - "days-standAlone-narrow": [ - "В", - "П", - "В", - "С", - "Ч", - "П", - "С" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "до полудня", - "dateFormat-short": "dd.MM.yy G", - "dateFormatItem-yMMMEd": "E, d MMM y", - "dateFormatItem-Ed": "E, d", - "dateFormat-medium": "dd.MM.yyyy G", - "dateFormatItem-yyyyM": "MM.y G", - "dayPeriods-format-narrow-pm": "пп", - "dateFormatItem-yyyyQQQQ": "QQQQ y 'г'. G", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-yyyy": "y G" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/ru/number.js.uncompressed.js b/lib/dojo/cldr/nls/ru/number.js.uncompressed.js deleted file mode 100644 index 78e5173f8..000000000 --- a/lib/dojo/cldr/nls/ru/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/ru/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "не число", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 триллиона", - "decimalFormat-short": "000 трлн" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/currency.js.uncompressed.js b/lib/dojo/cldr/nls/sk/currency.js.uncompressed.js deleted file mode 100644 index f9a4b4f32..000000000 --- a/lib/dojo/cldr/nls/sk/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/sk/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkongský dolár", - "CHF_displayName": "Švajčiarský frank", - "JPY_symbol": "JPY", - "CAD_displayName": "Kanadský dolár", - "HKD_symbol": "HKD", - "CNY_displayName": "Čínsky jüan", - "USD_symbol": "USD", - "AUD_displayName": "Austrálsky dolár", - "JPY_displayName": "Japonský jen", - "CAD_symbol": "CAD", - "USD_displayName": "Americký dolár", - "EUR_symbol": "EUR", - "CNY_symbol": "CNY", - "GBP_displayName": "Britská libra", - "GBP_symbol": "GBP", - "AUD_symbol": "AUD", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/sk/gregorian.js.uncompressed.js deleted file mode 100644 index 315febfb7..000000000 --- a/lib/dojo/cldr/nls/sk/gregorian.js.uncompressed.js +++ /dev/null @@ -1,281 +0,0 @@ -define( -"dojo/cldr/nls/sk/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "Ne", - "Po", - "Ut", - "St", - "Št", - "Pi", - "So" - ], - "months-format-narrow": [ - "j", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Deň v týždni", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d. M. y", - "dateFormatItem-MMMEd": "E, d. MMM.", - "eraNarrow": [ - "pred n.l.", - "n.l." - ], - "days-format-short": [ - "Ne", - "Po", - "Ut", - "St", - "Št", - "Pi", - "So" - ], - "dateFormat-long": "d. MMMM y", - "months-format-wide": [ - "január", - "február", - "marec", - "apríl", - "máj", - "jún", - "júl", - "august", - "september", - "október", - "november", - "december" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "popoludní", - "dateFormat-full": "EEEE, d. MMMM y", - "dateFormatItem-Md": "d.M.", - "dateFormatItem-yMd": "d.M.yyyy", - "field-era": "Éra", - "dateFormatItem-yM": "M.yyyy", - "months-standAlone-wide": [ - "január", - "február", - "marec", - "apríl", - "máj", - "jún", - "júl", - "august", - "september", - "október", - "november", - "december" - ], - "timeFormat-short": "H:mm", - "quarters-format-wide": [ - "1. štvrťrok", - "2. štvrťrok", - "3. štvrťrok", - "4. štvrťrok" - ], - "timeFormat-long": "H:mm:ss z", - "field-year": "Rok", - "dateFormatItem-yMMM": "LLL y", - "dateFormatItem-yQ": "Q yyyy", - "dateFormatItem-yyyyMMMM": "LLLL y", - "field-hour": "Hodina", - "months-format-abbr": [ - "jan", - "feb", - "mar", - "apr", - "máj", - "jún", - "júl", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "H:mm:ss zzzz", - "field-day-relative+0": "Dnes", - "field-day-relative+1": "Zajtra", - "field-day-relative+2": "Pozajtra", - "dateFormatItem-H": "H", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "máj", - "jún", - "júl", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "1. štvrťrok", - "2. štvrťrok", - "3. štvrťrok", - "4. štvrťrok" - ], - "dateFormatItem-M": "L.", - "days-standAlone-wide": [ - "nedeľa", - "pondelok", - "utorok", - "streda", - "štvrtok", - "piatok", - "sobota" - ], - "dateFormatItem-MMMMd": "d. MMMM", - "timeFormat-medium": "H:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "1Q", - "2Q", - "3Q", - "4Q" - ], - "eraAbbr": [ - "pred n.l.", - "n.l." - ], - "field-minute": "Minúta", - "field-dayperiod": "Časť dňa", - "days-standAlone-abbr": [ - "ne", - "po", - "ut", - "st", - "št", - "pi", - "so" - ], - "dateFormatItem-d": "d.", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Včera", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Predvčerom", - "dateFormatItem-MMMd": "d. MMM.", - "dateFormatItem-MEd": "E, d.M.", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "LLLL y", - "field-day": "Deň", - "days-format-wide": [ - "nedeľa", - "pondelok", - "utorok", - "streda", - "štvrtok", - "piatok", - "sobota" - ], - "field-zone": "Časové pásmo", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "j", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "field-year-relative+-1": "Minulý rok", - "field-month-relative+-1": "Posledný mesiac", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "ne", - "po", - "ut", - "st", - "št", - "pi", - "so" - ], - "dateFormatItem-yMMMd": "d.M.yyyy", - "eraNames": [ - "pred n.l.", - "n.l." - ], - "days-format-narrow": [ - "N", - "P", - "U", - "S", - "Š", - "P", - "S" - ], - "days-standAlone-narrow": [ - "N", - "P", - "U", - "S", - "Š", - "P", - "S" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Mesiac", - "dayPeriods-format-wide-am": "dopoludnia", - "dateFormatItem-MMMMEd": "E, d. MMMM", - "dateFormat-short": "d.M.yyyy", - "field-second": "Sekunda", - "dateFormatItem-yMMMEd": "E, d. MMM y", - "field-month-relative+0": "Tento mesiac", - "field-month-relative+1": "Budúci mesiac", - "dateFormatItem-Ed": "E d.", - "field-week": "Týždeň", - "dateFormat-medium": "d.M.yyyy", - "field-year-relative+0": "Tento rok", - "field-week-relative+-1": "Minulý týždeň", - "dateFormatItem-yyyyM": "M.yyyy", - "field-year-relative+1": "Budúci rok", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Tento týždeň", - "field-week-relative+1": "Budúci týždeň" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sk/number.js.uncompressed.js b/lib/dojo/cldr/nls/sk/number.js.uncompressed.js deleted file mode 100644 index 612742491..000000000 --- a/lib/dojo/cldr/nls/sk/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/sk/number", //begin v1.x content -{ - "group": " ", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0 %", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 biliónov", - "decimalFormat-short": "000 bil'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/currency.js.uncompressed.js b/lib/dojo/cldr/nls/sl/currency.js.uncompressed.js deleted file mode 100644 index d1167f39d..000000000 --- a/lib/dojo/cldr/nls/sl/currency.js.uncompressed.js +++ /dev/null @@ -1,17 +0,0 @@ -define( -"dojo/cldr/nls/sl/currency", //begin v1.x content -{ - "HKD_displayName": "hongkonški dolar", - "CHF_displayName": "švicarski frank", - "JPY_symbol": "¥", - "CAD_displayName": "kanadski dolar", - "CNY_displayName": "kitajski juan renminbi", - "USD_symbol": "$", - "AUD_displayName": "avstralski dolar", - "JPY_displayName": "japonski jen", - "USD_displayName": "ameriški dolar", - "GBP_displayName": "britanski funt", - "EUR_displayName": "evro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/sl/gregorian.js.uncompressed.js deleted file mode 100644 index 77f2c02ea..000000000 --- a/lib/dojo/cldr/nls/sl/gregorian.js.uncompressed.js +++ /dev/null @@ -1,271 +0,0 @@ -define( -"dojo/cldr/nls/sl/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "ned.", - "pon.", - "tor.", - "sre.", - "čet.", - "pet.", - "sob." - ], - "months-format-narrow": [ - "j", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "Dan v tednu", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E, d. M. y", - "dateFormatItem-MMMEd": "E, d. MMM", - "eraNarrow": [ - "pr. n. št.", - "po Kr." - ], - "days-format-short": [ - "ned.", - "pon.", - "tor.", - "sre.", - "čet.", - "pet.", - "sob." - ], - "dateFormat-long": "dd. MMMM y", - "months-format-wide": [ - "januar", - "februar", - "marec", - "april", - "maj", - "junij", - "julij", - "avgust", - "september", - "oktober", - "november", - "december" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "pop.", - "dateFormat-full": "EEEE, dd. MMMM y", - "dateFormatItem-Md": "d. M.", - "dateFormatItem-yMd": "d. M. y", - "field-era": "Doba", - "dateFormatItem-yM": "M/y", - "months-standAlone-wide": [ - "januar", - "februar", - "marec", - "april", - "maj", - "junij", - "julij", - "avgust", - "september", - "oktober", - "november", - "december" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1. četrtletje", - "2. četrtletje", - "3. četrtletje", - "4. četrtletje" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Leto", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q y", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "Ura", - "months-format-abbr": [ - "jan.", - "feb.", - "mar.", - "apr.", - "maj", - "jun.", - "jul.", - "avg.", - "sep.", - "okt.", - "nov.", - "dec." - ], - "dateFormatItem-yyQ": "Q/yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Danes", - "field-day-relative+1": "Jutri", - "field-day-relative+2": "Pojutrišnjem", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "avg", - "sep", - "okt", - "nov", - "dec" - ], - "quarters-format-abbr": [ - "Q1", - "Q2", - "Q3", - "Q4" - ], - "quarters-standAlone-wide": [ - "1. četrtletje", - "2. četrtletje", - "3. četrtletje", - "4. četrtletje" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "nedelja", - "ponedeljek", - "torek", - "sreda", - "četrtek", - "petek", - "sobota" - ], - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "eraAbbr": [ - "pr. n. št.", - "po Kr." - ], - "field-minute": "Minuta", - "field-dayperiod": "Čas dneva", - "days-standAlone-abbr": [ - "ned", - "pon", - "tor", - "sre", - "čet", - "pet", - "sob" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "Včeraj", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Predvčerajšnjim", - "dateFormatItem-MMMd": "d. MMM", - "dateFormatItem-MEd": "E, d. MM.", - "dateTimeFormat-full": "{1} {0}", - "field-day": "Dan", - "days-format-wide": [ - "nedelja", - "ponedeljek", - "torek", - "sreda", - "četrtek", - "petek", - "sobota" - ], - "field-zone": "Območje", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "j", - "f", - "m", - "a", - "m", - "j", - "j", - "a", - "s", - "o", - "n", - "d" - ], - "field-year-relative+-1": "Lani", - "field-month-relative+-1": "Prejšnji mesec", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "ned.", - "pon.", - "tor.", - "sre.", - "čet.", - "pet.", - "sob." - ], - "dateFormatItem-yMMMd": "MMM d, y", - "eraNames": [ - "pred našim štetjem", - "naše štetje" - ], - "days-format-narrow": [ - "n", - "p", - "t", - "s", - "č", - "p", - "s" - ], - "field-month": "Mesec", - "days-standAlone-narrow": [ - "n", - "p", - "t", - "s", - "č", - "p", - "s" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "dop.", - "dateFormat-short": "d. MM. yy", - "field-second": "Sekunda", - "dateFormatItem-yMMMEd": "E, d. MMM y", - "field-month-relative+0": "Ta mesec", - "field-month-relative+1": "Naslednji mesec", - "dateFormatItem-Ed": "E, d.", - "field-week": "Teden", - "dateFormat-medium": "d. MMM yyyy", - "field-year-relative+0": "Letos", - "field-week-relative+-1": "Prejšnji teden", - "dateFormatItem-yyyyM": "M/yyyy", - "field-year-relative+1": "Naslednje leto", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "Ta teden", - "field-week-relative+1": "Naslednji teden" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sl/number.js.uncompressed.js b/lib/dojo/cldr/nls/sl/number.js.uncompressed.js deleted file mode 100644 index 46c662b02..000000000 --- a/lib/dojo/cldr/nls/sl/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/sl/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "e", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000 bilijona", - "decimalFormat-short": "000 bil'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/sv/buddhist.js.uncompressed.js deleted file mode 100644 index 636ca5f5b..000000000 --- a/lib/dojo/cldr/nls/sv/buddhist.js.uncompressed.js +++ /dev/null @@ -1,233 +0,0 @@ -define( -"dojo/cldr/nls/sv/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "G yyyy-MM", - "dateFormatItem-yQ": "G yyyy Q", - "dayPeriods-format-wide-pm": "em", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "G y QQQ", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "fm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "dateFormatItem-y": "y G", - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "eraAbbr": [ - "BE" - ], - "dateFormatItem-yyyyMM": "G yyyy-MM", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/M", - "dateFormatItem-yyMM": "G yy-MM", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "e", - "dateFormatItem-yyMMM": "MMM -yy G", - "dateFormatItem-yMd": "G yyyy-MM-dd", - "quarters-standAlone-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyyyQQQQ": "QQQQ y G", - "dayPeriods-format-narrow-am": "f", - "months-standAlone-wide": [ - "januari", - "februari", - "mars", - "april", - "maj", - "juni", - "juli", - "augusti", - "september", - "oktober", - "november", - "december" - ], - "dateFormatItem-MMMMEd": "E d:'e' MMMM", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-MMMMd": "d:'e' MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tors", - "fre", - "lör" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d MMM y G", - "dateFormatItem-MEd": "E d/M", - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "days-standAlone-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tor", - "fre", - "lör" - ], - "dayPeriods-format-abbr-pm": "EM", - "dateFormat-short": "G yyyy-MM-dd", - "dateFormatItem-yMMMEd": "E d MMM y G", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, G yyyy-MM-dd", - "months-format-wide": [ - "januari", - "februari", - "mars", - "april", - "maj", - "juni", - "juli", - "augusti", - "september", - "oktober", - "november", - "december" - ], - "dayPeriods-format-abbr-am": "FM", - "days-format-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "days-format-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/currency.js.uncompressed.js b/lib/dojo/cldr/nls/sv/currency.js.uncompressed.js deleted file mode 100644 index d57588bd1..000000000 --- a/lib/dojo/cldr/nls/sv/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/sv/currency", //begin v1.x content -{ - "HKD_displayName": "Hongkong-dollar", - "CHF_displayName": "schweizisk franc", - "JPY_symbol": "JP¥", - "CAD_displayName": "kanadensisk dollar", - "HKD_symbol": "HK$", - "CNY_displayName": "kinesisk yuan renminbi", - "USD_symbol": "US$", - "AUD_displayName": "australisk dollar", - "JPY_displayName": "japansk yen", - "CAD_symbol": "CAN$", - "USD_displayName": "US-dollar", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "brittiskt pund sterling", - "GBP_symbol": "GB£", - "AUD_symbol": "AU$", - "EUR_displayName": "euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/sv/gregorian.js.uncompressed.js deleted file mode 100644 index 3a5bfe2a8..000000000 --- a/lib/dojo/cldr/nls/sv/gregorian.js.uncompressed.js +++ /dev/null @@ -1,287 +0,0 @@ -define( -"dojo/cldr/nls/sv/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "months-format-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "veckodag", - "dateFormatItem-yQQQ": "y QQQ", - "dateFormatItem-yMEd": "E, yyyy-MM-dd", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "f.Kr.", - "e.Kr." - ], - "days-format-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "januari", - "februari", - "mars", - "april", - "maj", - "juni", - "juli", - "augusti", - "september", - "oktober", - "november", - "december" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "em", - "dateFormat-full": "EEEE'en' 'den' d:'e' MMMM y", - "dateFormatItem-Md": "d/M", - "dayPeriods-format-abbr-am": "FM", - "dateFormatItem-yMd": "yyyy-MM-dd", - "dateFormatItem-yM": "yyyy-MM", - "field-era": "era", - "months-standAlone-wide": [ - "januari", - "februari", - "mars", - "april", - "maj", - "juni", - "juli", - "augusti", - "september", - "oktober", - "november", - "december" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "timeFormat-long": "HH:mm:ss z", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "yyyy Q", - "field-year": "år", - "dateFormatItem-MMdd": "dd/MM", - "field-hour": "timme", - "months-format-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "field-day-relative+0": "i dag", - "field-day-relative+1": "i morgon", - "field-day-relative+2": "i övermorgon", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "aug", - "sep", - "okt", - "nov", - "dec" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "quarters-standAlone-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ], - "dateFormatItem-yyyyMMM": "MMM y", - "dateFormatItem-MMMMd": "d:'e' MMMM", - "dateFormatItem-yyMMM": "MMM -yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "eraAbbr": [ - "f.Kr.", - "e.Kr." - ], - "field-minute": "minut", - "field-dayperiod": "fm/em", - "days-standAlone-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tor", - "fre", - "lör" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "i går", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "dayPeriods-format-narrow-am": "f", - "field-day-relative+-2": "i förrgår", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E d/M", - "dateTimeFormat-full": "{1} {0}", - "field-day": "dag", - "days-format-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ], - "field-zone": "tidszon", - "dateFormatItem-yyyyMM": "yyyy-MM", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "J", - "F", - "M", - "A", - "M", - "J", - "J", - "A", - "S", - "O", - "N", - "D" - ], - "field-year-relative+-1": "i fjol", - "field-month-relative+-1": "förra månaden", - "dateFormatItem-yyMM": "yy-MM", - "dateFormatItem-hm": "h:mm a", - "dayPeriods-format-abbr-pm": "EM", - "days-format-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tors", - "fre", - "lör" - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "före Kristus", - "efter Kristus" - ], - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "månad", - "dayPeriods-format-wide-am": "fm", - "dateFormatItem-MMMMEd": "E d:'e' MMMM", - "dateFormat-short": "yyyy-MM-dd", - "dateFormatItem-MMd": "d/M", - "field-second": "sekund", - "dateFormatItem-yMMMEd": "E d MMM y", - "field-month-relative+0": "denna månad", - "field-month-relative+1": "nästa månad", - "dateFormatItem-Ed": "E d", - "field-week": "vecka", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "i år", - "field-week-relative+-1": "förra veckan", - "field-year-relative+1": "nästa år", - "dayPeriods-format-narrow-pm": "e", - "dateFormatItem-yyyyQQQQ": "QQQQ y", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "denna vecka", - "field-week-relative+1": "nästa vecka" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/sv/hebrew.js.uncompressed.js deleted file mode 100644 index 85f93f984..000000000 --- a/lib/dojo/cldr/nls/sv/hebrew.js.uncompressed.js +++ /dev/null @@ -1,188 +0,0 @@ -define( -"dojo/cldr/nls/sv/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "yyyy-MM", - "dateFormatItem-yQ": "yyyy Q", - "dayPeriods-format-wide-pm": "em", - "dateFormatItem-MMMEd": "E d MMM", - "days-standAlone-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ], - "dayPeriods-format-wide-am": "fm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "months-standAlone-abbr": [ - "tishrí", - "heshván", - "kislév", - "tevét", - "shevát", - "adár I", - "adár", - "nisán", - "ijjár", - "siván", - "tammúz", - "ab", - "elúl" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "eraAbbr": [ - "AM" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-medium": "d MMM y", - "dayPeriods-format-narrow-pm": "e", - "dateFormatItem-yMd": "yyyy-MM-dd", - "quarters-standAlone-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "dayPeriods-format-narrow-am": "f", - "months-standAlone-wide": [ - "tishrí", - "heshván", - "kislév", - "tevét", - "shevát", - "adár I", - "adár", - "nisán", - "ijjár", - "siván", - "tammúz", - "ab", - "elúl" - ], - "dateFormatItem-MMMd": "d MMM", - "months-format-abbr": [ - "tishrí", - "heshván", - "kislév", - "tevét", - "shevát", - "adár I", - "adár", - "nisán", - "ijjár", - "siván", - "tammúz", - "ab", - "elúl" - ], - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tors", - "fre", - "lör" - ], - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E d/M", - "days-standAlone-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "days-standAlone-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tor", - "fre", - "lör" - ], - "dayPeriods-format-abbr-pm": "EM", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE'en' 'den' d:'e' MMMM y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E, yyyy-MM-dd", - "months-format-wide": [ - "tishrí", - "heshván", - "kislév", - "tevét", - "shevát", - "adár I", - "adár", - "nisán", - "ijjár", - "siván", - "tammúz", - "ab", - "elúl" - ], - "dayPeriods-format-abbr-am": "FM", - "days-format-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "quarters-format-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "months-format-wide-leap": "adár II", - "days-format-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/sv/islamic.js.uncompressed.js deleted file mode 100644 index 2ca91320d..000000000 --- a/lib/dojo/cldr/nls/sv/islamic.js.uncompressed.js +++ /dev/null @@ -1,210 +0,0 @@ -define( -"dojo/cldr/nls/sv/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "yyyy-MM", - "dateFormatItem-yyyyMMMEd": "E d MMM y G", - "dateFormatItem-yQ": "yyyy Q", - "dayPeriods-format-wide-pm": "em", - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-MMdd": "dd/MM", - "days-standAlone-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ], - "dateFormatItem-MMM": "LLL", - "dayPeriods-format-wide-am": "fm", - "quarters-standAlone-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "timeFormat-full": "'kl'. HH:mm:ss zzzz", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "jumada-l-ula", - "jumada-l-akhira", - "rajab", - "sha’ban", - "ramadan", - "shawwal", - "dhu-l-ga’da", - "dhu-l-hijja" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "eraAbbr": [ - "AH" - ], - "dateFormatItem-yyyyMM": "G y-MM", - "dateFormat-long": "d MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-MMd": "d/M", - "dateFormatItem-yyMM": "G yy-MM", - "dateFormat-medium": "d MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "e", - "dateFormatItem-yyMMM": "MMM -yy G", - "dateFormatItem-yMd": "yyyy-MM-dd", - "quarters-standAlone-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "dateFormatItem-ms": "mm:ss", - "dateFormatItem-yyyyQQQQ": "QQQQ y G", - "dayPeriods-format-narrow-am": "f", - "months-standAlone-wide": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "jumada-l-ula", - "jumada-l-akhira", - "rajab", - "sha’ban", - "ramadan", - "shawwal", - "dhu-l-ga’da", - "dhu-l-hijja" - ], - "dateFormatItem-yyyyMd": "G y-MM-dd", - "dateFormatItem-yyyyMMMd": "d MMM y G", - "dateFormatItem-MMMMEd": "E d:'e' MMMM", - "dateFormatItem-yyyyMEd": "E, G y-MM-dd", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "jumada-l-ula", - "jumada-l-akhira", - "rajab", - "sha’ban", - "ramadan", - "shawwal", - "dhu-l-ga’da", - "dhu-l-hijja" - ], - "dateFormatItem-MMMMd": "d:'e' MMMM", - "quarters-format-abbr": [ - "K1", - "K2", - "K3", - "K4" - ], - "days-format-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tors", - "fre", - "lör" - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "S", - "M", - "T", - "O", - "T", - "F", - "L" - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E d/M", - "dateFormatItem-yyyyQQQ": "G y QQQ", - "days-standAlone-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "sön", - "mån", - "tis", - "ons", - "tor", - "fre", - "lör" - ], - "dayPeriods-format-abbr-pm": "EM", - "dateFormat-short": "G y-MM-dd", - "dateFormatItem-yyyyM": "G y-MM", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEE d MMMM y G", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yyyyQ": "G y Q", - "dateFormatItem-yMEd": "E, yyyy-MM-dd", - "months-format-wide": [ - "muharram", - "safar", - "rabi’ al-awwal", - "rabi’ al-akhir", - "jumada-l-ula", - "jumada-l-akhira", - "rajab", - "sha’ban", - "ramadan", - "shawwal", - "dhu-l-ga’da", - "dhu-l-hijja" - ], - "dayPeriods-format-abbr-am": "FM", - "days-format-short": [ - "sö", - "må", - "ti", - "on", - "to", - "fr", - "lö" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1:a kvartalet", - "2:a kvartalet", - "3:e kvartalet", - "4:e kvartalet" - ], - "days-format-wide": [ - "söndag", - "måndag", - "tisdag", - "onsdag", - "torsdag", - "fredag", - "lördag" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/sv/number.js.uncompressed.js b/lib/dojo/cldr/nls/sv/number.js.uncompressed.js deleted file mode 100644 index 559cab4c6..000000000 --- a/lib/dojo/cldr/nls/sv/number.js.uncompressed.js +++ /dev/null @@ -1,24 +0,0 @@ -define( -"dojo/cldr/nls/sv/number", //begin v1.x content -{ - "scientificFormat": "#E0", - "currencyDecimal": ":", - "infinity": "∞", - "list": ";", - "percentSign": "%", - "minusSign": "−", - "decimalFormat-short": "000 bn", - "nan": "¤¤¤", - "plusSign": "+", - "currencyFormat": "#,##0.00 ¤", - "perMille": "‰", - "group": " ", - "percentFormat": "#,##0 %", - "decimalFormat-long": "000 biljoner", - "decimalFormat": "#,##0.###", - "currencyGroup": ".", - "decimal": ",", - "exponential": "×10^" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/th/buddhist.js.uncompressed.js deleted file mode 100644 index 057965e3f..000000000 --- a/lib/dojo/cldr/nls/th/buddhist.js.uncompressed.js +++ /dev/null @@ -1,236 +0,0 @@ -define( -"dojo/cldr/nls/th/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "หลังเที่ยง", - "eraNames": [ - "พุทธศักราช" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "dayPeriods-format-wide-am": "ก่อนเที่ยง", - "quarters-standAlone-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dateFormatItem-y": "G y", - "timeFormat-full": "H นาฬิกา mm นาที ss วินาที zzzz", - "months-standAlone-abbr": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "eraAbbr": [ - "พ.ศ." - ], - "dateFormatItem-yyyyMMMM": "MMMM y", - "dateFormat-long": "d MMMM y", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "d MMM y", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "หลังเที่ยง", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dateFormatItem-yMMMM": "MMMM y", - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "ก่อนเที่ยง", - "months-standAlone-wide": [ - "มกราคม", - "กุมภาพันธ์", - "มีนาคม", - "เมษายน", - "พฤษภาคม", - "มิถุนายน", - "กรกฎาคม", - "สิงหาคม", - "กันยายน", - "ตุลาคม", - "พฤศจิกายน", - "ธันวาคม" - ], - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-yyQ": "Q yy", - "timeFormat-long": "H นาฬิกา mm นาที ss วินาที z", - "months-format-abbr": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "dateFormatItem-H": "HH", - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "days-format-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-mmss": "mm:ss", - "dateFormatItem-M": "L", - "days-format-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "months-format-narrow": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "days-standAlone-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormat-short": "d/M/yy", - "dateFormatItem-yyyyM": "M/yyyy", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEEที่ d MMMM G y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/yyyy", - "months-format-wide": [ - "มกราคม", - "กุมภาพันธ์", - "มีนาคม", - "เมษายน", - "พฤษภาคม", - "มิถุนายน", - "กรกฎาคม", - "สิงหาคม", - "กันยายน", - "ตุลาคม", - "พฤศจิกายน", - "ธันวาคม" - ], - "days-format-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "eraNarrow": [ - "พ.ศ." - ], - "days-format-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/currency.js.uncompressed.js b/lib/dojo/cldr/nls/th/currency.js.uncompressed.js deleted file mode 100644 index 23a650fe2..000000000 --- a/lib/dojo/cldr/nls/th/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/th/currency", //begin v1.x content -{ - "HKD_displayName": "ดอลลาร์ฮ่องกง", - "CHF_displayName": "ฟรังก์สวิส", - "JPY_symbol": "¥", - "CAD_displayName": "ดอลลาร์แคนาดา", - "HKD_symbol": "HK$", - "CNY_displayName": "หยวนจีน", - "USD_symbol": "US$", - "AUD_displayName": "ดอลลาร์ออสเตรเลีย", - "JPY_displayName": "เยนญี่ปุ่น", - "CAD_symbol": "CA$", - "USD_displayName": "ดอลลาร์สหรัฐ", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "ปอนด์สเตอร์ลิง (สหราชอาณาจักร)", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "ยูโร" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/th/gregorian.js.uncompressed.js deleted file mode 100644 index 90f494316..000000000 --- a/lib/dojo/cldr/nls/th/gregorian.js.uncompressed.js +++ /dev/null @@ -1,282 +0,0 @@ -define( -"dojo/cldr/nls/th/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "months-format-narrow": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "วันในสัปดาห์", - "dateFormatItem-yQQQ": "QQQ y", - "dateFormatItem-yMEd": "E d/M/yyyy", - "dateFormatItem-MMMEd": "E d MMM", - "eraNarrow": [ - "ก่อน ค.ศ.", - "ค.ศ." - ], - "days-format-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "มกราคม", - "กุมภาพันธ์", - "มีนาคม", - "เมษายน", - "พฤษภาคม", - "มิถุนายน", - "กรกฎาคม", - "สิงหาคม", - "กันยายน", - "ตุลาคม", - "พฤศจิกายน", - "ธันวาคม" - ], - "dateTimeFormat-medium": "{1}, {0}", - "dayPeriods-format-wide-pm": "หลังเที่ยง", - "dateFormat-full": "EEEEที่ d MMMM G y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMd": "d/M/yyyy", - "field-era": "สมัย", - "dateFormatItem-yM": "M/yyyy", - "months-standAlone-wide": [ - "มกราคม", - "กุมภาพันธ์", - "มีนาคม", - "เมษายน", - "พฤษภาคม", - "มิถุนายน", - "กรกฎาคม", - "สิงหาคม", - "กันยายน", - "ตุลาคม", - "พฤศจิกายน", - "ธันวาคม" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "timeFormat-long": "H นาฬิกา mm นาที ss วินาที z", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "Q yyyy", - "field-year": "ปี", - "dateFormatItem-yyyyMMMM": "MMMM y", - "field-hour": "ชั่วโมง", - "months-format-abbr": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "H นาฬิกา mm นาที ss วินาที zzzz", - "field-day-relative+0": "วันนี้", - "field-day-relative+1": "พรุ่งนี้", - "field-day-relative+2": "มะรืนนี้", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "quarters-format-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "quarters-standAlone-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateFormatItem-MMMMd": "d MMMM", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "eraAbbr": [ - "ปีก่อน ค.ศ.", - "ค.ศ." - ], - "field-minute": "นาที", - "field-dayperiod": "ช่วงวัน", - "days-standAlone-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "เมื่อวาน", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1}, {0}", - "dayPeriods-format-narrow-am": "ก่อนเที่ยง", - "field-day-relative+-2": "เมื่อวานซืน", - "dateFormatItem-MMMd": "d MMM", - "dateFormatItem-MEd": "E, d/M", - "dateTimeFormat-full": "{1}, {0}", - "dateFormatItem-yMMMM": "MMMM y", - "field-day": "วัน", - "days-format-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "field-zone": "เขต", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "ม.ค.", - "ก.พ.", - "มี.ค.", - "เม.ย.", - "พ.ค.", - "มิ.ย.", - "ก.ค.", - "ส.ค.", - "ก.ย.", - "ต.ค.", - "พ.ย.", - "ธ.ค." - ], - "field-year-relative+-1": "ปีที่แล้ว", - "field-month-relative+-1": "เดือนที่แล้ว", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-yMMMd": "d MMM y", - "eraNames": [ - "ปีก่อนคริสต์ศักราช", - "คริสต์ศักราช" - ], - "days-format-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "days-standAlone-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-MMM": "LLL", - "field-month": "เดือน", - "dayPeriods-format-wide-am": "ก่อนเที่ยง", - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormat-short": "d/M/yy", - "field-second": "วินาที", - "dateFormatItem-yMMMEd": "E d MMM y", - "field-month-relative+0": "เดือนนี้", - "field-month-relative+1": "เดือนหน้า", - "dateFormatItem-Ed": "E d", - "field-week": "สัปดาห์", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "ปีนี้", - "field-week-relative+-1": "สัปดาห์ที่แล้ว", - "dateFormatItem-yyyyM": "M/yyyy", - "field-year-relative+1": "ปีหน้า", - "dateFormatItem-mmss": "mm:ss", - "dayPeriods-format-narrow-pm": "หลังเที่ยง", - "dateTimeFormat-short": "{1}, {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "field-week-relative+0": "สัปดาห์นี้", - "field-week-relative+1": "สัปดาห์หน้า" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/th/hebrew.js.uncompressed.js deleted file mode 100644 index 28be29a91..000000000 --- a/lib/dojo/cldr/nls/th/hebrew.js.uncompressed.js +++ /dev/null @@ -1,202 +0,0 @@ -define( -"dojo/cldr/nls/th/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "months-standAlone-abbr-leap": "อาดาร์ II", - "dayPeriods-format-wide-pm": "หลังเที่ยง", - "eraNames": [ - "ย.ศ." - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateTimeFormat-full": "{1}, {0}", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "ก่อนเที่ยง", - "dateTimeFormat-medium": "{1}, {0}", - "months-format-abbr-leap": "อาดาร์ II", - "quarters-standAlone-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "timeFormat-full": "H นาฬิกา mm นาที ss วินาที zzzz", - "months-standAlone-abbr": [ - "ทิชรี", - "เฮวาน", - "กีสเลฟ", - "เตเวต", - "เชวัต", - "อาดาร์ I", - "อาดาร์", - "นิสซาน", - "อิยาร์", - "สีวัน", - "ตามูซ", - "อัฟ", - "เอลอุล" - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "eraAbbr": [ - "ย.ศ." - ], - "dateFormat-long": "d MMMM y", - "dateFormat-medium": "d MMM y", - "dayPeriods-format-narrow-pm": "หลังเที่ยง", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dayPeriods-format-narrow-am": "ก่อนเที่ยง", - "dateTimeFormat-long": "{1}, {0}", - "months-standAlone-wide": [ - "ทิชรี", - "เฮวาน", - "กีสเลฟ", - "เตเวต", - "เชวัต", - "อาดาร์ I", - "อาดาร์", - "นิสซาน", - "อิยาร์", - "สีวัน", - "ตามูซ", - "อัฟ", - "เอลอุล" - ], - "dateFormatItem-MMMd": "d MMM", - "timeFormat-long": "H นาฬิกา mm นาที ss วินาที z", - "months-format-abbr": [ - "ทิชรี", - "เฮวาน", - "กีสเลฟ", - "เตเวต", - "เชวัต", - "อาดาร์ I", - "อาดาร์", - "นิสซาน", - "อิยาร์", - "สีวัน", - "ตามูซ", - "อัฟ", - "เอลอุล" - ], - "quarters-format-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "days-format-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "days-format-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "days-standAlone-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "days-standAlone-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "months-standAlone-wide-leap": "อาดาร์ II", - "dateFormat-short": "d/M/yy", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEEที่ d MMMM G y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/yyyy", - "months-format-wide": [ - "ทิชรี", - "เฮวาน", - "กีสเลฟ", - "เตเวต", - "เชวัต", - "อาดาร์ I", - "อาดาร์", - "นิสซาน", - "อิยาร์", - "สีวัน", - "ตามูซ", - "อัฟ", - "เอลอุล" - ], - "days-format-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "quarters-format-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "months-format-wide-leap": "อาดาร์ II", - "eraNarrow": [ - "ย.ศ." - ], - "days-format-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/th/islamic.js.uncompressed.js deleted file mode 100644 index 8205d93dd..000000000 --- a/lib/dojo/cldr/nls/th/islamic.js.uncompressed.js +++ /dev/null @@ -1,236 +0,0 @@ -define( -"dojo/cldr/nls/th/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "M/yyyy", - "dateFormatItem-yQ": "Q yyyy", - "dayPeriods-format-wide-pm": "หลังเที่ยง", - "eraNames": [ - "ฮิจเราะห์ศักราช" - ], - "dateFormatItem-MMMEd": "E d MMM", - "dateTimeFormat-full": "{1}, {0}", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y", - "days-standAlone-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateTimeFormat-short": "{1}, {0}", - "dayPeriods-format-wide-am": "ก่อนเที่ยง", - "dateTimeFormat-medium": "{1}, {0}", - "quarters-standAlone-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dateFormatItem-y": "y", - "timeFormat-full": "H นาฬิกา mm นาที ss วินาที zzzz", - "months-standAlone-abbr": [ - "มุฮัร.", - "เศาะ.", - "รอบี 1", - "รอบี 2", - "ญุมา 1", - "ญุมา 2", - "เราะ.", - "ชะอ์.", - "เราะมะ.", - "เชาว.", - "ซุลกิอฺ.", - "ซุลหิจ." - ], - "dateFormatItem-Ed": "E d", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "eraAbbr": [ - "ฮ.ศ." - ], - "dateFormat-long": "d MMMM y", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "d MMM y", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "หลังเที่ยง", - "dateFormatItem-yMd": "d/M/yyyy", - "quarters-standAlone-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "dateFormatItem-yMMMM": "MMMM y", - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "ก่อนเที่ยง", - "dateTimeFormat-long": "{1}, {0}", - "months-standAlone-wide": [ - "มุฮะร์รอม", - "ซอฟาร์", - "รอบี I", - "รอบี II", - "จุมาดา I", - "จุมาดา II", - "รอจับ", - "ชะอะบาน", - "รอมะดอน", - "เชาวัล", - "ดฮุุอัลกิดะห์", - "ดฮุอัลฮิจจะห์" - ], - "dateFormatItem-MMMMEd": "E d MMMM", - "dateFormatItem-MMMd": "d MMM", - "months-format-abbr": [ - "มุฮัร.", - "เศาะ.", - "รอบี 1", - "รอบี 2", - "ญุมา 1", - "ญุมา 2", - "เราะ.", - "ชะอ์.", - "เราะมะ.", - "เชาว.", - "ซุลกิอฺ.", - "ซุลหิจ." - ], - "timeFormat-long": "H นาฬิกา mm นาที ss วินาที z", - "dateFormatItem-H": "H", - "dateFormatItem-MMMMd": "d MMMM", - "quarters-format-abbr": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "days-format-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-M": "L", - "days-format-narrow": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-yMMMd": "d MMM y", - "dateFormatItem-MEd": "E, d/M", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormat-short": "d/M/yyyy", - "dateFormatItem-yMMMEd": "E d MMM y", - "dateFormat-full": "EEEEที่ d MMMM G y", - "dateFormatItem-Md": "d/M", - "dateFormatItem-yMEd": "E d/M/yyyy", - "months-format-wide": [ - "มุฮะร์รอม", - "ซอฟาร์", - "รอบี I", - "รอบี II", - "จุมาดา I", - "จุมาดา II", - "รอจับ", - "ชะอะบาน", - "รอมะดอน", - "เชาวัล", - "ดฮุุอัลกิดะห์", - "ดฮุอัลฮิจจะห์" - ], - "days-format-short": [ - "อา.", - "จ.", - "อ.", - "พ.", - "พฤ.", - "ศ.", - "ส." - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "ไตรมาส 1", - "ไตรมาส 2", - "ไตรมาส 3", - "ไตรมาส 4" - ], - "eraNarrow": [ - "ฮ.ศ." - ], - "days-format-wide": [ - "วันอาทิตย์", - "วันจันทร์", - "วันอังคาร", - "วันพุธ", - "วันพฤหัสบดี", - "วันศุกร์", - "วันเสาร์" - ], - "dateFormatItem-h": "h a" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/th/number.js.uncompressed.js b/lib/dojo/cldr/nls/th/number.js.uncompressed.js deleted file mode 100644 index a0feea884..000000000 --- a/lib/dojo/cldr/nls/th/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/th/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000 ล้านล้าน", - "decimalFormat-short": "000 ล'.'ล'.'" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/tr/buddhist.js.uncompressed.js deleted file mode 100644 index 55b453299..000000000 --- a/lib/dojo/cldr/nls/tr/buddhist.js.uncompressed.js +++ /dev/null @@ -1,235 +0,0 @@ -define( -"dojo/cldr/nls/tr/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "MM.y G", - "dateFormatItem-yQ": "Q y G", - "dayPeriods-format-wide-pm": "ÖS", - "dateFormatItem-MMMEd": "dd MMM E", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "QQQ y G", - "days-standAlone-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "O", - "Ş", - "M", - "N", - "M", - "H", - "T", - "A", - "E", - "E", - "K", - "A" - ], - "dateFormatItem-Gy": "y G", - "dayPeriods-format-wide-am": "ÖÖ", - "quarters-standAlone-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "dateFormatItem-y": "y G", - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Oca", - "Şub", - "Mar", - "Nis", - "May", - "Haz", - "Tem", - "Ağu", - "Eyl", - "Eki", - "Kas", - "Ara" - ], - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "MMM y G", - "days-standAlone-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormat-long": "dd MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM.yy G", - "dateFormat-medium": "dd MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM yy G", - "dateFormatItem-yyQQQQ": "QQQQ yy G", - "dateFormatItem-yMd": "dd.MM.y G", - "quarters-standAlone-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "dateFormatItem-yMMMM": "MMMM y G", - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "Ocak", - "Şubat", - "Mart", - "Nisan", - "Mayıs", - "Haziran", - "Temmuz", - "Ağustos", - "Eylül", - "Ekim", - "Kasım", - "Aralık" - ], - "dateFormatItem-MMMd": "dd MMM", - "quarters-format-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "Oca", - "Şub", - "Mar", - "Nis", - "May", - "Haz", - "Tem", - "Ağu", - "Eyl", - "Eki", - "Kas", - "Ara" - ], - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "days-format-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormatItem-mmss": "mm:ss", - "dateFormatItem-M": "L", - "days-format-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormatItem-yMMMd": "dd MMM y G", - "dateFormatItem-MEd": "dd.MM E", - "months-format-narrow": [ - "O", - "Ş", - "M", - "N", - "M", - "H", - "T", - "A", - "E", - "E", - "K", - "A" - ], - "days-standAlone-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormat-short": "dd.MM.yyyy G", - "dateFormatItem-yMMMEd": "dd MMM y G E", - "dateFormat-full": "dd MMMM y G EEEE", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yMEd": "dd.MM.y G E", - "months-format-wide": [ - "Ocak", - "Şubat", - "Mart", - "Nisan", - "Mayıs", - "Haziran", - "Temmuz", - "Ağustos", - "Eylül", - "Ekim", - "Kasım", - "Aralık" - ], - "days-format-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "days-format-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/currency.js.uncompressed.js b/lib/dojo/cldr/nls/tr/currency.js.uncompressed.js deleted file mode 100644 index 6074b4d78..000000000 --- a/lib/dojo/cldr/nls/tr/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/tr/currency", //begin v1.x content -{ - "HKD_displayName": "Hong Kong Doları", - "CHF_displayName": "İsviçre Frangı", - "JPY_symbol": "¥", - "CAD_displayName": "Kanada Doları", - "HKD_symbol": "HK$", - "CNY_displayName": "Çin Yuanı", - "USD_symbol": "$", - "AUD_displayName": "Avustralya Doları", - "JPY_displayName": "Japon Yeni", - "CAD_symbol": "CA$", - "USD_displayName": "ABD Doları", - "EUR_symbol": "€", - "CNY_symbol": "CN¥", - "GBP_displayName": "İngiliz Sterlini", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "Euro" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/tr/gregorian.js.uncompressed.js deleted file mode 100644 index 21d16f73a..000000000 --- a/lib/dojo/cldr/nls/tr/gregorian.js.uncompressed.js +++ /dev/null @@ -1,282 +0,0 @@ -define( -"dojo/cldr/nls/tr/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "months-format-narrow": [ - "O", - "Ş", - "M", - "N", - "M", - "H", - "T", - "A", - "E", - "E", - "K", - "A" - ], - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "field-weekday": "Haftanın Günü", - "dateFormatItem-yyQQQQ": "QQQQ yy", - "dateFormatItem-yQQQ": "y/QQQ", - "dateFormatItem-yMEd": "dd.MM.yyyy E", - "dateFormatItem-MMMEd": "d MMMM E", - "eraNarrow": [ - "MÖ", - "MS" - ], - "days-format-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "dateFormat-long": "d MMMM y", - "months-format-wide": [ - "Ocak", - "Şubat", - "Mart", - "Nisan", - "Mayıs", - "Haziran", - "Temmuz", - "Ağustos", - "Eylül", - "Ekim", - "Kasım", - "Aralık" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "ÖS", - "dateFormat-full": "d MMMM y EEEE", - "dateFormatItem-Md": "dd/MM", - "dateFormatItem-yMd": "dd.MM.yyyy", - "field-era": "Miladi Dönem", - "dateFormatItem-yM": "MM/y", - "months-standAlone-wide": [ - "Ocak", - "Şubat", - "Mart", - "Nisan", - "Mayıs", - "Haziran", - "Temmuz", - "Ağustos", - "Eylül", - "Ekim", - "Kasım", - "Aralık" - ], - "timeFormat-short": "HH:mm", - "quarters-format-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "timeFormat-long": "HH:mm:ss z", - "field-year": "Yıl", - "dateFormatItem-yMMM": "MMM y", - "dateFormatItem-yQ": "y/Q", - "field-hour": "Saat", - "months-format-abbr": [ - "Oca", - "Şub", - "Mar", - "Nis", - "May", - "Haz", - "Tem", - "Ağu", - "Eyl", - "Eki", - "Kas", - "Ara" - ], - "dateFormatItem-yyQ": "Q yy", - "timeFormat-full": "HH:mm:ss zzzz", - "field-day-relative+0": "Bugün", - "field-day-relative+1": "Yarın", - "field-day-relative+2": "Öbür gün", - "dateFormatItem-H": "HH", - "months-standAlone-abbr": [ - "Oca", - "Şub", - "Mar", - "Nis", - "May", - "Haz", - "Tem", - "Ağu", - "Eyl", - "Eki", - "Kas", - "Ara" - ], - "quarters-format-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "quarters-standAlone-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "dateFormatItem-M": "L", - "days-standAlone-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ], - "dateFormatItem-MMMMd": "dd MMMM", - "dateFormatItem-yyMMM": "MMM yy", - "timeFormat-medium": "HH:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "eraAbbr": [ - "MÖ", - "MS" - ], - "field-minute": "Dakika", - "field-dayperiod": "ÖÖ/ÖS", - "days-standAlone-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormatItem-d": "d", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "field-day-relative+-1": "Dün", - "dateFormatItem-h": "h a", - "dateTimeFormat-long": "{1} {0}", - "field-day-relative+-2": "Evvelsi gün", - "dateFormatItem-MMMd": "d MMMM", - "dateFormatItem-MEd": "dd/MM E", - "dateTimeFormat-full": "{1} {0}", - "dateFormatItem-yMMMM": "MMMM y", - "field-day": "Gün", - "days-format-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ], - "field-zone": "Saat Dilimi", - "dateFormatItem-y": "y", - "months-standAlone-narrow": [ - "O", - "Ş", - "M", - "N", - "M", - "H", - "T", - "A", - "E", - "E", - "K", - "A" - ], - "field-year-relative+-1": "Geçen yıl", - "field-month-relative+-1": "Geçen ay", - "dateFormatItem-yyMM": "MM.yy", - "dateFormatItem-hm": "h:mm a", - "days-format-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormatItem-yMMMd": "dd MMM y", - "eraNames": [ - "Milattan Önce", - "Milattan Sonra" - ], - "days-format-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "days-standAlone-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "Ay", - "dayPeriods-format-wide-am": "ÖÖ", - "dateFormatItem-MMMMEd": "dd MMMM E", - "dateFormat-short": "dd.MM.yyyy", - "field-second": "Saniye", - "dateFormatItem-yMMMEd": "d MMM y E", - "field-month-relative+0": "Bu ay", - "field-month-relative+1": "Gelecek ay", - "dateFormatItem-Ed": "d E", - "field-week": "Hafta", - "dateFormat-medium": "d MMM y", - "field-year-relative+0": "Bu yıl", - "field-week-relative+-1": "Geçen hafta", - "field-year-relative+1": "Gelecek yıl", - "dateFormatItem-mmss": "mm:ss", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yyyy": "y", - "field-week-relative+0": "Bu hafta", - "field-week-relative+1": "Gelecek hafta" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/tr/hebrew.js.uncompressed.js deleted file mode 100644 index ae0f4dbaa..000000000 --- a/lib/dojo/cldr/nls/tr/hebrew.js.uncompressed.js +++ /dev/null @@ -1,193 +0,0 @@ -define( -"dojo/cldr/nls/tr/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y", - "dateFormatItem-yQ": "y/Q", - "dayPeriods-format-wide-pm": "ÖS", - "dateFormatItem-MMMEd": "d MMMM E", - "dateFormatItem-yQQQ": "y/QQQ", - "days-standAlone-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ], - "dayPeriods-format-wide-am": "ÖÖ", - "quarters-standAlone-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "months-standAlone-abbr": [ - "Tişri", - "Heşvan", - "Kislev", - "Tevet", - "Şevat", - "Veadar", - "Adar", - "Nisan", - "İyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormat-long": "d MMMM y", - "dateFormat-medium": "d MMM y", - "dateFormatItem-yMd": "dd.MM.yyyy", - "quarters-standAlone-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "Tişri", - "Heşvan", - "Kislev", - "Tevet", - "Şevat", - "Veadar", - "Adar", - "Nisan", - "İyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "dateFormatItem-MMMd": "d MMMM", - "quarters-format-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-format-abbr": [ - "Tişri", - "Heşvan", - "Kislev", - "Tevet", - "Şevat", - "Veadar", - "Adar", - "Nisan", - "İyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "quarters-format-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "days-format-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "days-format-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormatItem-yMMMd": "dd MMM y", - "dateFormatItem-MEd": "dd/MM E", - "days-standAlone-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "days-standAlone-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormat-short": "dd.MM.yyyy", - "dateFormatItem-yMMMEd": "d MMM y E", - "dateFormat-full": "d MMMM y EEEE", - "dateFormatItem-Md": "dd/MM", - "dateFormatItem-yMEd": "dd.MM.yyyy E", - "months-format-wide": [ - "Tişri", - "Heşvan", - "Kislev", - "Tevet", - "Şevat", - "Veadar", - "Adar", - "Nisan", - "İyar", - "Sivan", - "Tamuz", - "Av", - "Elul" - ], - "days-format-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "quarters-format-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "months-format-wide-leap": "Adar II", - "days-format-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/tr/islamic.js.uncompressed.js deleted file mode 100644 index 45ff1341d..000000000 --- a/lib/dojo/cldr/nls/tr/islamic.js.uncompressed.js +++ /dev/null @@ -1,227 +0,0 @@ -define( -"dojo/cldr/nls/tr/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "MM/y", - "dateFormatItem-yyyyMMMEd": "dd MMM y G E", - "dateFormatItem-yQ": "y/Q", - "dayPeriods-format-wide-pm": "ÖS", - "dateFormatItem-MMMEd": "dd MMM E", - "dateFormatItem-hms": "h:mm:ss a", - "dateFormatItem-yQQQ": "y/QQQ", - "days-standAlone-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dayPeriods-format-wide-am": "ÖÖ", - "quarters-standAlone-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "dateFormatItem-yyyy": "y G", - "months-standAlone-abbr": [ - "Muharrem", - "Safer", - "Rebiülevvel", - "Rebiülahir", - "Cemaziyelevvel", - "Cemaziyelahir", - "Recep", - "Şaban", - "Ramazan", - "Şevval", - "Zilkade", - "Zilhicce" - ], - "dateFormatItem-Ed": "d E", - "dateFormatItem-yMMM": "MMM y", - "days-standAlone-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormatItem-yyyyMMMM": "MMMM y G", - "dateFormat-long": "dd MMMM y G", - "dateFormatItem-Hm": "HH:mm", - "dateFormatItem-yyMM": "MM.yy G", - "dateFormat-medium": "dd MMM y G", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-yyMMM": "MMM yy G", - "dateFormatItem-yyQQQQ": "QQQQ yy G", - "dateFormatItem-yMd": "dd.MM.yyyy", - "quarters-standAlone-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "dateFormatItem-ms": "mm:ss", - "quarters-standAlone-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "months-standAlone-wide": [ - "Muharrem", - "Safer", - "Rebiülevvel", - "Rebiülahir", - "Cemaziyelevvel", - "Cemaziyelahir", - "Recep", - "Şaban", - "Ramazan", - "Şevval", - "Zilkade", - "Zilhicce" - ], - "dateFormatItem-yyyyMd": "dd.MM.y G", - "dateFormatItem-yyyyMMMd": "dd MMM y G", - "dateFormatItem-yyyyMEd": "dd.MM.y G E", - "dateFormatItem-MMMd": "dd MMM", - "quarters-format-narrow": [ - "1.", - "2.", - "3.", - "4." - ], - "dateFormatItem-yyQ": "Q yy G", - "months-format-abbr": [ - "Muharrem", - "Safer", - "Rebiülevvel", - "Rebiülahir", - "Cemaziyelevvel", - "Cemaziyelahir", - "Recep", - "Şaban", - "Ramazan", - "Şevval", - "Zilkade", - "Zilhicce" - ], - "dateFormatItem-H": "HH", - "quarters-format-abbr": [ - "Ç1", - "Ç2", - "Ç3", - "Ç4" - ], - "days-format-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormatItem-mmss": "mm:ss", - "dateFormatItem-M": "L", - "days-format-narrow": [ - "P", - "P", - "S", - "Ç", - "P", - "C", - "C" - ], - "dateFormatItem-yMMMd": "dd MMM y", - "dateFormatItem-MEd": "dd.MM E", - "dateFormatItem-yyyyQQQ": "QQQ y G", - "days-standAlone-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "dateFormatItem-hm": "h:mm a", - "days-standAlone-abbr": [ - "Paz", - "Pzt", - "Sal", - "Çar", - "Per", - "Cum", - "Cmt" - ], - "dateFormat-short": "dd.MM.yyyy G", - "dateFormatItem-yyyyM": "MM.y G", - "dateFormatItem-yMMMEd": "d MMM y E", - "dateFormat-full": "dd MMMM y G EEEE", - "dateFormatItem-Md": "dd.MM", - "dateFormatItem-yyyyQ": "Q y G", - "dateFormatItem-yMEd": "dd.MM.yyyy E", - "months-format-wide": [ - "Muharrem", - "Safer", - "Rebiülevvel", - "Rebiülahir", - "Cemaziyelevvel", - "Cemaziyelahir", - "Recep", - "Şaban", - "Ramazan", - "Şevval", - "Zilkade", - "Zilhicce" - ], - "days-format-short": [ - "Pa", - "Pt", - "Sa", - "Ça", - "Pe", - "Cu", - "Ct" - ], - "dateFormatItem-yyyyMMM": "MMM y G", - "dateFormatItem-d": "d", - "quarters-format-wide": [ - "1. çeyrek", - "2. çeyrek", - "3. çeyrek", - "4. çeyrek" - ], - "days-format-wide": [ - "Pazar", - "Pazartesi", - "Salı", - "Çarşamba", - "Perşembe", - "Cuma", - "Cumartesi" - ] -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/tr/number.js.uncompressed.js b/lib/dojo/cldr/nls/tr/number.js.uncompressed.js deleted file mode 100644 index 549f94d1b..000000000 --- a/lib/dojo/cldr/nls/tr/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/tr/number", //begin v1.x content -{ - "group": ".", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "%#,##0", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ",", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "#,##0.00 ¤", - "plusSign": "+", - "decimalFormat-long": "000 trilyon", - "decimalFormat-short": "000 T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/buddhist.js.uncompressed.js deleted file mode 100644 index 8400ad08a..000000000 --- a/lib/dojo/cldr/nls/zh-hant/buddhist.js.uncompressed.js +++ /dev/null @@ -1,212 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "Gy/M", - "dateFormatItem-yQ": "Gy年QQQ", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "佛曆" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "Gy年QQQ", - "dateFormatItem-MMdd": "MM/dd", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-MMM": "LLL", - "dateFormatItem-Gy": "Gy年", - "dayPeriods-format-wide-am": "上午", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "Gy年", - "timeFormat-full": "zzzzah時mm分ss秒", - "dateFormatItem-yyyy": "Gy年", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "Gy年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "佛曆" - ], - "dateFormat-long": "Gy年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormatItem-yyMM": "Gyy/MM", - "dateFormat-medium": "Gy/M/d", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yyMMM": "Gyy年M月", - "dateFormatItem-yMd": "Gy/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "上午", - "months-standAlone-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "dateFormatItem-MMMd": "M月d日", - "dateFormatItem-yyQ": "Gyy年第Q季度", - "timeFormat-long": "zah時mm分ss秒", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-H": "H時", - "timeFormat-short": "ah:mm", - "quarters-format-abbr": [ - "1季", - "2季", - "3季", - "4季" - ], - "dateFormatItem-MMMMdd": "M月dd日", - "days-format-abbr": [ - "週日", - "週一", - "週二", - "週三", - "週四", - "週五", - "週六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "Gy年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "days-standAlone-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormat-short": "Gy/M/d", - "dateFormatItem-yyyyM": "y年M月", - "dateFormatItem-yMMMEd": "Gy年M月d日E", - "dateFormat-full": "Gy年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "Gy/M/d(E)", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "days-format-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yyyyMMM": "Gy年M月", - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "eraNarrow": [ - "佛曆" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/currency.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/currency.js.uncompressed.js deleted file mode 100644 index b41e39792..000000000 --- a/lib/dojo/cldr/nls/zh-hant/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/currency", //begin v1.x content -{ - "HKD_displayName": "港幣", - "CHF_displayName": "瑞士法郎", - "JPY_symbol": "¥", - "CAD_displayName": "加幣", - "HKD_symbol": "HK$", - "CNY_displayName": "人民幣", - "USD_symbol": "$", - "AUD_displayName": "澳幣", - "JPY_displayName": "日圓", - "CAD_symbol": "CA$", - "USD_displayName": "美金", - "EUR_symbol": "€", - "CNY_symbol": "¥", - "GBP_displayName": "英鎊", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "歐元" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/gregorian.js.uncompressed.js deleted file mode 100644 index 1beb12e0a..000000000 --- a/lib/dojo/cldr/nls/zh-hant/gregorian.js.uncompressed.js +++ /dev/null @@ -1,265 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "週天", - "dateFormatItem-yQQQ": "y年QQQ", - "dateFormatItem-yMEd": "y/M/d(E)", - "dateFormatItem-MMMEd": "M月d日E", - "eraNarrow": [ - "西元前", - "西元" - ], - "dayPeriods-format-wide-earlyMorning": "清晨", - "dayPeriods-format-wide-morning": "上午", - "days-format-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormat-long": "y年M月d日", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "下午", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dayPeriods-format-narrow-midDay": "中午", - "dayPeriods-format-wide-noon": "中午", - "dateFormatItem-yMd": "y/M/d", - "field-era": "年代", - "dateFormatItem-yM": "y/M", - "months-standAlone-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "timeFormat-short": "ah:mm", - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "timeFormat-long": "zah時mm分ss秒", - "field-year": "年", - "dateFormatItem-yMMM": "y年M月", - "dateFormatItem-yQ": "y年QQQ", - "dateFormatItem-yyyyMMMM": "y年M月", - "field-hour": "小時", - "dateFormatItem-MMdd": "MM/dd", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-yyQ": "yy年第Q季度", - "timeFormat-full": "zzzzah時mm分ss秒", - "dayPeriods-format-narrow-morning": "上午", - "field-day-relative+0": "今天", - "field-day-relative+1": "明天", - "field-day-relative+2": "後天", - "dateFormatItem-H": "H時", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "quarters-format-abbr": [ - "1季", - "2季", - "3季", - "4季" - ], - "quarters-standAlone-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "dateFormatItem-M": "M月", - "dateFormatItem-yyMMM": "yy年M月", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "H:mm", - "quarters-standAlone-abbr": [ - "1季", - "2季", - "3季", - "4季" - ], - "eraAbbr": [ - "西元前", - "西元" - ], - "field-minute": "分鐘", - "field-dayperiod": "上午/下午", - "days-standAlone-abbr": [ - "週日", - "週一", - "週二", - "週三", - "週四", - "週五", - "週六" - ], - "dayPeriods-format-wide-night": "晚上", - "dateFormatItem-d": "d日", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "昨天", - "dateFormatItem-h": "ah時", - "dateTimeFormat-long": "{1}{0}", - "dayPeriods-format-narrow-am": "上午", - "field-day-relative+-2": "前天", - "dateFormatItem-MMMd": "M月d日", - "dayPeriods-format-wide-midDay": "中午", - "dateFormatItem-MEd": "M/d(E)", - "dateTimeFormat-full": "{1}{0}", - "field-day": "日", - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "field-zone": "時區", - "dateFormatItem-y": "y年", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "field-year-relative+-1": "去年", - "dayPeriods-format-narrow-night": "晚上", - "field-month-relative+-1": "上個月", - "dateFormatItem-yyMM": "yy-MM", - "dateFormatItem-hm": "ah:mm", - "dayPeriods-format-narrow-weeHours": "凌晨", - "days-format-abbr": [ - "週日", - "週一", - "週二", - "週三", - "週四", - "週五", - "週六" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "eraNames": [ - "西元前", - "西元" - ], - "dayPeriods-format-narrow-earlyMorning": "清晨", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "月", - "dayPeriods-format-wide-am": "上午", - "dateFormatItem-MMMMdd": "M月dd日", - "dayPeriods-format-wide-weeHours": "凌晨", - "dateFormat-short": "y/M/d", - "dayPeriods-format-wide-afternoon": "下午", - "dayPeriods-format-narrow-afternoon": "下午", - "dayPeriods-format-narrow-noon": "中午", - "field-second": "秒", - "dateFormatItem-yMMMEd": "y年M月d日E", - "field-month-relative+0": "本月", - "field-month-relative+1": "下個月", - "dateFormatItem-Ed": "d日(E)", - "field-week": "週", - "dateFormat-medium": "yyyy/M/d", - "field-year-relative+0": "今年", - "field-week-relative+-1": "上週", - "dateFormatItem-yyyyM": "y年M月", - "field-year-relative+1": "明年", - "dayPeriods-format-narrow-pm": "下午", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "H:mm:ss", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yyyy": "y年", - "field-week-relative+0": "本週", - "field-week-relative+1": "下週" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/hebrew.js.uncompressed.js deleted file mode 100644 index a2ad7c6e9..000000000 --- a/lib/dojo/cldr/nls/zh-hant/hebrew.js.uncompressed.js +++ /dev/null @@ -1,211 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "y/M", - "dateFormatItem-yQ": "y年QQQ", - "months-standAlone-abbr-leap": "亞達月 II", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "創世紀元" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateTimeFormat-full": "{1}{0}", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "y年QQQ", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dayPeriods-format-wide-am": "上午", - "months-format-abbr-leap": "亞達月 II", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "y年", - "timeFormat-full": "zzzzah時mm分ss秒", - "months-standAlone-abbr": [ - "提斯利月", - "瑪西班月", - "基斯流月", - "提別月", - "細罷特月", - "亞達月 I", - "亞達月", - "尼散月", - "以珥月", - "西彎月", - "搭模斯月", - "埃波月", - "以祿月" - ], - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "創世紀元" - ], - "dateFormat-long": "y年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "yyyy/M/d", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yMd": "y/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dayPeriods-format-narrow-am": "上午", - "dateTimeFormat-long": "{1}{0}", - "months-standAlone-wide": [ - "提斯利月", - "瑪西班月", - "基斯流月", - "提別月", - "細罷特月", - "亞達月 I", - "亞達月", - "尼散月", - "以珥月", - "西彎月", - "搭模斯月", - "埃波月", - "以祿月" - ], - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "zah時mm分ss秒", - "months-format-abbr": [ - "提斯利月", - "瑪西班月", - "基斯流月", - "提別月", - "細罷特月", - "亞達月 I", - "亞達月", - "尼散月", - "以珥月", - "西彎月", - "搭模斯月", - "埃波月", - "以祿月" - ], - "dateFormatItem-H": "H時", - "timeFormat-short": "ah:mm", - "quarters-format-abbr": [ - "1季", - "2季", - "3季", - "4季" - ], - "days-format-abbr": [ - "週日", - "週一", - "週二", - "週三", - "週四", - "週五", - "週六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "days-standAlone-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "months-standAlone-wide-leap": "亞達月 II", - "dateFormat-short": "y/M/d", - "dateFormatItem-yMMMEd": "y年M月d日E", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "y/M/d(E)", - "months-format-wide": [ - "提斯利月", - "瑪西班月", - "基斯流月", - "提別月", - "細罷特月", - "亞達月 I", - "亞達月", - "尼散月", - "以珥月", - "西彎月", - "搭模斯月", - "埃波月", - "以祿月" - ], - "days-format-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "months-format-wide-leap": "亞達月 II", - "eraNarrow": [ - "創世紀元" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/islamic.js.uncompressed.js deleted file mode 100644 index 61436b281..000000000 --- a/lib/dojo/cldr/nls/zh-hant/islamic.js.uncompressed.js +++ /dev/null @@ -1,243 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "y/M", - "dateFormatItem-yyyyMMMEd": "Gy年M月d日E", - "dateFormatItem-yQ": "y年QQQ", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "伊斯蘭曆" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateTimeFormat-full": "{1}{0}", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "y年QQQ", - "dateFormatItem-MMdd": "MM/dd", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dateFormatItem-Gy": "Gy年", - "dayPeriods-format-wide-am": "上午", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "y年", - "timeFormat-full": "zzzzah時mm分ss秒", - "dateFormatItem-yyyy": "Gy年", - "months-standAlone-abbr": [ - "穆哈蘭姆月", - "色法爾月", - "賴比月 I", - "賴比月 II", - "主馬達月 I", - "主馬達月 II", - "賴哲卜月", - "舍爾邦月", - "賴買丹月", - "閃瓦魯月", - "都爾喀爾德月", - "都爾黑哲月" - ], - "dateFormatItem-Ed": "d日(E)", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "伊斯蘭曆" - ], - "dateFormat-long": "Gy年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "Gy/M/d", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yMd": "Gy/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "上午", - "dateTimeFormat-long": "{1}{0}", - "months-standAlone-wide": [ - "穆哈蘭姆月", - "色法爾月", - "賴比月 I", - "賴比月 II", - "主馬達月 I", - "主馬達月 II", - "賴哲卜月", - "舍爾邦月", - "賴買丹月", - "閃瓦魯月", - "都爾喀爾德月", - "都爾黑哲月" - ], - "dateFormatItem-yyyyMd": "Gy/M/d", - "dateFormatItem-yyyyMMMd": "Gy年M月d日", - "dateFormatItem-MMMd": "M月d日", - "months-format-abbr": [ - "穆哈蘭姆月", - "色法爾月", - "賴比月 I", - "賴比月 II", - "主馬達月 I", - "主馬達月 II", - "賴哲卜月", - "舍爾邦月", - "賴買丹月", - "閃瓦魯月", - "都爾喀爾德月", - "都爾黑哲月" - ], - "timeFormat-long": "zah時mm分ss秒", - "dateFormatItem-H": "H時", - "timeFormat-short": "ah:mm", - "quarters-format-abbr": [ - "1季", - "2季", - "3季", - "4季" - ], - "dateFormatItem-MMMMdd": "M月dd日", - "days-format-abbr": [ - "週日", - "週一", - "週二", - "週三", - "週四", - "週五", - "週六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "Gy年M月d日", - "dateFormatItem-MEd": "M/d(E)", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormat-short": "Gy/M/d", - "dateFormatItem-yyyyM": "Gy/M", - "dateFormatItem-yMMMEd": "y年M月d日E", - "dateFormat-full": "Gy年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "y/M/d(E)", - "dateFormatItem-yyyyQ": "Gy年QQQ", - "months-format-wide": [ - "穆哈蘭姆月", - "色法爾月", - "賴比月 I", - "賴比月 II", - "主馬達月 I", - "主馬達月 II", - "賴哲卜月", - "舍爾邦月", - "賴買丹月", - "閃瓦魯月", - "都爾喀爾德月", - "都爾黑哲月" - ], - "days-format-short": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yyyyMMM": "Gy年M月", - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "eraNarrow": [ - "伊斯蘭曆" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hant/number.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hant/number.js.uncompressed.js deleted file mode 100644 index 6fff048f2..000000000 --- a/lib/dojo/cldr/nls/zh-hant/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/zh-hant/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "非數值", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00", - "plusSign": "+", - "decimalFormat-long": "000兆", - "decimalFormat-short": "000T" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/currency.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hk/currency.js.uncompressed.js deleted file mode 100644 index 08d8d277f..000000000 --- a/lib/dojo/cldr/nls/zh-hk/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/zh-hk/currency", //begin v1.x content -{ - "HKD_displayName": "港幣", - "JPY_symbol": "¥", - "CAD_displayName": "加幣", - "CNY_displayName": "人民幣", - "USD_symbol": "$", - "AUD_displayName": "澳幣", - "JPY_displayName": "日圓", - "USD_displayName": "美金", - "GBP_displayName": "英鎊", - "EUR_displayName": "歐元" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hk/gregorian.js.uncompressed.js deleted file mode 100644 index 1dae11793..000000000 --- a/lib/dojo/cldr/nls/zh-hk/gregorian.js.uncompressed.js +++ /dev/null @@ -1,99 +0,0 @@ -define( -"dojo/cldr/nls/zh-hk/gregorian", //begin v1.x content -{ - "dateFormatItem-yQ": "y年QQQ", - "field-minute": "分鐘", - "eraNames": [ - "西元前", - "西元" - ], - "field-weekday": "週天", - "field-era": "年代", - "field-hour": "小時", - "quarters-standAlone-abbr": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "timeFormat-full": "zzzzah時mm分ss秒", - "dateFormatItem-yyyy": "y年", - "dateFormatItem-Ed": "d日(E)", - "eraAbbr": [ - "西元前", - "西元" - ], - "field-day-relative+2": "後天", - "dateFormatItem-yyyyMMMM": "y年M月", - "field-zone": "時區", - "dateFormatItem-Hm": "H:mm", - "field-week-relative+-1": "上週", - "dateFormatItem-yyMM": "yy-MM", - "dateFormat-medium": "yyyy/M/d", - "dateFormatItem-Hms": "H:mm:ss", - "quarters-standAlone-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "months-standAlone-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "field-week": "週", - "field-week-relative+0": "本週", - "field-week-relative+1": "下週", - "timeFormat-long": "zah時mm分ss秒", - "field-month-relative+1": "下個月", - "dateFormatItem-H": "H時", - "quarters-format-abbr": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "field-second": "秒", - "dateFormatItem-MEd": "M/d(E)", - "dateFormat-short": "y/M/d", - "dateFormatItem-yyyyM": "y年M月", - "dateFormatItem-yMEd": "y/M/d(E)", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "field-month-relative+-1": "上個月", - "eraNarrow": [ - "西元前", - "西元" - ], - "dateFormatItem-h": "ah時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-hk/number.js.uncompressed.js b/lib/dojo/cldr/nls/zh-hk/number.js.uncompressed.js deleted file mode 100644 index b97f0d227..000000000 --- a/lib/dojo/cldr/nls/zh-hk/number.js.uncompressed.js +++ /dev/null @@ -1,9 +0,0 @@ -define( -"dojo/cldr/nls/zh-hk/number", //begin v1.x content -{ - "currencyFormat": "¤#,##0.00", - "decimalFormat-short": "000T", - "nan": "非數值" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/currency.js.uncompressed.js b/lib/dojo/cldr/nls/zh-tw/currency.js.uncompressed.js deleted file mode 100644 index ebfbc10dc..000000000 --- a/lib/dojo/cldr/nls/zh-tw/currency.js.uncompressed.js +++ /dev/null @@ -1,16 +0,0 @@ -define( -"dojo/cldr/nls/zh-tw/currency", //begin v1.x content -{ - "HKD_displayName": "港幣", - "JPY_symbol": "¥", - "CAD_displayName": "加幣", - "CNY_displayName": "人民幣", - "USD_symbol": "$", - "AUD_displayName": "澳幣", - "JPY_displayName": "日圓", - "USD_displayName": "美金", - "GBP_displayName": "英鎊", - "EUR_displayName": "歐元" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/zh-tw/gregorian.js.uncompressed.js deleted file mode 100644 index 9317bbaa4..000000000 --- a/lib/dojo/cldr/nls/zh-tw/gregorian.js.uncompressed.js +++ /dev/null @@ -1,99 +0,0 @@ -define( -"dojo/cldr/nls/zh-tw/gregorian", //begin v1.x content -{ - "dateFormatItem-yQ": "y年QQQ", - "field-minute": "分鐘", - "eraNames": [ - "西元前", - "西元" - ], - "field-weekday": "週天", - "field-era": "年代", - "field-hour": "小時", - "quarters-standAlone-abbr": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "timeFormat-full": "zzzzah時mm分ss秒", - "dateFormatItem-yyyy": "y年", - "dateFormatItem-Ed": "d日(E)", - "eraAbbr": [ - "西元前", - "西元" - ], - "field-day-relative+2": "後天", - "dateFormatItem-yyyyMMMM": "y年M月", - "field-zone": "時區", - "dateFormatItem-Hm": "H:mm", - "field-week-relative+-1": "上週", - "dateFormatItem-yyMM": "yy-MM", - "dateFormat-medium": "yyyy/M/d", - "dateFormatItem-Hms": "H:mm:ss", - "quarters-standAlone-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "months-standAlone-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "field-week": "週", - "field-week-relative+0": "本週", - "field-week-relative+1": "下週", - "timeFormat-long": "zah時mm分ss秒", - "field-month-relative+1": "下個月", - "dateFormatItem-H": "H時", - "quarters-format-abbr": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "field-second": "秒", - "dateFormatItem-MEd": "M/d(E)", - "dateFormat-short": "y/M/d", - "dateFormatItem-yyyyM": "y年M月", - "dateFormatItem-yMEd": "y/M/d(E)", - "months-format-wide": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "quarters-format-wide": [ - "第1季", - "第2季", - "第3季", - "第4季" - ], - "field-month-relative+-1": "上個月", - "eraNarrow": [ - "西元前", - "西元" - ], - "dateFormatItem-h": "ah時" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh-tw/number.js.uncompressed.js b/lib/dojo/cldr/nls/zh-tw/number.js.uncompressed.js deleted file mode 100644 index ec0f947aa..000000000 --- a/lib/dojo/cldr/nls/zh-tw/number.js.uncompressed.js +++ /dev/null @@ -1,9 +0,0 @@ -define( -"dojo/cldr/nls/zh-tw/number", //begin v1.x content -{ - "currencyFormat": "¤#,##0.00", - "decimalFormat-short": "000T", - "nan": "非數值" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/buddhist.js.uncompressed.js b/lib/dojo/cldr/nls/zh/buddhist.js.uncompressed.js deleted file mode 100644 index b2290e4a9..000000000 --- a/lib/dojo/cldr/nls/zh/buddhist.js.uncompressed.js +++ /dev/null @@ -1,213 +0,0 @@ -define( -"dojo/cldr/nls/zh/buddhist", //begin v1.x content -{ - "dateFormatItem-yM": "Gy年M月", - "dateFormatItem-yyyyMMMEd": "Gy年M月d日E", - "dateFormatItem-yQ": "Gy年第Q季度", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "佛历" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "Gy年第Q季度", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-MMM": "LLL", - "dateFormatItem-Gy": "Gy年", - "dayPeriods-format-wide-am": "上午", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "Gy年", - "timeFormat-full": "zzzzah:mm:ss", - "dateFormatItem-yyyy": "Gy年", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-Ed": "d日E", - "dateFormatItem-yMMM": "Gy年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "佛历" - ], - "dateFormat-long": "Gy年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "dateFormat-medium": "Gyyyy-M-d", - "dateFormatItem-Hms": "HH:mm:ss", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yMd": "y/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "上午", - "months-standAlone-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "dateFormatItem-yyyyMd": "Gy-M-d", - "dateFormatItem-yyyyMMMd": "Gy年M月d日", - "dateFormatItem-yyyyMEd": "Gy-M-dE", - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "zah:mm:ss", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-H": "H时", - "timeFormat-short": "ah:mm", - "quarters-format-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "days-format-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M-dE", - "dateFormatItem-yyyyQQQ": "Gy年QQQQ", - "days-standAlone-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormat-short": "Gy-M-d", - "dateFormatItem-yyyyM": "Gy-M", - "dateFormatItem-yMMMEd": "Gy年M月d日E", - "dateFormat-full": "Gy年M月d日EEEE", - "dateFormatItem-Md": "M-d", - "dateFormatItem-yMEd": "Gy年M月d日,E", - "dateFormatItem-yyyyQ": "Gy年QQQ", - "months-format-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "days-format-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-yyyyMMM": "Gy年M月", - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "eraNarrow": [ - "佛历" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah时" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/currency.js.uncompressed.js b/lib/dojo/cldr/nls/zh/currency.js.uncompressed.js deleted file mode 100644 index 96f3b84f0..000000000 --- a/lib/dojo/cldr/nls/zh/currency.js.uncompressed.js +++ /dev/null @@ -1,23 +0,0 @@ -define( -"dojo/cldr/nls/zh/currency", //begin v1.x content -{ - "HKD_displayName": "港元", - "CHF_displayName": "瑞士法郎", - "JPY_symbol": "JP¥", - "CAD_displayName": "加拿大元", - "HKD_symbol": "HK$", - "CNY_displayName": "人民币", - "USD_symbol": "US$", - "AUD_displayName": "澳大利亚元", - "JPY_displayName": "日元", - "CAD_symbol": "CA$", - "USD_displayName": "美元", - "EUR_symbol": "€", - "CNY_symbol": "¥", - "GBP_displayName": "英镑", - "GBP_symbol": "£", - "AUD_symbol": "AU$", - "EUR_displayName": "欧元" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/gregorian.js.uncompressed.js b/lib/dojo/cldr/nls/zh/gregorian.js.uncompressed.js deleted file mode 100644 index 0e4d33ef1..000000000 --- a/lib/dojo/cldr/nls/zh/gregorian.js.uncompressed.js +++ /dev/null @@ -1,297 +0,0 @@ -define( -"dojo/cldr/nls/zh/gregorian", //begin v1.x content -{ - "days-standAlone-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "quarters-standAlone-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-weekday": "星期", - "dateFormatItem-yQQQ": "y年QQQ", - "dateFormatItem-yMEd": "y/M/dEEE", - "dateFormatItem-MMMEd": "M月d日E", - "eraNarrow": [ - "公元前", - "公元" - ], - "dayPeriods-format-wide-earlyMorning": "清晨", - "dayPeriods-format-wide-morning": "上午", - "days-format-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormat-long": "y年M月d日", - "months-format-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "dateTimeFormat-medium": "{1} {0}", - "dayPeriods-format-wide-pm": "下午", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dayPeriods-format-narrow-midDay": "中午", - "dayPeriods-format-wide-noon": "中午", - "dateFormatItem-yMd": "y/M/d", - "dateFormatItem-yM": "y/M", - "field-era": "时期", - "months-standAlone-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "timeFormat-short": "ah:mm", - "quarters-format-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "timeFormat-long": "zah:mm:ss", - "dateFormatItem-yMMM": "y年M月", - "dateFormatItem-yQ": "y年第Q季度", - "field-year": "年", - "dateFormatItem-MMdd": "MM/dd", - "dateFormatItem-yyyyMMMM": "yyyy年M月", - "field-hour": "小时", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-yyQ": "yy年第Q季度", - "timeFormat-full": "zzzzah:mm:ss", - "dayPeriods-format-narrow-morning": "上午", - "field-day-relative+0": "今天", - "field-day-relative+1": "明天", - "field-day-relative+2": "后天", - "dateFormatItem-H": "H时", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "quarters-format-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dateFormatItem-M": "M月", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-yyMMM": "yy年M月", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "HH:mm", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "eraAbbr": [ - "公元前", - "公元" - ], - "field-minute": "分钟", - "field-dayperiod": "上午/下午", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dayPeriods-format-wide-night": "晚上", - "dateFormatItem-d": "d日", - "dateFormatItem-ms": "mm:ss", - "quarters-format-narrow": [ - "1", - "2", - "3", - "4" - ], - "field-day-relative+-1": "昨天", - "dateFormatItem-h": "ah时", - "dateTimeFormat-long": "{1}{0}", - "dayPeriods-format-narrow-am": "上午", - "field-day-relative+-2": "前天", - "dateFormatItem-MMMd": "M月d日", - "dayPeriods-format-wide-midDay": "中午", - "dateFormatItem-MEd": "M/dE", - "dateTimeFormat-full": "{1}{0}", - "field-day": "日", - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "field-zone": "时区", - "dateFormatItem-y": "y年", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "field-year-relative+-1": "去年", - "dayPeriods-format-narrow-night": "晚上", - "field-month-relative+-1": "上个月", - "dateFormatItem-yyMM": "yy年M月", - "dateFormatItem-hm": "ah:mm", - "dayPeriods-format-narrow-weeHours": "凌晨", - "days-format-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "eraNames": [ - "公元前", - "公元" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dayPeriods-format-narrow-earlyMorning": "清晨", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-MMM": "LLL", - "field-month": "月", - "dayPeriods-format-wide-am": "上午", - "dateFormatItem-MMMMdd": "M月dd日", - "dayPeriods-format-wide-weeHours": "凌晨", - "dateFormat-short": "yy-M-d", - "dayPeriods-format-wide-afternoon": "下午", - "dayPeriods-format-narrow-afternoon": "下午", - "dayPeriods-format-narrow-noon": "中午", - "field-second": "秒钟", - "dateFormatItem-yMMMEd": "y年M月d日E", - "field-month-relative+0": "本月", - "field-month-relative+1": "下个月", - "dateFormatItem-Ed": "d日E", - "field-week": "周", - "dateFormat-medium": "y年M月d日", - "field-year-relative+0": "今年", - "field-week-relative+-1": "上周", - "dateFormatItem-yyyyM": "yyyy年M月", - "field-year-relative+1": "明年", - "dayPeriods-format-narrow-pm": "下午", - "dateTimeFormat-short": "{1} {0}", - "dateFormatItem-Hms": "HH:mm:ss", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yyyy": "yyyy年", - "field-week-relative+0": "本周", - "field-week-relative+1": "下周" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/hebrew.js.uncompressed.js b/lib/dojo/cldr/nls/zh/hebrew.js.uncompressed.js deleted file mode 100644 index 33f03bc8f..000000000 --- a/lib/dojo/cldr/nls/zh/hebrew.js.uncompressed.js +++ /dev/null @@ -1,209 +0,0 @@ -define( -"dojo/cldr/nls/zh/hebrew", //begin v1.x content -{ - "dateFormatItem-yM": "y/M", - "dateFormatItem-yQ": "y年第Q季度", - "months-standAlone-abbr-leap": "闰7月", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "希伯来历" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateTimeFormat-full": "{1}{0}", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "y年QQQ", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dayPeriods-format-wide-am": "上午", - "months-format-abbr-leap": "闰7月", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "y年", - "timeFormat-full": "zzzzah:mm:ss", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月", - "13月" - ], - "dateFormatItem-Ed": "d日E", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "希伯来历" - ], - "dateFormat-long": "y年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormat-medium": "y年M月d日", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yMd": "y/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dayPeriods-format-narrow-am": "上午", - "dateTimeFormat-long": "{1}{0}", - "months-standAlone-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月", - "十三月" - ], - "dateFormatItem-MMMd": "M月d日", - "timeFormat-long": "zah:mm:ss", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月", - "13月" - ], - "timeFormat-short": "ah:mm", - "dateFormatItem-H": "H时", - "quarters-format-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "days-format-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M/dE", - "days-standAlone-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "months-standAlone-wide-leap": "闰七月", - "dateFormat-short": "yy-M-d", - "dateFormatItem-yMMMEd": "y年M月d日E", - "dateFormat-full": "y年M月d日EEEE", - "dateFormatItem-Md": "M/d", - "dateFormatItem-yMEd": "y/M/dEEE", - "months-format-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月", - "十三月" - ], - "days-format-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "months-format-wide-leap": "闰七月", - "eraNarrow": [ - "希伯来历" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah时" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/islamic.js.uncompressed.js b/lib/dojo/cldr/nls/zh/islamic.js.uncompressed.js deleted file mode 100644 index af85d9ba4..000000000 --- a/lib/dojo/cldr/nls/zh/islamic.js.uncompressed.js +++ /dev/null @@ -1,241 +0,0 @@ -define( -"dojo/cldr/nls/zh/islamic", //begin v1.x content -{ - "dateFormatItem-yM": "y年M月", - "dateFormatItem-yQ": "y年第Q季度", - "dayPeriods-format-wide-pm": "下午", - "eraNames": [ - "回历" - ], - "dateFormatItem-MMMEd": "M月d日E", - "dateTimeFormat-full": "{1}{0}", - "dateFormatItem-hms": "ah:mm:ss", - "dateFormatItem-yQQQ": "y年第Q季度", - "dateFormatItem-MMdd": "MM-dd", - "days-standAlone-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-MMM": "LLL", - "months-standAlone-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "dayPeriods-format-wide-am": "上午", - "quarters-standAlone-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-y": "y年", - "timeFormat-full": "zzzzah:mm:ss", - "dateFormatItem-yyyy": "GGGyy年", - "months-standAlone-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dateFormatItem-Ed": "d日E", - "dateFormatItem-yMMM": "y年M月", - "days-standAlone-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "eraAbbr": [ - "回历" - ], - "dateFormat-long": "Gy年M月d日", - "timeFormat-medium": "ah:mm:ss", - "dateFormatItem-Hm": "H:mm", - "dateFormat-medium": "Gy年M月d日", - "dateFormatItem-Hms": "H:mm:ss", - "dayPeriods-format-narrow-pm": "下午", - "dateFormatItem-yMd": "y/M/d", - "quarters-standAlone-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "dateFormatItem-ms": "mm:ss", - "dayPeriods-format-narrow-am": "上午", - "dateTimeFormat-long": "{1}{0}", - "months-standAlone-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "dateFormatItem-yyyyMd": "GGGGGyy-MM-dd", - "dateFormatItem-yyyyMMMd": "GGGGGyy年M月d日", - "dateFormatItem-MMMd": "M月d日", - "months-format-abbr": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "timeFormat-long": "zah:mm:ss", - "dateFormatItem-H": "H时", - "timeFormat-short": "ah:mm", - "quarters-format-abbr": [ - "1季度", - "2季度", - "3季度", - "4季度" - ], - "dateFormatItem-MMMMdd": "M月dd日", - "days-format-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-M": "M月", - "days-format-narrow": [ - "日", - "一", - "二", - "三", - "四", - "五", - "六" - ], - "dateFormatItem-yMMMd": "y年M月d日", - "dateFormatItem-MEd": "M-dE", - "months-format-narrow": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "11", - "12" - ], - "days-standAlone-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-hm": "ah:mm", - "days-standAlone-abbr": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormat-short": "Gyy-MM-dd", - "dateFormatItem-yyyyM": "GGGGGyy-MM", - "dateFormatItem-yMMMEd": "y年M月d日E", - "dateFormat-full": "Gy年M月d日EEEE", - "dateFormatItem-Md": "M-d", - "dateFormatItem-yMEd": "y年M月d日,E", - "dateFormatItem-yyyyQ": "Gy年QQQ", - "months-format-wide": [ - "一月", - "二月", - "三月", - "四月", - "五月", - "六月", - "七月", - "八月", - "九月", - "十月", - "十一月", - "十二月" - ], - "days-format-short": [ - "周日", - "周一", - "周二", - "周三", - "周四", - "周五", - "周六" - ], - "dateFormatItem-yyyyMMM": "GGGGGyy年M月", - "dateFormatItem-d": "d日", - "quarters-format-wide": [ - "第一季度", - "第二季度", - "第三季度", - "第四季度" - ], - "eraNarrow": [ - "回历" - ], - "days-format-wide": [ - "星期日", - "星期一", - "星期二", - "星期三", - "星期四", - "星期五", - "星期六" - ], - "dateFormatItem-h": "ah时" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/nls/zh/number.js.uncompressed.js b/lib/dojo/cldr/nls/zh/number.js.uncompressed.js deleted file mode 100644 index 2588af972..000000000 --- a/lib/dojo/cldr/nls/zh/number.js.uncompressed.js +++ /dev/null @@ -1,22 +0,0 @@ -define( -"dojo/cldr/nls/zh/number", //begin v1.x content -{ - "group": ",", - "percentSign": "%", - "exponential": "E", - "scientificFormat": "#E0", - "percentFormat": "#,##0%", - "list": ";", - "infinity": "∞", - "minusSign": "-", - "decimal": ".", - "nan": "NaN", - "perMille": "‰", - "decimalFormat": "#,##0.###", - "currencyFormat": "¤#,##0.00;(¤#,##0.00)", - "plusSign": "+", - "decimalFormat-long": "000兆", - "decimalFormat-short": "000兆" -} -//end v1.x content -); \ No newline at end of file diff --git a/lib/dojo/cldr/supplemental.js.uncompressed.js b/lib/dojo/cldr/supplemental.js.uncompressed.js deleted file mode 100644 index 6de6ce7ff..000000000 --- a/lib/dojo/cldr/supplemental.js.uncompressed.js +++ /dev/null @@ -1,84 +0,0 @@ -define("dojo/cldr/supplemental", ["../_base/lang", "../i18n"], function(lang, i18n){ - -// module: -// dojo/cldr/supplemental - - -var supplemental = { - // summary: - // TODOC -}; -lang.setObject("dojo.cldr.supplemental", supplemental); - -supplemental.getFirstDayOfWeek = function(/*String?*/locale){ - // summary: - // Returns a zero-based index for first day of the week - // description: - // Returns a zero-based index for first day of the week, as used by the local (Gregorian) calendar. - // e.g. Sunday (returns 0), or Monday (returns 1) - - // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/firstDay - var firstDay = {/*default is 1=Monday*/ - bd:5,mv:5, - ae:6,af:6,bh:6,dj:6,dz:6,eg:6,iq:6,ir:6,jo:6,kw:6, - ly:6,ma:6,om:6,qa:6,sa:6,sd:6,sy:6,ye:6, - ag:0,ar:0,as:0,au:0,br:0,bs:0,bt:0,bw:0,by:0,bz:0,ca:0,cn:0, - co:0,dm:0,'do':0,et:0,gt:0,gu:0,hk:0,hn:0,id:0,ie:0,il:0,'in':0, - jm:0,jp:0,ke:0,kh:0,kr:0,la:0,mh:0,mm:0,mo:0,mt:0,mx:0,mz:0, - ni:0,np:0,nz:0,pa:0,pe:0,ph:0,pk:0,pr:0,py:0,sg:0,sv:0,th:0, - tn:0,tt:0,tw:0,um:0,us:0,ve:0,vi:0,ws:0,za:0,zw:0 - }; - - var country = supplemental._region(locale); - var dow = firstDay[country]; - return (dow === undefined) ? 1 : dow; /*Number*/ -}; - -supplemental._region = function(/*String?*/locale){ - locale = i18n.normalizeLocale(locale); - var tags = locale.split('-'); - var region = tags[1]; - if(!region){ - // IE often gives language only (#2269) - // Arbitrary mappings of language-only locales to a country: - region = {de:"de", en:"us", es:"es", fi:"fi", fr:"fr", he:"il", hu:"hu", it:"it", - ja:"jp", ko:"kr", nl:"nl", pt:"br", sv:"se", zh:"cn"}[tags[0]]; - }else if(region.length == 4){ - // The ISO 3166 country code is usually in the second position, unless a - // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt - region = tags[2]; - } - return region; -}; - -supplemental.getWeekend = function(/*String?*/locale){ - // summary: - // Returns a hash containing the start and end days of the weekend - // description: - // Returns a hash containing the start and end days of the weekend according to local custom using locale, - // or by default in the user's locale. - // e.g. {start:6, end:0} - - // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/weekend{Start,End} - var weekendStart = {/*default is 6=Saturday*/ - 'in':0, - af:4,dz:4,ir:4,om:4,sa:4,ye:4, - ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5 - }, - - weekendEnd = {/*default is 0=Sunday*/ - af:5,dz:5,ir:5,om:5,sa:5,ye:5, - ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6 - }, - - country = supplemental._region(locale), - start = weekendStart[country], - end = weekendEnd[country]; - - if(start === undefined){start=6;} - if(end === undefined){end=0;} - return {start:start, end:end}; /*Object {start,end}*/ -}; - -return supplemental; -}); diff --git a/lib/dojo/colors.js.uncompressed.js b/lib/dojo/colors.js.uncompressed.js deleted file mode 100644 index abf3c9d9d..000000000 --- a/lib/dojo/colors.js.uncompressed.js +++ /dev/null @@ -1,232 +0,0 @@ -define("dojo/colors", ["./_base/kernel", "./_base/lang", "./_base/Color", "./_base/array"], function(dojo, lang, Color, ArrayUtil){ - // module: - // dojo/colors - - /*===== - return { - // summary: - // Color utilities, extending Base dojo.Color - }; - =====*/ - - var ColorExt = {}; - lang.setObject("dojo.colors", ColorExt); - -//TODO: this module appears to break naming conventions - - // this is a standard conversion prescribed by the CSS3 Color Module - var hue2rgb = function(m1, m2, h){ - if(h < 0){ ++h; } - if(h > 1){ --h; } - var h6 = 6 * h; - if(h6 < 1){ return m1 + (m2 - m1) * h6; } - if(2 * h < 1){ return m2; } - if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; } - return m1; - }; - // Override base Color.fromRgb with the impl in this module - dojo.colorFromRgb = Color.fromRgb = function(/*String*/ color, /*dojo/_base/Color?*/ obj){ - // summary: - // get rgb(a) array from css-style color declarations - // description: - // this function can handle all 4 CSS3 Color Module formats: rgb, - // rgba, hsl, hsla, including rgb(a) with percentage values. - var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/); - if(m){ - var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a; - if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){ - var r = c[0]; - if(r.charAt(r.length - 1) == "%"){ - // 3 rgb percentage values - a = ArrayUtil.map(c, function(x){ - return parseFloat(x) * 2.56; - }); - if(l == 4){ a[3] = c[3]; } - return Color.fromArray(a, obj); // dojo/_base/Color - } - return Color.fromArray(c, obj); // dojo/_base/Color - } - if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){ - // normalize hsl values - var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360, - S = parseFloat(c[1]) / 100, - L = parseFloat(c[2]) / 100, - // calculate rgb according to the algorithm - // recommended by the CSS3 Color Module - m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S, - m1 = 2 * L - m2; - a = [ - hue2rgb(m1, m2, H + 1 / 3) * 256, - hue2rgb(m1, m2, H) * 256, - hue2rgb(m1, m2, H - 1 / 3) * 256, - 1 - ]; - if(l == 4){ a[3] = c[3]; } - return Color.fromArray(a, obj); // dojo/_base/Color - } - } - return null; // dojo/_base/Color - }; - - var confine = function(c, low, high){ - // summary: - // sanitize a color component by making sure it is a number, - // and clamping it to valid values - c = Number(c); - return isNaN(c) ? high : c < low ? low : c > high ? high : c; // Number - }; - - Color.prototype.sanitize = function(){ - // summary: - // makes sure that the object has correct attributes - var t = this; - t.r = Math.round(confine(t.r, 0, 255)); - t.g = Math.round(confine(t.g, 0, 255)); - t.b = Math.round(confine(t.b, 0, 255)); - t.a = confine(t.a, 0, 1); - return this; // dojo/_base/Color - }; - - ColorExt.makeGrey = Color.makeGrey = function(/*Number*/ g, /*Number?*/ a){ - // summary: - // creates a greyscale color with an optional alpha - return Color.fromArray([g, g, g, a]); // dojo/_base/Color - }; - - // mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings - lang.mixin(Color.named, { - "aliceblue": [240,248,255], - "antiquewhite": [250,235,215], - "aquamarine": [127,255,212], - "azure": [240,255,255], - "beige": [245,245,220], - "bisque": [255,228,196], - "blanchedalmond": [255,235,205], - "blueviolet": [138,43,226], - "brown": [165,42,42], - "burlywood": [222,184,135], - "cadetblue": [95,158,160], - "chartreuse": [127,255,0], - "chocolate": [210,105,30], - "coral": [255,127,80], - "cornflowerblue": [100,149,237], - "cornsilk": [255,248,220], - "crimson": [220,20,60], - "cyan": [0,255,255], - "darkblue": [0,0,139], - "darkcyan": [0,139,139], - "darkgoldenrod": [184,134,11], - "darkgray": [169,169,169], - "darkgreen": [0,100,0], - "darkgrey": [169,169,169], - "darkkhaki": [189,183,107], - "darkmagenta": [139,0,139], - "darkolivegreen": [85,107,47], - "darkorange": [255,140,0], - "darkorchid": [153,50,204], - "darkred": [139,0,0], - "darksalmon": [233,150,122], - "darkseagreen": [143,188,143], - "darkslateblue": [72,61,139], - "darkslategray": [47,79,79], - "darkslategrey": [47,79,79], - "darkturquoise": [0,206,209], - "darkviolet": [148,0,211], - "deeppink": [255,20,147], - "deepskyblue": [0,191,255], - "dimgray": [105,105,105], - "dimgrey": [105,105,105], - "dodgerblue": [30,144,255], - "firebrick": [178,34,34], - "floralwhite": [255,250,240], - "forestgreen": [34,139,34], - "gainsboro": [220,220,220], - "ghostwhite": [248,248,255], - "gold": [255,215,0], - "goldenrod": [218,165,32], - "greenyellow": [173,255,47], - "grey": [128,128,128], - "honeydew": [240,255,240], - "hotpink": [255,105,180], - "indianred": [205,92,92], - "indigo": [75,0,130], - "ivory": [255,255,240], - "khaki": [240,230,140], - "lavender": [230,230,250], - "lavenderblush": [255,240,245], - "lawngreen": [124,252,0], - "lemonchiffon": [255,250,205], - "lightblue": [173,216,230], - "lightcoral": [240,128,128], - "lightcyan": [224,255,255], - "lightgoldenrodyellow": [250,250,210], - "lightgray": [211,211,211], - "lightgreen": [144,238,144], - "lightgrey": [211,211,211], - "lightpink": [255,182,193], - "lightsalmon": [255,160,122], - "lightseagreen": [32,178,170], - "lightskyblue": [135,206,250], - "lightslategray": [119,136,153], - "lightslategrey": [119,136,153], - "lightsteelblue": [176,196,222], - "lightyellow": [255,255,224], - "limegreen": [50,205,50], - "linen": [250,240,230], - "magenta": [255,0,255], - "mediumaquamarine": [102,205,170], - "mediumblue": [0,0,205], - "mediumorchid": [186,85,211], - "mediumpurple": [147,112,219], - "mediumseagreen": [60,179,113], - "mediumslateblue": [123,104,238], - "mediumspringgreen": [0,250,154], - "mediumturquoise": [72,209,204], - "mediumvioletred": [199,21,133], - "midnightblue": [25,25,112], - "mintcream": [245,255,250], - "mistyrose": [255,228,225], - "moccasin": [255,228,181], - "navajowhite": [255,222,173], - "oldlace": [253,245,230], - "olivedrab": [107,142,35], - "orange": [255,165,0], - "orangered": [255,69,0], - "orchid": [218,112,214], - "palegoldenrod": [238,232,170], - "palegreen": [152,251,152], - "paleturquoise": [175,238,238], - "palevioletred": [219,112,147], - "papayawhip": [255,239,213], - "peachpuff": [255,218,185], - "peru": [205,133,63], - "pink": [255,192,203], - "plum": [221,160,221], - "powderblue": [176,224,230], - "rosybrown": [188,143,143], - "royalblue": [65,105,225], - "saddlebrown": [139,69,19], - "salmon": [250,128,114], - "sandybrown": [244,164,96], - "seagreen": [46,139,87], - "seashell": [255,245,238], - "sienna": [160,82,45], - "skyblue": [135,206,235], - "slateblue": [106,90,205], - "slategray": [112,128,144], - "slategrey": [112,128,144], - "snow": [255,250,250], - "springgreen": [0,255,127], - "steelblue": [70,130,180], - "tan": [210,180,140], - "thistle": [216,191,216], - "tomato": [255,99,71], - "turquoise": [64,224,208], - "violet": [238,130,238], - "wheat": [245,222,179], - "whitesmoke": [245,245,245], - "yellowgreen": [154,205,50] - }); - - return Color; // TODO: return ColorExt, not Color -}); diff --git a/lib/dojo/cookie.js.uncompressed.js b/lib/dojo/cookie.js.uncompressed.js deleted file mode 100644 index aa1e7f4e4..000000000 --- a/lib/dojo/cookie.js.uncompressed.js +++ /dev/null @@ -1,98 +0,0 @@ -define("dojo/cookie", ["./_base/kernel", "./regexp"], function(dojo, regexp){ - -// module: -// dojo/cookie - -/*===== -var __cookieProps = { - // expires: Date|String|Number? - // If a number, the number of days from today at which the cookie - // will expire. If a date, the date past which the cookie will expire. - // If expires is in the past, the cookie will be deleted. - // If expires is omitted or is 0, the cookie will expire when the browser closes. - // path: String? - // The path to use for the cookie. - // domain: String? - // The domain to use for the cookie. - // secure: Boolean? - // Whether to only send the cookie on secure connections -}; -=====*/ - - -dojo.cookie = function(/*String*/name, /*String?*/ value, /*__cookieProps?*/ props){ - // summary: - // Get or set a cookie. - // description: - // If one argument is passed, returns the value of the cookie - // For two or more arguments, acts as a setter. - // name: - // Name of the cookie - // value: - // Value for the cookie - // props: - // Properties for the cookie - // example: - // set a cookie with the JSON-serialized contents of an object which - // will expire 5 days from now: - // | require(["dojo/cookie", "dojo/json"], function(cookie, json){ - // | cookie("configObj", json.stringify(config, {expires: 5 })); - // | }); - // - // example: - // de-serialize a cookie back into a JavaScript object: - // | require(["dojo/cookie", "dojo/json"], function(cookie, json){ - // | config = json.parse(cookie("configObj")); - // | }); - // - // example: - // delete a cookie: - // | require(["dojo/cookie"], function(cookie){ - // | cookie("configObj", null, {expires: -1}); - // | }); - var c = document.cookie, ret; - if(arguments.length == 1){ - var matches = c.match(new RegExp("(?:^|; )" + regexp.escapeString(name) + "=([^;]*)")); - ret = matches ? decodeURIComponent(matches[1]) : undefined; - }else{ - props = props || {}; -// FIXME: expires=0 seems to disappear right away, not on close? (FF3) Change docs? - var exp = props.expires; - if(typeof exp == "number"){ - var d = new Date(); - d.setTime(d.getTime() + exp*24*60*60*1000); - exp = props.expires = d; - } - if(exp && exp.toUTCString){ props.expires = exp.toUTCString(); } - - value = encodeURIComponent(value); - var updatedCookie = name + "=" + value, propName; - for(propName in props){ - updatedCookie += "; " + propName; - var propValue = props[propName]; - if(propValue !== true){ updatedCookie += "=" + propValue; } - } - document.cookie = updatedCookie; - } - return ret; // String|undefined -}; - -dojo.cookie.isSupported = function(){ - // summary: - // Use to determine if the current browser supports cookies or not. - // - // Returns true if user allows cookies. - // Returns false if user doesn't allow cookies. - - if(!("cookieEnabled" in navigator)){ - this("__djCookieTest__", "CookiesAllowed"); - navigator.cookieEnabled = this("__djCookieTest__") == "CookiesAllowed"; - if(navigator.cookieEnabled){ - this("__djCookieTest__", "", {expires: -1}); - } - } - return navigator.cookieEnabled; -}; - -return dojo.cookie; -}); diff --git a/lib/dojo/currency.js.uncompressed.js b/lib/dojo/currency.js.uncompressed.js deleted file mode 100644 index 3d2666edf..000000000 --- a/lib/dojo/currency.js.uncompressed.js +++ /dev/null @@ -1,130 +0,0 @@ -define("dojo/currency", [ - "./_base/array", - "./_base/lang", - /*===== "./_base/declare", =====*/ - "./number", - "./i18n", "./i18n!./cldr/nls/currency", - "./cldr/monetary" -], function(darray, lang, /*===== declare, =====*/ dnumber, i18n, nlsCurrency, cldrMonetary){ - -// module: -// dojo/currency - -var currency = { - // summary: - // localized formatting and parsing routines for currencies - // description: - // extends dojo.number to provide culturally-appropriate formatting of values - // in various world currencies, including use of a currency symbol. The currencies are specified - // by a three-letter international symbol in all uppercase, and support for the currencies is - // provided by the data in `dojo.cldr`. The scripts generating dojo.cldr specify which - // currency support is included. A fixed number of decimal places is determined based - // on the currency type and is not determined by the 'pattern' argument. The fractional - // portion is optional, by default, and variable length decimals are not supported. -}; -lang.setObject("dojo.currency", currency); - -currency._mixInDefaults = function(options){ - options = options || {}; - options.type = "currency"; - - // Get locale-dependent currency data, like the symbol - var bundle = i18n.getLocalization("dojo.cldr", "currency", options.locale) || {}; - - // Mixin locale-independent currency data, like # of places - var iso = options.currency; - var data = cldrMonetary.getData(iso); - - darray.forEach(["displayName","symbol","group","decimal"], function(prop){ - data[prop] = bundle[iso+"_"+prop]; - }); - - data.fractional = [true, false]; - - // Mixin with provided options - return lang.mixin(data, options); -}; - -/*===== -currency.__FormatOptions = declare([dnumber.__FormatOptions], { - // type: String? - // Should not be set. Value is assumed to be "currency". - // symbol: String? - // localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr` - // A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found. - // currency: String? - // an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD". - // For use with dojo.currency only. - // places: Number? - // number of decimal places to show. Default is defined based on which currency is used. - type: "", - symbol: "", - currency: "", - places: "" -}); -=====*/ - -currency.format = function(/*Number*/ value, /*__FormatOptions?*/ options){ - // summary: - // Format a Number as a currency, using locale-specific settings - // - // description: - // Create a string from a Number using a known, localized pattern. - // [Formatting patterns](http://www.unicode.org/reports/tr35/#Number_Elements) - // appropriate to the locale are chosen from the [CLDR](http://unicode.org/cldr) - // as well as the appropriate symbols and delimiters and number of decimal places. - // - // value: - // the number to be formatted. - - return dnumber.format(value, currency._mixInDefaults(options)); -}; - -currency.regexp = function(/*dnumber.__RegexpOptions?*/ options){ - // - // summary: - // Builds the regular needed to parse a currency value - // - // description: - // Returns regular expression with positive and negative match, group and decimal separators - // Note: the options.places default, the number of decimal places to accept, is defined by the currency type. - return dnumber.regexp(currency._mixInDefaults(options)); // String -}; - -/*===== -var __ParseOptions = currency.__ParseOptions = declare(dnumber.__ParseOptions, { - // type: String? - // Should not be set. Value is assumed to be currency. - // currency: String? - // an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD". - // For use with dojo.currency only. - // symbol: String? - // localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr` - // A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found. - // places: Number? - // fixed number of decimal places to accept. The default is determined based on which currency is used. - // fractional: Boolean|Array? - // Whether to include the fractional portion, where the number of decimal places are implied by the currency - // or explicit 'places' parameter. The value [true,false] makes the fractional portion optional. - // By default for currencies, it the fractional portion is optional. -}); -=====*/ - -currency.parse = function(/*String*/ expression, /*__ParseOptions?*/ options){ - // - // summary: - // Convert a properly formatted currency string to a primitive Number, - // using locale-specific settings. - // description: - // Create a Number from a string using a known, localized pattern. - // [Formatting patterns](http://www.unicode.org/reports/tr35/#Number_Format_Patterns) - // are chosen appropriate to the locale, as well as the appropriate symbols and delimiters - // and number of decimal places. - // expression: - // A string representation of a currency value - - return dnumber.parse(expression, currency._mixInDefaults(options)); -}; - -return currency; -}); diff --git a/lib/dojo/data/ItemFileReadStore.js.uncompressed.js b/lib/dojo/data/ItemFileReadStore.js.uncompressed.js deleted file mode 100644 index ccffaf7cc..000000000 --- a/lib/dojo/data/ItemFileReadStore.js.uncompressed.js +++ /dev/null @@ -1,951 +0,0 @@ -define("dojo/data/ItemFileReadStore", ["../_base/kernel", "../_base/lang", "../_base/declare", "../_base/array", "../_base/xhr", - "../Evented", "./util/filter", "./util/simpleFetch", "../date/stamp" -], function(kernel, lang, declare, array, xhr, Evented, filterUtil, simpleFetch, dateStamp){ - -// module: -// dojo/data/ItemFileReadStore - -var ItemFileReadStore = declare("dojo.data.ItemFileReadStore", [Evented],{ - // summary: - // The ItemFileReadStore implements the dojo/data/api/Read API and reads - // data from JSON files that have contents in this format -- - // | { items: [ - // | { name:'Kermit', color:'green', age:12, friends:['Gonzo', {_reference:{name:'Fozzie Bear'}}]}, - // | { name:'Fozzie Bear', wears:['hat', 'tie']}, - // | { name:'Miss Piggy', pets:'Foo-Foo'} - // | ]} - // Note that it can also contain an 'identifier' property that specified which attribute on the items - // in the array of items that acts as the unique identifier for that item. - - constructor: function(/* Object */ keywordParameters){ - // summary: - // constructor - // keywordParameters: - // {url: String} {data: jsonObject} {typeMap: object} - // The structure of the typeMap object is as follows: - // | { - // | type0: function || object, - // | type1: function || object, - // | ... - // | typeN: function || object - // | } - // Where if it is a function, it is assumed to be an object constructor that takes the - // value of _value as the initialization parameters. If it is an object, then it is assumed - // to be an object of general form: - // | { - // | type: function, //constructor. - // | deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. - // | } - - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = []; - this._loadFinished = false; - this._jsonFileUrl = keywordParameters.url; - this._ccUrl = keywordParameters.url; - this.url = keywordParameters.url; - this._jsonData = keywordParameters.data; - this.data = null; - this._datatypeMap = keywordParameters.typeMap || {}; - if(!this._datatypeMap['Date']){ - //If no default mapping for dates, then set this as default. - //We use the dojo/date/stamp here because the ISO format is the 'dojo way' - //of generically representing dates. - this._datatypeMap['Date'] = { - type: Date, - deserialize: function(value){ - return dateStamp.fromISOString(value); - } - }; - } - this._features = {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true}; - this._itemsByIdentity = null; - this._storeRefPropName = "_S"; // Default name for the store reference to attach to every item. - this._itemNumPropName = "_0"; // Default Item Id for isItem to attach to every item. - this._rootItemPropName = "_RI"; // Default Item Id for isItem to attach to every item. - this._reverseRefMap = "_RRM"; // Default attribute for constructing a reverse reference map for use with reference integrity - this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. - this._queuedFetches = []; - if(keywordParameters.urlPreventCache !== undefined){ - this.urlPreventCache = keywordParameters.urlPreventCache?true:false; - } - if(keywordParameters.hierarchical !== undefined){ - this.hierarchical = keywordParameters.hierarchical?true:false; - } - if(keywordParameters.clearOnClose){ - this.clearOnClose = true; - } - if("failOk" in keywordParameters){ - this.failOk = keywordParameters.failOk?true:false; - } - }, - - url: "", // use "" rather than undefined for the benefit of the parser (#3539) - - //Internal var, crossCheckUrl. Used so that setting either url or _jsonFileUrl, can still trigger a reload - //when clearOnClose and close is used. - _ccUrl: "", - - data: null, // define this so that the parser can populate it - - typeMap: null, //Define so parser can populate. - - // clearOnClose: Boolean - // Parameter to allow users to specify if a close call should force a reload or not. - // By default, it retains the old behavior of not clearing if close is called. But - // if set true, the store will be reset to default state. Note that by doing this, - // all item handles will become invalid and a new fetch must be issued. - clearOnClose: false, - - // urlPreventCache: Boolean - // Parameter to allow specifying if preventCache should be passed to the xhrGet call or not when loading data from a url. - // Note this does not mean the store calls the server on each fetch, only that the data load has preventCache set as an option. - // Added for tracker: #6072 - urlPreventCache: false, - - // failOk: Boolean - // Parameter for specifying that it is OK for the xhrGet call to fail silently. - failOk: false, - - // hierarchical: Boolean - // Parameter to indicate to process data from the url as hierarchical - // (data items can contain other data items in js form). Default is true - // for backwards compatibility. False means only root items are processed - // as items, all child objects outside of type-mapped objects and those in - // specific reference format, are left straight JS data objects. - hierarchical: true, - - _assertIsItem: function(/* dojo/data/api/Item */ item){ - // summary: - // This function tests whether the item passed in is indeed an item in the store. - // item: - // The item to test for being contained by the store. - if(!this.isItem(item)){ - throw new Error(this.declaredClass + ": Invalid item argument."); - } - }, - - _assertIsAttribute: function(/* attribute-name-string */ attribute){ - // summary: - // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. - // attribute: - // The attribute to test for being contained by the store. - if(typeof attribute !== "string"){ - throw new Error(this.declaredClass + ": Invalid attribute argument."); - } - }, - - getValue: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* value? */ defaultValue){ - // summary: - // See dojo/data/api/Read.getValue() - var values = this.getValues(item, attribute); - return (values.length > 0)?values[0]:defaultValue; // mixed - }, - - getValues: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Read.getValues() - - this._assertIsItem(item); - this._assertIsAttribute(attribute); - // Clone it before returning. refs: #10474 - return (item[attribute] || []).slice(0); // Array - }, - - getAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getAttributes() - this._assertIsItem(item); - var attributes = []; - for(var key in item){ - // Save off only the real item attributes, not the special id marks for O(1) isItem. - if((key !== this._storeRefPropName) && (key !== this._itemNumPropName) && (key !== this._rootItemPropName) && (key !== this._reverseRefMap)){ - attributes.push(key); - } - } - return attributes; // Array - }, - - hasAttribute: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Read.hasAttribute() - this._assertIsItem(item); - this._assertIsAttribute(attribute); - return (attribute in item); - }, - - containsValue: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* anything */ value){ - // summary: - // See dojo/data/api/Read.containsValue() - var regexp = undefined; - if(typeof value === "string"){ - regexp = filterUtil.patternToRegExp(value, false); - } - return this._containsValue(item, attribute, value, regexp); //boolean. - }, - - _containsValue: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* anything */ value, - /* RegExp?*/ regexp){ - // summary: - // Internal function for looking at the values contained by the item. - // description: - // Internal function for looking at the values contained by the item. This - // function allows for denoting if the comparison should be case sensitive for - // strings or not (for handling filtering cases where string case should not matter) - // item: - // The data item to examine for attribute values. - // attribute: - // The attribute to inspect. - // value: - // The value to match. - // regexp: - // Optional regular expression generated off value if value was of string type to handle wildcarding. - // If present and attribute values are string, then it can be used for comparison instead of 'value' - return array.some(this.getValues(item, attribute), function(possibleValue){ - if(possibleValue !== null && !lang.isObject(possibleValue) && regexp){ - if(possibleValue.toString().match(regexp)){ - return true; // Boolean - } - }else if(value === possibleValue){ - return true; // Boolean - } - }); - }, - - isItem: function(/* anything */ something){ - // summary: - // See dojo/data/api/Read.isItem() - if(something && something[this._storeRefPropName] === this){ - if(this._arrayOfAllItems[something[this._itemNumPropName]] === something){ - return true; - } - } - return false; // Boolean - }, - - isItemLoaded: function(/* anything */ something){ - // summary: - // See dojo/data/api/Read.isItemLoaded() - return this.isItem(something); //boolean - }, - - loadItem: function(/* object */ keywordArgs){ - // summary: - // See dojo/data/api/Read.loadItem() - this._assertIsItem(keywordArgs.item); - }, - - getFeatures: function(){ - // summary: - // See dojo/data/api/Read.getFeatures() - return this._features; //Object - }, - - getLabel: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getLabel() - if(this._labelAttr && this.isItem(item)){ - return this.getValue(item,this._labelAttr); //String - } - return undefined; //undefined - }, - - getLabelAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Read.getLabelAttributes() - if(this._labelAttr){ - return [this._labelAttr]; //array - } - return null; //null - }, - - filter: function(/* Object */ requestArgs, /* item[] */ arrayOfItems, /* Function */ findCallback){ - // summary: - // This method handles the basic filtering needs for ItemFile* based stores. - var items = [], - i, key; - - if(requestArgs.query){ - var value, - ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; - - //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the - //same value for each item examined. Much more efficient. - var regexpList = {}; - for(key in requestArgs.query){ - value = requestArgs.query[key]; - if(typeof value === "string"){ - regexpList[key] = filterUtil.patternToRegExp(value, ignoreCase); - }else if(value instanceof RegExp){ - regexpList[key] = value; - } - } - for(i = 0; i < arrayOfItems.length; ++i){ - var match = true; - var candidateItem = arrayOfItems[i]; - if(candidateItem === null){ - match = false; - }else{ - for(key in requestArgs.query){ - value = requestArgs.query[key]; - if(!this._containsValue(candidateItem, key, value, regexpList[key])){ - match = false; - } - } - } - if(match){ - items.push(candidateItem); - } - } - findCallback(items, requestArgs); - }else{ - // We want a copy to pass back in case the parent wishes to sort the array. - // We shouldn't allow resort of the internal list, so that multiple callers - // can get lists and sort without affecting each other. We also need to - // filter out any null values that have been left as a result of deleteItem() - // calls in ItemFileWriteStore. - for(i = 0; i < arrayOfItems.length; ++i){ - var item = arrayOfItems[i]; - if(item !== null){ - items.push(item); - } - } - findCallback(items, requestArgs); - } - }, - - _fetchItems: function( /* Object */ keywordArgs, - /* Function */ findCallback, - /* Function */ errorCallback){ - // summary: - // See dojo/data/util.simpleFetch.fetch() - var self = this; - - if(this._loadFinished){ - this.filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions), findCallback); - }else{ - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - //If fetches come in before the loading has finished, but while - //a load is in progress, we have to defer the fetching to be - //invoked in the callback. - if(this._loadInProgress){ - this._queuedFetches.push({args: keywordArgs, filter: lang.hitch(self, "filter"), findCallback: lang.hitch(self, findCallback)}); - }else{ - this._loadInProgress = true; - var getArgs = { - url: self._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - try{ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - self._loadInProgress = false; - - self.filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions), findCallback); - self._handleQueuedFetches(); - }catch(e){ - self._loadFinished = true; - self._loadInProgress = false; - errorCallback(e, keywordArgs); - } - }); - getHandler.addErrback(function(error){ - self._loadInProgress = false; - errorCallback(error, keywordArgs); - }); - - //Wire up the cancel to abort of the request - //This call cancel on the deferred if it hasn't been called - //yet and then will chain to the simple abort of the - //simpleFetch keywordArgs - var oldAbort = null; - if(keywordArgs.abort){ - oldAbort = keywordArgs.abort; - } - keywordArgs.abort = function(){ - var df = getHandler; - if(df && df.fired === -1){ - df.cancel(); - df = null; - } - if(oldAbort){ - oldAbort.call(keywordArgs); - } - }; - } - }else if(this._jsonData){ - try{ - this._loadFinished = true; - this._getItemsFromLoadedData(this._jsonData); - this._jsonData = null; - self.filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions), findCallback); - }catch(e){ - errorCallback(e, keywordArgs); - } - }else{ - errorCallback(new Error(this.declaredClass + ": No JSON source data was provided as either URL or a nested Javascript object."), keywordArgs); - } - } - }, - - _handleQueuedFetches: function(){ - // summary: - // Internal function to execute delayed request in the store. - - //Execute any deferred fetches now. - if(this._queuedFetches.length > 0){ - for(var i = 0; i < this._queuedFetches.length; i++){ - var fData = this._queuedFetches[i], - delayedQuery = fData.args, - delayedFilter = fData.filter, - delayedFindCallback = fData.findCallback; - if(delayedFilter){ - delayedFilter(delayedQuery, this._getItemsArray(delayedQuery.queryOptions), delayedFindCallback); - }else{ - this.fetchItemByIdentity(delayedQuery); - } - } - this._queuedFetches = []; - } - }, - - _getItemsArray: function(/*object?*/queryOptions){ - // summary: - // Internal function to determine which list of items to search over. - // queryOptions: The query options parameter, if any. - if(queryOptions && queryOptions.deep){ - return this._arrayOfAllItems; - } - return this._arrayOfTopLevelItems; - }, - - close: function(/*dojo/data/api/Request|Object?*/ request){ - // summary: - // See dojo/data/api/Read.close() - if(this.clearOnClose && - this._loadFinished && - !this._loadInProgress){ - //Reset all internalsback to default state. This will force a reload - //on next fetch. This also checks that the data or url param was set - //so that the store knows it can get data. Without one of those being set, - //the next fetch will trigger an error. - - if(((this._jsonFileUrl == "" || this._jsonFileUrl == null) && - (this.url == "" || this.url == null) - ) && this.data == null){ - console.debug(this.declaredClass + ": WARNING! Data reload " + - " information has not been provided." + - " Please set 'url' or 'data' to the appropriate value before" + - " the next fetch"); - } - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = []; - this._loadFinished = false; - this._itemsByIdentity = null; - this._loadInProgress = false; - this._queuedFetches = []; - } - }, - - _getItemsFromLoadedData: function(/* Object */ dataObject){ - // summary: - // Function to parse the loaded data into item format and build the internal items array. - // description: - // Function to parse the loaded data into item format and build the internal items array. - // dataObject: - // The JS data object containing the raw data to convery into item format. - // returns: Array - // Array of items in store item format. - - // First, we define a couple little utility functions... - var addingArrays = false, - self = this; - - function valueIsAnItem(/* anything */ aValue){ - // summary: - // Given any sort of value that could be in the raw json data, - // return true if we should interpret the value as being an - // item itself, rather than a literal value or a reference. - // example: - // | false == valueIsAnItem("Kermit"); - // | false == valueIsAnItem(42); - // | false == valueIsAnItem(new Date()); - // | false == valueIsAnItem({_type:'Date', _value:'1802-05-14'}); - // | false == valueIsAnItem({_reference:'Kermit'}); - // | true == valueIsAnItem({name:'Kermit', color:'green'}); - // | true == valueIsAnItem({iggy:'pop'}); - // | true == valueIsAnItem({foo:42}); - return (aValue !== null) && - (typeof aValue === "object") && - (!lang.isArray(aValue) || addingArrays) && - (!lang.isFunction(aValue)) && - (aValue.constructor == Object || lang.isArray(aValue)) && - (typeof aValue._reference === "undefined") && - (typeof aValue._type === "undefined") && - (typeof aValue._value === "undefined") && - self.hierarchical; - } - - function addItemAndSubItemsToArrayOfAllItems(/* dojo/data/api/Item */ anItem){ - self._arrayOfAllItems.push(anItem); - for(var attribute in anItem){ - var valueForAttribute = anItem[attribute]; - if(valueForAttribute){ - if(lang.isArray(valueForAttribute)){ - var valueArray = valueForAttribute; - for(var k = 0; k < valueArray.length; ++k){ - var singleValue = valueArray[k]; - if(valueIsAnItem(singleValue)){ - addItemAndSubItemsToArrayOfAllItems(singleValue); - } - } - }else{ - if(valueIsAnItem(valueForAttribute)){ - addItemAndSubItemsToArrayOfAllItems(valueForAttribute); - } - } - } - } - } - - this._labelAttr = dataObject.label; - - // We need to do some transformations to convert the data structure - // that we read from the file into a format that will be convenient - // to work with in memory. - - // Step 1: Walk through the object hierarchy and build a list of all items - var i, - item; - this._arrayOfAllItems = []; - this._arrayOfTopLevelItems = dataObject.items; - - for(i = 0; i < this._arrayOfTopLevelItems.length; ++i){ - item = this._arrayOfTopLevelItems[i]; - if(lang.isArray(item)){ - addingArrays = true; - } - addItemAndSubItemsToArrayOfAllItems(item); - item[this._rootItemPropName]=true; - } - - // Step 2: Walk through all the attribute values of all the items, - // and replace single values with arrays. For example, we change this: - // { name:'Miss Piggy', pets:'Foo-Foo'} - // into this: - // { name:['Miss Piggy'], pets:['Foo-Foo']} - // - // We also store the attribute names so we can validate our store - // reference and item id special properties for the O(1) isItem - var allAttributeNames = {}, - key; - - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - for(key in item){ - if(key !== this._rootItemPropName){ - var value = item[key]; - if(value !== null){ - if(!lang.isArray(value)){ - item[key] = [value]; - } - }else{ - item[key] = [null]; - } - } - allAttributeNames[key]=key; - } - } - - // Step 3: Build unique property names to use for the _storeRefPropName and _itemNumPropName - // This should go really fast, it will generally never even run the loop. - while(allAttributeNames[this._storeRefPropName]){ - this._storeRefPropName += "_"; - } - while(allAttributeNames[this._itemNumPropName]){ - this._itemNumPropName += "_"; - } - while(allAttributeNames[this._reverseRefMap]){ - this._reverseRefMap += "_"; - } - - // Step 4: Some data files specify an optional 'identifier', which is - // the name of an attribute that holds the identity of each item. - // If this data file specified an identifier attribute, then build a - // hash table of items keyed by the identity of the items. - var arrayOfValues; - - var identifier = dataObject.identifier; - if(identifier){ - this._itemsByIdentity = {}; - this._features['dojo.data.api.Identity'] = identifier; - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - arrayOfValues = item[identifier]; - var identity = arrayOfValues[0]; - if(!Object.hasOwnProperty.call(this._itemsByIdentity, identity)){ - this._itemsByIdentity[identity] = item; - }else{ - if(this._jsonFileUrl){ - throw new Error(this.declaredClass + ": The json data as specified by: [" + this._jsonFileUrl + "] is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); - }else if(this._jsonData){ - throw new Error(this.declaredClass + ": The json data provided by the creation arguments is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); - } - } - } - }else{ - this._features['dojo.data.api.Identity'] = Number; - } - - // Step 5: Walk through all the items, and set each item's properties - // for _storeRefPropName and _itemNumPropName, so that store.isItem() will return true. - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; - item[this._storeRefPropName] = this; - item[this._itemNumPropName] = i; - } - - // Step 6: We walk through all the attribute values of all the items, - // looking for type/value literals and item-references. - // - // We replace item-references with pointers to items. For example, we change: - // { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - // into this: - // { name:['Kermit'], friends:[miss_piggy] } - // (where miss_piggy is the object representing the 'Miss Piggy' item). - // - // We replace type/value pairs with typed-literals. For example, we change: - // { name:['Nelson Mandela'], born:[{_type:'Date', _value:'1918-07-18'}] } - // into this: - // { name:['Kermit'], born:(new Date(1918, 6, 18)) } - // - // We also generate the associate map for all items for the O(1) isItem function. - for(i = 0; i < this._arrayOfAllItems.length; ++i){ - item = this._arrayOfAllItems[i]; // example: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - for(key in item){ - arrayOfValues = item[key]; // example: [{_reference:{name:'Miss Piggy'}}] - for(var j = 0; j < arrayOfValues.length; ++j){ - value = arrayOfValues[j]; // example: {_reference:{name:'Miss Piggy'}} - if(value !== null && typeof value == "object"){ - if(("_type" in value) && ("_value" in value)){ - var type = value._type; // examples: 'Date', 'Color', or 'ComplexNumber' - var mappingObj = this._datatypeMap[type]; // examples: Date, dojo.Color, foo.math.ComplexNumber, {type: dojo.Color, deserialize(value){ return new dojo.Color(value)}} - if(!mappingObj){ - throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '" + type + "'"); - }else if(lang.isFunction(mappingObj)){ - arrayOfValues[j] = new mappingObj(value._value); - }else if(lang.isFunction(mappingObj.deserialize)){ - arrayOfValues[j] = mappingObj.deserialize(value._value); - }else{ - throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function"); - } - } - if(value._reference){ - var referenceDescription = value._reference; // example: {name:'Miss Piggy'} - if(!lang.isObject(referenceDescription)){ - // example: 'Miss Piggy' - // from an item like: { name:['Kermit'], friends:[{_reference:'Miss Piggy'}]} - arrayOfValues[j] = this._getItemByIdentity(referenceDescription); - }else{ - // example: {name:'Miss Piggy'} - // from an item like: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } - for(var k = 0; k < this._arrayOfAllItems.length; ++k){ - var candidateItem = this._arrayOfAllItems[k], - found = true; - for(var refKey in referenceDescription){ - if(candidateItem[refKey] != referenceDescription[refKey]){ - found = false; - } - } - if(found){ - arrayOfValues[j] = candidateItem; - } - } - } - if(this.referenceIntegrity){ - var refItem = arrayOfValues[j]; - if(this.isItem(refItem)){ - this._addReferenceToMap(refItem, item, key); - } - } - }else if(this.isItem(value)){ - //It's a child item (not one referenced through _reference). - //We need to treat this as a referenced item, so it can be cleaned up - //in a write store easily. - if(this.referenceIntegrity){ - this._addReferenceToMap(value, item, key); - } - } - } - } - } - } - }, - - _addReferenceToMap: function(/*item*/ refItem, /*item*/ parentItem, /*string*/ attribute){ - // summary: - // Method to add an reference map entry for an item and attribute. - // description: - // Method to add an reference map entry for an item and attribute. - // refItem: - // The item that is referenced. - // parentItem: - // The item that holds the new reference to refItem. - // attribute: - // The attribute on parentItem that contains the new reference. - - //Stub function, does nothing. Real processing is in ItemFileWriteStore. - }, - - getIdentity: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Identity.getIdentity() - var identifier = this._features['dojo.data.api.Identity']; - if(identifier === Number){ - return item[this._itemNumPropName]; // Number - }else{ - var arrayOfValues = item[identifier]; - if(arrayOfValues){ - return arrayOfValues[0]; // Object|String - } - } - return null; // null - }, - - fetchItemByIdentity: function(/* Object */ keywordArgs){ - // summary: - // See dojo/data/api/Identity.fetchItemByIdentity() - - // Hasn't loaded yet, we have to trigger the load. - var item, - scope; - if(!this._loadFinished){ - var self = this; - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null && this._jsonData == null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - - if(this._loadInProgress){ - this._queuedFetches.push({args: keywordArgs}); - }else{ - this._loadInProgress = true; - var getArgs = { - url: self._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - var scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - try{ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - self._loadInProgress = false; - item = self._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - keywordArgs.onItem.call(scope, item); - } - self._handleQueuedFetches(); - }catch(error){ - self._loadInProgress = false; - if(keywordArgs.onError){ - keywordArgs.onError.call(scope, error); - } - } - }); - getHandler.addErrback(function(error){ - self._loadInProgress = false; - if(keywordArgs.onError){ - var scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onError.call(scope, error); - } - }); - } - - }else if(this._jsonData){ - // Passed in data, no need to xhr. - self._getItemsFromLoadedData(self._jsonData); - self._jsonData = null; - self._loadFinished = true; - item = self._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onItem.call(scope, item); - } - } - }else{ - // Already loaded. We can just look it up and call back. - item = this._getItemByIdentity(keywordArgs.identity); - if(keywordArgs.onItem){ - scope = keywordArgs.scope?keywordArgs.scope:kernel.global; - keywordArgs.onItem.call(scope, item); - } - } - }, - - _getItemByIdentity: function(/* Object */ identity){ - // summary: - // Internal function to look an item up by its identity map. - var item = null; - if(this._itemsByIdentity){ - // If this map is defined, we need to just try to get it. If it fails - // the item does not exist. - if(Object.hasOwnProperty.call(this._itemsByIdentity, identity)){ - item = this._itemsByIdentity[identity]; - } - }else if (Object.hasOwnProperty.call(this._arrayOfAllItems, identity)){ - item = this._arrayOfAllItems[identity]; - } - if(item === undefined){ - item = null; - } - return item; // Object - }, - - getIdentityAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Identity.getIdentityAttributes() - - var identifier = this._features['dojo.data.api.Identity']; - if(identifier === Number){ - // If (identifier === Number) it means getIdentity() just returns - // an integer item-number for each item. The dojo/data/api/Identity - // spec says we need to return null if the identity is not composed - // of attributes - return null; // null - }else{ - return [identifier]; // Array - } - }, - - _forceLoad: function(){ - // summary: - // Internal function to force a load of the store if it hasn't occurred yet. This is required - // for specific functions to work properly. - var self = this; - //Do a check on the JsonFileUrl and crosscheck it. - //If it doesn't match the cross-check, it needs to be updated - //This allows for either url or _jsonFileUrl to he changed to - //reset the store load location. Done this way for backwards - //compatibility. People use _jsonFileUrl (even though officially - //private. - if(this._jsonFileUrl !== this._ccUrl){ - kernel.deprecated(this.declaredClass + ": ", - "To change the url, set the url property of the store," + - " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); - this._ccUrl = this._jsonFileUrl; - this.url = this._jsonFileUrl; - }else if(this.url !== this._ccUrl){ - this._jsonFileUrl = this.url; - this._ccUrl = this.url; - } - - //See if there was any forced reset of data. - if(this.data != null){ - this._jsonData = this.data; - this.data = null; - } - - if(this._jsonFileUrl){ - var getArgs = { - url: this._jsonFileUrl, - handleAs: "json-comment-optional", - preventCache: this.urlPreventCache, - failOk: this.failOk, - sync: true - }; - var getHandler = xhr.get(getArgs); - getHandler.addCallback(function(data){ - try{ - //Check to be sure there wasn't another load going on concurrently - //So we don't clobber data that comes in on it. If there is a load going on - //then do not save this data. It will potentially clobber current data. - //We mainly wanted to sync/wait here. - //TODO: Revisit the loading scheme of this store to improve multi-initial - //request handling. - if(self._loadInProgress !== true && !self._loadFinished){ - self._getItemsFromLoadedData(data); - self._loadFinished = true; - }else if(self._loadInProgress){ - //Okay, we hit an error state we can't recover from. A forced load occurred - //while an async load was occurring. Since we cannot block at this point, the best - //that can be managed is to throw an error. - throw new Error(this.declaredClass + ": Unable to perform a synchronous load, an async load is in progress."); - } - }catch(e){ - console.log(e); - throw e; - } - }); - getHandler.addErrback(function(error){ - throw error; - }); - }else if(this._jsonData){ - self._getItemsFromLoadedData(self._jsonData); - self._jsonData = null; - self._loadFinished = true; - } - } -}); -//Mix in the simple fetch implementation to this class. -lang.extend(ItemFileReadStore,simpleFetch); - -return ItemFileReadStore; - -}); diff --git a/lib/dojo/data/ItemFileWriteStore.js.uncompressed.js b/lib/dojo/data/ItemFileWriteStore.js.uncompressed.js deleted file mode 100644 index ee568a496..000000000 --- a/lib/dojo/data/ItemFileWriteStore.js.uncompressed.js +++ /dev/null @@ -1,816 +0,0 @@ -define("dojo/data/ItemFileWriteStore", ["../_base/lang", "../_base/declare", "../_base/array", "../_base/json", "../_base/kernel", - "./ItemFileReadStore", "../date/stamp" -], function(lang, declare, arrayUtil, jsonUtil, kernel, ItemFileReadStore, dateStamp){ - -// module: -// dojo/data/ItemFileWriteStore - -return declare("dojo.data.ItemFileWriteStore", ItemFileReadStore, { - // summary: - // TODOC - - constructor: function(/* object */ keywordParameters){ - // keywordParameters: - // The structure of the typeMap object is as follows: - // | { - // | type0: function || object, - // | type1: function || object, - // | ... - // | typeN: function || object - // | } - // Where if it is a function, it is assumed to be an object constructor that takes the - // value of _value as the initialization parameters. It is serialized assuming object.toString() - // serialization. If it is an object, then it is assumed - // to be an object of general form: - // | { - // | type: function, //constructor. - // | deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. - // | serialize: function(object) //The function that converts the object back into the proper file format form. - // | } - - // ItemFileWriteStore extends ItemFileReadStore to implement these additional dojo.data APIs - this._features['dojo.data.api.Write'] = true; - this._features['dojo.data.api.Notification'] = true; - - // For keeping track of changes so that we can implement isDirty and revert - this._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - - if(!this._datatypeMap['Date'].serialize){ - this._datatypeMap['Date'].serialize = function(obj){ - return dateStamp.toISOString(obj, {zulu:true}); - }; - } - //Disable only if explicitly set to false. - if(keywordParameters && (keywordParameters.referenceIntegrity === false)){ - this.referenceIntegrity = false; - } - - // this._saveInProgress is set to true, briefly, from when save() is first called to when it completes - this._saveInProgress = false; - }, - - referenceIntegrity: true, //Flag that defaultly enabled reference integrity tracking. This way it can also be disabled pogrammatially or declaratively. - - _assert: function(/* boolean */ condition){ - if(!condition){ - throw new Error("assertion failed in ItemFileWriteStore"); - } - }, - - _getIdentifierAttribute: function(){ - // this._assert((identifierAttribute === Number) || (dojo.isString(identifierAttribute))); - return this.getFeatures()['dojo.data.api.Identity']; - }, - - -/* dojo/data/api/Write */ - - newItem: function(/* Object? */ keywordArgs, /* Object? */ parentInfo){ - // summary: - // See dojo/data/api/Write.newItem() - - this._assert(!this._saveInProgress); - - if(!this._loadFinished){ - // We need to do this here so that we'll be able to find out what - // identifierAttribute was specified in the data file. - this._forceLoad(); - } - - if(typeof keywordArgs != "object" && typeof keywordArgs != "undefined"){ - throw new Error("newItem() was passed something other than an object"); - } - var newIdentity = null; - var identifierAttribute = this._getIdentifierAttribute(); - if(identifierAttribute === Number){ - newIdentity = this._arrayOfAllItems.length; - }else{ - newIdentity = keywordArgs[identifierAttribute]; - if(typeof newIdentity === "undefined"){ - throw new Error("newItem() was not passed an identity for the new item"); - } - if(lang.isArray(newIdentity)){ - throw new Error("newItem() was not passed an single-valued identity"); - } - } - - // make sure this identity is not already in use by another item, if identifiers were - // defined in the file. Otherwise it would be the item count, - // which should always be unique in this case. - if(this._itemsByIdentity){ - this._assert(typeof this._itemsByIdentity[newIdentity] === "undefined"); - } - this._assert(typeof this._pending._newItems[newIdentity] === "undefined"); - this._assert(typeof this._pending._deletedItems[newIdentity] === "undefined"); - - var newItem = {}; - newItem[this._storeRefPropName] = this; - newItem[this._itemNumPropName] = this._arrayOfAllItems.length; - if(this._itemsByIdentity){ - this._itemsByIdentity[newIdentity] = newItem; - //We have to set the identifier now, otherwise we can't look it - //up at calls to setValueorValues in parentInfo handling. - newItem[identifierAttribute] = [newIdentity]; - } - this._arrayOfAllItems.push(newItem); - - //We need to construct some data for the onNew call too... - var pInfo = null; - - // Now we need to check to see where we want to assign this thingm if any. - if(parentInfo && parentInfo.parent && parentInfo.attribute){ - pInfo = { - item: parentInfo.parent, - attribute: parentInfo.attribute, - oldValue: undefined - }; - - //See if it is multi-valued or not and handle appropriately - //Generally, all attributes are multi-valued for this store - //So, we only need to append if there are already values present. - var values = this.getValues(parentInfo.parent, parentInfo.attribute); - if(values && values.length > 0){ - var tempValues = values.slice(0, values.length); - if(values.length === 1){ - pInfo.oldValue = values[0]; - }else{ - pInfo.oldValue = values.slice(0, values.length); - } - tempValues.push(newItem); - this._setValueOrValues(parentInfo.parent, parentInfo.attribute, tempValues, false); - pInfo.newValue = this.getValues(parentInfo.parent, parentInfo.attribute); - }else{ - this._setValueOrValues(parentInfo.parent, parentInfo.attribute, newItem, false); - pInfo.newValue = newItem; - } - }else{ - //Toplevel item, add to both top list as well as all list. - newItem[this._rootItemPropName]=true; - this._arrayOfTopLevelItems.push(newItem); - } - - this._pending._newItems[newIdentity] = newItem; - - //Clone over the properties to the new item - for(var key in keywordArgs){ - if(key === this._storeRefPropName || key === this._itemNumPropName){ - // Bummer, the user is trying to do something like - // newItem({_S:"foo"}). Unfortunately, our superclass, - // ItemFileReadStore, is already using _S in each of our items - // to hold private info. To avoid a naming collision, we - // need to move all our private info to some other property - // of all the items/objects. So, we need to iterate over all - // the items and do something like: - // item.__S = item._S; - // item._S = undefined; - // But first we have to make sure the new "__S" variable is - // not in use, which means we have to iterate over all the - // items checking for that. - throw new Error("encountered bug in ItemFileWriteStore.newItem"); - } - var value = keywordArgs[key]; - if(!lang.isArray(value)){ - value = [value]; - } - newItem[key] = value; - if(this.referenceIntegrity){ - for(var i = 0; i < value.length; i++){ - var val = value[i]; - if(this.isItem(val)){ - this._addReferenceToMap(val, newItem, key); - } - } - } - } - this.onNew(newItem, pInfo); // dojo/data/api/Notification call - return newItem; // item - }, - - _removeArrayElement: function(/* Array */ array, /* anything */ element){ - var index = arrayUtil.indexOf(array, element); - if(index != -1){ - array.splice(index, 1); - return true; - } - return false; - }, - - deleteItem: function(/* dojo/data/api/Item */ item){ - // summary: - // See dojo/data/api/Write.deleteItem() - this._assert(!this._saveInProgress); - this._assertIsItem(item); - - // Remove this item from the _arrayOfAllItems, but leave a null value in place - // of the item, so as not to change the length of the array, so that in newItem() - // we can still safely do: newIdentity = this._arrayOfAllItems.length; - var indexInArrayOfAllItems = item[this._itemNumPropName]; - var identity = this.getIdentity(item); - - //If we have reference integrity on, we need to do reference cleanup for the deleted item - if(this.referenceIntegrity){ - //First scan all the attributes of this items for references and clean them up in the map - //As this item is going away, no need to track its references anymore. - - //Get the attributes list before we generate the backup so it - //doesn't pollute the attributes list. - var attributes = this.getAttributes(item); - - //Backup the map, we'll have to restore it potentially, in a revert. - if(item[this._reverseRefMap]){ - item["backup_" + this._reverseRefMap] = lang.clone(item[this._reverseRefMap]); - } - - //TODO: This causes a reversion problem. This list won't be restored on revert since it is - //attached to the 'value'. item, not ours. Need to back tese up somehow too. - //Maybe build a map of the backup of the entries and attach it to the deleted item to be restored - //later. Or just record them and call _addReferenceToMap on them in revert. - arrayUtil.forEach(attributes, function(attribute){ - arrayUtil.forEach(this.getValues(item, attribute), function(value){ - if(this.isItem(value)){ - //We have to back up all the references we had to others so they can be restored on a revert. - if(!item["backupRefs_" + this._reverseRefMap]){ - item["backupRefs_" + this._reverseRefMap] = []; - } - item["backupRefs_" + this._reverseRefMap].push({id: this.getIdentity(value), attr: attribute}); - this._removeReferenceFromMap(value, item, attribute); - } - }, this); - }, this); - - //Next, see if we have references to this item, if we do, we have to clean them up too. - var references = item[this._reverseRefMap]; - if(references){ - //Look through all the items noted as references to clean them up. - for(var itemId in references){ - var containingItem = null; - if(this._itemsByIdentity){ - containingItem = this._itemsByIdentity[itemId]; - }else{ - containingItem = this._arrayOfAllItems[itemId]; - } - //We have a reference to a containing item, now we have to process the - //attributes and clear all references to the item being deleted. - if(containingItem){ - for(var attribute in references[itemId]){ - var oldValues = this.getValues(containingItem, attribute) || []; - var newValues = arrayUtil.filter(oldValues, function(possibleItem){ - return !(this.isItem(possibleItem) && this.getIdentity(possibleItem) == identity); - }, this); - //Remove the note of the reference to the item and set the values on the modified attribute. - this._removeReferenceFromMap(item, containingItem, attribute); - if(newValues.length < oldValues.length){ - this._setValueOrValues(containingItem, attribute, newValues, true); - } - } - } - } - } - } - - this._arrayOfAllItems[indexInArrayOfAllItems] = null; - - item[this._storeRefPropName] = null; - if(this._itemsByIdentity){ - delete this._itemsByIdentity[identity]; - } - this._pending._deletedItems[identity] = item; - - //Remove from the toplevel items, if necessary... - if(item[this._rootItemPropName]){ - this._removeArrayElement(this._arrayOfTopLevelItems, item); - } - this.onDelete(item); // dojo/data/api/Notification call - return true; - }, - - setValue: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* almost anything */ value){ - // summary: - // See dojo/data/api/Write.set() - return this._setValueOrValues(item, attribute, value, true); // boolean - }, - - setValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* array */ values){ - // summary: - // See dojo/data/api/Write.setValues() - return this._setValueOrValues(item, attribute, values, true); // boolean - }, - - unsetAttribute: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute){ - // summary: - // See dojo/data/api/Write.unsetAttribute() - return this._setValueOrValues(item, attribute, [], true); - }, - - _setValueOrValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute, /* anything */ newValueOrValues, /*boolean?*/ callOnSet){ - this._assert(!this._saveInProgress); - - // Check for valid arguments - this._assertIsItem(item); - this._assert(lang.isString(attribute)); - this._assert(typeof newValueOrValues !== "undefined"); - - // Make sure the user isn't trying to change the item's identity - var identifierAttribute = this._getIdentifierAttribute(); - if(attribute == identifierAttribute){ - throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier."); - } - - // To implement the Notification API, we need to make a note of what - // the old attribute value was, so that we can pass that info when - // we call the onSet method. - var oldValueOrValues = this._getValueOrValues(item, attribute); - - var identity = this.getIdentity(item); - if(!this._pending._modifiedItems[identity]){ - // Before we actually change the item, we make a copy of it to - // record the original state, so that we'll be able to revert if - // the revert method gets called. If the item has already been - // modified then there's no need to do this now, since we already - // have a record of the original state. - var copyOfItemState = {}; - for(var key in item){ - if((key === this._storeRefPropName) || (key === this._itemNumPropName) || (key === this._rootItemPropName)){ - copyOfItemState[key] = item[key]; - }else if(key === this._reverseRefMap){ - copyOfItemState[key] = lang.clone(item[key]); - }else{ - copyOfItemState[key] = item[key].slice(0, item[key].length); - } - } - // Now mark the item as dirty, and save the copy of the original state - this._pending._modifiedItems[identity] = copyOfItemState; - } - - // Okay, now we can actually change this attribute on the item - var success = false; - - if(lang.isArray(newValueOrValues) && newValueOrValues.length === 0){ - - // If we were passed an empty array as the value, that counts - // as "unsetting" the attribute, so we need to remove this - // attribute from the item. - success = delete item[attribute]; - newValueOrValues = undefined; // used in the onSet Notification call below - - if(this.referenceIntegrity && oldValueOrValues){ - var oldValues = oldValueOrValues; - if(!lang.isArray(oldValues)){ - oldValues = [oldValues]; - } - for(var i = 0; i < oldValues.length; i++){ - var value = oldValues[i]; - if(this.isItem(value)){ - this._removeReferenceFromMap(value, item, attribute); - } - } - } - }else{ - var newValueArray; - if(lang.isArray(newValueOrValues)){ - // Unfortunately, it's not safe to just do this: - // newValueArray = newValueOrValues; - // Instead, we need to copy the array, which slice() does very nicely. - // This is so that our internal data structure won't - // get corrupted if the user mucks with the values array *after* - // calling setValues(). - newValueArray = newValueOrValues.slice(0, newValueOrValues.length); - }else{ - newValueArray = [newValueOrValues]; - } - - //We need to handle reference integrity if this is on. - //In the case of set, we need to see if references were added or removed - //and update the reference tracking map accordingly. - if(this.referenceIntegrity){ - if(oldValueOrValues){ - var oldValues = oldValueOrValues; - if(!lang.isArray(oldValues)){ - oldValues = [oldValues]; - } - //Use an associative map to determine what was added/removed from the list. - //Should be O(n) performant. First look at all the old values and make a list of them - //Then for any item not in the old list, we add it. If it was already present, we remove it. - //Then we pass over the map and any references left it it need to be removed (IE, no match in - //the new values list). - var map = {}; - arrayUtil.forEach(oldValues, function(possibleItem){ - if(this.isItem(possibleItem)){ - var id = this.getIdentity(possibleItem); - map[id.toString()] = true; - } - }, this); - arrayUtil.forEach(newValueArray, function(possibleItem){ - if(this.isItem(possibleItem)){ - var id = this.getIdentity(possibleItem); - if(map[id.toString()]){ - delete map[id.toString()]; - }else{ - this._addReferenceToMap(possibleItem, item, attribute); - } - } - }, this); - for(var rId in map){ - var removedItem; - if(this._itemsByIdentity){ - removedItem = this._itemsByIdentity[rId]; - }else{ - removedItem = this._arrayOfAllItems[rId]; - } - this._removeReferenceFromMap(removedItem, item, attribute); - } - }else{ - //Everything is new (no old values) so we have to just - //insert all the references, if any. - for(var i = 0; i < newValueArray.length; i++){ - var value = newValueArray[i]; - if(this.isItem(value)){ - this._addReferenceToMap(value, item, attribute); - } - } - } - } - item[attribute] = newValueArray; - success = true; - } - - // Now we make the dojo/data/api/Notification call - if(callOnSet){ - this.onSet(item, attribute, oldValueOrValues, newValueOrValues); - } - return success; // boolean - }, - - _addReferenceToMap: function(/* dojo/data/api/Item */ refItem, /* dojo/data/api/Item */ parentItem, /* string */ attribute){ - // summary: - // Method to add an reference map entry for an item and attribute. - // description: - // Method to add an reference map entry for an item and attribute. - // refItem: - // The item that is referenced. - // parentItem: - // The item that holds the new reference to refItem. - // attribute: - // The attribute on parentItem that contains the new reference. - - var parentId = this.getIdentity(parentItem); - var references = refItem[this._reverseRefMap]; - - if(!references){ - references = refItem[this._reverseRefMap] = {}; - } - var itemRef = references[parentId]; - if(!itemRef){ - itemRef = references[parentId] = {}; - } - itemRef[attribute] = true; - }, - - _removeReferenceFromMap: function(/* dojo/data/api/Item */ refItem, /* dojo/data/api/Item */ parentItem, /* string */ attribute){ - // summary: - // Method to remove an reference map entry for an item and attribute. - // description: - // Method to remove an reference map entry for an item and attribute. This will - // also perform cleanup on the map such that if there are no more references at all to - // the item, its reference object and entry are removed. - // refItem: - // The item that is referenced. - // parentItem: - // The item holding a reference to refItem. - // attribute: - // The attribute on parentItem that contains the reference. - var identity = this.getIdentity(parentItem); - var references = refItem[this._reverseRefMap]; - var itemId; - if(references){ - for(itemId in references){ - if(itemId == identity){ - delete references[itemId][attribute]; - if(this._isEmpty(references[itemId])){ - delete references[itemId]; - } - } - } - if(this._isEmpty(references)){ - delete refItem[this._reverseRefMap]; - } - } - }, - - _dumpReferenceMap: function(){ - // summary: - // Function to dump the reverse reference map of all items in the store for debug purposes. - // description: - // Function to dump the reverse reference map of all items in the store for debug purposes. - var i; - for(i = 0; i < this._arrayOfAllItems.length; i++){ - var item = this._arrayOfAllItems[i]; - if(item && item[this._reverseRefMap]){ - console.log("Item: [" + this.getIdentity(item) + "] is referenced by: " + jsonUtil.toJson(item[this._reverseRefMap])); - } - } - }, - - _getValueOrValues: function(/* dojo/data/api/Item */ item, /* attribute-name-string */ attribute){ - var valueOrValues = undefined; - if(this.hasAttribute(item, attribute)){ - var valueArray = this.getValues(item, attribute); - if(valueArray.length == 1){ - valueOrValues = valueArray[0]; - }else{ - valueOrValues = valueArray; - } - } - return valueOrValues; - }, - - _flatten: function(/* anything */ value){ - if(this.isItem(value)){ - // Given an item, return an serializable object that provides a - // reference to the item. - // For example, given kermit: - // var kermit = store.newItem({id:2, name:"Kermit"}); - // we want to return - // {_reference:2} - return {_reference: this.getIdentity(value)}; - }else{ - if(typeof value === "object"){ - for(var type in this._datatypeMap){ - var typeMap = this._datatypeMap[type]; - if(lang.isObject(typeMap) && !lang.isFunction(typeMap)){ - if(value instanceof typeMap.type){ - if(!typeMap.serialize){ - throw new Error("ItemFileWriteStore: No serializer defined for type mapping: [" + type + "]"); - } - return {_type: type, _value: typeMap.serialize(value)}; - } - }else if(value instanceof typeMap){ - //SImple mapping, therefore, return as a toString serialization. - return {_type: type, _value: value.toString()}; - } - } - } - return value; - } - }, - - _getNewFileContentString: function(){ - // summary: - // Generate a string that can be saved to a file. - // The result should look similar to: - // http://trac.dojotoolkit.org/browser/dojo/trunk/tests/data/countries.json - var serializableStructure = {}; - - var identifierAttribute = this._getIdentifierAttribute(); - if(identifierAttribute !== Number){ - serializableStructure.identifier = identifierAttribute; - } - if(this._labelAttr){ - serializableStructure.label = this._labelAttr; - } - serializableStructure.items = []; - for(var i = 0; i < this._arrayOfAllItems.length; ++i){ - var item = this._arrayOfAllItems[i]; - if(item !== null){ - var serializableItem = {}; - for(var key in item){ - if(key !== this._storeRefPropName && key !== this._itemNumPropName && key !== this._reverseRefMap && key !== this._rootItemPropName){ - var valueArray = this.getValues(item, key); - if(valueArray.length == 1){ - serializableItem[key] = this._flatten(valueArray[0]); - }else{ - var serializableArray = []; - for(var j = 0; j < valueArray.length; ++j){ - serializableArray.push(this._flatten(valueArray[j])); - serializableItem[key] = serializableArray; - } - } - } - } - serializableStructure.items.push(serializableItem); - } - } - var prettyPrint = true; - return jsonUtil.toJson(serializableStructure, prettyPrint); - }, - - _isEmpty: function(something){ - // summary: - // Function to determine if an array or object has no properties or values. - // something: - // The array or object to examine. - var empty = true; - if(lang.isObject(something)){ - var i; - for(i in something){ - empty = false; - break; - } - }else if(lang.isArray(something)){ - if(something.length > 0){ - empty = false; - } - } - return empty; //boolean - }, - - save: function(/* object */ keywordArgs){ - // summary: - // See dojo/data/api/Write.save() - this._assert(!this._saveInProgress); - - // this._saveInProgress is set to true, briefly, from when save is first called to when it completes - this._saveInProgress = true; - - var self = this; - var saveCompleteCallback = function(){ - self._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - - self._saveInProgress = false; // must come after this._pending is cleared, but before any callbacks - if(keywordArgs && keywordArgs.onComplete){ - var scope = keywordArgs.scope || kernel.global; - keywordArgs.onComplete.call(scope); - } - }; - var saveFailedCallback = function(err){ - self._saveInProgress = false; - if(keywordArgs && keywordArgs.onError){ - var scope = keywordArgs.scope || kernel.global; - keywordArgs.onError.call(scope, err); - } - }; - - if(this._saveEverything){ - var newFileContentString = this._getNewFileContentString(); - this._saveEverything(saveCompleteCallback, saveFailedCallback, newFileContentString); - } - if(this._saveCustom){ - this._saveCustom(saveCompleteCallback, saveFailedCallback); - } - if(!this._saveEverything && !this._saveCustom){ - // Looks like there is no user-defined save-handler function. - // That's fine, it just means the datastore is acting as a "mock-write" - // store -- changes get saved in memory but don't get saved to disk. - saveCompleteCallback(); - } - }, - - revert: function(){ - // summary: - // See dojo/data/api/Write.revert() - this._assert(!this._saveInProgress); - - var identity; - for(identity in this._pending._modifiedItems){ - // find the original item and the modified item that replaced it - var copyOfItemState = this._pending._modifiedItems[identity]; - var modifiedItem = null; - if(this._itemsByIdentity){ - modifiedItem = this._itemsByIdentity[identity]; - }else{ - modifiedItem = this._arrayOfAllItems[identity]; - } - - // Restore the original item into a full-fledged item again, we want to try to - // keep the same object instance as if we don't it, causes bugs like #9022. - copyOfItemState[this._storeRefPropName] = this; - for(var key in modifiedItem){ - delete modifiedItem[key]; - } - lang.mixin(modifiedItem, copyOfItemState); - } - var deletedItem; - for(identity in this._pending._deletedItems){ - deletedItem = this._pending._deletedItems[identity]; - deletedItem[this._storeRefPropName] = this; - var index = deletedItem[this._itemNumPropName]; - - //Restore the reverse refererence map, if any. - if(deletedItem["backup_" + this._reverseRefMap]){ - deletedItem[this._reverseRefMap] = deletedItem["backup_" + this._reverseRefMap]; - delete deletedItem["backup_" + this._reverseRefMap]; - } - this._arrayOfAllItems[index] = deletedItem; - if(this._itemsByIdentity){ - this._itemsByIdentity[identity] = deletedItem; - } - if(deletedItem[this._rootItemPropName]){ - this._arrayOfTopLevelItems.push(deletedItem); - } - } - //We have to pass through it again and restore the reference maps after all the - //undeletes have occurred. - for(identity in this._pending._deletedItems){ - deletedItem = this._pending._deletedItems[identity]; - if(deletedItem["backupRefs_" + this._reverseRefMap]){ - arrayUtil.forEach(deletedItem["backupRefs_" + this._reverseRefMap], function(reference){ - var refItem; - if(this._itemsByIdentity){ - refItem = this._itemsByIdentity[reference.id]; - }else{ - refItem = this._arrayOfAllItems[reference.id]; - } - this._addReferenceToMap(refItem, deletedItem, reference.attr); - }, this); - delete deletedItem["backupRefs_" + this._reverseRefMap]; - } - } - - for(identity in this._pending._newItems){ - var newItem = this._pending._newItems[identity]; - newItem[this._storeRefPropName] = null; - // null out the new item, but don't change the array index so - // so we can keep using _arrayOfAllItems.length. - this._arrayOfAllItems[newItem[this._itemNumPropName]] = null; - if(newItem[this._rootItemPropName]){ - this._removeArrayElement(this._arrayOfTopLevelItems, newItem); - } - if(this._itemsByIdentity){ - delete this._itemsByIdentity[identity]; - } - } - - this._pending = { - _newItems:{}, - _modifiedItems:{}, - _deletedItems:{} - }; - return true; // boolean - }, - - isDirty: function(/* item? */ item){ - // summary: - // See dojo/data/api/Write.isDirty() - if(item){ - // return true if the item is dirty - var identity = this.getIdentity(item); - return new Boolean(this._pending._newItems[identity] || - this._pending._modifiedItems[identity] || - this._pending._deletedItems[identity]).valueOf(); // boolean - }else{ - // return true if the store is dirty -- which means return true - // if there are any new items, dirty items, or modified items - return !this._isEmpty(this._pending._newItems) || - !this._isEmpty(this._pending._modifiedItems) || - !this._isEmpty(this._pending._deletedItems); // boolean - } - }, - -/* dojo/data/api/Notification */ - - onSet: function(/* dojo/data/api/Item */ item, - /*attribute-name-string*/ attribute, - /*object|array*/ oldValue, - /*object|array*/ newValue){ - // summary: - // See dojo/data/api/Notification.onSet() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - onNew: function(/* dojo/data/api/Item */ newItem, /*object?*/ parentInfo){ - // summary: - // See dojo/data/api/Notification.onNew() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - onDelete: function(/* dojo/data/api/Item */ deletedItem){ - // summary: - // See dojo/data/api/Notification.onDelete() - - // No need to do anything. This method is here just so that the - // client code can connect observers to it. - }, - - close: function(/* object? */ request){ - // summary: - // Over-ride of base close function of ItemFileReadStore to add in check for store state. - // description: - // Over-ride of base close function of ItemFileReadStore to add in check for store state. - // If the store is still dirty (unsaved changes), then an error will be thrown instead of - // clearing the internal state for reload from the url. - - //Clear if not dirty ... or throw an error - if(this.clearOnClose){ - if(!this.isDirty()){ - this.inherited(arguments); - }else{ - //Only throw an error if the store was dirty and we were loading from a url (cannot reload from url until state is saved). - throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close."); - } - } - } -}); - -}); diff --git a/lib/dojo/data/ObjectStore.js.uncompressed.js b/lib/dojo/data/ObjectStore.js.uncompressed.js deleted file mode 100644 index ff0ac99c7..000000000 --- a/lib/dojo/data/ObjectStore.js.uncompressed.js +++ /dev/null @@ -1,544 +0,0 @@ -define("dojo/data/ObjectStore", ["../_base/lang", "../Evented", "../_base/declare", "../_base/Deferred", "../_base/array", - "../_base/connect", "../regexp" -], function(lang, Evented, declare, Deferred, array, connect, regexp){ - -// module: -// dojo/data/ObjectStore - -function convertRegex(character){ - return character == '*' ? '.*' : character == '?' ? '.' : character; -} -return declare("dojo.data.ObjectStore", [Evented],{ - // summary: - // A Dojo Data implementation that wraps Dojo object stores for backwards - // compatibility. - - objectStore: null, - constructor: function(options){ - // options: - // The configuration information to pass into the data store. - // - // - options.objectStore: - // - // The object store to use as the source provider for this data store - - this._dirtyObjects = []; - if(options.labelAttribute){ - // accept the old labelAttribute to make it easier to switch from old data stores - options.labelProperty = options.labelAttribute; - } - lang.mixin(this, options); - }, - labelProperty: "label", - - getValue: function(/*Object*/ item, /*String*/property, /*value?*/defaultValue){ - // summary: - // Gets the value of an item's 'property' - // item: - // The item to get the value from - // property: - // property to look up value for - // defaultValue: - // the default value - - return typeof item.get === "function" ? item.get(property) : - property in item ? - item[property] : defaultValue; - }, - getValues: function(item, property){ - // summary: - // Gets the value of an item's 'property' and returns - // it. If this value is an array it is just returned, - // if not, the value is added to an array and that is returned. - // item: Object - // property: String - // property to look up value for - - var val = this.getValue(item,property); - return val instanceof Array ? val : val === undefined ? [] : [val]; - }, - - getAttributes: function(item){ - // summary: - // Gets the available attributes of an item's 'property' and returns - // it as an array. - // item: Object - - var res = []; - for(var i in item){ - if(item.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_')){ - res.push(i); - } - } - return res; - }, - - hasAttribute: function(item,attribute){ - // summary: - // Checks to see if item has attribute - // item: Object - // The item to check - // attribute: String - // The attribute to check - return attribute in item; - }, - - containsValue: function(item, attribute, value){ - // summary: - // Checks to see if 'item' has 'value' at 'attribute' - // item: Object - // The item to check - // attribute: String - // The attribute to check - // value: Anything - // The value to look for - return array.indexOf(this.getValues(item,attribute),value) > -1; - }, - - - isItem: function(item){ - // summary: - // Checks to see if the argument is an item - // item: Object - // The item to check - - // we have no way of determining if it belongs, we just have object returned from - // service queries - return (typeof item == 'object') && item && !(item instanceof Date); - }, - - isItemLoaded: function(item){ - // summary: - // Checks to see if the item is loaded. - // item: Object - // The item to check - - return item && typeof item.load !== "function"; - }, - - loadItem: function(args){ - // summary: - // Loads an item and calls the callback handler. Note, that this will call the callback - // handler even if the item is loaded. Consequently, you can use loadItem to ensure - // that an item is loaded is situations when the item may or may not be loaded yet. - // If you access a value directly through property access, you can use this to load - // a lazy value as well (doesn't need to be an item). - // args: Object - // See dojo/data/api/Read.fetch() - // example: - // | store.loadItem({ - // | item: item, // this item may or may not be loaded - // | onItem: function(item){ - // | // do something with the item - // | } - // | }); - - var item; - if(typeof args.item.load === "function"){ - Deferred.when(args.item.load(), function(result){ - item = result; // in synchronous mode this can allow loadItem to return the value - var func = result instanceof Error ? args.onError : args.onItem; - if(func){ - func.call(args.scope, result); - } - }); - }else if(args.onItem){ - // even if it is already loaded, we will use call the callback, this makes it easier to - // use when it is not known if the item is loaded (you can always safely call loadItem). - args.onItem.call(args.scope, args.item); - } - return item; - }, - close: function(request){ - // summary: - // See dojo/data/api/Read.close() - return request && request.abort && request.abort(); - }, - fetch: function(args){ - // summary: - // See dojo/data/api/Read.fetch() - - args = lang.delegate(args, args && args.queryOptions); - var self = this; - var scope = args.scope || self; - var query = args.query; - if(typeof query == "object"){ // can be null, but that is ignore by for-in - query = lang.delegate(query); // don't modify the original - for(var i in query){ - // find any strings and convert them to regular expressions for wildcard support - var required = query[i]; - if(typeof required == "string"){ - query[i] = RegExp("^" + regexp.escapeString(required, "*?\\").replace(/\\.|\*|\?/g, convertRegex) + "$", args.ignoreCase ? "mi" : "m"); - query[i].toString = (function(original){ - return function(){ - return original; - }; - })(required); - } - } - } - - var results = this.objectStore.query(query, args); - Deferred.when(results.total, function(totalCount){ - Deferred.when(results, function(results){ - if(args.onBegin){ - args.onBegin.call(scope, totalCount || results.length, args); - } - if(args.onItem){ - for(var i=0; i 0;){ - i--; - var dirty = dirtyObjects[i]; - var object = dirty.object; - var old = dirty.old; - if(object && old){ - // changed - for(var j in old){ - if(old.hasOwnProperty(j) && object[j] !== old[j]){ - this.onSet(object, j, object[j], old[j]); - object[j] = old[j]; - } - } - for(j in object){ - if(!old.hasOwnProperty(j)){ - this.onSet(object, j, object[j]); - delete object[j]; - } - } - }else if(!old){ - // was an addition, remove it - this.onDelete(object); - }else{ - // was a deletion, we will add it back - this.onNew(old); - } - delete (object || old).__isDirty; - dirtyObjects.splice(i, 1); - } - - }, - isDirty: function(item){ - // summary: - // returns true if the item is marked as dirty or true if there are any dirty items - // item: Object - // The item to check - if(!item){ - return !!this._dirtyObjects.length; - } - return item.__isDirty; - }, - - // Notification Support - - onSet: function(){ - // summary: - // See dojo/data/api/Notification.onSet() - }, - onNew: function(){ - // summary: - // See dojo/data/api/Notification.onNew() - }, - onDelete: function(){ - // summary: - // See dojo/data/api/Notification.onDelete() - }, - // an extra to get result sets - onFetch: function(results){ - // summary: - // Called when a fetch occurs - } - - } -); -}); diff --git a/lib/dojo/data/api/Identity.js.uncompressed.js b/lib/dojo/data/api/Identity.js.uncompressed.js deleted file mode 100644 index edb45f75e..000000000 --- a/lib/dojo/data/api/Identity.js.uncompressed.js +++ /dev/null @@ -1,109 +0,0 @@ -define("dojo/data/api/Identity", ["../../_base/declare", "./Read"], function(declare, Read){ - -// module: -// dojo/data/api/Identity - -return declare("dojo.data.api.Identity", Read, { - // summary: - // This is an abstract API that data provider implementations conform to. - // This file defines methods signatures and intentionally leaves all the - // methods unimplemented. - - getFeatures: function(){ - // summary: - // See dojo/data/api/Read.getFeatures() - return { - 'dojo.data.api.Read': true, - 'dojo.data.api.Identity': true - }; - }, - - getIdentity: function(/* dojo/data/api/Item */ item){ - // summary: - // Returns a unique identifier for an item. The return value will be - // either a string or something that has a toString() method (such as, - // for example, a dojox/uuid object). - // item: - // The item from the store from which to obtain its identifier. - // exceptions: - // Conforming implementations may throw an exception or return null if - // item is not an item. - // example: - // | var itemId = store.getIdentity(kermit); - // | assert(kermit === store.findByIdentity(store.getIdentity(kermit))); - throw new Error('Unimplemented API: dojo.data.api.Identity.getIdentity'); - }, - - getIdentityAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // Returns an array of attribute names that are used to generate the identity. - // For most stores, this is a single attribute, but for some complex stores - // such as RDB backed stores that use compound (multi-attribute) identifiers - // it can be more than one. If the identity is not composed of attributes - // on the item, it will return null. This function is intended to identify - // the attributes that comprise the identity so that so that during a render - // of all attributes, the UI can hide the the identity information if it - // chooses. - // item: - // The item from the store from which to obtain the array of public attributes that - // compose the identifier, if any. - // example: - // | var itemId = store.getIdentity(kermit); - // | var identifiers = store.getIdentityAttributes(itemId); - // | assert(typeof identifiers === "array" || identifiers === null); - throw new Error('Unimplemented API: dojo.data.api.Identity.getIdentityAttributes'); - }, - - - fetchItemByIdentity: function(/* object */ keywordArgs){ - // summary: - // Given the identity of an item, this method returns the item that has - // that identity through the onItem callback. Conforming implementations - // should return null if there is no item with the given identity. - // Implementations of fetchItemByIdentity() may sometimes return an item - // from a local cache and may sometimes fetch an item from a remote server, - // keywordArgs: - // An anonymous object that defines the item to locate and callbacks to invoke when the - // item has been located and load has completed. The format of the object is as follows: - // | { - // | identity: string|object, - // | onItem: Function, - // | onError: Function, - // | scope: object - // | } - // - // ####The *identity* parameter - // - // The identity parameter is the identity of the item you wish to locate and load - // This attribute is required. It should be a string or an object that toString() - // can be called on. - // - // ####The *onItem* parameter - // - // Function(item) - // The onItem parameter is the callback to invoke when the item has been loaded. It takes only one - // parameter, the item located, or null if none found. - // - // ####The *onError* parameter - // - // Function(error) - // The onError parameter is the callback to invoke when the item load encountered an error. It takes only one - // parameter, the error object - // - // ####The *scope* parameter - // - // If a scope object is provided, all of the callback functions (onItem, - // onError, etc) will be invoked in the context of the scope object. - // In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global. - // For example, onItem.call(scope, item, request) vs. - // onItem.call(dojo.global, item, request) - - if(!this.isItemLoaded(keywordArgs.item)){ - throw new Error('Unimplemented API: dojo.data.api.Identity.fetchItemByIdentity'); - } - } -}); - -}); diff --git a/lib/dojo/data/api/Item.js.uncompressed.js b/lib/dojo/data/api/Item.js.uncompressed.js deleted file mode 100644 index 4cb850f8e..000000000 --- a/lib/dojo/data/api/Item.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define("dojo/data/api/Item", ["../../_base/declare"], function(declare){ - - // module: - // dojo/data/api/Item - - return declare(null, { - // summary: - // An item in a dojo/data store - // Class for documentation purposes only. An item can take any form, so no - // properties or methods are defined here. - }); - -}); diff --git a/lib/dojo/data/api/Notification.js.uncompressed.js b/lib/dojo/data/api/Notification.js.uncompressed.js deleted file mode 100644 index 4a21ac838..000000000 --- a/lib/dojo/data/api/Notification.js.uncompressed.js +++ /dev/null @@ -1,110 +0,0 @@ -define("dojo/data/api/Notification", ["../../_base/declare", "./Read"], function(declare, Read){ - -// module: -// dojo/data/api/Notification - -return declare("dojo.data.api.Notification", Read, { - // summary: - // This is an abstract API that data provider implementations conform to. - // This file defines functions signatures and intentionally leaves all the - // functions unimplemented. - // description: - // This API defines a set of APIs that all datastores that conform to the - // Notifications API must implement. In general, most stores will implement - // these APIs as no-op functions for users who wish to monitor them to be able - // to connect to then via dojo.connect(). For non-users of dojo.connect, - // they should be able to just replace the function on the store to obtain - // notifications. Both read-only and read-write stores may implement - // this feature. In the case of a read-only store, this feature makes sense if - // the store itself does internal polling to a back-end server and periodically updates - // its cache of items (deletes, adds, and updates). - // example: - // | function onSet(item, attribute, oldValue, newValue){ - // | //Do something with the information... - // | }; - // | var store = new some.newStore(); - // | dojo.connect(store, "onSet", onSet); - - getFeatures: function(){ - // summary: - // See dojo/data/api/Read.getFeatures() - return { - 'dojo.data.api.Read': true, - 'dojo.data.api.Notification': true - }; - }, - - onSet: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* object|array */ oldValue, - /* object|array */ newValue){ - // summary: - // This function is called any time an item is modified via setValue, setValues, unsetAttribute, etc. - // description: - // This function is called any time an item is modified via setValue, setValues, unsetAttribute, etc. - // Its purpose is to provide a hook point for those who wish to monitor actions on items in the store - // in a simple manner. The general expected usage is to dojo.connect() to the store's - // implementation and be called after the store function is called. - // item: - // The item being modified. - // attribute: - // The attribute being changed represented as a string name. - // oldValue: - // The old value of the attribute. In the case of single value calls, such as setValue, unsetAttribute, etc, - // this value will be generally be an atomic value of some sort (string, int, etc, object). In the case of - // multi-valued attributes, it will be an array. - // newValue: - // The new value of the attribute. In the case of single value calls, such as setValue, this value will be - // generally be an atomic value of some sort (string, int, etc, object). In the case of multi-valued attributes, - // it will be an array. In the case of unsetAttribute, the new value will be 'undefined'. - // returns: - // Nothing. - throw new Error('Unimplemented API: dojo.data.api.Notification.onSet'); - }, - - onNew: function(/* dojo/data/api/Item */ newItem, /*object?*/ parentInfo){ - // summary: - // This function is called any time a new item is created in the store. - // It is called immediately after the store newItem processing has completed. - // description: - // This function is called any time a new item is created in the store. - // It is called immediately after the store newItem processing has completed. - // newItem: - // The item created. - // parentInfo: - // An optional javascript object that is passed when the item created was placed in the store - // hierarchy as a value f another item's attribute, instead of a root level item. Note that if this - // function is invoked with a value for parentInfo, then onSet is not invoked stating the attribute of - // the parent item was modified. This is to avoid getting two notification events occurring when a new item - // with a parent is created. The structure passed in is as follows: - // | { - // | item: someItem, //The parent item - // | attribute: "attribute-name-string", //The attribute the new item was assigned to. - // | oldValue: something //Whatever was the previous value for the attribute. - // | //If it is a single-value attribute only, then this value will be a single value. - // | //If it was a multi-valued attribute, then this will be an array of all the values minus the new one. - // | newValue: something //The new value of the attribute. In the case of single value calls, such as setValue, this value will be - // | //generally be an atomic value of some sort (string, int, etc, object). In the case of multi-valued attributes, - // | //it will be an array. - // | } - // returns: - // Nothing. - throw new Error('Unimplemented API: dojo.data.api.Notification.onNew'); - }, - - onDelete: function(/* dojo/data/api/Item */ deletedItem){ - // summary: - // This function is called any time an item is deleted from the store. - // It is called immediately after the store deleteItem processing has completed. - // description: - // This function is called any time an item is deleted from the store. - // It is called immediately after the store deleteItem processing has completed. - // deletedItem: - // The item deleted. - // returns: - // Nothing. - throw new Error('Unimplemented API: dojo.data.api.Notification.onDelete'); - } -}); - -}); diff --git a/lib/dojo/data/api/Read.js.uncompressed.js b/lib/dojo/data/api/Read.js.uncompressed.js deleted file mode 100644 index 69d46c756..000000000 --- a/lib/dojo/data/api/Read.js.uncompressed.js +++ /dev/null @@ -1,486 +0,0 @@ -define("dojo/data/api/Read", ["../../_base/declare"], function(declare){ - -// module: -// dojo/data/api/Read - -return declare("dojo.data.api.Read", null, { - // summary: - // This is an abstract API that data provider implementations conform to. - // This file defines methods signatures and intentionally leaves all the - // methods unimplemented. For more information on the dojo.data APIs, - // please visit: http://www.dojotoolkit.org/node/98 - - getValue: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* value? */ defaultValue){ - // summary: - // Returns a single attribute value. - // Returns defaultValue if and only if *item* does not have a value for *attribute*. - // Returns null if and only if null was explicitly set as the attribute value. - // Returns undefined if and only if the item does not have a value for the - // given attribute (which is the same as saying the item does not have the attribute). - // description: - // Saying that an "item x does not have a value for an attribute y" - // is identical to saying that an "item x does not have attribute y". - // It is an oxymoron to say "that attribute is present but has no values" - // or "the item has that attribute but does not have any attribute values". - // If store.hasAttribute(item, attribute) returns false, then - // store.getValue(item, attribute) will return undefined. - // item: - // The item to access values on. - // attribute: - // The attribute to access represented as a string. - // defaultValue: - // Optional. A default value to use for the getValue return in the attribute does not exist or has no value. - // returns: - // a literal, an item, null, or undefined (never an array) - // exceptions: - // Throws an exception if *item* is not an item, or *attribute* is not a string - // example: - // | var darthVader = store.getValue(lukeSkywalker, "father"); - throw new Error('Unimplemented API: dojo.data.api.Read.getValue'); - }, - - getValues: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // This getValues() method works just like the getValue() method, but getValues() - // always returns an array rather than a single attribute value. The array - // may be empty, may contain a single attribute value, or may contain - // many attribute values. - // If the item does not have a value for the given attribute, then getValues() - // will return an empty array: []. (So, if store.hasAttribute(item, attribute) - // has a return of false, then store.getValues(item, attribute) will return [].) - // item: - // The item to access values on. - // attribute: - // The attribute to access represented as a string. - // returns: - // an array that may contain literals and items - // exceptions: - // Throws an exception if *item* is not an item, or *attribute* is not a string - // example: - // | var friendsOfLuke = store.getValues(lukeSkywalker, "friends"); - throw new Error('Unimplemented API: dojo.data.api.Read.getValues'); - }, - - getAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // Returns an array with all the attributes that this item has. This - // method will always return an array; if the item has no attributes - // at all, getAttributes() will return an empty array: []. - // item: - // The item to access attributes on. - // exceptions: - // Throws an exception if *item* is not an item, or *attribute* is not a string - // example: - // | var array = store.getAttributes(kermit); - throw new Error('Unimplemented API: dojo.data.api.Read.getAttributes'); - }, - - hasAttribute: function( /* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute){ - // summary: - // Returns true if the given *item* has a value for the given *attribute*. - // item: - // The item to access attributes on. - // attribute: - // The attribute to access represented as a string. - // exceptions: - // Throws an exception if *item* is not an item, or *attribute* is not a string - // example: - // | var trueOrFalse = store.hasAttribute(kermit, "color"); - throw new Error('Unimplemented API: dojo.data.api.Read.hasAttribute'); - }, - - containsValue: function(/* dojo/data/api/Item */ item, - /* attribute-name-string */ attribute, - /* anything */ value){ - // summary: - // Returns true if the given *value* is one of the values that getValues() - // would return. - // item: - // The item to access values on. - // attribute: - // The attribute to access represented as a string. - // value: - // The value to match as a value for the attribute. - // exceptions: - // Throws an exception if *item* is not an item, or *attribute* is not a string - // example: - // | var trueOrFalse = store.containsValue(kermit, "color", "green"); - throw new Error('Unimplemented API: dojo.data.api.Read.containsValue'); - }, - - isItem: function(/* anything */ something){ - // summary: - // Returns true if *something* is an item and came from the store instance. - // Returns false if *something* is a literal, an item from another store instance, - // or is any object other than an item. - // something: - // Can be anything. - // example: - // | var yes = store.isItem(store.newItem()); - // | var no = store.isItem("green"); - throw new Error('Unimplemented API: dojo.data.api.Read.isItem'); - }, - - isItemLoaded: function(/* anything */ something){ - // summary: - // Returns false if isItem(something) is false. Returns false if - // if isItem(something) is true but the the item is not yet loaded - // in local memory (for example, if the item has not yet been read - // from the server). - // something: - // Can be anything. - // example: - // | var yes = store.isItemLoaded(store.newItem()); - // | var no = store.isItemLoaded("green"); - throw new Error('Unimplemented API: dojo.data.api.Read.isItemLoaded'); - }, - - loadItem: function(/* Object */ keywordArgs){ - // summary: - // Given an item, this method loads the item so that a subsequent call - // to store.isItemLoaded(item) will return true. If a call to - // isItemLoaded() returns true before loadItem() is even called, - // then loadItem() need not do any work at all and will not even invoke - // the callback handlers. So, before invoking this method, check that - // the item has not already been loaded. - // keywordArgs: - // An anonymous object that defines the item to load and callbacks to invoke when the - // load has completed. The format of the object is as follows: - // | { - // | item: object, - // | onItem: Function, - // | onError: Function, - // | scope: object - // | } - // - // ####The *item* parameter - // - // The item parameter is an object that represents the item in question that should be - // contained by the store. This attribute is required. - // - // ####The *onItem* parameter - // - // Function(item) - // The onItem parameter is the callback to invoke when the item has been loaded. It takes only one - // parameter, the fully loaded item. - // - // ####The *onError* parameter - // - // Function(error) - // The onError parameter is the callback to invoke when the item load encountered an error. It takes only one - // parameter, the error object - // - // ####The *scope* parameter - // - // If a scope object is provided, all of the callback functions (onItem, - // onError, etc) will be invoked in the context of the scope object. - // In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global(). - // For example, onItem.call(scope, item, request) vs. - // onItem.call(dojo.global(), item, request) - if(!this.isItemLoaded(keywordArgs.item)){ - throw new Error('Unimplemented API: dojo.data.api.Read.loadItem'); - } - }, - - fetch: function(/* Object */ keywordArgs){ - // summary: - // Given a query and set of defined options, such as a start and count of items to return, - // this method executes the query and makes the results available as data items. - // The format and expectations of stores is that they operate in a generally asynchronous - // manner, therefore callbacks are always used to return items located by the fetch parameters. - // description: - // A Request object will always be returned and is returned immediately. - // The basic request is nothing more than the keyword args passed to fetch and - // an additional function attached, abort(). The returned request object may then be used - // to cancel a fetch. All data items returns are passed through the callbacks defined in the - // fetch parameters and are not present on the 'request' object. - // - // This does not mean that custom stores can not add methods and properties to the request object - // returned, only that the API does not require it. For more info about the Request API, - // see dojo/data/api/Request - // keywordArgs: - // The keywordArgs parameter may either be an instance of - // conforming to dojo/data/api/Request or may be a simple anonymous object - // that may contain any of the following: - // | { - // | query: query-object or query-string, - // | queryOptions: object, - // | onBegin: Function, - // | onItem: Function, - // | onComplete: Function, - // | onError: Function, - // | scope: object, - // | start: int - // | count: int - // | sort: array - // | } - // All implementations should accept keywordArgs objects with any of - // the 9 standard properties: query, onBegin, onItem, onComplete, onError - // scope, sort, start, and count. Some implementations may accept additional - // properties in the keywordArgs object as valid parameters, such as - // {includeOutliers:true}. - // - // ####The *query* parameter - // - // The query may be optional in some data store implementations. - // The dojo/data/api/Read API does not specify the syntax or semantics - // of the query itself -- each different data store implementation - // may have its own notion of what a query should look like. - // However, as of dojo 0.9, 1.0, and 1.1, all the provided datastores in dojo.data - // and dojox.data support an object structure query, where the object is a set of - // name/value parameters such as { attrFoo: valueBar, attrFoo1: valueBar1}. Most of the - // dijit widgets, such as ComboBox assume this to be the case when working with a datastore - // when they dynamically update the query. Therefore, for maximum compatibility with dijit - // widgets the recommended query parameter is a key/value object. That does not mean that the - // the datastore may not take alternative query forms, such as a simple string, a Date, a number, - // or a mix of such. Ultimately, The dojo/data/api/Read API is agnostic about what the query - // format. - // - // Further note: In general for query objects that accept strings as attribute - // value matches, the store should also support basic filtering capability, such as * - // (match any character) and ? (match single character). An example query that is a query object - // would be like: { attrFoo: "value*"}. Which generally means match all items where they have - // an attribute named attrFoo, with a value that starts with 'value'. - // - // ####The *queryOptions* parameter - // - // The queryOptions parameter is an optional parameter used to specify options that may modify - // the query in some fashion, such as doing a case insensitive search, or doing a deep search - // where all items in a hierarchical representation of data are scanned instead of just the root - // items. It currently defines two options that all datastores should attempt to honor if possible: - // | { - // | ignoreCase: boolean, // Whether or not the query should match case sensitively or not. Default behaviour is false. - // | deep: boolean // Whether or not a fetch should do a deep search of items and all child - // | // items instead of just root-level items in a datastore. Default is false. - // | } - // - // ####The *onBegin* parameter. - // - // function(size, request); - // If an onBegin callback function is provided, the callback function - // will be called just once, before the first onItem callback is called. - // The onBegin callback function will be passed two arguments, the - // the total number of items identified and the Request object. If the total number is - // unknown, then size will be -1. Note that size is not necessarily the size of the - // collection of items returned from the query, as the request may have specified to return only a - // subset of the total set of items through the use of the start and count parameters. - // - // ####The *onItem* parameter. - // - // function(item, request); - // - // If an onItem callback function is provided, the callback function - // will be called as each item in the result is received. The callback - // function will be passed two arguments: the item itself, and the - // Request object. - // - // ####The *onComplete* parameter. - // - // function(items, request); - // - // If an onComplete callback function is provided, the callback function - // will be called just once, after the last onItem callback is called. - // Note that if the onItem callback is not present, then onComplete will be passed - // an array containing all items which matched the query and the request object. - // If the onItem callback is present, then onComplete is called as: - // onComplete(null, request). - // - // ####The *onError* parameter. - // - // function(errorData, request); - // - // If an onError callback function is provided, the callback function - // will be called if there is any sort of error while attempting to - // execute the query. - // The onError callback function will be passed two arguments: - // an Error object and the Request object. - // - // ####The *scope* parameter. - // - // If a scope object is provided, all of the callback functions (onItem, - // onComplete, onError, etc) will be invoked in the context of the scope - // object. In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global(). - // For example, onItem.call(scope, item, request) vs. - // onItem.call(dojo.global(), item, request) - // - // ####The *start* parameter. - // - // If a start parameter is specified, this is a indication to the datastore to - // only start returning items once the start number of items have been located and - // skipped. When this parameter is paired with 'count', the store should be able - // to page across queries with millions of hits by only returning subsets of the - // hits for each query - // - // ####The *count* parameter. - // - // If a count parameter is specified, this is a indication to the datastore to - // only return up to that many items. This allows a fetch call that may have - // millions of item matches to be paired down to something reasonable. - // - // ####The *sort* parameter. - // - // If a sort parameter is specified, this is a indication to the datastore to - // sort the items in some manner before returning the items. The array is an array of - // javascript objects that must conform to the following format to be applied to the - // fetching of items: - // | { - // | attribute: attribute || attribute-name-string, - // | descending: true|false; // Optional. Default is false. - // | } - // Note that when comparing attributes, if an item contains no value for the attribute - // (undefined), then it the default ascending sort logic should push it to the bottom - // of the list. In the descending order case, it such items should appear at the top of the list. - // returns: - // The fetch() method will return a javascript object conforming to the API - // defined in dojo/data/api/Request. In general, it will be the keywordArgs - // object returned with the required functions in Request.js attached. - // Its general purpose is to provide a convenient way for a caller to abort an - // ongoing fetch. - // - // The Request object may also have additional properties when it is returned - // such as request.store property, which is a pointer to the datastore object that - // fetch() is a method of. - // exceptions: - // Throws an exception if the query is not valid, or if the query - // is required but was not supplied. - // example: - // Fetch all books identified by the query and call 'showBooks' when complete - // | var request = store.fetch({query:"all books", onComplete: showBooks}); - // example: - // Fetch all items in the story and call 'showEverything' when complete. - // | var request = store.fetch(onComplete: showEverything); - // example: - // Fetch only 10 books that match the query 'all books', starting at the fifth book found during the search. - // This demonstrates how paging can be done for specific queries. - // | var request = store.fetch({query:"all books", start: 4, count: 10, onComplete: showBooks}); - // example: - // Fetch all items that match the query, calling 'callback' each time an item is located. - // | var request = store.fetch({query:"foo/bar", onItem:callback}); - // example: - // Fetch the first 100 books by author King, call showKing when up to 100 items have been located. - // | var request = store.fetch({query:{author:"King"}, start: 0, count:100, onComplete: showKing}); - // example: - // Locate the books written by Author King, sort it on title and publisher, then return the first 100 items from the sorted items. - // | var request = store.fetch({query:{author:"King"}, sort: [{ attribute: "title", descending: true}, {attribute: "publisher"}], ,start: 0, count:100, onComplete: 'showKing'}); - // example: - // Fetch the first 100 books by authors starting with the name King, then call showKing when up to 100 items have been located. - // | var request = store.fetch({query:{author:"King*"}, start: 0, count:100, onComplete: showKing}); - // example: - // Fetch the first 100 books by authors ending with 'ing', but only have one character before it (King, Bing, Ling, Sing, etc.), then call showBooks when up to 100 items have been located. - // | var request = store.fetch({query:{author:"?ing"}, start: 0, count:100, onComplete: showBooks}); - // example: - // Fetch the first 100 books by author King, where the name may appear as King, king, KING, kInG, and so on, then call showKing when up to 100 items have been located. - // | var request = store.fetch({query:{author:"King"}, queryOptions:(ignoreCase: true}, start: 0, count:100, onComplete: showKing}); - // example: - // Paging - // | var store = new LargeRdbmsStore({url:"jdbc:odbc:foobar"}); - // | var fetchArgs = { - // | query: {type:"employees", name:"Hillary *"}, // string matching - // | sort: [{attribute:"department", descending:true}], - // | start: 0, - // | count: 20, - // | scope: displayer, - // | onBegin: showThrobber, - // | onItem: displayItem, - // | onComplete: stopThrobber, - // | onError: handleFetchError, - // | }; - // | store.fetch(fetchArgs); - // | ... - // and then when the user presses the "Next Page" button... - // | fetchArgs.start += 20; - // | store.fetch(fetchArgs); // get the next 20 items - throw new Error('Unimplemented API: dojo.data.api.Read.fetch'); - }, - - getFeatures: function(){ - // summary: - // The getFeatures() method returns an simple keyword values object - // that specifies what interface features the datastore implements. - // A simple CsvStore may be read-only, and the only feature it - // implements will be the 'dojo/data/api/Read' interface, so the - // getFeatures() method will return an object like this one: - // {'dojo.data.api.Read': true}. - // A more sophisticated datastore might implement a variety of - // interface features, like 'dojo.data.api.Read', 'dojo/data/api/Write', - // 'dojo.data.api.Identity', and 'dojo/data/api/Attribution'. - return { - 'dojo.data.api.Read': true - }; - }, - - close: function(/*dojo/data/api/Request|Object?*/ request){ - // summary: - // The close() method is intended for instructing the store to 'close' out - // any information associated with a particular request. - // description: - // The close() method is intended for instructing the store to 'close' out - // any information associated with a particular request. In general, this API - // expects to receive as a parameter a request object returned from a fetch. - // It will then close out anything associated with that request, such as - // clearing any internal datastore caches and closing any 'open' connections. - // For some store implementations, this call may be a no-op. - // request: - // An instance of a request for the store to use to identify what to close out. - // If no request is passed, then the store should clear all internal caches (if any) - // and close out all 'open' connections. It does not render the store unusable from - // there on, it merely cleans out any current data and resets the store to initial - // state. - // example: - // | var request = store.fetch({onComplete: doSomething}); - // | ... - // | store.close(request); - throw new Error('Unimplemented API: dojo.data.api.Read.close'); - }, - - getLabel: function(/* dojo/data/api/Item */ item){ - // summary: - // Method to inspect the item and return a user-readable 'label' for the item - // that provides a general/adequate description of what the item is. - // description: - // Method to inspect the item and return a user-readable 'label' for the item - // that provides a general/adequate description of what the item is. In general - // most labels will be a specific attribute value or collection of the attribute - // values that combine to label the item in some manner. For example for an item - // that represents a person it may return the label as: "firstname lastlame" where - // the firstname and lastname are attributes on the item. If the store is unable - // to determine an adequate human readable label, it should return undefined. Users that wish - // to customize how a store instance labels items should replace the getLabel() function on - // their instance of the store, or extend the store and replace the function in - // the extension class. - // item: - // The item to return the label for. - // returns: - // A user-readable string representing the item or undefined if no user-readable label can - // be generated. - throw new Error('Unimplemented API: dojo.data.api.Read.getLabel'); - }, - - getLabelAttributes: function(/* dojo/data/api/Item */ item){ - // summary: - // Method to inspect the item and return an array of what attributes of the item were used - // to generate its label, if any. - // description: - // Method to inspect the item and return an array of what attributes of the item were used - // to generate its label, if any. This function is to assist UI developers in knowing what - // attributes can be ignored out of the attributes an item has when displaying it, in cases - // where the UI is using the label as an overall identifer should they wish to hide - // redundant information. - // item: - // The item to return the list of label attributes for. - // returns: - // An array of attribute names that were used to generate the label, or null if public attributes - // were not used to generate the label. - throw new Error('Unimplemented API: dojo.data.api.Read.getLabelAttributes'); - } -}); - -}); diff --git a/lib/dojo/data/api/Request.js.uncompressed.js b/lib/dojo/data/api/Request.js.uncompressed.js deleted file mode 100644 index eedaf824a..000000000 --- a/lib/dojo/data/api/Request.js.uncompressed.js +++ /dev/null @@ -1,33 +0,0 @@ -define("dojo/data/api/Request", ["../../_base/declare"], function(declare){ - -// module: -// dojo/data/api/Request - -return declare("dojo.data.api.Request", null, { - // summary: - // This class defines out the semantics of what a 'Request' object looks like - // when returned from a fetch() method. In general, a request object is - // nothing more than the original keywordArgs from fetch with an abort function - // attached to it to allow users to abort a particular request if they so choose. - // No other functions are required on a general Request object return. That does not - // inhibit other store implementations from adding extensions to it, of course. - // - // This is an abstract API that data provider implementations conform to. - // This file defines methods signatures and intentionally leaves all the - // methods unimplemented. - // - // For more details on fetch, see dojo/data/api/Read.fetch(). - - abort: function(){ - // summary: - // This function is a hook point for stores to provide as a way for - // a fetch to be halted mid-processing. - // description: - // This function is a hook point for stores to provide as a way for - // a fetch to be halted mid-processing. For more details on the fetch() api, - // please see dojo/data/api/Read.fetch(). - throw new Error('Unimplemented API: dojo.data.api.Request.abort'); - } -}); - -}); diff --git a/lib/dojo/data/api/Write.js.uncompressed.js b/lib/dojo/data/api/Write.js.uncompressed.js deleted file mode 100644 index 5e2721f3c..000000000 --- a/lib/dojo/data/api/Write.js.uncompressed.js +++ /dev/null @@ -1,206 +0,0 @@ -define("dojo/data/api/Write", ["../../_base/declare", "./Read"], function(declare, Read){ - -// module: -// dojo/data/api/Write - -return declare("dojo.data.api.Write", Read, { - // summary: - // This is an abstract API that data provider implementations conform to. - // This file defines function signatures and intentionally leaves all the - // functions unimplemented. - - getFeatures: function(){ - // summary: - // See dojo/data/api/Read.getFeatures() - return { - 'dojo.data.api.Read': true, - 'dojo.data.api.Write': true - }; - }, - - newItem: function(/* Object? */ keywordArgs, /*Object?*/ parentInfo){ - // summary: - // Returns a newly created item. Sets the attributes of the new - // item based on the *keywordArgs* provided. In general, the attribute - // names in the keywords become the attributes in the new item and as for - // the attribute values in keywordArgs, they become the values of the attributes - // in the new item. In addition, for stores that support hierarchical item - // creation, an optional second parameter is accepted that defines what item is the parent - // of the new item and what attribute of that item should the new item be assigned to. - // In general, this will assume that the attribute targeted is multi-valued and a new item - // is appended onto the list of values for that attribute. - // keywordArgs: - // A javascript object defining the initial content of the item as a set of JavaScript 'property name: value' pairs. - // parentInfo: - // An optional javascript object defining what item is the parent of this item (in a hierarchical store. Not all stores do hierarchical items), - // and what attribute of that parent to assign the new item to. If this is present, and the attribute specified - // is a multi-valued attribute, it will append this item into the array of values for that attribute. The structure - // of the object is as follows: - // | { - // | parent: someItem, - // | attribute: "attribute-name-string" - // | } - // exceptions: - // Throws an exception if *keywordArgs* is a string or a number or - // anything other than a simple anonymous object. - // Throws an exception if the item in parentInfo is not an item from the store - // or if the attribute isn't an attribute name string. - // example: - // | var kermit = store.newItem({name: "Kermit", color:[blue, green]}); - - throw new Error('Unimplemented API: dojo.data.api.Write.newItem'); - }, - - deleteItem: function(/* dojo/data/api/Item */ item){ - // summary: - // Deletes an item from the store. - // item: - // The item to delete. - // exceptions: - // Throws an exception if the argument *item* is not an item - // (if store.isItem(item) returns false). - // example: - // | var success = store.deleteItem(kermit); - throw new Error('Unimplemented API: dojo.data.api.Write.deleteItem'); - }, - - setValue: function( /* dojo/data/api/Item */ item, - /* string */ attribute, - /* almost anything */ value){ - // summary: - // Sets the value of an attribute on an item. - // Replaces any previous value or values. - // item: - // The item to modify. - // attribute: - // The attribute of the item to change represented as a string name. - // value: - // The value to assign to the item. - // exceptions: - // Throws an exception if *item* is not an item, or if *attribute* - // is neither an attribute object or a string. - // Throws an exception if *value* is undefined. - // example: - // | var success = store.set(kermit, "color", "green"); - throw new Error('Unimplemented API: dojo.data.api.Write.setValue'); - }, - - setValues: function(/* dojo/data/api/Item */ item, - /* string */ attribute, - /* array */ values){ - // summary: - // Adds each value in the *values* array as a value of the given - // attribute on the given item. - // Replaces any previous value or values. - // Calling store.setValues(x, y, []) (with *values* as an empty array) has - // the same effect as calling store.unsetAttribute(x, y). - // item: - // The item to modify. - // attribute: - // The attribute of the item to change represented as a string name. - // values: - // An array of values to assign to the attribute.. - // exceptions: - // Throws an exception if *values* is not an array, if *item* is not an - // item, or if *attribute* is neither an attribute object or a string. - // example: - // | var success = store.setValues(kermit, "color", ["green", "aqua"]); - // | success = store.setValues(kermit, "color", []); - // | if (success){assert(!store.hasAttribute(kermit, "color"));} - throw new Error('Unimplemented API: dojo.data.api.Write.setValues'); - }, - - unsetAttribute: function( /* dojo/data/api/Item */ item, - /* string */ attribute){ - // summary: - // Deletes all the values of an attribute on an item. - // item: - // The item to modify. - // attribute: - // The attribute of the item to unset represented as a string. - // exceptions: - // Throws an exception if *item* is not an item, or if *attribute* - // is neither an attribute object or a string. - // example: - // | var success = store.unsetAttribute(kermit, "color"); - // | if (success){assert(!store.hasAttribute(kermit, "color"));} - throw new Error('Unimplemented API: dojo.data.api.Write.clear'); - }, - - save: function(/* object */ keywordArgs){ - // summary: - // Saves to the server all the changes that have been made locally. - // The save operation may take some time and is generally performed - // in an asynchronous fashion. The outcome of the save action is - // is passed into the set of supported callbacks for the save. - // keywordArgs: - // | { - // | onComplete: function - // | onError: function - // | scope: object - // | } - // - // ####The *onComplete* parameter. - // - // function(); - // - // If an onComplete callback function is provided, the callback function - // will be called just once, after the save has completed. No parameters - // are generally passed to the onComplete. - // - // ####The *onError* parameter. - // - // function(errorData); - // - // If an onError callback function is provided, the callback function - // will be called if there is any sort of error while attempting to - // execute the save. The onError function will be based one parameter, the - // error. - // - // ####The *scope* parameter. - // - // If a scope object is provided, all of the callback function ( - // onComplete, onError, etc) will be invoked in the context of the scope - // object. In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global. - // For example, onComplete.call(scope) vs. - // onComplete.call(dojo.global) - // returns: - // Nothing. Since the saves are generally asynchronous, there is - // no need to return anything. All results are passed via callbacks. - // example: - // | store.save({onComplete: onSave}); - // | store.save({scope: fooObj, onComplete: onSave, onError: saveFailed}); - throw new Error('Unimplemented API: dojo.data.api.Write.save'); - }, - - revert: function(){ - // summary: - // Discards any unsaved changes. - // description: - // Discards any unsaved changes. - // example: - // | var success = store.revert(); - throw new Error('Unimplemented API: dojo.data.api.Write.revert'); - }, - - isDirty: function(/* item? */ item){ - // summary: - // Given an item, isDirty() returns true if the item has been modified - // since the last save(). If isDirty() is called with no *item* argument, - // then this function returns true if any item has been modified since - // the last save(). - // item: - // The item to check. - // exceptions: - // Throws an exception if isDirty() is passed an argument and the - // argument is not an item. - // example: - // | var trueOrFalse = store.isDirty(kermit); // true if kermit is dirty - // | var trueOrFalse = store.isDirty(); // true if any item is dirty - throw new Error('Unimplemented API: dojo.data.api.Write.isDirty'); - } -}); - -}); diff --git a/lib/dojo/data/util/filter.js.uncompressed.js b/lib/dojo/data/util/filter.js.uncompressed.js deleted file mode 100644 index ec3e99ff1..000000000 --- a/lib/dojo/data/util/filter.js.uncompressed.js +++ /dev/null @@ -1,77 +0,0 @@ -define("dojo/data/util/filter", ["../../_base/lang"], function(lang){ - // module: - // dojo/data/util/filter - // summary: - // TODOC - -var filter = {}; -lang.setObject("dojo.data.util.filter", filter); - -filter.patternToRegExp = function(/*String*/pattern, /*boolean?*/ ignoreCase){ - // summary: - // Helper function to convert a simple pattern to a regular expression for matching. - // description: - // Returns a regular expression object that conforms to the defined conversion rules. - // For example: - // - // - ca* -> /^ca.*$/ - // - *ca* -> /^.*ca.*$/ - // - *c\*a* -> /^.*c\*a.*$/ - // - *c\*a?* -> /^.*c\*a..*$/ - // - // and so on. - // pattern: string - // A simple matching pattern to convert that follows basic rules: - // - // - * Means match anything, so ca* means match anything starting with ca - // - ? Means match single character. So, b?b will match to bob and bab, and so on. - // - \ is an escape character. So for example, \* means do not treat * as a match, but literal character *. - // - // To use a \ as a character in the string, it must be escaped. So in the pattern it should be - // represented by \\ to be treated as an ordinary \ character instead of an escape. - // ignoreCase: - // An optional flag to indicate if the pattern matching should be treated as case-sensitive or not when comparing - // By default, it is assumed case sensitive. - - var rxp = "^"; - var c = null; - for(var i = 0; i < pattern.length; i++){ - c = pattern.charAt(i); - switch(c){ - case '\\': - rxp += c; - i++; - rxp += pattern.charAt(i); - break; - case '*': - rxp += ".*"; break; - case '?': - rxp += "."; break; - case '$': - case '^': - case '/': - case '+': - case '.': - case '|': - case '(': - case ')': - case '{': - case '}': - case '[': - case ']': - rxp += "\\"; //fallthrough - default: - rxp += c; - } - } - rxp += "$"; - if(ignoreCase){ - return new RegExp(rxp,"mi"); //RegExp - }else{ - return new RegExp(rxp,"m"); //RegExp - } - -}; - -return filter; -}); diff --git a/lib/dojo/data/util/simpleFetch.js.uncompressed.js b/lib/dojo/data/util/simpleFetch.js.uncompressed.js deleted file mode 100644 index 94eb9e7a5..000000000 --- a/lib/dojo/data/util/simpleFetch.js.uncompressed.js +++ /dev/null @@ -1,240 +0,0 @@ -define("dojo/data/util/simpleFetch", ["../../_base/lang", "../../_base/kernel", "./sorter"], - function(lang, kernel, sorter){ - // module: - // dojo/data/util/simpleFetch - // summary: - // The simpleFetch mixin is designed to serve as a set of function(s) that can - // be mixed into other datastore implementations to accelerate their development. - -var simpleFetch = {}; -lang.setObject("dojo.data.util.simpleFetch", simpleFetch); - -simpleFetch.errorHandler = function(/*Object*/ errorData, /*Object*/ requestObject){ - // summary: - // The error handler when there is an error fetching items. This function should not be called - // directly and is used by simpleFetch.fetch(). - if(requestObject.onError){ - var scope = requestObject.scope || kernel.global; - requestObject.onError.call(scope, errorData, requestObject); - } -}; - -simpleFetch.fetchHandler = function(/*Array*/ items, /*Object*/ requestObject){ - // summary: - // The handler when items are sucessfully fetched. This function should not be called directly - // and is used by simpleFetch.fetch(). - var oldAbortFunction = requestObject.abort || null, - aborted = false, - - startIndex = requestObject.start?requestObject.start: 0, - endIndex = (requestObject.count && (requestObject.count !== Infinity))?(startIndex + requestObject.count):items.length; - - requestObject.abort = function(){ - aborted = true; - if(oldAbortFunction){ - oldAbortFunction.call(requestObject); - } - }; - - var scope = requestObject.scope || kernel.global; - if(!requestObject.store){ - requestObject.store = this; - } - if(requestObject.onBegin){ - requestObject.onBegin.call(scope, items.length, requestObject); - } - if(requestObject.sort){ - items.sort(sorter.createSortFunction(requestObject.sort, this)); - } - if(requestObject.onItem){ - for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){ - var item = items[i]; - if(!aborted){ - requestObject.onItem.call(scope, item, requestObject); - } - } - } - if(requestObject.onComplete && !aborted){ - var subset = null; - if(!requestObject.onItem){ - subset = items.slice(startIndex, endIndex); - } - requestObject.onComplete.call(scope, subset, requestObject); - } -}; - -simpleFetch.fetch = function(/* Object? */ request){ - // summary: - // The simpleFetch mixin is designed to serve as a set of function(s) that can - // be mixed into other datastore implementations to accelerate their development. - // description: - // The simpleFetch mixin should work well for any datastore that can respond to a _fetchItems() - // call by returning an array of all the found items that matched the query. The simpleFetch mixin - // is not designed to work for datastores that respond to a fetch() call by incrementally - // loading items, or sequentially loading partial batches of the result - // set. For datastores that mixin simpleFetch, simpleFetch - // implements a fetch method that automatically handles eight of the fetch() - // arguments -- onBegin, onItem, onComplete, onError, start, count, sort and scope - // The class mixing in simpleFetch should not implement fetch(), - // but should instead implement a _fetchItems() method. The _fetchItems() - // method takes three arguments, the keywordArgs object that was passed - // to fetch(), a callback function to be called when the result array is - // available, and an error callback to be called if something goes wrong. - // The _fetchItems() method should ignore any keywordArgs parameters for - // start, count, onBegin, onItem, onComplete, onError, sort, and scope. - // The _fetchItems() method needs to correctly handle any other keywordArgs - // parameters, including the query parameter and any optional parameters - // (such as includeChildren). The _fetchItems() method should create an array of - // result items and pass it to the fetchHandler along with the original request object -- - // or, the _fetchItems() method may, if it wants to, create an new request object - // with other specifics about the request that are specific to the datastore and pass - // that as the request object to the handler. - // - // For more information on this specific function, see dojo/data/api/Read.fetch() - // - // request: - // The keywordArgs parameter may either be an instance of - // conforming to dojo/data/api/Request or may be a simple anonymous object - // that may contain any of the following: - // | { - // | query: query-object or query-string, - // | queryOptions: object, - // | onBegin: Function, - // | onItem: Function, - // | onComplete: Function, - // | onError: Function, - // | scope: object, - // | start: int - // | count: int - // | sort: array - // | } - // All implementations should accept keywordArgs objects with any of - // the 9 standard properties: query, onBegin, onItem, onComplete, onError - // scope, sort, start, and count. Some implementations may accept additional - // properties in the keywordArgs object as valid parameters, such as - // {includeOutliers:true}. - // - // ####The *query* parameter - // - // The query may be optional in some data store implementations. - // The dojo/data/api/Read API does not specify the syntax or semantics - // of the query itself -- each different data store implementation - // may have its own notion of what a query should look like. - // However, as of dojo 0.9, 1.0, and 1.1, all the provided datastores in dojo.data - // and dojox.data support an object structure query, where the object is a set of - // name/value parameters such as { attrFoo: valueBar, attrFoo1: valueBar1}. Most of the - // dijit widgets, such as ComboBox assume this to be the case when working with a datastore - // when they dynamically update the query. Therefore, for maximum compatibility with dijit - // widgets the recommended query parameter is a key/value object. That does not mean that the - // the datastore may not take alternative query forms, such as a simple string, a Date, a number, - // or a mix of such. Ultimately, The dojo/data/api/Read API is agnostic about what the query - // format. - // - // Further note: In general for query objects that accept strings as attribute - // value matches, the store should also support basic filtering capability, such as * - // (match any character) and ? (match single character). An example query that is a query object - // would be like: { attrFoo: "value*"}. Which generally means match all items where they have - // an attribute named attrFoo, with a value that starts with 'value'. - // - // ####The *queryOptions* parameter - // - // The queryOptions parameter is an optional parameter used to specify options that may modify - // the query in some fashion, such as doing a case insensitive search, or doing a deep search - // where all items in a hierarchical representation of data are scanned instead of just the root - // items. It currently defines two options that all datastores should attempt to honor if possible: - // | { - // | ignoreCase: boolean, // Whether or not the query should match case sensitively or not. Default behaviour is false. - // | deep: boolean // Whether or not a fetch should do a deep search of items and all child - // | // items instead of just root-level items in a datastore. Default is false. - // | } - // - // ####The *onBegin* parameter. - // - // function(size, request); - // If an onBegin callback function is provided, the callback function - // will be called just once, before the first onItem callback is called. - // The onBegin callback function will be passed two arguments, the - // the total number of items identified and the Request object. If the total number is - // unknown, then size will be -1. Note that size is not necessarily the size of the - // collection of items returned from the query, as the request may have specified to return only a - // subset of the total set of items through the use of the start and count parameters. - // - // ####The *onItem* parameter. - // - // function(item, request); - // - // If an onItem callback function is provided, the callback function - // will be called as each item in the result is received. The callback - // function will be passed two arguments: the item itself, and the - // Request object. - // - // ####The *onComplete* parameter. - // - // function(items, request); - // - // If an onComplete callback function is provided, the callback function - // will be called just once, after the last onItem callback is called. - // Note that if the onItem callback is not present, then onComplete will be passed - // an array containing all items which matched the query and the request object. - // If the onItem callback is present, then onComplete is called as: - // onComplete(null, request). - // - // ####The *onError* parameter. - // - // function(errorData, request); - // - // If an onError callback function is provided, the callback function - // will be called if there is any sort of error while attempting to - // execute the query. - // The onError callback function will be passed two arguments: - // an Error object and the Request object. - // - // ####The *scope* parameter. - // - // If a scope object is provided, all of the callback functions (onItem, - // onComplete, onError, etc) will be invoked in the context of the scope - // object. In the body of the callback function, the value of the "this" - // keyword will be the scope object. If no scope object is provided, - // the callback functions will be called in the context of dojo.global(). - // For example, onItem.call(scope, item, request) vs. - // onItem.call(dojo.global(), item, request) - // - // ####The *start* parameter. - // - // If a start parameter is specified, this is a indication to the datastore to - // only start returning items once the start number of items have been located and - // skipped. When this parameter is paired with 'count', the store should be able - // to page across queries with millions of hits by only returning subsets of the - // hits for each query - // - // ####The *count* parameter. - // - // If a count parameter is specified, this is a indication to the datastore to - // only return up to that many items. This allows a fetch call that may have - // millions of item matches to be paired down to something reasonable. - // - // ####The *sort* parameter. - // - // If a sort parameter is specified, this is a indication to the datastore to - // sort the items in some manner before returning the items. The array is an array of - // javascript objects that must conform to the following format to be applied to the - // fetching of items: - // | { - // | attribute: attribute || attribute-name-string, - // | descending: true|false; // Optional. Default is false. - // | } - // Note that when comparing attributes, if an item contains no value for the attribute - // (undefined), then it the default ascending sort logic should push it to the bottom - // of the list. In the descending order case, it such items should appear at the top of the list. - - request = request || {}; - if(!request.store){ - request.store = this; - } - - this._fetchItems(request, lang.hitch(this, "fetchHandler"), lang.hitch(this, "errorHandler")); - return request; // Object -}; - -return simpleFetch; -}); diff --git a/lib/dojo/data/util/sorter.js.uncompressed.js b/lib/dojo/data/util/sorter.js.uncompressed.js deleted file mode 100644 index 268fa5847..000000000 --- a/lib/dojo/data/util/sorter.js.uncompressed.js +++ /dev/null @@ -1,99 +0,0 @@ -define("dojo/data/util/sorter", ["../../_base/lang"], function(lang){ - // module: - // dojo/data/util/sorter - // summary: - // TODOC - -var sorter = {}; -lang.setObject("dojo.data.util.sorter", sorter); - -sorter.basicComparator = function( /*anything*/ a, - /*anything*/ b){ - // summary: - // Basic comparison function that compares if an item is greater or less than another item - // description: - // returns 1 if a > b, -1 if a < b, 0 if equal. - // 'null' values (null, undefined) are treated as larger values so that they're pushed to the end of the list. - // And compared to each other, null is equivalent to undefined. - - //null is a problematic compare, so if null, we set to undefined. - //Makes the check logic simple, compact, and consistent - //And (null == undefined) === true, so the check later against null - //works for undefined and is less bytes. - var r = -1; - if(a === null){ - a = undefined; - } - if(b === null){ - b = undefined; - } - if(a == b){ - r = 0; - }else if(a > b || a == null){ - r = 1; - } - return r; //int {-1,0,1} -}; - -sorter.createSortFunction = function( /* attributes[] */sortSpec, /*dojo/data/api/Read*/ store){ - // summary: - // Helper function to generate the sorting function based off the list of sort attributes. - // description: - // The sort function creation will look for a property on the store called 'comparatorMap'. If it exists - // it will look in the mapping for comparisons function for the attributes. If one is found, it will - // use it instead of the basic comparator, which is typically used for strings, ints, booleans, and dates. - // Returns the sorting function for this particular list of attributes and sorting directions. - // sortSpec: - // A JS object that array that defines out what attribute names to sort on and whether it should be descenting or asending. - // The objects should be formatted as follows: - // | { - // | attribute: "attributeName-string" || attribute, - // | descending: true|false; // Default is false. - // | } - // store: - // The datastore object to look up item values from. - - var sortFunctions=[]; - - function createSortFunction(attr, dir, comp, s){ - //Passing in comp and s (comparator and store), makes this - //function much faster. - return function(itemA, itemB){ - var a = s.getValue(itemA, attr); - var b = s.getValue(itemB, attr); - return dir * comp(a,b); //int - }; - } - var sortAttribute; - var map = store.comparatorMap; - var bc = sorter.basicComparator; - for(var i = 0; i < sortSpec.length; i++){ - sortAttribute = sortSpec[i]; - var attr = sortAttribute.attribute; - if(attr){ - var dir = (sortAttribute.descending) ? -1 : 1; - var comp = bc; - if(map){ - if(typeof attr !== "string" && ("toString" in attr)){ - attr = attr.toString(); - } - comp = map[attr] || bc; - } - sortFunctions.push(createSortFunction(attr, - dir, comp, store)); - } - } - return function(rowA, rowB){ - var i=0; - while(i < sortFunctions.length){ - var ret = sortFunctions[i++](rowA, rowB); - if(ret !== 0){ - return ret;//int - } - } - return 0; //int - }; // Function -}; - -return sorter; -}); diff --git a/lib/dojo/date.js.uncompressed.js b/lib/dojo/date.js.uncompressed.js deleted file mode 100644 index fb1352922..000000000 --- a/lib/dojo/date.js.uncompressed.js +++ /dev/null @@ -1,346 +0,0 @@ -define("dojo/date", ["./has", "./_base/lang"], function(has, lang){ -// module: -// dojo/date - -var date = { - // summary: - // Date manipulation utilities -}; - -date.getDaysInMonth = function(/*Date*/dateObject){ - // summary: - // Returns the number of days in the month used by dateObject - var month = dateObject.getMonth(); - var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - if(month == 1 && date.isLeapYear(dateObject)){ return 29; } // Number - return days[month]; // Number -}; - -date.isLeapYear = function(/*Date*/dateObject){ - // summary: - // Determines if the year of the dateObject is a leap year - // description: - // Leap years are years with an additional day YYYY-02-29, where the - // year number is a multiple of four with the following exception: If - // a year is a multiple of 100, then it is only a leap year if it is - // also a multiple of 400. For example, 1900 was not a leap year, but - // 2000 is one. - - var year = dateObject.getFullYear(); - return !(year%400) || (!(year%4) && !!(year%100)); // Boolean -}; - -// FIXME: This is not localized -date.getTimezoneName = function(/*Date*/dateObject){ - // summary: - // Get the user's time zone as provided by the browser - // dateObject: - // Needed because the timezone may vary with time (daylight savings) - // description: - // Try to get time zone info from toString or toLocaleString method of - // the Date object -- UTC offset is not a time zone. See - // http://www.twinsun.com/tz/tz-link.htm Note: results may be - // inconsistent across browsers. - - var str = dateObject.toString(); // Start looking in toString - var tz = ''; // The result -- return empty string if nothing found - var match; - - // First look for something in parentheses -- fast lookup, no regex - var pos = str.indexOf('('); - if(pos > -1){ - tz = str.substring(++pos, str.indexOf(')')); - }else{ - // If at first you don't succeed ... - // If IE knows about the TZ, it appears before the year - // Capital letters or slash before a 4-digit year - // at the end of string - var pat = /([A-Z\/]+) \d{4}$/; - if((match = str.match(pat))){ - tz = match[1]; - }else{ - // Some browsers (e.g. Safari) glue the TZ on the end - // of toLocaleString instead of putting it in toString - str = dateObject.toLocaleString(); - // Capital letters or slash -- end of string, - // after space - pat = / ([A-Z\/]+)$/; - if((match = str.match(pat))){ - tz = match[1]; - } - } - } - - // Make sure it doesn't somehow end up return AM or PM - return (tz == 'AM' || tz == 'PM') ? '' : tz; // String -}; - -// Utility methods to do arithmetic calculations with Dates - -date.compare = function(/*Date*/date1, /*Date?*/date2, /*String?*/portion){ - // summary: - // Compare two date objects by date, time, or both. - // description: - // Returns 0 if equal, positive if a > b, else negative. - // date1: - // Date object - // date2: - // Date object. If not specified, the current Date is used. - // portion: - // A string indicating the "date" or "time" portion of a Date object. - // Compares both "date" and "time" by default. One of the following: - // "date", "time", "datetime" - - // Extra step required in copy for IE - see #3112 - date1 = new Date(+date1); - date2 = new Date(+(date2 || new Date())); - - if(portion == "date"){ - // Ignore times and compare dates. - date1.setHours(0, 0, 0, 0); - date2.setHours(0, 0, 0, 0); - }else if(portion == "time"){ - // Ignore dates and compare times. - date1.setFullYear(0, 0, 0); - date2.setFullYear(0, 0, 0); - } - - if(date1 > date2){ return 1; } // int - if(date1 < date2){ return -1; } // int - return 0; // int -}; - -date.add = function(/*Date*/date, /*String*/interval, /*int*/amount){ - // summary: - // Add to a Date in intervals of different size, from milliseconds to years - // date: Date - // Date object to start with - // interval: - // A string representing the interval. One of the following: - // "year", "month", "day", "hour", "minute", "second", - // "millisecond", "quarter", "week", "weekday" - // amount: - // How much to add to the date. - - var sum = new Date(+date); // convert to Number before copying to accomodate IE (#3112) - var fixOvershoot = false; - var property = "Date"; - - switch(interval){ - case "day": - break; - case "weekday": - //i18n FIXME: assumes Saturday/Sunday weekend, but this is not always true. see dojo/cldr/supplemental - - // Divide the increment time span into weekspans plus leftover days - // e.g., 8 days is one 5-day weekspan / and two leftover days - // Can't have zero leftover days, so numbers divisible by 5 get - // a days value of 5, and the remaining days make up the number of weeks - var days, weeks; - var mod = amount % 5; - if(!mod){ - days = (amount > 0) ? 5 : -5; - weeks = (amount > 0) ? ((amount-5)/5) : ((amount+5)/5); - }else{ - days = mod; - weeks = parseInt(amount/5); - } - // Get weekday value for orig date param - var strt = date.getDay(); - // Orig date is Sat / positive incrementer - // Jump over Sun - var adj = 0; - if(strt == 6 && amount > 0){ - adj = 1; - }else if(strt == 0 && amount < 0){ - // Orig date is Sun / negative incrementer - // Jump back over Sat - adj = -1; - } - // Get weekday val for the new date - var trgt = strt + days; - // New date is on Sat or Sun - if(trgt == 0 || trgt == 6){ - adj = (amount > 0) ? 2 : -2; - } - // Increment by number of weeks plus leftover days plus - // weekend adjustments - amount = (7 * weeks) + days + adj; - break; - case "year": - property = "FullYear"; - // Keep increment/decrement from 2/29 out of March - fixOvershoot = true; - break; - case "week": - amount *= 7; - break; - case "quarter": - // Naive quarter is just three months - amount *= 3; - // fallthrough... - case "month": - // Reset to last day of month if you overshoot - fixOvershoot = true; - property = "Month"; - break; -// case "hour": -// case "minute": -// case "second": -// case "millisecond": - default: - property = "UTC"+interval.charAt(0).toUpperCase() + interval.substring(1) + "s"; - } - - if(property){ - sum["set"+property](sum["get"+property]()+amount); - } - - if(fixOvershoot && (sum.getDate() < date.getDate())){ - sum.setDate(0); - } - - return sum; // Date -}; - -date.difference = function(/*Date*/date1, /*Date?*/date2, /*String?*/interval){ - // summary: - // Get the difference in a specific unit of time (e.g., number of - // months, weeks, days, etc.) between two dates, rounded to the - // nearest integer. - // date1: - // Date object - // date2: - // Date object. If not specified, the current Date is used. - // interval: - // A string representing the interval. One of the following: - // "year", "month", "day", "hour", "minute", "second", - // "millisecond", "quarter", "week", "weekday" - // - // Defaults to "day". - - date2 = date2 || new Date(); - interval = interval || "day"; - var yearDiff = date2.getFullYear() - date1.getFullYear(); - var delta = 1; // Integer return value - - switch(interval){ - case "quarter": - var m1 = date1.getMonth(); - var m2 = date2.getMonth(); - // Figure out which quarter the months are in - var q1 = Math.floor(m1/3) + 1; - var q2 = Math.floor(m2/3) + 1; - // Add quarters for any year difference between the dates - q2 += (yearDiff * 4); - delta = q2 - q1; - break; - case "weekday": - var days = Math.round(date.difference(date1, date2, "day")); - var weeks = parseInt(date.difference(date1, date2, "week")); - var mod = days % 7; - - // Even number of weeks - if(mod == 0){ - days = weeks*5; - }else{ - // Weeks plus spare change (< 7 days) - var adj = 0; - var aDay = date1.getDay(); - var bDay = date2.getDay(); - - weeks = parseInt(days/7); - mod = days % 7; - // Mark the date advanced by the number of - // round weeks (may be zero) - var dtMark = new Date(date1); - dtMark.setDate(dtMark.getDate()+(weeks*7)); - var dayMark = dtMark.getDay(); - - // Spare change days -- 6 or less - if(days > 0){ - switch(true){ - // Range starts on Sat - case aDay == 6: - adj = -1; - break; - // Range starts on Sun - case aDay == 0: - adj = 0; - break; - // Range ends on Sat - case bDay == 6: - adj = -1; - break; - // Range ends on Sun - case bDay == 0: - adj = -2; - break; - // Range contains weekend - case (dayMark + mod) > 5: - adj = -2; - } - }else if(days < 0){ - switch(true){ - // Range starts on Sat - case aDay == 6: - adj = 0; - break; - // Range starts on Sun - case aDay == 0: - adj = 1; - break; - // Range ends on Sat - case bDay == 6: - adj = 2; - break; - // Range ends on Sun - case bDay == 0: - adj = 1; - break; - // Range contains weekend - case (dayMark + mod) < 0: - adj = 2; - } - } - days += adj; - days -= (weeks*2); - } - delta = days; - break; - case "year": - delta = yearDiff; - break; - case "month": - delta = (date2.getMonth() - date1.getMonth()) + (yearDiff * 12); - break; - case "week": - // Truncate instead of rounding - // Don't use Math.floor -- value may be negative - delta = parseInt(date.difference(date1, date2, "day")/7); - break; - case "day": - delta /= 24; - // fallthrough - case "hour": - delta /= 60; - // fallthrough - case "minute": - delta /= 60; - // fallthrough - case "second": - delta /= 1000; - // fallthrough - case "millisecond": - delta *= date2.getTime() - date1.getTime(); - } - - // Round for fractional values and DST leaps - return Math.round(delta); // Number (integer) -}; - -// Don't use setObject() because it may overwrite dojo/date/stamp (if that has already been loaded) - 1 && lang.mixin(lang.getObject("dojo.date", true), date); - -return date; -}); diff --git a/lib/dojo/date/locale.js.uncompressed.js b/lib/dojo/date/locale.js.uncompressed.js deleted file mode 100644 index 904b674ab..000000000 --- a/lib/dojo/date/locale.js.uncompressed.js +++ /dev/null @@ -1,694 +0,0 @@ -define("dojo/date/locale", [ - "../_base/lang", - "../_base/array", - "../date", - /*===== "../_base/declare", =====*/ - "../cldr/supplemental", - "../i18n", - "../regexp", - "../string", - "../i18n!../cldr/nls/gregorian", - "module" -], function(lang, array, date, /*===== declare, =====*/ supplemental, i18n, regexp, string, gregorian, module){ - -// module: -// dojo/date/locale - -var exports = { - // summary: - // This modules defines dojo/date/locale, localization methods for Date. -}; -lang.setObject(module.id.replace(/\//g, "."), exports); - -// Localization methods for Date. Honor local customs using locale-dependent dojo.cldr data. - -// Load the bundles containing localization information for -// names and formats - -//NOTE: Everything in this module assumes Gregorian calendars. -// Other calendars will be implemented in separate modules. - - // Format a pattern without literals - function formatPattern(dateObject, bundle, options, pattern){ - return pattern.replace(/([a-z])\1*/ig, function(match){ - var s, pad, - c = match.charAt(0), - l = match.length, - widthList = ["abbr", "wide", "narrow"]; - switch(c){ - case 'G': - s = bundle[(l < 4) ? "eraAbbr" : "eraNames"][dateObject.getFullYear() < 0 ? 0 : 1]; - break; - case 'y': - s = dateObject.getFullYear(); - switch(l){ - case 1: - break; - case 2: - if(!options.fullYear){ - s = String(s); s = s.substr(s.length - 2); - break; - } - // fallthrough - default: - pad = true; - } - break; - case 'Q': - case 'q': - s = Math.ceil((dateObject.getMonth()+1)/3); -// switch(l){ -// case 1: case 2: - pad = true; -// break; -// case 3: case 4: // unimplemented -// } - break; - case 'M': - case 'L': - var m = dateObject.getMonth(); - if(l<3){ - s = m+1; pad = true; - }else{ - var propM = [ - "months", - c == 'L' ? "standAlone" : "format", - widthList[l-3] - ].join("-"); - s = bundle[propM][m]; - } - break; - case 'w': - var firstDay = 0; - s = exports._getWeekOfYear(dateObject, firstDay); pad = true; - break; - case 'd': - s = dateObject.getDate(); pad = true; - break; - case 'D': - s = exports._getDayOfYear(dateObject); pad = true; - break; - case 'e': - case 'c': - var d = dateObject.getDay(); - if(l<2){ - s = (d - supplemental.getFirstDayOfWeek(options.locale) + 8) % 7 - break; - } - // fallthrough - case 'E': - d = dateObject.getDay(); - if(l<3){ - s = d+1; pad = true; - }else{ - var propD = [ - "days", - c == 'c' ? "standAlone" : "format", - widthList[l-3] - ].join("-"); - s = bundle[propD][d]; - } - break; - case 'a': - var timePeriod = dateObject.getHours() < 12 ? 'am' : 'pm'; - s = options[timePeriod] || bundle['dayPeriods-format-wide-' + timePeriod]; - break; - case 'h': - case 'H': - case 'K': - case 'k': - var h = dateObject.getHours(); - // strange choices in the date format make it impossible to write this succinctly - switch (c){ - case 'h': // 1-12 - s = (h % 12) || 12; - break; - case 'H': // 0-23 - s = h; - break; - case 'K': // 0-11 - s = (h % 12); - break; - case 'k': // 1-24 - s = h || 24; - break; - } - pad = true; - break; - case 'm': - s = dateObject.getMinutes(); pad = true; - break; - case 's': - s = dateObject.getSeconds(); pad = true; - break; - case 'S': - s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l-3)); pad = true; - break; - case 'v': // FIXME: don't know what this is. seems to be same as z? - case 'z': - // We only have one timezone to offer; the one from the browser - s = exports._getZone(dateObject, true, options); - if(s){break;} - l=4; - // fallthrough... use GMT if tz not available - case 'Z': - var offset = exports._getZone(dateObject, false, options); - var tz = [ - (offset<=0 ? "+" : "-"), - string.pad(Math.floor(Math.abs(offset)/60), 2), - string.pad(Math.abs(offset)% 60, 2) - ]; - if(l==4){ - tz.splice(0, 0, "GMT"); - tz.splice(3, 0, ":"); - } - s = tz.join(""); - break; -// case 'Y': case 'u': case 'W': case 'F': case 'g': case 'A': -// console.log(match+" modifier unimplemented"); - default: - throw new Error("dojo.date.locale.format: invalid pattern char: "+pattern); - } - if(pad){ s = string.pad(s, l); } - return s; - }); - } - -/*===== -var __FormatOptions = exports.__FormatOptions = declare(null, { - // selector: String - // choice of 'time','date' (default: date and time) - // formatLength: String - // choice of long, short, medium or full (plus any custom additions). Defaults to 'short' - // datePattern:String - // override pattern with this string - // timePattern:String - // override pattern with this string - // am: String - // override strings for am in times - // pm: String - // override strings for pm in times - // locale: String - // override the locale used to determine formatting rules - // fullYear: Boolean - // (format only) use 4 digit years whenever 2 digit years are called for - // strict: Boolean - // (parse only) strict parsing, off by default -}); -=====*/ - -exports._getZone = function(/*Date*/ dateObject, /*boolean*/ getName, /*__FormatOptions?*/ options){ - // summary: - // Returns the zone (or offset) for the given date and options. This - // is broken out into a separate function so that it can be overridden - // by timezone-aware code. - // - // dateObject: - // the date and/or time being formatted. - // - // getName: - // Whether to return the timezone string (if true), or the offset (if false) - // - // options: - // The options being used for formatting - if(getName){ - return date.getTimezoneName(dateObject); - }else{ - return dateObject.getTimezoneOffset(); - } -}; - - -exports.format = function(/*Date*/ dateObject, /*__FormatOptions?*/ options){ - // summary: - // Format a Date object as a String, using locale-specific settings. - // - // description: - // Create a string from a Date object using a known localized pattern. - // By default, this method formats both date and time from dateObject. - // Formatting patterns are chosen appropriate to the locale. Different - // formatting lengths may be chosen, with "full" used by default. - // Custom patterns may be used or registered with translations using - // the dojo/date/locale.addCustomFormats() method. - // Formatting patterns are implemented using [the syntax described at - // unicode.org](http://www.unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns) - // - // dateObject: - // the date and/or time to be formatted. If a time only is formatted, - // the values in the year, month, and day fields are irrelevant. The - // opposite is true when formatting only dates. - - options = options || {}; - - var locale = i18n.normalizeLocale(options.locale), - formatLength = options.formatLength || 'short', - bundle = exports._getGregorianBundle(locale), - str = [], - sauce = lang.hitch(this, formatPattern, dateObject, bundle, options); - if(options.selector == "year"){ - return _processPattern(bundle["dateFormatItem-yyyy"] || "yyyy", sauce); - } - var pattern; - if(options.selector != "date"){ - pattern = options.timePattern || bundle["timeFormat-"+formatLength]; - if(pattern){str.push(_processPattern(pattern, sauce));} - } - if(options.selector != "time"){ - pattern = options.datePattern || bundle["dateFormat-"+formatLength]; - if(pattern){str.push(_processPattern(pattern, sauce));} - } - - return str.length == 1 ? str[0] : bundle["dateTimeFormat-"+formatLength].replace(/\'/g,'').replace(/\{(\d+)\}/g, - function(match, key){ return str[key]; }); // String -}; - -exports.regexp = function(/*__FormatOptions?*/ options){ - // summary: - // Builds the regular needed to parse a localized date - - return exports._parseInfo(options).regexp; // String -}; - -exports._parseInfo = function(/*__FormatOptions?*/ options){ - options = options || {}; - var locale = i18n.normalizeLocale(options.locale), - bundle = exports._getGregorianBundle(locale), - formatLength = options.formatLength || 'short', - datePattern = options.datePattern || bundle["dateFormat-" + formatLength], - timePattern = options.timePattern || bundle["timeFormat-" + formatLength], - pattern; - if(options.selector == 'date'){ - pattern = datePattern; - }else if(options.selector == 'time'){ - pattern = timePattern; - }else{ - pattern = bundle["dateTimeFormat-"+formatLength].replace(/\{(\d+)\}/g, - function(match, key){ return [timePattern, datePattern][key]; }); - } - - var tokens = [], - re = _processPattern(pattern, lang.hitch(this, _buildDateTimeRE, tokens, bundle, options)); - return {regexp: re, tokens: tokens, bundle: bundle}; -}; - -exports.parse = function(/*String*/ value, /*__FormatOptions?*/ options){ - // summary: - // Convert a properly formatted string to a primitive Date object, - // using locale-specific settings. - // - // description: - // Create a Date object from a string using a known localized pattern. - // By default, this method parses looking for both date and time in the string. - // Formatting patterns are chosen appropriate to the locale. Different - // formatting lengths may be chosen, with "full" used by default. - // Custom patterns may be used or registered with translations using - // the dojo/date/locale.addCustomFormats() method. - // - // Formatting patterns are implemented using [the syntax described at - // unicode.org](http://www.unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns) - // When two digit years are used, a century is chosen according to a sliding - // window of 80 years before and 20 years after present year, for both `yy` and `yyyy` patterns. - // year < 100CE requires strict mode. - // - // value: - // A string representation of a date - - // remove non-printing bidi control chars from input and pattern - var controlChars = /[\u200E\u200F\u202A\u202E]/g, - info = exports._parseInfo(options), - tokens = info.tokens, bundle = info.bundle, - re = new RegExp("^" + info.regexp.replace(controlChars, "") + "$", - info.strict ? "" : "i"), - match = re.exec(value && value.replace(controlChars, "")); - - if(!match){ return null; } // null - - var widthList = ['abbr', 'wide', 'narrow'], - result = [1970,0,1,0,0,0,0], // will get converted to a Date at the end - amPm = "", - valid = array.every(match, function(v, i){ - if(!i){return true;} - var token = tokens[i-1], - l = token.length, - c = token.charAt(0); - switch(c){ - case 'y': - if(l != 2 && options.strict){ - //interpret year literally, so '5' would be 5 A.D. - result[0] = v; - }else{ - if(v<100){ - v = Number(v); - //choose century to apply, according to a sliding window - //of 80 years before and 20 years after present year - var year = '' + new Date().getFullYear(), - century = year.substring(0, 2) * 100, - cutoff = Math.min(Number(year.substring(2, 4)) + 20, 99); - result[0] = (v < cutoff) ? century + v : century - 100 + v; - }else{ - //we expected 2 digits and got more... - if(options.strict){ - return false; - } - //interpret literally, so '150' would be 150 A.D. - //also tolerate '1950', if 'yyyy' input passed to 'yy' format - result[0] = v; - } - } - break; - case 'M': - case 'L': - if(l>2){ - var months = bundle['months-' + - (c == 'L' ? 'standAlone' : 'format') + - '-' + widthList[l-3]].concat(); - if(!options.strict){ - //Tolerate abbreviating period in month part - //Case-insensitive comparison - v = v.replace(".","").toLowerCase(); - months = array.map(months, function(s){ return s.replace(".","").toLowerCase(); } ); - } - v = array.indexOf(months, v); - if(v == -1){ -// console.log("dojo/date/locale.parse: Could not parse month name: '" + v + "'."); - return false; - } - }else{ - v--; - } - result[1] = v; - break; - case 'E': - case 'e': - case 'c': - var days = bundle['days-' + - (c == 'c' ? 'standAlone' : 'format') + - '-' + widthList[l-3]].concat(); - if(!options.strict){ - //Case-insensitive comparison - v = v.toLowerCase(); - days = array.map(days, function(d){return d.toLowerCase();}); - } - v = array.indexOf(days, v); - if(v == -1){ -// console.log("dojo/date/locale.parse: Could not parse weekday name: '" + v + "'."); - return false; - } - - //TODO: not sure what to actually do with this input, - //in terms of setting something on the Date obj...? - //without more context, can't affect the actual date - //TODO: just validate? - break; - case 'D': - result[1] = 0; - // fallthrough... - case 'd': - result[2] = v; - break; - case 'a': //am/pm - var am = options.am || bundle['dayPeriods-format-wide-am'], - pm = options.pm || bundle['dayPeriods-format-wide-pm']; - if(!options.strict){ - var period = /\./g; - v = v.replace(period,'').toLowerCase(); - am = am.replace(period,'').toLowerCase(); - pm = pm.replace(period,'').toLowerCase(); - } - if(options.strict && v != am && v != pm){ -// console.log("dojo/date/locale.parse: Could not parse am/pm part."); - return false; - } - - // we might not have seen the hours field yet, so store the state and apply hour change later - amPm = (v == pm) ? 'p' : (v == am) ? 'a' : ''; - break; - case 'K': //hour (1-24) - if(v == 24){ v = 0; } - // fallthrough... - case 'h': //hour (1-12) - case 'H': //hour (0-23) - case 'k': //hour (0-11) - //TODO: strict bounds checking, padding - if(v > 23){ -// console.log("dojo/date/locale.parse: Illegal hours value"); - return false; - } - - //in the 12-hour case, adjusting for am/pm requires the 'a' part - //which could come before or after the hour, so we will adjust later - result[3] = v; - break; - case 'm': //minutes - result[4] = v; - break; - case 's': //seconds - result[5] = v; - break; - case 'S': //milliseconds - result[6] = v; -// break; -// case 'w': -//TODO var firstDay = 0; -// default: -//TODO: throw? -// console.log("dojo/date/locale.parse: unsupported pattern char=" + token.charAt(0)); - } - return true; - }); - - var hours = +result[3]; - if(amPm === 'p' && hours < 12){ - result[3] = hours + 12; //e.g., 3pm -> 15 - }else if(amPm === 'a' && hours == 12){ - result[3] = 0; //12am -> 0 - } - - //TODO: implement a getWeekday() method in order to test - //validity of input strings containing 'EEE' or 'EEEE'... - - var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date - if(options.strict){ - dateObject.setFullYear(result[0]); - } - - // Check for overflow. The Date() constructor normalizes things like April 32nd... - //TODO: why isn't this done for times as well? - var allTokens = tokens.join(""), - dateToken = allTokens.indexOf('d') != -1, - monthToken = allTokens.indexOf('M') != -1; - - if(!valid || - (monthToken && dateObject.getMonth() > result[1]) || - (dateToken && dateObject.getDate() > result[2])){ - return null; - } - - // Check for underflow, due to DST shifts. See #9366 - // This assumes a 1 hour dst shift correction at midnight - // We could compare the timezone offset after the shift and add the difference instead. - if((monthToken && dateObject.getMonth() < result[1]) || - (dateToken && dateObject.getDate() < result[2])){ - dateObject = date.add(dateObject, "hour", 1); - } - - return dateObject; // Date -}; - -function _processPattern(pattern, applyPattern, applyLiteral, applyAll){ - //summary: Process a pattern with literals in it - - // Break up on single quotes, treat every other one as a literal, except '' which becomes ' - var identity = function(x){return x;}; - applyPattern = applyPattern || identity; - applyLiteral = applyLiteral || identity; - applyAll = applyAll || identity; - - //split on single quotes (which escape literals in date format strings) - //but preserve escaped single quotes (e.g., o''clock) - var chunks = pattern.match(/(''|[^'])+/g), - literal = pattern.charAt(0) == "'"; - - array.forEach(chunks, function(chunk, i){ - if(!chunk){ - chunks[i]=''; - }else{ - chunks[i]=(literal ? applyLiteral : applyPattern)(chunk.replace(/''/g, "'")); - literal = !literal; - } - }); - return applyAll(chunks.join('')); -} - -function _buildDateTimeRE(tokens, bundle, options, pattern){ - pattern = regexp.escapeString(pattern); - if(!options.strict){ pattern = pattern.replace(" a", " ?a"); } // kludge to tolerate no space before am/pm - return pattern.replace(/([a-z])\1*/ig, function(match){ - // Build a simple regexp. Avoid captures, which would ruin the tokens list - var s, - c = match.charAt(0), - l = match.length, - p2 = '', p3 = ''; - if(options.strict){ - if(l > 1){ p2 = '0' + '{'+(l-1)+'}'; } - if(l > 2){ p3 = '0' + '{'+(l-2)+'}'; } - }else{ - p2 = '0?'; p3 = '0{0,2}'; - } - switch(c){ - case 'y': - s = '\\d{2,4}'; - break; - case 'M': - case 'L': - s = (l>2) ? '\\S+?' : '1[0-2]|'+p2+'[1-9]'; - break; - case 'D': - s = '[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|'+p2+'[1-9][0-9]|'+p3+'[1-9]'; - break; - case 'd': - s = '3[01]|[12]\\d|'+p2+'[1-9]'; - break; - case 'w': - s = '[1-4][0-9]|5[0-3]|'+p2+'[1-9]'; - break; - case 'E': - case 'e': - case 'c': - s = '\\S+'; - break; - case 'h': //hour (1-12) - s = '1[0-2]|'+p2+'[1-9]'; - break; - case 'k': //hour (0-11) - s = '1[01]|'+p2+'\\d'; - break; - case 'H': //hour (0-23) - s = '1\\d|2[0-3]|'+p2+'\\d'; - break; - case 'K': //hour (1-24) - s = '1\\d|2[0-4]|'+p2+'[1-9]'; - break; - case 'm': - case 's': - s = '[0-5]\\d'; - break; - case 'S': - s = '\\d{'+l+'}'; - break; - case 'a': - var am = options.am || bundle['dayPeriods-format-wide-am'], - pm = options.pm || bundle['dayPeriods-format-wide-pm']; - s = am + '|' + pm; - if(!options.strict){ - if(am != am.toLowerCase()){ s += '|' + am.toLowerCase(); } - if(pm != pm.toLowerCase()){ s += '|' + pm.toLowerCase(); } - if(s.indexOf('.') != -1){ s += '|' + s.replace(/\./g, ""); } - } - s = s.replace(/\./g, "\\."); - break; - default: - // case 'v': - // case 'z': - // case 'Z': - s = ".*"; -// console.log("parse of date format, pattern=" + pattern); - } - - if(tokens){ tokens.push(match); } - - return "(" + s + ")"; // add capture - }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. -} - -var _customFormats = []; -exports.addCustomFormats = function(/*String*/ packageName, /*String*/ bundleName){ - // summary: - // Add a reference to a bundle containing localized custom formats to be - // used by date/time formatting and parsing routines. - // - // description: - // The user may add custom localized formats where the bundle has properties following the - // same naming convention used by dojo.cldr: `dateFormat-xxxx` / `timeFormat-xxxx` - // The pattern string should match the format used by the CLDR. - // See dojo/date/locale.format() for details. - // The resources must be loaded by dojo.requireLocalization() prior to use - - _customFormats.push({pkg:packageName,name:bundleName}); -}; - -exports._getGregorianBundle = function(/*String*/ locale){ - var gregorian = {}; - array.forEach(_customFormats, function(desc){ - var bundle = i18n.getLocalization(desc.pkg, desc.name, locale); - gregorian = lang.mixin(gregorian, bundle); - }, this); - return gregorian; /*Object*/ -}; - -exports.addCustomFormats(module.id.replace(/\/date\/locale$/, ".cldr"),"gregorian"); - -exports.getNames = function(/*String*/ item, /*String*/ type, /*String?*/ context, /*String?*/ locale){ - // summary: - // Used to get localized strings from dojo.cldr for day or month names. - // - // item: - // 'months' || 'days' - // type: - // 'wide' || 'abbr' || 'narrow' (e.g. "Monday", "Mon", or "M" respectively, in English) - // context: - // 'standAlone' || 'format' (default) - // locale: - // override locale used to find the names - - var label, - lookup = exports._getGregorianBundle(locale), - props = [item, context, type]; - if(context == 'standAlone'){ - var key = props.join('-'); - label = lookup[key]; - // Fall back to 'format' flavor of name - if(label[0] == 1){ label = undefined; } // kludge, in the absence of real aliasing support in dojo.cldr - } - props[1] = 'format'; - - // return by copy so changes won't be made accidentally to the in-memory model - return (label || lookup[props.join('-')]).concat(); /*Array*/ -}; - -exports.isWeekend = function(/*Date?*/ dateObject, /*String?*/ locale){ - // summary: - // Determines if the date falls on a weekend, according to local custom. - - var weekend = supplemental.getWeekend(locale), - day = (dateObject || new Date()).getDay(); - if(weekend.end < weekend.start){ - weekend.end += 7; - if(day < weekend.start){ day += 7; } - } - return day >= weekend.start && day <= weekend.end; // Boolean -}; - -// These are used only by format and strftime. Do they need to be public? Which module should they go in? - -exports._getDayOfYear = function(/*Date*/ dateObject){ - // summary: - // gets the day of the year as represented by dateObject - return date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject) + 1; // Number -}; - -exports._getWeekOfYear = function(/*Date*/ dateObject, /*Number*/ firstDayOfWeek){ - if(arguments.length == 1){ firstDayOfWeek = 0; } // Sunday - - var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1).getDay(), - adj = (firstDayOfYear - firstDayOfWeek + 7) % 7, - week = Math.floor((exports._getDayOfYear(dateObject) + adj - 1) / 7); - - // if year starts on the specified day, start counting weeks at 1 - if(firstDayOfYear == firstDayOfWeek){ week++; } - - return week; // Number -}; - -return exports; -}); diff --git a/lib/dojo/date/stamp.js.uncompressed.js b/lib/dojo/date/stamp.js.uncompressed.js deleted file mode 100644 index c7dc86947..000000000 --- a/lib/dojo/date/stamp.js.uncompressed.js +++ /dev/null @@ -1,144 +0,0 @@ -define("dojo/date/stamp", ["../_base/lang", "../_base/array"], function(lang, array){ - -// module: -// dojo/date/stamp - -var stamp = { - // summary: - // TODOC -}; -lang.setObject("dojo.date.stamp", stamp); - -// Methods to convert dates to or from a wire (string) format using well-known conventions - -stamp.fromISOString = function(/*String*/ formattedString, /*Number?*/ defaultTime){ - // summary: - // Returns a Date object given a string formatted according to a subset of the ISO-8601 standard. - // - // description: - // Accepts a string formatted according to a profile of ISO8601 as defined by - // [RFC3339](http://www.ietf.org/rfc/rfc3339.txt), except that partial input is allowed. - // Can also process dates as specified [by the W3C](http://www.w3.org/TR/NOTE-datetime) - // The following combinations are valid: - // - // - dates only - // - yyyy - // - yyyy-MM - // - yyyy-MM-dd - // - times only, with an optional time zone appended - // - THH:mm - // - THH:mm:ss - // - THH:mm:ss.SSS - // - and "datetimes" which could be any combination of the above - // - // timezones may be specified as Z (for UTC) or +/- followed by a time expression HH:mm - // Assumes the local time zone if not specified. Does not validate. Improperly formatted - // input may return null. Arguments which are out of bounds will be handled - // by the Date constructor (e.g. January 32nd typically gets resolved to February 1st) - // Only years between 100 and 9999 are supported. - // formattedString: - // A string such as 2005-06-30T08:05:00-07:00 or 2005-06-30 or T08:05:00 - // defaultTime: - // Used for defaults for fields omitted in the formattedString. - // Uses 1970-01-01T00:00:00.0Z by default. - - if(!stamp._isoRegExp){ - stamp._isoRegExp = -//TODO: could be more restrictive and check for 00-59, etc. - /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/; - } - - var match = stamp._isoRegExp.exec(formattedString), - result = null; - - if(match){ - match.shift(); - if(match[1]){match[1]--;} // Javascript Date months are 0-based - if(match[6]){match[6] *= 1000;} // Javascript Date expects fractional seconds as milliseconds - - if(defaultTime){ - // mix in defaultTime. Relatively expensive, so use || operators for the fast path of defaultTime === 0 - defaultTime = new Date(defaultTime); - array.forEach(array.map(["FullYear", "Month", "Date", "Hours", "Minutes", "Seconds", "Milliseconds"], function(prop){ - return defaultTime["get" + prop](); - }), function(value, index){ - match[index] = match[index] || value; - }); - } - result = new Date(match[0]||1970, match[1]||0, match[2]||1, match[3]||0, match[4]||0, match[5]||0, match[6]||0); //TODO: UTC defaults - if(match[0] < 100){ - result.setFullYear(match[0] || 1970); - } - - var offset = 0, - zoneSign = match[7] && match[7].charAt(0); - if(zoneSign != 'Z'){ - offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0); - if(zoneSign != '-'){ offset *= -1; } - } - if(zoneSign){ - offset -= result.getTimezoneOffset(); - } - if(offset){ - result.setTime(result.getTime() + offset * 60000); - } - } - - return result; // Date or null -}; - -/*===== -var __Options = { - // selector: String - // "date" or "time" for partial formatting of the Date object. - // Both date and time will be formatted by default. - // zulu: Boolean - // if true, UTC/GMT is used for a timezone - // milliseconds: Boolean - // if true, output milliseconds -}; -=====*/ - -stamp.toISOString = function(/*Date*/ dateObject, /*__Options?*/ options){ - // summary: - // Format a Date object as a string according a subset of the ISO-8601 standard - // - // description: - // When options.selector is omitted, output follows [RFC3339](http://www.ietf.org/rfc/rfc3339.txt) - // The local time zone is included as an offset from GMT, except when selector=='time' (time without a date) - // Does not check bounds. Only years between 100 and 9999 are supported. - // - // dateObject: - // A Date object - - var _ = function(n){ return (n < 10) ? "0" + n : n; }; - options = options || {}; - var formattedDate = [], - getter = options.zulu ? "getUTC" : "get", - date = ""; - if(options.selector != "time"){ - var year = dateObject[getter+"FullYear"](); - date = ["0000".substr((year+"").length)+year, _(dateObject[getter+"Month"]()+1), _(dateObject[getter+"Date"]())].join('-'); - } - formattedDate.push(date); - if(options.selector != "date"){ - var time = [_(dateObject[getter+"Hours"]()), _(dateObject[getter+"Minutes"]()), _(dateObject[getter+"Seconds"]())].join(':'); - var millis = dateObject[getter+"Milliseconds"](); - if(options.milliseconds){ - time += "."+ (millis < 100 ? "0" : "") + _(millis); - } - if(options.zulu){ - time += "Z"; - }else if(options.selector != "time"){ - var timezoneOffset = dateObject.getTimezoneOffset(); - var absOffset = Math.abs(timezoneOffset); - time += (timezoneOffset > 0 ? "-" : "+") + - _(Math.floor(absOffset/60)) + ":" + _(absOffset%60); - } - formattedDate.push(time); - } - return formattedDate.join('T'); // String -}; - -return stamp; -}); diff --git a/lib/dojo/dnd/AutoSource.js.uncompressed.js b/lib/dojo/dnd/AutoSource.js.uncompressed.js deleted file mode 100644 index 2acf01313..000000000 --- a/lib/dojo/dnd/AutoSource.js.uncompressed.js +++ /dev/null @@ -1,12 +0,0 @@ -define("dojo/dnd/AutoSource", ["../_base/declare", "./Source"], function(declare, Source){ - return declare("dojo.dnd.AutoSource", Source, { - // summary: - // a source that syncs its DnD nodes by default - - constructor: function(/*===== node, params =====*/){ - // summary: - // constructor of the AutoSource --- see the Source constructor for details - this.autoSync = true; - } - }); -}); diff --git a/lib/dojo/dnd/Avatar.js.uncompressed.js b/lib/dojo/dnd/Avatar.js.uncompressed.js deleted file mode 100644 index 4ec4f6873..000000000 --- a/lib/dojo/dnd/Avatar.js.uncompressed.js +++ /dev/null @@ -1,122 +0,0 @@ -define("dojo/dnd/Avatar", [ - "../_base/declare", - "../_base/window", - "../dom", - "../dom-attr", - "../dom-class", - "../dom-construct", - "../hccss", - "../query" -], function(declare, win, dom, domAttr, domClass, domConstruct, has, query){ - -// module: -// dojo/dnd/Avatar - -return declare("dojo.dnd.Avatar", null, { - // summary: - // Object that represents transferred DnD items visually - // manager: Object - // a DnD manager object - - constructor: function(manager){ - this.manager = manager; - this.construct(); - }, - - // methods - construct: function(){ - // summary: - // constructor function; - // it is separate so it can be (dynamically) overwritten in case of need - - var a = domConstruct.create("table", { - "class": "dojoDndAvatar", - style: { - position: "absolute", - zIndex: "1999", - margin: "0px" - } - }), - source = this.manager.source, node, - b = domConstruct.create("tbody", null, a), - tr = domConstruct.create("tr", null, b), - td = domConstruct.create("td", null, tr), - k = Math.min(5, this.manager.nodes.length), i = 0; - - if(has("highcontrast")){ - domConstruct.create("span", { - id : "a11yIcon", - innerHTML : this.manager.copy ? '+' : "<" - }, td) - } - domConstruct.create("span", { - innerHTML: source.generateText ? this._generateText() : "" - }, td); - - // we have to set the opacity on IE only after the node is live - domAttr.set(tr, { - "class": "dojoDndAvatarHeader", - style: {opacity: 0.9} - }); - for(; i < k; ++i){ - if(source.creator){ - // create an avatar representation of the node - node = source._normalizedCreator(source.getItem(this.manager.nodes[i].id).data, "avatar").node; - }else{ - // or just clone the node and hope it works - node = this.manager.nodes[i].cloneNode(true); - if(node.tagName.toLowerCase() == "tr"){ - // insert extra table nodes - var table = domConstruct.create("table"), - tbody = domConstruct.create("tbody", null, table); - tbody.appendChild(node); - node = table; - } - } - node.id = ""; - tr = domConstruct.create("tr", null, b); - td = domConstruct.create("td", null, tr); - td.appendChild(node); - domAttr.set(tr, { - "class": "dojoDndAvatarItem", - style: {opacity: (9 - i) / 10} - }); - } - this.node = a; - }, - destroy: function(){ - // summary: - // destructor for the avatar; called to remove all references so it can be garbage-collected - domConstruct.destroy(this.node); - this.node = false; - }, - update: function(){ - // summary: - // updates the avatar to reflect the current DnD state - domClass.toggle(this.node, "dojoDndAvatarCanDrop", this.manager.canDropFlag); - if(has("highcontrast")){ - var icon = dom.byId("a11yIcon"); - var text = '+'; // assume canDrop && copy - if (this.manager.canDropFlag && !this.manager.copy){ - text = '< '; // canDrop && move - }else if (!this.manager.canDropFlag && !this.manager.copy){ - text = "o"; //!canDrop && move - }else if(!this.manager.canDropFlag){ - text = 'x'; // !canDrop && copy - } - icon.innerHTML=text; - } - // replace text - query(("tr.dojoDndAvatarHeader td span" +(has("highcontrast") ? " span" : "")), this.node).forEach( - function(node){ - node.innerHTML = this.manager.source.generateText ? this._generateText() : ""; - }, this); - }, - _generateText: function(){ - // summary: - // generates a proper text to reflect copying or moving of items - return this.manager.nodes.length.toString(); - } -}); - -}); diff --git a/lib/dojo/dnd/Container.js.uncompressed.js b/lib/dojo/dnd/Container.js.uncompressed.js deleted file mode 100644 index 60671c93d..000000000 --- a/lib/dojo/dnd/Container.js.uncompressed.js +++ /dev/null @@ -1,456 +0,0 @@ -define("dojo/dnd/Container", [ - "../_base/array", - "../_base/declare", - "../_base/event", - "../_base/kernel", - "../_base/lang", - "../_base/window", - "../dom", - "../dom-class", - "../dom-construct", - "../Evented", - "../has", - "../on", - "../query", - "../ready", - "../touch", - "./common" -], function( - array, declare, event, kernel, lang, win, - dom, domClass, domConstruct, Evented, has, on, query, ready, touch, dnd){ - -// module: -// dojo/dnd/Container - -/* - Container states: - "" - normal state - "Over" - mouse over a container - Container item states: - "" - normal state - "Over" - mouse over a container item -*/ - - - -var Container = declare("dojo.dnd.Container", Evented, { - // summary: - // a Container object, which knows when mouse hovers over it, - // and over which element it hovers - - // object attributes (for markup) - skipForm: false, - // allowNested: Boolean - // Indicates whether to allow dnd item nodes to be nested within other elements. - // By default this is false, indicating that only direct children of the container can - // be draggable dnd item nodes - allowNested: false, - /*===== - // current: DomNode - // The DOM node the mouse is currently hovered over - current: null, - - // map: Hash - // Map from an item's id (which is also the DOMNode's id) to - // the dojo/dnd/Container.Item itself. - map: {}, - =====*/ - - constructor: function(node, params){ - // summary: - // a constructor of the Container - // node: Node - // node or node's id to build the container on - // params: Container.__ContainerArgs - // a dictionary of parameters - this.node = dom.byId(node); - if(!params){ params = {}; } - this.creator = params.creator || null; - this.skipForm = params.skipForm; - this.parent = params.dropParent && dom.byId(params.dropParent); - - // class-specific variables - this.map = {}; - this.current = null; - - // states - this.containerState = ""; - domClass.add(this.node, "dojoDndContainer"); - - // mark up children - if(!(params && params._skipStartup)){ - this.startup(); - } - - // set up events - this.events = [ - on(this.node, touch.over, lang.hitch(this, "onMouseOver")), - on(this.node, touch.out, lang.hitch(this, "onMouseOut")), - // cancel text selection and text dragging - on(this.node, "dragstart", lang.hitch(this, "onSelectStart")), - on(this.node, "selectstart", lang.hitch(this, "onSelectStart")) - ]; - }, - - // object attributes (for markup) - creator: function(){ - // summary: - // creator function, dummy at the moment - }, - - // abstract access to the map - getItem: function(/*String*/ key){ - // summary: - // returns a data item by its key (id) - return this.map[key]; // Container.Item - }, - setItem: function(/*String*/ key, /*Container.Item*/ data){ - // summary: - // associates a data item with its key (id) - this.map[key] = data; - }, - delItem: function(/*String*/ key){ - // summary: - // removes a data item from the map by its key (id) - delete this.map[key]; - }, - forInItems: function(/*Function*/ f, /*Object?*/ o){ - // summary: - // iterates over a data map skipping members that - // are present in the empty object (IE and/or 3rd-party libraries). - o = o || kernel.global; - var m = this.map, e = dnd._empty; - for(var i in m){ - if(i in e){ continue; } - f.call(o, m[i], i, this); - } - return o; // Object - }, - clearItems: function(){ - // summary: - // removes all data items from the map - this.map = {}; - }, - - // methods - getAllNodes: function(){ - // summary: - // returns a list (an array) of all valid child nodes - return query((this.allowNested ? "" : "> ") + ".dojoDndItem", this.parent); // NodeList - }, - sync: function(){ - // summary: - // sync up the node list with the data map - var map = {}; - this.getAllNodes().forEach(function(node){ - if(node.id){ - var item = this.getItem(node.id); - if(item){ - map[node.id] = item; - return; - } - }else{ - node.id = dnd.getUniqueId(); - } - var type = node.getAttribute("dndType"), - data = node.getAttribute("dndData"); - map[node.id] = { - data: data || node.innerHTML, - type: type ? type.split(/\s*,\s*/) : ["text"] - }; - }, this); - this.map = map; - return this; // self - }, - insertNodes: function(data, before, anchor){ - // summary: - // inserts an array of new nodes before/after an anchor node - // data: Array - // a list of data items, which should be processed by the creator function - // before: Boolean - // insert before the anchor, if true, and after the anchor otherwise - // anchor: Node - // the anchor node to be used as a point of insertion - if(!this.parent.firstChild){ - anchor = null; - }else if(before){ - if(!anchor){ - anchor = this.parent.firstChild; - } - }else{ - if(anchor){ - anchor = anchor.nextSibling; - } - } - var i, t; - if(anchor){ - for(i = 0; i < data.length; ++i){ - t = this._normalizedCreator(data[i]); - this.setItem(t.node.id, {data: t.data, type: t.type}); - anchor.parentNode.insertBefore(t.node, anchor); - } - }else{ - for(i = 0; i < data.length; ++i){ - t = this._normalizedCreator(data[i]); - this.setItem(t.node.id, {data: t.data, type: t.type}); - this.parent.appendChild(t.node); - } - } - return this; // self - }, - destroy: function(){ - // summary: - // prepares this object to be garbage-collected - array.forEach(this.events, function(handle){ handle.remove(); }); - this.clearItems(); - this.node = this.parent = this.current = null; - }, - - // markup methods - markupFactory: function(params, node, Ctor){ - params._skipStartup = true; - return new Ctor(node, params); - }, - startup: function(){ - // summary: - // collects valid child items and populate the map - - // set up the real parent node - if(!this.parent){ - // use the standard algorithm, if not assigned - this.parent = this.node; - if(this.parent.tagName.toLowerCase() == "table"){ - var c = this.parent.getElementsByTagName("tbody"); - if(c && c.length){ this.parent = c[0]; } - } - } - this.defaultCreator = dnd._defaultCreator(this.parent); - - // process specially marked children - this.sync(); - }, - - // mouse events - onMouseOver: function(e){ - // summary: - // event processor for onmouseover or touch, to mark that element as the current element - // e: Event - // mouse event - var n = e.relatedTarget; - while(n){ - if(n == this.node){ break; } - try{ - n = n.parentNode; - }catch(x){ - n = null; - } - } - if(!n){ - this._changeState("Container", "Over"); - this.onOverEvent(); - } - n = this._getChildByEvent(e); - if(this.current == n){ return; } - if(this.current){ this._removeItemClass(this.current, "Over"); } - if(n){ this._addItemClass(n, "Over"); } - this.current = n; - }, - onMouseOut: function(e){ - // summary: - // event processor for onmouseout - // e: Event - // mouse event - for(var n = e.relatedTarget; n;){ - if(n == this.node){ return; } - try{ - n = n.parentNode; - }catch(x){ - n = null; - } - } - if(this.current){ - this._removeItemClass(this.current, "Over"); - this.current = null; - } - this._changeState("Container", ""); - this.onOutEvent(); - }, - onSelectStart: function(e){ - // summary: - // event processor for onselectevent and ondragevent - // e: Event - // mouse event - if(!this.skipForm || !dnd.isFormElement(e)){ - event.stop(e); - } - }, - - // utilities - onOverEvent: function(){ - // summary: - // this function is called once, when mouse is over our container - }, - onOutEvent: function(){ - // summary: - // this function is called once, when mouse is out of our container - }, - _changeState: function(type, newState){ - // summary: - // changes a named state to new state value - // type: String - // a name of the state to change - // newState: String - // new state - var prefix = "dojoDnd" + type; - var state = type.toLowerCase() + "State"; - //domClass.replace(this.node, prefix + newState, prefix + this[state]); - domClass.replace(this.node, prefix + newState, prefix + this[state]); - this[state] = newState; - }, - _addItemClass: function(node, type){ - // summary: - // adds a class with prefix "dojoDndItem" - // node: Node - // a node - // type: String - // a variable suffix for a class name - domClass.add(node, "dojoDndItem" + type); - }, - _removeItemClass: function(node, type){ - // summary: - // removes a class with prefix "dojoDndItem" - // node: Node - // a node - // type: String - // a variable suffix for a class name - domClass.remove(node, "dojoDndItem" + type); - }, - _getChildByEvent: function(e){ - // summary: - // gets a child, which is under the mouse at the moment, or null - // e: Event - // a mouse event - var node = e.target; - if(node){ - for(var parent = node.parentNode; parent; node = parent, parent = node.parentNode){ - if((parent == this.parent || this.allowNested) && domClass.contains(node, "dojoDndItem")){ return node; } - } - } - return null; - }, - _normalizedCreator: function(/*Container.Item*/ item, /*String*/ hint){ - // summary: - // adds all necessary data to the output of the user-supplied creator function - var t = (this.creator || this.defaultCreator).call(this, item, hint); - if(!lang.isArray(t.type)){ t.type = ["text"]; } - if(!t.node.id){ t.node.id = dnd.getUniqueId(); } - domClass.add(t.node, "dojoDndItem"); - return t; - } -}); - -dnd._createNode = function(tag){ - // summary: - // returns a function, which creates an element of given tag - // (SPAN by default) and sets its innerHTML to given text - // tag: String - // a tag name or empty for SPAN - if(!tag){ return dnd._createSpan; } - return function(text){ // Function - return domConstruct.create(tag, {innerHTML: text}); // Node - }; -}; - -dnd._createTrTd = function(text){ - // summary: - // creates a TR/TD structure with given text as an innerHTML of TD - // text: String - // a text for TD - var tr = domConstruct.create("tr"); - domConstruct.create("td", {innerHTML: text}, tr); - return tr; // Node -}; - -dnd._createSpan = function(text){ - // summary: - // creates a SPAN element with given text as its innerHTML - // text: String - // a text for SPAN - return domConstruct.create("span", {innerHTML: text}); // Node -}; - -// dnd._defaultCreatorNodes: Object -// a dictionary that maps container tag names to child tag names -dnd._defaultCreatorNodes = {ul: "li", ol: "li", div: "div", p: "div"}; - -dnd._defaultCreator = function(node){ - // summary: - // takes a parent node, and returns an appropriate creator function - // node: Node - // a container node - var tag = node.tagName.toLowerCase(); - var c = tag == "tbody" || tag == "thead" ? dnd._createTrTd : - dnd._createNode(dnd._defaultCreatorNodes[tag]); - return function(item, hint){ // Function - var isObj = item && lang.isObject(item), data, type, n; - if(isObj && item.tagName && item.nodeType && item.getAttribute){ - // process a DOM node - data = item.getAttribute("dndData") || item.innerHTML; - type = item.getAttribute("dndType"); - type = type ? type.split(/\s*,\s*/) : ["text"]; - n = item; // this node is going to be moved rather than copied - }else{ - // process a DnD item object or a string - data = (isObj && item.data) ? item.data : item; - type = (isObj && item.type) ? item.type : ["text"]; - n = (hint == "avatar" ? dnd._createSpan : c)(String(data)); - } - if(!n.id){ - n.id = dnd.getUniqueId(); - } - return {node: n, data: data, type: type}; - }; -}; - -/*===== -Container.__ContainerArgs = declare([], { - creator: function(){ - // summary: - // a creator function, which takes a data item, and returns an object like that: - // {node: newNode, data: usedData, type: arrayOfStrings} - }, - - // skipForm: Boolean - // don't start the drag operation, if clicked on form elements - skipForm: false, - - // dropParent: Node||String - // node or node's id to use as the parent node for dropped items - // (must be underneath the 'node' parameter in the DOM) - dropParent: null, - - // _skipStartup: Boolean - // skip startup(), which collects children, for deferred initialization - // (this is used in the markup mode) - _skipStartup: false -}); - -Container.Item = function(){ - // summary: - // Represents (one of) the source node(s) being dragged. - // Contains (at least) the "type" and "data" attributes. - // type: String[] - // Type(s) of this item, by default this is ["text"] - // data: Object - // Logical representation of the object being dragged. - // If the drag object's type is "text" then data is a String, - // if it's another type then data could be a different Object, - // perhaps a name/value hash. - - this.type = type; - this.data = data; -}; -=====*/ - -return Container; -}); diff --git a/lib/dojo/dnd/Manager.js.uncompressed.js b/lib/dojo/dnd/Manager.js.uncompressed.js deleted file mode 100644 index 4b6a12acd..000000000 --- a/lib/dojo/dnd/Manager.js.uncompressed.js +++ /dev/null @@ -1,223 +0,0 @@ -define("dojo/dnd/Manager", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", "../_base/window", - "../dom-class", "../Evented", "../has", "../keys", "../on", "../topic", "../touch", - "./common", "./autoscroll", "./Avatar" -], function(array, declare, event, lang, win, domClass, Evented, has, keys, on, topic, touch, - dnd, autoscroll, Avatar){ - -// module: -// dojo/dnd/Manager - -var Manager = declare("dojo.dnd.Manager", [Evented], { - // summary: - // the manager of DnD operations (usually a singleton) - constructor: function(){ - this.avatar = null; - this.source = null; - this.nodes = []; - this.copy = true; - this.target = null; - this.canDropFlag = false; - this.events = []; - }, - - // avatar's offset from the mouse - OFFSET_X: has("touch") ? 0 : 16, - OFFSET_Y: has("touch") ? -64 : 16, - - // methods - overSource: function(source){ - // summary: - // called when a source detected a mouse-over condition - // source: Object - // the reporter - if(this.avatar){ - this.target = (source && source.targetState != "Disabled") ? source : null; - this.canDropFlag = Boolean(this.target); - this.avatar.update(); - } - topic.publish("/dnd/source/over", source); - }, - outSource: function(source){ - // summary: - // called when a source detected a mouse-out condition - // source: Object - // the reporter - if(this.avatar){ - if(this.target == source){ - this.target = null; - this.canDropFlag = false; - this.avatar.update(); - topic.publish("/dnd/source/over", null); - } - }else{ - topic.publish("/dnd/source/over", null); - } - }, - startDrag: function(source, nodes, copy){ - // summary: - // called to initiate the DnD operation - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - - // Tell autoscroll that a drag is starting - autoscroll.autoScrollStart(win.doc); - - this.source = source; - this.nodes = nodes; - this.copy = Boolean(copy); // normalizing to true boolean - this.avatar = this.makeAvatar(); - win.body().appendChild(this.avatar.node); - topic.publish("/dnd/start", source, nodes, this.copy); - this.events = [ - on(win.doc, touch.move, lang.hitch(this, "onMouseMove")), - on(win.doc, touch.release, lang.hitch(this, "onMouseUp")), - on(win.doc, "keydown", lang.hitch(this, "onKeyDown")), - on(win.doc, "keyup", lang.hitch(this, "onKeyUp")), - // cancel text selection and text dragging - on(win.doc, "dragstart", event.stop), - on(win.body(), "selectstart", event.stop) - ]; - var c = "dojoDnd" + (copy ? "Copy" : "Move"); - domClass.add(win.body(), c); - }, - canDrop: function(flag){ - // summary: - // called to notify if the current target can accept items - var canDropFlag = Boolean(this.target && flag); - if(this.canDropFlag != canDropFlag){ - this.canDropFlag = canDropFlag; - this.avatar.update(); - } - }, - stopDrag: function(){ - // summary: - // stop the DnD in progress - domClass.remove(win.body(), ["dojoDndCopy", "dojoDndMove"]); - array.forEach(this.events, function(handle){ handle.remove(); }); - this.events = []; - this.avatar.destroy(); - this.avatar = null; - this.source = this.target = null; - this.nodes = []; - }, - makeAvatar: function(){ - // summary: - // makes the avatar; it is separate to be overwritten dynamically, if needed - return new Avatar(this); - }, - updateAvatar: function(){ - // summary: - // updates the avatar; it is separate to be overwritten dynamically, if needed - this.avatar.update(); - }, - - // mouse event processors - onMouseMove: function(e){ - // summary: - // event processor for onmousemove - // e: Event - // mouse event - var a = this.avatar; - if(a){ - autoscroll.autoScrollNodes(e); - //autoscroll.autoScroll(e); - var s = a.node.style; - s.left = (e.pageX + this.OFFSET_X) + "px"; - s.top = (e.pageY + this.OFFSET_Y) + "px"; - var copy = Boolean(this.source.copyState(dnd.getCopyKeyState(e))); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - } - if(has("touch")){ - // Prevent page from scrolling so that user can drag instead. - e.preventDefault(); - } - }, - onMouseUp: function(e){ - // summary: - // event processor for onmouseup - // e: Event - // mouse event - if(this.avatar){ - if(this.target && this.canDropFlag){ - var copy = Boolean(this.source.copyState(dnd.getCopyKeyState(e))); - topic.publish("/dnd/drop/before", this.source, this.nodes, copy, this.target, e); - topic.publish("/dnd/drop", this.source, this.nodes, copy, this.target, e); - }else{ - topic.publish("/dnd/cancel"); - } - this.stopDrag(); - } - }, - - // keyboard event processors - onKeyDown: function(e){ - // summary: - // event processor for onkeydown: - // watching for CTRL for copy/move status, watching for ESCAPE to cancel the drag - // e: Event - // keyboard event - if(this.avatar){ - switch(e.keyCode){ - case keys.CTRL: - var copy = Boolean(this.source.copyState(true)); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - break; - case keys.ESCAPE: - topic.publish("/dnd/cancel"); - this.stopDrag(); - break; - } - } - }, - onKeyUp: function(e){ - // summary: - // event processor for onkeyup, watching for CTRL for copy/move status - // e: Event - // keyboard event - if(this.avatar && e.keyCode == keys.CTRL){ - var copy = Boolean(this.source.copyState(false)); - if(this.copy != copy){ - this._setCopyStatus(copy); - } - } - }, - - // utilities - _setCopyStatus: function(copy){ - // summary: - // changes the copy status - // copy: Boolean - // the copy status - this.copy = copy; - this.source._markDndStatus(this.copy); - this.updateAvatar(); - domClass.replace(win.body(), - "dojoDnd" + (this.copy ? "Copy" : "Move"), - "dojoDnd" + (this.copy ? "Move" : "Copy")); - } -}); - -// dnd._manager: -// The manager singleton variable. Can be overwritten if needed. -dnd._manager = null; - -Manager.manager = dnd.manager = function(){ - // summary: - // Returns the current DnD manager. Creates one if it is not created yet. - if(!dnd._manager){ - dnd._manager = new Manager(); - } - return dnd._manager; // Object -}; - -return Manager; -}); diff --git a/lib/dojo/dnd/Moveable.js.uncompressed.js b/lib/dojo/dnd/Moveable.js.uncompressed.js deleted file mode 100644 index fc5feb7b3..000000000 --- a/lib/dojo/dnd/Moveable.js.uncompressed.js +++ /dev/null @@ -1,185 +0,0 @@ -define("dojo/dnd/Moveable", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", - "../dom", "../dom-class", "../Evented", "../on", "../topic", "../touch", "./common", "./Mover", "../_base/window" -], function(array, declare, event, lang, dom, domClass, Evented, on, topic, touch, dnd, Mover, win){ - -// module: -// dojo/dnd/Moveable - - -var Moveable = declare("dojo.dnd.Moveable", [Evented], { - // summary: - // an object, which makes a node movable - - // object attributes (for markup) - handle: "", - delay: 0, - skip: false, - - constructor: function(node, params){ - // node: Node - // a node (or node's id) to be moved - // params: Moveable.__MoveableArgs? - // optional parameters - this.node = dom.byId(node); - if(!params){ params = {}; } - this.handle = params.handle ? dom.byId(params.handle) : null; - if(!this.handle){ this.handle = this.node; } - this.delay = params.delay > 0 ? params.delay : 0; - this.skip = params.skip; - this.mover = params.mover ? params.mover : Mover; - this.events = [ - on(this.handle, touch.press, lang.hitch(this, "onMouseDown")), - // cancel text selection and text dragging - on(this.handle, "dragstart", lang.hitch(this, "onSelectStart")), - on(this.handle, "selectstart", lang.hitch(this, "onSelectStart")) - ]; - }, - - // markup methods - markupFactory: function(params, node, Ctor){ - return new Ctor(node, params); - }, - - // methods - destroy: function(){ - // summary: - // stops watching for possible move, deletes all references, so the object can be garbage-collected - array.forEach(this.events, function(handle){ handle.remove(); }); - this.events = this.node = this.handle = null; - }, - - // mouse event processors - onMouseDown: function(e){ - // summary: - // event processor for onmousedown/ontouchstart, creates a Mover for the node - // e: Event - // mouse/touch event - if(this.skip && dnd.isFormElement(e)){ return; } - if(this.delay){ - this.events.push( - on(this.handle, touch.move, lang.hitch(this, "onMouseMove")), - on(this.handle, touch.release, lang.hitch(this, "onMouseUp")) - ); - this._lastX = e.pageX; - this._lastY = e.pageY; - }else{ - this.onDragDetected(e); - } - event.stop(e); - }, - onMouseMove: function(e){ - // summary: - // event processor for onmousemove/ontouchmove, used only for delayed drags - // e: Event - // mouse/touch event - if(Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay){ - this.onMouseUp(e); - this.onDragDetected(e); - } - event.stop(e); - }, - onMouseUp: function(e){ - // summary: - // event processor for onmouseup, used only for delayed drags - // e: Event - // mouse event - for(var i = 0; i < 2; ++i){ - this.events.pop().remove(); - } - event.stop(e); - }, - onSelectStart: function(e){ - // summary: - // event processor for onselectevent and ondragevent - // e: Event - // mouse event - if(!this.skip || !dnd.isFormElement(e)){ - event.stop(e); - } - }, - - // local events - onDragDetected: function(/*Event*/ e){ - // summary: - // called when the drag is detected; - // responsible for creation of the mover - new this.mover(this.node, e, this); - }, - onMoveStart: function(/*Mover*/ mover){ - // summary: - // called before every move operation - topic.publish("/dnd/move/start", mover); - domClass.add(win.body(), "dojoMove"); - domClass.add(this.node, "dojoMoveItem"); - }, - onMoveStop: function(/*Mover*/ mover){ - // summary: - // called after every move operation - topic.publish("/dnd/move/stop", mover); - domClass.remove(win.body(), "dojoMove"); - domClass.remove(this.node, "dojoMoveItem"); - }, - onFirstMove: function(/*===== mover, e =====*/){ - // summary: - // called during the very first move notification; - // can be used to initialize coordinates, can be overwritten. - // mover: Mover - // e: Event - - // default implementation does nothing - }, - onMove: function(mover, leftTop /*=====, e =====*/){ - // summary: - // called during every move notification; - // should actually move the node; can be overwritten. - // mover: Mover - // leftTop: Object - // e: Event - this.onMoving(mover, leftTop); - var s = mover.node.style; - s.left = leftTop.l + "px"; - s.top = leftTop.t + "px"; - this.onMoved(mover, leftTop); - }, - onMoving: function(/*===== mover, leftTop =====*/){ - // summary: - // called before every incremental move; can be overwritten. - // mover: Mover - // leftTop: Object - - // default implementation does nothing - }, - onMoved: function(/*===== mover, leftTop =====*/){ - // summary: - // called after every incremental move; can be overwritten. - // mover: Mover - // leftTop: Object - - // default implementation does nothing - } -}); - -/*===== -Moveable.__MoveableArgs = declare([], { - // handle: Node||String - // A node (or node's id), which is used as a mouse handle. - // If omitted, the node itself is used as a handle. - handle: null, - - // delay: Number - // delay move by this number of pixels - delay: 0, - - // skip: Boolean - // skip move of form elements - skip: false, - - // mover: Object - // a constructor of custom Mover - mover: dnd.Mover -}); -=====*/ - -return Moveable; -}); diff --git a/lib/dojo/dnd/Mover.js.uncompressed.js b/lib/dojo/dnd/Mover.js.uncompressed.js deleted file mode 100644 index 6e9934a3a..000000000 --- a/lib/dojo/dnd/Mover.js.uncompressed.js +++ /dev/null @@ -1,124 +0,0 @@ -define("dojo/dnd/Mover", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/lang", "../sniff", "../_base/window", - "../dom", "../dom-geometry", "../dom-style", "../Evented", "../on", "../touch", "./common", "./autoscroll" -], function(array, declare, event, lang, has, win, dom, domGeom, domStyle, Evented, on, touch, dnd, autoscroll){ - -// module: -// dojo/dnd/Mover - -return declare("dojo.dnd.Mover", [Evented], { - // summary: - // an object which makes a node follow the mouse, or touch-drag on touch devices. - // Used as a default mover, and as a base class for custom movers. - - constructor: function(node, e, host){ - // node: Node - // a node (or node's id) to be moved - // e: Event - // a mouse event, which started the move; - // only pageX and pageY properties are used - // host: Object? - // object which implements the functionality of the move, - // and defines proper events (onMoveStart and onMoveStop) - this.node = dom.byId(node); - this.marginBox = {l: e.pageX, t: e.pageY}; - this.mouseButton = e.button; - var h = (this.host = host), d = node.ownerDocument; - this.events = [ - // At the start of a drag, onFirstMove is called, and then the following - // listener is disconnected. - on(d, touch.move, lang.hitch(this, "onFirstMove")), - - // These are called continually during the drag - on(d, touch.move, lang.hitch(this, "onMouseMove")), - - // And these are called at the end of the drag - on(d, touch.release, lang.hitch(this, "onMouseUp")), - - // cancel text selection and text dragging - on(d, "dragstart", event.stop), - on(d.body, "selectstart", event.stop) - ]; - - // Tell autoscroll that a drag is starting - autoscroll.autoScrollStart(d); - - // notify that the move has started - if(h && h.onMoveStart){ - h.onMoveStart(this); - } - }, - // mouse event processors - onMouseMove: function(e){ - // summary: - // event processor for onmousemove/ontouchmove - // e: Event - // mouse/touch event - autoscroll.autoScroll(e); - var m = this.marginBox; - this.host.onMove(this, {l: m.l + e.pageX, t: m.t + e.pageY}, e); - event.stop(e); - }, - onMouseUp: function(e){ - if(has("webkit") && has("mac") && this.mouseButton == 2 ? - e.button == 0 : this.mouseButton == e.button){ // TODO Should condition be met for touch devices, too? - this.destroy(); - } - event.stop(e); - }, - // utilities - onFirstMove: function(e){ - // summary: - // makes the node absolute; it is meant to be called only once. - // relative and absolutely positioned nodes are assumed to use pixel units - var s = this.node.style, l, t, h = this.host; - switch(s.position){ - case "relative": - case "absolute": - // assume that left and top values are in pixels already - l = Math.round(parseFloat(s.left)) || 0; - t = Math.round(parseFloat(s.top)) || 0; - break; - default: - s.position = "absolute"; // enforcing the absolute mode - var m = domGeom.getMarginBox(this.node); - // event.pageX/pageY (which we used to generate the initial - // margin box) includes padding and margin set on the body. - // However, setting the node's position to absolute and then - // doing domGeom.marginBox on it *doesn't* take that additional - // space into account - so we need to subtract the combined - // padding and margin. We use getComputedStyle and - // _getMarginBox/_getContentBox to avoid the extra lookup of - // the computed style. - var b = win.doc.body; - var bs = domStyle.getComputedStyle(b); - var bm = domGeom.getMarginBox(b, bs); - var bc = domGeom.getContentBox(b, bs); - l = m.l - (bc.l - bm.l); - t = m.t - (bc.t - bm.t); - break; - } - this.marginBox.l = l - this.marginBox.l; - this.marginBox.t = t - this.marginBox.t; - if(h && h.onFirstMove){ - h.onFirstMove(this, e); - } - - // Disconnect touch.move that call this function - this.events.shift().remove(); - }, - destroy: function(){ - // summary: - // stops the move, deletes all references, so the object can be garbage-collected - array.forEach(this.events, function(handle){ handle.remove(); }); - // undo global settings - var h = this.host; - if(h && h.onMoveStop){ - h.onMoveStop(this); - } - // destroy objects - this.events = this.node = this.host = null; - } -}); - -}); diff --git a/lib/dojo/dnd/Selector.js.uncompressed.js b/lib/dojo/dnd/Selector.js.uncompressed.js deleted file mode 100644 index ab0d61adb..000000000 --- a/lib/dojo/dnd/Selector.js.uncompressed.js +++ /dev/null @@ -1,331 +0,0 @@ -define("dojo/dnd/Selector", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/kernel", "../_base/lang", - "../dom", "../dom-construct", "../mouse", "../_base/NodeList", "../on", "../touch", "./common", "./Container" -], function(array, declare, event, kernel, lang, dom, domConstruct, mouse, NodeList, on, touch, dnd, Container){ - -// module: -// dojo/dnd/Selector - -/* - Container item states: - "" - an item is not selected - "Selected" - an item is selected - "Anchor" - an item is selected, and is an anchor for a "shift" selection -*/ - -/*===== -var __SelectorArgs = declare([Container.__ContainerArgs], { - // singular: Boolean - // allows selection of only one element, if true - singular: false, - - // autoSync: Boolean - // autosynchronizes the source with its list of DnD nodes, - autoSync: false -}); -=====*/ - -var Selector = declare("dojo.dnd.Selector", Container, { - // summary: - // a Selector object, which knows how to select its children - - /*===== - // selection: Set - // The set of id's that are currently selected, such that this.selection[id] == 1 - // if the node w/that id is selected. Can iterate over selected node's id's like: - // | for(var id in this.selection) - selection: {}, - =====*/ - - constructor: function(node, params){ - // summary: - // constructor of the Selector - // node: Node||String - // node or node's id to build the selector on - // params: __SelectorArgs? - // a dictionary of parameters - if(!params){ params = {}; } - this.singular = params.singular; - this.autoSync = params.autoSync; - // class-specific variables - this.selection = {}; - this.anchor = null; - this.simpleSelection = false; - // set up events - this.events.push( - on(this.node, touch.press, lang.hitch(this, "onMouseDown")), - on(this.node, touch.release, lang.hitch(this, "onMouseUp")) - ); - }, - - // object attributes (for markup) - singular: false, // is singular property - - // methods - getSelectedNodes: function(){ - // summary: - // returns a list (an array) of selected nodes - var t = new NodeList(); - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - t.push(dom.byId(i)); - } - return t; // NodeList - }, - selectNone: function(){ - // summary: - // unselects all items - return this._removeSelection()._removeAnchor(); // self - }, - selectAll: function(){ - // summary: - // selects all items - this.forInItems(function(data, id){ - this._addItemClass(dom.byId(id), "Selected"); - this.selection[id] = 1; - }, this); - return this._removeAnchor(); // self - }, - deleteSelectedNodes: function(){ - // summary: - // deletes all selected items - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - var n = dom.byId(i); - this.delItem(i); - domConstruct.destroy(n); - } - this.anchor = null; - this.selection = {}; - return this; // self - }, - forInSelectedItems: function(/*Function*/ f, /*Object?*/ o){ - // summary: - // iterates over selected items; - // see `dojo/dnd/Container.forInItems()` for details - o = o || kernel.global; - var s = this.selection, e = dnd._empty; - for(var i in s){ - if(i in e){ continue; } - f.call(o, this.getItem(i), i, this); - } - }, - sync: function(){ - // summary: - // sync up the node list with the data map - - Selector.superclass.sync.call(this); - - // fix the anchor - if(this.anchor){ - if(!this.getItem(this.anchor.id)){ - this.anchor = null; - } - } - - // fix the selection - var t = [], e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - if(!this.getItem(i)){ - t.push(i); - } - } - array.forEach(t, function(i){ - delete this.selection[i]; - }, this); - - return this; // self - }, - insertNodes: function(addSelected, data, before, anchor){ - // summary: - // inserts new data items (see `dojo/dnd/Container.insertNodes()` method for details) - // addSelected: Boolean - // all new nodes will be added to selected items, if true, no selection change otherwise - // data: Array - // a list of data items, which should be processed by the creator function - // before: Boolean - // insert before the anchor, if true, and after the anchor otherwise - // anchor: Node - // the anchor node to be used as a point of insertion - var oldCreator = this._normalizedCreator; - this._normalizedCreator = function(item, hint){ - var t = oldCreator.call(this, item, hint); - if(addSelected){ - if(!this.anchor){ - this.anchor = t.node; - this._removeItemClass(t.node, "Selected"); - this._addItemClass(this.anchor, "Anchor"); - }else if(this.anchor != t.node){ - this._removeItemClass(t.node, "Anchor"); - this._addItemClass(t.node, "Selected"); - } - this.selection[t.node.id] = 1; - }else{ - this._removeItemClass(t.node, "Selected"); - this._removeItemClass(t.node, "Anchor"); - } - return t; - }; - Selector.superclass.insertNodes.call(this, data, before, anchor); - this._normalizedCreator = oldCreator; - return this; // self - }, - destroy: function(){ - // summary: - // prepares the object to be garbage-collected - Selector.superclass.destroy.call(this); - this.selection = this.anchor = null; - }, - - // mouse events - onMouseDown: function(e){ - // summary: - // event processor for onmousedown - // e: Event - // mouse event - if(this.autoSync){ this.sync(); } - if(!this.current){ return; } - if(!this.singular && !dnd.getCopyKeyState(e) && !e.shiftKey && (this.current.id in this.selection)){ - this.simpleSelection = true; - if(mouse.isLeft(e)){ - // Accept the left button and stop the event. Stopping the event prevents text selection while - // dragging. However, don't stop the event on mobile because that prevents a click event, - // and also prevents scroll (see #15838). - // For IE we don't stop event when multiple buttons are pressed. - event.stop(e); - } - return; - } - if(!this.singular && e.shiftKey){ - if(!dnd.getCopyKeyState(e)){ - this._removeSelection(); - } - var c = this.getAllNodes(); - if(c.length){ - if(!this.anchor){ - this.anchor = c[0]; - this._addItemClass(this.anchor, "Anchor"); - } - this.selection[this.anchor.id] = 1; - if(this.anchor != this.current){ - var i = 0, node; - for(; i < c.length; ++i){ - node = c[i]; - if(node == this.anchor || node == this.current){ break; } - } - for(++i; i < c.length; ++i){ - node = c[i]; - if(node == this.anchor || node == this.current){ break; } - this._addItemClass(node, "Selected"); - this.selection[node.id] = 1; - } - this._addItemClass(this.current, "Selected"); - this.selection[this.current.id] = 1; - } - } - }else{ - if(this.singular){ - if(this.anchor == this.current){ - if(dnd.getCopyKeyState(e)){ - this.selectNone(); - } - }else{ - this.selectNone(); - this.anchor = this.current; - this._addItemClass(this.anchor, "Anchor"); - this.selection[this.current.id] = 1; - } - }else{ - if(dnd.getCopyKeyState(e)){ - if(this.anchor == this.current){ - delete this.selection[this.anchor.id]; - this._removeAnchor(); - }else{ - if(this.current.id in this.selection){ - this._removeItemClass(this.current, "Selected"); - delete this.selection[this.current.id]; - }else{ - if(this.anchor){ - this._removeItemClass(this.anchor, "Anchor"); - this._addItemClass(this.anchor, "Selected"); - } - this.anchor = this.current; - this._addItemClass(this.current, "Anchor"); - this.selection[this.current.id] = 1; - } - } - }else{ - if(!(this.current.id in this.selection)){ - this.selectNone(); - this.anchor = this.current; - this._addItemClass(this.current, "Anchor"); - this.selection[this.current.id] = 1; - } - } - } - } - event.stop(e); - }, - onMouseUp: function(/*===== e =====*/){ - // summary: - // event processor for onmouseup - // e: Event - // mouse event - if(!this.simpleSelection){ return; } - this.simpleSelection = false; - this.selectNone(); - if(this.current){ - this.anchor = this.current; - this._addItemClass(this.anchor, "Anchor"); - this.selection[this.current.id] = 1; - } - }, - onMouseMove: function(/*===== e =====*/){ - // summary: - // event processor for onmousemove - // e: Event - // mouse event - this.simpleSelection = false; - }, - - // utilities - onOverEvent: function(){ - // summary: - // this function is called once, when mouse is over our container - this.onmousemoveEvent = on(this.node, touch.move, lang.hitch(this, "onMouseMove")); - }, - onOutEvent: function(){ - // summary: - // this function is called once, when mouse is out of our container - if(this.onmousemoveEvent){ - this.onmousemoveEvent.remove(); - delete this.onmousemoveEvent; - } - }, - _removeSelection: function(){ - // summary: - // unselects all items - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - var node = dom.byId(i); - if(node){ this._removeItemClass(node, "Selected"); } - } - this.selection = {}; - return this; // self - }, - _removeAnchor: function(){ - if(this.anchor){ - this._removeItemClass(this.anchor, "Anchor"); - this.anchor = null; - } - return this; // self - } -}); - -return Selector; - -}); diff --git a/lib/dojo/dnd/Source.js.uncompressed.js b/lib/dojo/dnd/Source.js.uncompressed.js deleted file mode 100644 index a99d505bb..000000000 --- a/lib/dojo/dnd/Source.js.uncompressed.js +++ /dev/null @@ -1,506 +0,0 @@ -define("dojo/dnd/Source", [ - "../_base/array", "../_base/connect", "../_base/declare", "../_base/kernel", "../_base/lang", - "../dom-class", "../dom-geometry", "../mouse", "../ready", "../topic", - "./common", "./Selector", "./Manager" -], function(array, connect, declare, kernel, lang, domClass, domGeom, mouse, ready, topic, - dnd, Selector, Manager){ - -// module: -// dojo/dnd/Source - -/* - Container property: - "Horizontal"- if this is the horizontal container - Source states: - "" - normal state - "Moved" - this source is being moved - "Copied" - this source is being copied - Target states: - "" - normal state - "Disabled" - the target cannot accept an avatar - Target anchor state: - "" - item is not selected - "Before" - insert point is before the anchor - "After" - insert point is after the anchor -*/ - -/*===== -var __SourceArgs = { - // summary: - // a dict of parameters for DnD Source configuration. Note that any - // property on Source elements may be configured, but this is the - // short-list - // isSource: Boolean? - // can be used as a DnD source. Defaults to true. - // accept: Array? - // list of accepted types (text strings) for a target; defaults to - // ["text"] - // autoSync: Boolean - // if true refreshes the node list on every operation; false by default - // copyOnly: Boolean? - // copy items, if true, use a state of Ctrl key otherwise, - // see selfCopy and selfAccept for more details - // delay: Number - // the move delay in pixels before detecting a drag; 0 by default - // horizontal: Boolean? - // a horizontal container, if true, vertical otherwise or when omitted - // selfCopy: Boolean? - // copy items by default when dropping on itself, - // false by default, works only if copyOnly is true - // selfAccept: Boolean? - // accept its own items when copyOnly is true, - // true by default, works only if copyOnly is true - // withHandles: Boolean? - // allows dragging only by handles, false by default - // generateText: Boolean? - // generate text node for drag and drop, true by default -}; -=====*/ - -// For back-compat, remove in 2.0. -if(!kernel.isAsync){ - ready(0, function(){ - var requires = ["dojo/dnd/AutoSource", "dojo/dnd/Target"]; - require(requires); // use indirection so modules not rolled into a build - }); -} - -var Source = declare("dojo.dnd.Source", Selector, { - // summary: - // a Source object, which can be used as a DnD source, or a DnD target - - // object attributes (for markup) - isSource: true, - horizontal: false, - copyOnly: false, - selfCopy: false, - selfAccept: true, - skipForm: false, - withHandles: false, - autoSync: false, - delay: 0, // pixels - accept: ["text"], - generateText: true, - - constructor: function(/*DOMNode|String*/ node, /*__SourceArgs?*/ params){ - // summary: - // a constructor of the Source - // node: - // node or node's id to build the source on - // params: - // any property of this class may be configured via the params - // object which is mixed-in to the `dojo/dnd/Source` instance - lang.mixin(this, lang.mixin({}, params)); - var type = this.accept; - if(type.length){ - this.accept = {}; - for(var i = 0; i < type.length; ++i){ - this.accept[type[i]] = 1; - } - } - // class-specific variables - this.isDragging = false; - this.mouseDown = false; - this.targetAnchor = null; - this.targetBox = null; - this.before = true; - this._lastX = 0; - this._lastY = 0; - // states - this.sourceState = ""; - if(this.isSource){ - domClass.add(this.node, "dojoDndSource"); - } - this.targetState = ""; - if(this.accept){ - domClass.add(this.node, "dojoDndTarget"); - } - if(this.horizontal){ - domClass.add(this.node, "dojoDndHorizontal"); - } - // set up events - this.topics = [ - topic.subscribe("/dnd/source/over", lang.hitch(this, "onDndSourceOver")), - topic.subscribe("/dnd/start", lang.hitch(this, "onDndStart")), - topic.subscribe("/dnd/drop", lang.hitch(this, "onDndDrop")), - topic.subscribe("/dnd/cancel", lang.hitch(this, "onDndCancel")) - ]; - }, - - // methods - checkAcceptance: function(source, nodes){ - // summary: - // checks if the target can accept nodes from this source - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - if(this == source){ - return !this.copyOnly || this.selfAccept; - } - for(var i = 0; i < nodes.length; ++i){ - var type = source.getItem(nodes[i].id).type; - // type instanceof Array - var flag = false; - for(var j = 0; j < type.length; ++j){ - if(type[j] in this.accept){ - flag = true; - break; - } - } - if(!flag){ - return false; // Boolean - } - } - return true; // Boolean - }, - copyState: function(keyPressed, self){ - // summary: - // Returns true if we need to copy items, false to move. - // It is separated to be overwritten dynamically, if needed. - // keyPressed: Boolean - // the "copy" key was pressed - // self: Boolean? - // optional flag that means that we are about to drop on itself - - if(keyPressed){ return true; } - if(arguments.length < 2){ - self = this == Manager.manager().target; - } - if(self){ - if(this.copyOnly){ - return this.selfCopy; - } - }else{ - return this.copyOnly; - } - return false; // Boolean - }, - destroy: function(){ - // summary: - // prepares the object to be garbage-collected - Source.superclass.destroy.call(this); - array.forEach(this.topics, function(t){t.remove();}); - this.targetAnchor = null; - }, - - // mouse event processors - onMouseMove: function(e){ - // summary: - // event processor for onmousemove - // e: Event - // mouse event - if(this.isDragging && this.targetState == "Disabled"){ return; } - Source.superclass.onMouseMove.call(this, e); - var m = Manager.manager(); - if(!this.isDragging){ - if(this.mouseDown && this.isSource && - (Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay)){ - var nodes = this.getSelectedNodes(); - if(nodes.length){ - m.startDrag(this, nodes, this.copyState(dnd.getCopyKeyState(e), true)); - } - } - } - if(this.isDragging){ - // calculate before/after - var before = false; - if(this.current){ - if(!this.targetBox || this.targetAnchor != this.current){ - this.targetBox = domGeom.position(this.current, true); - } - if(this.horizontal){ - // In LTR mode, the left part of the object means "before", but in RTL mode it means "after". - before = (e.pageX - this.targetBox.x < this.targetBox.w / 2) == domGeom.isBodyLtr(this.current.ownerDocument); - }else{ - before = (e.pageY - this.targetBox.y) < (this.targetBox.h / 2); - } - } - if(this.current != this.targetAnchor || before != this.before){ - this._markTargetAnchor(before); - m.canDrop(!this.current || m.source != this || !(this.current.id in this.selection)); - } - } - }, - onMouseDown: function(e){ - // summary: - // event processor for onmousedown - // e: Event - // mouse event - if(!this.mouseDown && this._legalMouseDown(e) && (!this.skipForm || !dnd.isFormElement(e))){ - this.mouseDown = true; - this._lastX = e.pageX; - this._lastY = e.pageY; - Source.superclass.onMouseDown.call(this, e); - } - }, - onMouseUp: function(e){ - // summary: - // event processor for onmouseup - // e: Event - // mouse event - if(this.mouseDown){ - this.mouseDown = false; - Source.superclass.onMouseUp.call(this, e); - } - }, - - // topic event processors - onDndSourceOver: function(source){ - // summary: - // topic event processor for /dnd/source/over, called when detected a current source - // source: Object - // the source which has the mouse over it - if(this !== source){ - this.mouseDown = false; - if(this.targetAnchor){ - this._unmarkTargetAnchor(); - } - }else if(this.isDragging){ - var m = Manager.manager(); - m.canDrop(this.targetState != "Disabled" && (!this.current || m.source != this || !(this.current.id in this.selection))); - } - }, - onDndStart: function(source, nodes, copy){ - // summary: - // topic event processor for /dnd/start, called to initiate the DnD operation - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - if(this.autoSync){ this.sync(); } - if(this.isSource){ - this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : ""); - } - var accepted = this.accept && this.checkAcceptance(source, nodes); - this._changeState("Target", accepted ? "" : "Disabled"); - if(this == source){ - Manager.manager().overSource(this); - } - this.isDragging = true; - }, - onDndDrop: function(source, nodes, copy, target){ - // summary: - // topic event processor for /dnd/drop, called to finish the DnD operation - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - // target: Object - // the target which accepts items - if(this == target){ - // this one is for us => move nodes! - this.onDrop(source, nodes, copy); - } - this.onDndCancel(); - }, - onDndCancel: function(){ - // summary: - // topic event processor for /dnd/cancel, called to cancel the DnD operation - if(this.targetAnchor){ - this._unmarkTargetAnchor(); - this.targetAnchor = null; - } - this.before = true; - this.isDragging = false; - this.mouseDown = false; - this._changeState("Source", ""); - this._changeState("Target", ""); - }, - - // local events - onDrop: function(source, nodes, copy){ - // summary: - // called only on the current target, when drop is performed - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - - if(this != source){ - this.onDropExternal(source, nodes, copy); - }else{ - this.onDropInternal(nodes, copy); - } - }, - onDropExternal: function(source, nodes, copy){ - // summary: - // called only on the current target, when drop is performed - // from an external source - // source: Object - // the source which provides items - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - - var oldCreator = this._normalizedCreator; - // transferring nodes from the source to the target - if(this.creator){ - // use defined creator - this._normalizedCreator = function(node, hint){ - return oldCreator.call(this, source.getItem(node.id).data, hint); - }; - }else{ - // we have no creator defined => move/clone nodes - if(copy){ - // clone nodes - this._normalizedCreator = function(node /*=====, hint =====*/){ - var t = source.getItem(node.id); - var n = node.cloneNode(true); - n.id = dnd.getUniqueId(); - return {node: n, data: t.data, type: t.type}; - }; - }else{ - // move nodes - this._normalizedCreator = function(node /*=====, hint =====*/){ - var t = source.getItem(node.id); - source.delItem(node.id); - return {node: node, data: t.data, type: t.type}; - }; - } - } - this.selectNone(); - if(!copy && !this.creator){ - source.selectNone(); - } - this.insertNodes(true, nodes, this.before, this.current); - if(!copy && this.creator){ - source.deleteSelectedNodes(); - } - this._normalizedCreator = oldCreator; - }, - onDropInternal: function(nodes, copy){ - // summary: - // called only on the current target, when drop is performed - // from the same target/source - // nodes: Array - // the list of transferred items - // copy: Boolean - // copy items, if true, move items otherwise - - var oldCreator = this._normalizedCreator; - // transferring nodes within the single source - if(this.current && this.current.id in this.selection){ - // do nothing - return; - } - if(copy){ - if(this.creator){ - // create new copies of data items - this._normalizedCreator = function(node, hint){ - return oldCreator.call(this, this.getItem(node.id).data, hint); - }; - }else{ - // clone nodes - this._normalizedCreator = function(node/*=====, hint =====*/){ - var t = this.getItem(node.id); - var n = node.cloneNode(true); - n.id = dnd.getUniqueId(); - return {node: n, data: t.data, type: t.type}; - }; - } - }else{ - // move nodes - if(!this.current){ - // do nothing - return; - } - this._normalizedCreator = function(node /*=====, hint =====*/){ - var t = this.getItem(node.id); - return {node: node, data: t.data, type: t.type}; - }; - } - this._removeSelection(); - this.insertNodes(true, nodes, this.before, this.current); - this._normalizedCreator = oldCreator; - }, - onDraggingOver: function(){ - // summary: - // called during the active DnD operation, when items - // are dragged over this target, and it is not disabled - }, - onDraggingOut: function(){ - // summary: - // called during the active DnD operation, when items - // are dragged away from this target, and it is not disabled - }, - - // utilities - onOverEvent: function(){ - // summary: - // this function is called once, when mouse is over our container - Source.superclass.onOverEvent.call(this); - Manager.manager().overSource(this); - if(this.isDragging && this.targetState != "Disabled"){ - this.onDraggingOver(); - } - }, - onOutEvent: function(){ - // summary: - // this function is called once, when mouse is out of our container - Source.superclass.onOutEvent.call(this); - Manager.manager().outSource(this); - if(this.isDragging && this.targetState != "Disabled"){ - this.onDraggingOut(); - } - }, - _markTargetAnchor: function(before){ - // summary: - // assigns a class to the current target anchor based on "before" status - // before: Boolean - // insert before, if true, after otherwise - if(this.current == this.targetAnchor && this.before == before){ return; } - if(this.targetAnchor){ - this._removeItemClass(this.targetAnchor, this.before ? "Before" : "After"); - } - this.targetAnchor = this.current; - this.targetBox = null; - this.before = before; - if(this.targetAnchor){ - this._addItemClass(this.targetAnchor, this.before ? "Before" : "After"); - } - }, - _unmarkTargetAnchor: function(){ - // summary: - // removes a class of the current target anchor based on "before" status - if(!this.targetAnchor){ return; } - this._removeItemClass(this.targetAnchor, this.before ? "Before" : "After"); - this.targetAnchor = null; - this.targetBox = null; - this.before = true; - }, - _markDndStatus: function(copy){ - // summary: - // changes source's state based on "copy" status - this._changeState("Source", copy ? "Copied" : "Moved"); - }, - _legalMouseDown: function(e){ - // summary: - // checks if user clicked on "approved" items - // e: Event - // mouse event - - // accept only the left mouse button, or the left finger - if(e.type != "touchstart" && !mouse.isLeft(e)){ return false; } - - if(!this.withHandles){ return true; } - - // check for handles - for(var node = e.target; node && node !== this.node; node = node.parentNode){ - if(domClass.contains(node, "dojoDndHandle")){ return true; } - if(domClass.contains(node, "dojoDndItem") || domClass.contains(node, "dojoDndIgnore")){ break; } - } - return false; // Boolean - } -}); - -return Source; - -}); diff --git a/lib/dojo/dnd/Target.js.uncompressed.js b/lib/dojo/dnd/Target.js.uncompressed.js deleted file mode 100644 index 5a7256d6e..000000000 --- a/lib/dojo/dnd/Target.js.uncompressed.js +++ /dev/null @@ -1,13 +0,0 @@ -define("dojo/dnd/Target", [ "../_base/declare", "../dom-class", "./Source" ], function(declare, domClass, Source){ - return declare("dojo.dnd.Target", Source, { - // summary: - // a Target object, which can be used as a DnD target - - constructor: function(/*===== node, params =====*/){ - // summary: - // a constructor of the Target --- see the `dojo/dnd/Source` constructor for details - this.isSource = false; - domClass.remove(this.node, "dojoDndSource"); - } - }); -}); diff --git a/lib/dojo/dnd/TimedMoveable.js.uncompressed.js b/lib/dojo/dnd/TimedMoveable.js.uncompressed.js deleted file mode 100644 index c496296fc..000000000 --- a/lib/dojo/dnd/TimedMoveable.js.uncompressed.js +++ /dev/null @@ -1,64 +0,0 @@ -define("dojo/dnd/TimedMoveable", ["../_base/declare", "./Moveable" /*=====, "./Mover" =====*/], function(declare, Moveable /*=====, Mover =====*/){ - // module: - // dojo/dnd/TimedMoveable - - /*===== - var __TimedMoveableArgs = declare([Moveable.__MoveableArgs], { - // timeout: Number - // delay move by this number of ms, - // accumulating position changes during the timeout - timeout: 0 - }); - =====*/ - - // precalculate long expressions - var oldOnMove = Moveable.prototype.onMove; - - return declare("dojo.dnd.TimedMoveable", Moveable, { - // summary: - // A specialized version of Moveable to support an FPS throttling. - // This class puts an upper restriction on FPS, which may reduce - // the CPU load. The additional parameter "timeout" regulates - // the delay before actually moving the moveable object. - - // object attributes (for markup) - timeout: 40, // in ms, 40ms corresponds to 25 fps - - constructor: function(node, params){ - // summary: - // an object that makes a node moveable with a timer - // node: Node||String - // a node (or node's id) to be moved - // params: __TimedMoveableArgs - // object with additional parameters. - - // sanitize parameters - if(!params){ params = {}; } - if(params.timeout && typeof params.timeout == "number" && params.timeout >= 0){ - this.timeout = params.timeout; - } - }, - - onMoveStop: function(/*Mover*/ mover){ - if(mover._timer){ - // stop timer - clearTimeout(mover._timer); - // reflect the last received position - oldOnMove.call(this, mover, mover._leftTop); - } - Moveable.prototype.onMoveStop.apply(this, arguments); - }, - onMove: function(/*Mover*/ mover, /*Object*/ leftTop){ - mover._leftTop = leftTop; - if(!mover._timer){ - var _t = this; // to avoid using dojo.hitch() - mover._timer = setTimeout(function(){ - // we don't have any pending requests - mover._timer = null; - // reflect the last received position - oldOnMove.call(_t, mover, mover._leftTop); - }, this.timeout); - } - } - }); -}); diff --git a/lib/dojo/dnd/autoscroll.js.uncompressed.js b/lib/dojo/dnd/autoscroll.js.uncompressed.js deleted file mode 100644 index 29fd413f5..000000000 --- a/lib/dojo/dnd/autoscroll.js.uncompressed.js +++ /dev/null @@ -1,149 +0,0 @@ -define("dojo/dnd/autoscroll", ["../_base/lang", "../sniff", "../_base/window", "../dom-geometry", "../dom-style", "../window"], - function(lang, has, win, domGeom, domStyle, winUtils){ - -// module: -// dojo/dnd/autoscroll - -var exports = { - // summary: - // Used by dojo/dnd/Manager to scroll document or internal node when the user - // drags near the edge of the viewport or a scrollable node -}; -lang.setObject("dojo.dnd.autoscroll", exports); - -exports.getViewport = winUtils.getBox; - -exports.V_TRIGGER_AUTOSCROLL = 32; -exports.H_TRIGGER_AUTOSCROLL = 32; - -exports.V_AUTOSCROLL_VALUE = 16; -exports.H_AUTOSCROLL_VALUE = 16; - -// These are set by autoScrollStart(). -// Set to default values in case autoScrollStart() isn't called. (back-compat, remove for 2.0) -var viewport, - doc = win.doc, - maxScrollTop = Infinity, - maxScrollLeft = Infinity; - -exports.autoScrollStart = function(d){ - // summary: - // Called at the start of a drag. - // d: Document - // The document of the node being dragged. - - doc = d; - viewport = winUtils.getBox(doc); - - // Save height/width of document at start of drag, before it gets distorted by a user dragging an avatar past - // the document's edge - var html = win.body(doc).parentNode; - maxScrollTop = Math.max(html.scrollHeight - viewport.h, 0); - maxScrollLeft = Math.max(html.scrollWidth - viewport.w, 0); // usually 0 -}; - -exports.autoScroll = function(e){ - // summary: - // a handler for mousemove and touchmove events, which scrolls the window, if - // necessary - // e: Event - // mousemove/touchmove event - - // FIXME: needs more docs! - var v = viewport || winUtils.getBox(doc), // getBox() call for back-compat, in case autoScrollStart() wasn't called - html = win.body(doc).parentNode, - dx = 0, dy = 0; - if(e.clientX < exports.H_TRIGGER_AUTOSCROLL){ - dx = -exports.H_AUTOSCROLL_VALUE; - }else if(e.clientX > v.w - exports.H_TRIGGER_AUTOSCROLL){ - dx = Math.min(exports.H_AUTOSCROLL_VALUE, maxScrollLeft - html.scrollLeft); // don't scroll past edge of doc - } - if(e.clientY < exports.V_TRIGGER_AUTOSCROLL){ - dy = -exports.V_AUTOSCROLL_VALUE; - }else if(e.clientY > v.h - exports.V_TRIGGER_AUTOSCROLL){ - dy = Math.min(exports.V_AUTOSCROLL_VALUE, maxScrollTop - html.scrollTop); // don't scroll past edge of doc - } - window.scrollBy(dx, dy); -}; - -exports._validNodes = {"div": 1, "p": 1, "td": 1}; -exports._validOverflow = {"auto": 1, "scroll": 1}; - -exports.autoScrollNodes = function(e){ - // summary: - // a handler for mousemove and touchmove events, which scrolls the first available - // Dom element, it falls back to exports.autoScroll() - // e: Event - // mousemove/touchmove event - - // FIXME: needs more docs! - - var b, t, w, h, rx, ry, dx = 0, dy = 0, oldLeft, oldTop; - - for(var n = e.target; n;){ - if(n.nodeType == 1 && (n.tagName.toLowerCase() in exports._validNodes)){ - var s = domStyle.getComputedStyle(n), - overflow = (s.overflow.toLowerCase() in exports._validOverflow), - overflowX = (s.overflowX.toLowerCase() in exports._validOverflow), - overflowY = (s.overflowY.toLowerCase() in exports._validOverflow); - if(overflow || overflowX || overflowY){ - b = domGeom.getContentBox(n, s); - t = domGeom.position(n, true); - } - // overflow-x - if(overflow || overflowX){ - w = Math.min(exports.H_TRIGGER_AUTOSCROLL, b.w / 2); - rx = e.pageX - t.x; - if(has("webkit") || has("opera")){ - // FIXME: this code should not be here, it should be taken into account - // either by the event fixing code, or the domGeom.position() - // FIXME: this code doesn't work on Opera 9.5 Beta - rx += win.body().scrollLeft; - } - dx = 0; - if(rx > 0 && rx < b.w){ - if(rx < w){ - dx = -w; - }else if(rx > b.w - w){ - dx = w; - } - oldLeft = n.scrollLeft; - n.scrollLeft = n.scrollLeft + dx; - } - } - // overflow-y - if(overflow || overflowY){ - //console.log(b.l, b.t, t.x, t.y, n.scrollLeft, n.scrollTop); - h = Math.min(exports.V_TRIGGER_AUTOSCROLL, b.h / 2); - ry = e.pageY - t.y; - if(has("webkit") || has("opera")){ - // FIXME: this code should not be here, it should be taken into account - // either by the event fixing code, or the domGeom.position() - // FIXME: this code doesn't work on Opera 9.5 Beta - ry += win.body().scrollTop; - } - dy = 0; - if(ry > 0 && ry < b.h){ - if(ry < h){ - dy = -h; - }else if(ry > b.h - h){ - dy = h; - } - oldTop = n.scrollTop; - n.scrollTop = n.scrollTop + dy; - } - } - if(dx || dy){ return; } - } - try{ - n = n.parentNode; - }catch(x){ - n = null; - } - } - exports.autoScroll(e); -}; - -return exports; - -}); diff --git a/lib/dojo/dnd/common.js.uncompressed.js b/lib/dojo/dnd/common.js.uncompressed.js deleted file mode 100644 index d59e2ea57..000000000 --- a/lib/dojo/dnd/common.js.uncompressed.js +++ /dev/null @@ -1,42 +0,0 @@ -define("dojo/dnd/common", ["../_base/connect", "../_base/kernel", "../_base/lang", "../dom"], - function(connect, kernel, lang, dom){ - -// module: -// dojo/dnd/common - -var exports = lang.getObject("dojo.dnd", true); -/*===== -// TODO: for 2.0, replace line above with this code. -var exports = { - // summary: - // TODOC -}; -=====*/ - -exports.getCopyKeyState = connect.isCopyKey; - -exports._uniqueId = 0; -exports.getUniqueId = function(){ - // summary: - // returns a unique string for use with any DOM element - var id; - do{ - id = kernel._scopeName + "Unique" + (++exports._uniqueId); - }while(dom.byId(id)); - return id; -}; - -exports._empty = {}; - -exports.isFormElement = function(/*Event*/ e){ - // summary: - // returns true if user clicked on a form element - var t = e.target; - if(t.nodeType == 3 /*TEXT_NODE*/){ - t = t.parentNode; - } - return " button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0; // Boolean -}; - -return exports; -}); diff --git a/lib/dojo/dnd/move.js.uncompressed.js b/lib/dojo/dnd/move.js.uncompressed.js deleted file mode 100644 index ec958f26b..000000000 --- a/lib/dojo/dnd/move.js.uncompressed.js +++ /dev/null @@ -1,147 +0,0 @@ -define("dojo/dnd/move", [ - "../_base/declare", - "../dom-geometry", "../dom-style", - "./common", "./Mover", "./Moveable" -], function(declare, domGeom, domStyle, dnd, Mover, Moveable){ - -// module: -// dojo/dnd/move - -/*===== -var __constrainedMoveableArgs = declare([Moveable.__MoveableArgs], { - // constraints: Function - // Calculates a constraint box. - // It is called in a context of the moveable object. - constraints: function(){}, - - // within: Boolean - // restrict move within boundaries. - within: false -}); -=====*/ - -var constrainedMoveable = declare("dojo.dnd.move.constrainedMoveable", Moveable, { - // object attributes (for markup) - constraints: function(){}, - within: false, - - constructor: function(node, params){ - // summary: - // an object that makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __constrainedMoveableArgs? - // an optional object with additional parameters; - // the rest is passed to the base class - if(!params){ params = {}; } - this.constraints = params.constraints; - this.within = params.within; - }, - onFirstMove: function(/*Mover*/ mover){ - // summary: - // called during the very first move notification; - // can be used to initialize coordinates, can be overwritten. - var c = this.constraintBox = this.constraints.call(this, mover); - c.r = c.l + c.w; - c.b = c.t + c.h; - if(this.within){ - var mb = domGeom.getMarginSize(mover.node); - c.r -= mb.w; - c.b -= mb.h; - } - }, - onMove: function(/*Mover*/ mover, /*Object*/ leftTop){ - // summary: - // called during every move notification; - // should actually move the node; can be overwritten. - var c = this.constraintBox, s = mover.node.style; - this.onMoving(mover, leftTop); - leftTop.l = leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l; - leftTop.t = leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t; - s.left = leftTop.l + "px"; - s.top = leftTop.t + "px"; - this.onMoved(mover, leftTop); - } -}); - -/*===== -var __boxConstrainedMoveableArgs = declare([__constrainedMoveableArgs], { - // box: Object - // a constraint box - box: {} -}); -=====*/ - -var boxConstrainedMoveable = declare("dojo.dnd.move.boxConstrainedMoveable", constrainedMoveable, { - // box: - // object attributes (for markup) - box: {}, - - constructor: function(node, params){ - // summary: - // an object, which makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __boxConstrainedMoveableArgs? - // an optional object with parameters - var box = params && params.box; - this.constraints = function(){ return box; }; - } -}); - -/*===== -var __parentConstrainedMoveableArgs = declare( [__constrainedMoveableArgs], { - // area: String - // A parent's area to restrict the move. - // Can be "margin", "border", "padding", or "content". - area: "" -}); -=====*/ - -var parentConstrainedMoveable = declare("dojo.dnd.move.parentConstrainedMoveable", constrainedMoveable, { - // area: - // object attributes (for markup) - area: "content", - - constructor: function(node, params){ - // summary: - // an object, which makes a node moveable - // node: Node - // a node (or node's id) to be moved - // params: __parentConstrainedMoveableArgs? - // an optional object with parameters - var area = params && params.area; - this.constraints = function(){ - var n = this.node.parentNode, - s = domStyle.getComputedStyle(n), - mb = domGeom.getMarginBox(n, s); - if(area == "margin"){ - return mb; // Object - } - var t = domGeom.getMarginExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - if(area == "border"){ - return mb; // Object - } - t = domGeom.getBorderExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - if(area == "padding"){ - return mb; // Object - } - t = domGeom.getPadExtents(n, s); - mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h; - return mb; // Object - }; - } -}); - - -return { - // summary: - // TODOC - constrainedMoveable: constrainedMoveable, - boxConstrainedMoveable: boxConstrainedMoveable, - parentConstrainedMoveable: parentConstrainedMoveable -}; - -}); diff --git a/lib/dojo/dojo.js.uncompressed.js b/lib/dojo/dojo.js.uncompressed.js deleted file mode 100644 index 0d3bb7dcf..000000000 --- a/lib/dojo/dojo.js.uncompressed.js +++ /dev/null @@ -1,15485 +0,0 @@ -/* - Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved. - Available via Academic Free License >= 2.1 OR the modified BSD license. - see: http://dojotoolkit.org/license for details -*/ - -/* - This is an optimized version of Dojo, built for deployment and not for - development. To get sources and documentation, please visit: - - http://dojotoolkit.org -*/ - -(function( - userConfig, - defaultConfig -){ - // summary: - // This is the "source loader" and is the entry point for Dojo during development. You may also load Dojo with - // any AMD-compliant loader via the package main module dojo/main. - // description: - // This is the "source loader" for Dojo. It provides an AMD-compliant loader that can be configured - // to operate in either synchronous or asynchronous modes. After the loader is defined, dojo is loaded - // IAW the package main module dojo/main. In the event you wish to use a foreign loader, you may load dojo as a package - // via the package main module dojo/main and this loader is not required; see dojo/package.json for details. - // - // In order to keep compatibility with the v1.x line, this loader includes additional machinery that enables - // the dojo.provide, dojo.require et al API. This machinery is loaded by default, but may be dynamically removed - // via the has.js API and statically removed via the build system. - // - // This loader includes sniffing machinery to determine the environment; the following environments are supported: - // - // - browser - // - node.js - // - rhino - // - // This is the so-called "source loader". As such, it includes many optional features that may be discadred by - // building a customized verion with the build system. - - // Design and Implementation Notes - // - // This is a dojo-specific adaption of bdLoad, donated to the dojo foundation by Altoviso LLC. - // - // This function defines an AMD-compliant (http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition) - // loader that can be configured to operate in either synchronous or asynchronous modes. - // - // Since this machinery implements a loader, it does not have the luxury of using a load system and/or - // leveraging a utility library. This results in an unpleasantly long file; here is a road map of the contents: - // - // 1. Small library for use implementing the loader. - // 2. Define the has.js API; this is used throughout the loader to bracket features. - // 3. Define the node.js and rhino sniffs and sniff. - // 4. Define the loader's data. - // 5. Define the configuration machinery. - // 6. Define the script element sniffing machinery and sniff for configuration data. - // 7. Configure the loader IAW the provided user, default, and sniffing data. - // 8. Define the global require function. - // 9. Define the module resolution machinery. - // 10. Define the module and plugin module definition machinery - // 11. Define the script injection machinery. - // 12. Define the window load detection. - // 13. Define the logging API. - // 14. Define the tracing API. - // 16. Define the AMD define function. - // 17. Define the dojo v1.x provide/require machinery--so called "legacy" modes. - // 18. Publish global variables. - // - // Language and Acronyms and Idioms - // - // moduleId: a CJS module identifier, (used for public APIs) - // mid: moduleId (used internally) - // packageId: a package identifier (used for public APIs) - // pid: packageId (used internally); the implied system or default package has pid==="" - // pack: package is used internally to reference a package object (since javascript has reserved words including "package") - // prid: plugin resource identifier - // The integer constant 1 is used in place of true and 0 in place of false. - - // define a minimal library to help build the loader - var noop = function(){ - }, - - isEmpty = function(it){ - for(var p in it){ - return 0; - } - return 1; - }, - - toString = {}.toString, - - isFunction = function(it){ - return toString.call(it) == "[object Function]"; - }, - - isString = function(it){ - return toString.call(it) == "[object String]"; - }, - - isArray = function(it){ - return toString.call(it) == "[object Array]"; - }, - - forEach = function(vector, callback){ - if(vector){ - for(var i = 0; i < vector.length;){ - callback(vector[i++]); - } - } - }, - - mix = function(dest, src){ - for(var p in src){ - dest[p] = src[p]; - } - return dest; - }, - - makeError = function(error, info){ - return mix(new Error(error), {src:"dojoLoader", info:info}); - }, - - uidSeed = 1, - - uid = function(){ - // Returns a unique indentifier (within the lifetime of the document) of the form /_d+/. - return "_" + uidSeed++; - }, - - // FIXME: how to doc window.require() api - - // this will be the global require function; define it immediately so we can start hanging things off of it - req = function( - config, //(object, optional) hash of configuration properties - dependencies, //(array of commonjs.moduleId, optional) list of modules to be loaded before applying callback - callback //(function, optional) lamda expression to apply to module values implied by dependencies - ){ - return contextRequire(config, dependencies, callback, 0, req); - }, - - // the loader uses the has.js API to control feature inclusion/exclusion; define then use throughout - global = this, - - doc = global.document, - - element = doc && doc.createElement("DiV"), - - has = req.has = function(name){ - return isFunction(hasCache[name]) ? (hasCache[name] = hasCache[name](global, doc, element)) : hasCache[name]; - }, - - hasCache = has.cache = defaultConfig.hasCache; - - has.add = function(name, test, now, force){ - (hasCache[name]===undefined || force) && (hasCache[name] = test); - return now && has(name); - }; - - 0 && has.add("host-node", userConfig.has && "host-node" in userConfig.has ? - userConfig.has["host-node"] : - (typeof process == "object" && process.versions && process.versions.node && process.versions.v8)); - if( 0 ){ - // fixup the default config for node.js environment - require("./_base/configNode.js").config(defaultConfig); - // remember node's require (with respect to baseUrl==dojo's root) - defaultConfig.loaderPatch.nodeRequire = require; - } - - 0 && has.add("host-rhino", userConfig.has && "host-rhino" in userConfig.has ? - userConfig.has["host-rhino"] : - (typeof load == "function" && (typeof Packages == "function" || typeof Packages == "object"))); - if( 0 ){ - // owing to rhino's lame feature that hides the source of the script, give the user a way to specify the baseUrl... - for(var baseUrl = userConfig.baseUrl || ".", arg, rhinoArgs = this.arguments, i = 0; i < rhinoArgs.length;){ - arg = (rhinoArgs[i++] + "").split("="); - if(arg[0] == "baseUrl"){ - baseUrl = arg[1]; - break; - } - } - load(baseUrl + "/_base/configRhino.js"); - rhinoDojoConfig(defaultConfig, baseUrl, rhinoArgs); - } - - // userConfig has tests override defaultConfig has tests; do this after the environment detection because - // the environment detection usually sets some has feature values in the hasCache. - for(var p in userConfig.has){ - has.add(p, userConfig.has[p], 0, 1); - } - - // - // define the loader data - // - - // the loader will use these like symbols if the loader has the traceApi; otherwise - // define magic numbers so that modules can be provided as part of defaultConfig - var requested = 1, - arrived = 2, - nonmodule = 3, - executing = 4, - executed = 5; - - if( 0 ){ - // these make debugging nice; but using strings for symbols is a gross rookie error; don't do it for production code - requested = "requested"; - arrived = "arrived"; - nonmodule = "not-a-module"; - executing = "executing"; - executed = "executed"; - } - - var legacyMode = 0, - sync = "sync", - xd = "xd", - syncExecStack = [], - dojoRequirePlugin = 0, - checkDojoRequirePlugin = noop, - transformToAmd = noop, - getXhr; - if( 1 ){ - req.isXdUrl = noop; - - req.initSyncLoader = function(dojoRequirePlugin_, checkDojoRequirePlugin_, transformToAmd_){ - // the first dojo/_base/loader loaded gets to define these variables; they are designed to work - // in the presense of zero to many mapped dojo/_base/loaders - if(!dojoRequirePlugin){ - dojoRequirePlugin = dojoRequirePlugin_; - checkDojoRequirePlugin = checkDojoRequirePlugin_; - transformToAmd = transformToAmd_; - } - - return { - sync:sync, - requested:requested, - arrived:arrived, - nonmodule:nonmodule, - executing:executing, - executed:executed, - syncExecStack:syncExecStack, - modules:modules, - execQ:execQ, - getModule:getModule, - injectModule:injectModule, - setArrived:setArrived, - signal:signal, - finishExec:finishExec, - execModule:execModule, - dojoRequirePlugin:dojoRequirePlugin, - getLegacyMode:function(){return legacyMode;}, - guardCheckComplete:guardCheckComplete - }; - }; - - if( 1 ){ - // in legacy sync mode, the loader needs a minimal XHR library - - var locationProtocol = location.protocol, - locationHost = location.host; - req.isXdUrl = function(url){ - if(/^\./.test(url)){ - // begins with a dot is always relative to page URL; therefore not xdomain - return false; - } - if(/^\/\//.test(url)){ - // for v1.6- backcompat, url starting with // indicates xdomain - return true; - } - // get protocol and host - // \/+ takes care of the typical file protocol that looks like file:///drive/path/to/file - // locationHost is falsy if file protocol => if locationProtocol matches and is "file:", || will return false - var match = url.match(/^([^\/\:]+\:)\/+([^\/]+)/); - return match && (match[1] != locationProtocol || (locationHost && match[2] != locationHost)); - }; - - - // note: to get the file:// protocol to work in FF, you must set security.fileuri.strict_origin_policy to false in about:config - 1 || has.add("dojo-xhr-factory", 1); - has.add("dojo-force-activex-xhr", 1 && !doc.addEventListener && window.location.protocol == "file:"); - has.add("native-xhr", typeof XMLHttpRequest != "undefined"); - if(has("native-xhr") && !has("dojo-force-activex-xhr")){ - getXhr = function(){ - return new XMLHttpRequest(); - }; - }else{ - // if in the browser an old IE; find an xhr - for(var XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], progid, i = 0; i < 3;){ - try{ - progid = XMLHTTP_PROGIDS[i++]; - if(new ActiveXObject(progid)){ - // this progid works; therefore, use it from now on - break; - } - }catch(e){ - // squelch; we're just trying to find a good ActiveX progid - // if they all fail, then progid ends up as the last attempt and that will signal the error - // the first time the client actually tries to exec an xhr - } - } - getXhr = function(){ - return new ActiveXObject(progid); - }; - } - req.getXhr = getXhr; - - has.add("dojo-gettext-api", 1); - req.getText = function(url, async, onLoad){ - var xhr = getXhr(); - xhr.open('GET', fixupUrl(url), false); - xhr.send(null); - if(xhr.status == 200 || (!location.host && !xhr.status)){ - if(onLoad){ - onLoad(xhr.responseText, async); - } - }else{ - throw makeError("xhrFailed", xhr.status); - } - return xhr.responseText; - }; - } - }else{ - req.async = 1; - } - - // - // loader eval - // - var eval_ = - // use the function constructor so our eval is scoped close to (but not in) in the global space with minimal pollution - new Function('return eval(arguments[0]);'); - - req.eval = - function(text, hint){ - return eval_(text + "\r\n////@ sourceURL=" + hint); - }; - - // - // loader micro events API - // - var listenerQueues = {}, - error = "error", - signal = req.signal = function(type, args){ - var queue = listenerQueues[type]; - // notice we run a copy of the queue; this allows listeners to add/remove - // other listeners without affecting this particular signal - forEach(queue && queue.slice(0), function(listener){ - listener.apply(null, isArray(args) ? args : [args]); - }); - }, - on = req.on = function(type, listener){ - // notice a queue is not created until a client actually connects - var queue = listenerQueues[type] || (listenerQueues[type] = []); - queue.push(listener); - return { - remove:function(){ - for(var i = 0; i (alias, actual) - = [], - - paths - // CommonJS paths - = {}, - - pathsMapProg - // list of (from-path, to-path, regex, length) derived from paths; - // a "program" to apply paths; see computeMapProg - = [], - - packs - // a map from packageId to package configuration object; see fixupPackageInfo - = {}, - - map = req.map - // AMD map config variable; dojo/_base/kernel needs req.map to figure out the scope map - = {}, - - mapProgs - // vector of quads as described by computeMapProg; map-key is AMD map key, map-value is AMD map value - = [], - - modules - // A hash:(mid) --> (module-object) the module namespace - // - // pid: the package identifier to which the module belongs (e.g., "dojo"); "" indicates the system or default package - // mid: the fully-resolved (i.e., mappings have been applied) module identifier without the package identifier (e.g., "dojo/io/script") - // url: the URL from which the module was retrieved - // pack: the package object of the package to which the module belongs - // executed: 0 => not executed; executing => in the process of tranversing deps and running factory; executed => factory has been executed - // deps: the dependency vector for this module (vector of modules objects) - // def: the factory for this module - // result: the result of the running the factory for this module - // injected: (0 | requested | arrived) the status of the module; nonmodule means the resource did not call define - // load: plugin load function; applicable only for plugins - // - // Modules go through several phases in creation: - // - // 1. Requested: some other module's definition or a require application contained the requested module in - // its dependency vector or executing code explicitly demands a module via req.require. - // - // 2. Injected: a script element has been appended to the insert-point element demanding the resource implied by the URL - // - // 3. Loaded: the resource injected in [2] has been evalated. - // - // 4. Defined: the resource contained a define statement that advised the loader about the module. Notice that some - // resources may just contain a bundle of code and never formally define a module via define - // - // 5. Evaluated: the module was defined via define and the loader has evaluated the factory and computed a result. - = {}, - - cacheBust - // query string to append to module URLs to bust browser cache - = "", - - cache - // hash:(mid | url)-->(function | string) - // - // A cache of resources. The resources arrive via a config.cache object, which is a hash from either mid --> function or - // url --> string. The url key is distinguished from the mid key by always containing the prefix "url:". url keys as provided - // by config.cache always have a string value that represents the contents of the resource at the given url. mid keys as provided - // by configl.cache always have a function value that causes the same code to execute as if the module was script injected. - // - // Both kinds of key-value pairs are entered into cache via the function consumePendingCache, which may relocate keys as given - // by any mappings *iff* the config.cache was received as part of a module resource request. - // - // Further, for mid keys, the implied url is computed and the value is entered into that key as well. This allows mapped modules - // to retrieve cached items that may have arrived consequent to another namespace. - // - = {}, - - urlKeyPrefix - // the prefix to prepend to a URL key in the cache. - = "url:", - - pendingCacheInsert - // hash:(mid)-->(function) - // - // Gives a set of cache modules pending entry into cache. When cached modules are published to the loader, they are - // entered into pendingCacheInsert; modules are then pressed into cache upon (1) AMD define or (2) upon receiving another - // independent set of cached modules. (1) is the usual case, and this case allows normalizing mids given in the pending - // cache for the local configuration, possibly relocating modules. - = {}, - - dojoSniffConfig - // map of configuration variables - // give the data-dojo-config as sniffed from the document (if any) - = {}; - - if( 1 ){ - var consumePendingCacheInsert = function(referenceModule){ - var p, item, match, now, m; - for(p in pendingCacheInsert){ - item = pendingCacheInsert[p]; - match = p.match(/^url\:(.+)/); - if(match){ - cache[urlKeyPrefix + toUrl(match[1], referenceModule)] = item; - }else if(p=="*now"){ - now = item; - }else if(p!="*noref"){ - m = getModuleInfo(p, referenceModule); - cache[m.mid] = cache[urlKeyPrefix + m.url] = item; - } - } - if(now){ - now(createRequire(referenceModule)); - } - pendingCacheInsert = {}; - }, - - escapeString = function(s){ - return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function(c){ return "\\" + c; }); - }, - - computeMapProg = function(map, dest){ - // This routine takes a map as represented by a JavaScript object and initializes dest, a vector of - // quads of (map-key, map-value, refex-for-map-key, length-of-map-key), sorted decreasing by length- - // of-map-key. The regex looks for the map-key followed by either "/" or end-of-string at the beginning - // of a the search source. Notice the map-value is irrelevent to the algorithm - dest.splice(0, dest.length); - for(var p in map){ - dest.push([ - p, - map[p], - new RegExp("^" + escapeString(p) + "(\/|$)"), - p.length]); - } - dest.sort(function(lhs, rhs){ return rhs[3] - lhs[3]; }); - return dest; - }, - - fixupPackageInfo = function(packageInfo){ - // calculate the precise (name, location, main, mappings) for a package - var name = packageInfo.name; - if(!name){ - // packageInfo must be a string that gives the name - name = packageInfo; - packageInfo = {name:name}; - } - packageInfo = mix({main:"main"}, packageInfo); - packageInfo.location = packageInfo.location ? packageInfo.location : name; - - // packageMap is depricated in favor of AMD map - if(packageInfo.packageMap){ - map[name] = packageInfo.packageMap; - } - - if(!packageInfo.main.indexOf("./")){ - packageInfo.main = packageInfo.main.substring(2); - } - - // now that we've got a fully-resolved package object, push it into the configuration - packs[name] = packageInfo; - }, - - delayedModuleConfig - // module config cannot be consummed until the loader is completely initialized; therefore, all - // module config detected during booting is memorized and applied at the end of loader initialization - // TODO: this is a bit of a kludge; all config should be moved to end of loader initialization, but - // we'll delay this chore and do it with a final loader 1.x cleanup after the 2.x loader prototyping is complete - = [], - - - config = function(config, booting, referenceModule){ - for(var p in config){ - if(p=="waitSeconds"){ - req.waitms = (config[p] || 0) * 1000; - } - if(p=="cacheBust"){ - cacheBust = config[p] ? (isString(config[p]) ? config[p] : (new Date()).getTime() + "") : ""; - } - if(p=="baseUrl" || p=="combo"){ - req[p] = config[p]; - } - if( 1 && p=="async"){ - // falsy or "sync" => legacy sync loader - // "xd" => sync but loading xdomain tree and therefore loading asynchronously (not configurable, set automatically by the loader) - // "legacyAsync" => permanently in "xd" by choice - // "debugAtAllCosts" => trying to load everything via script injection (not implemented) - // otherwise, must be truthy => AMD - // legacyMode: sync | legacyAsync | xd | false - var mode = config[p]; - req.legacyMode = legacyMode = (isString(mode) && /sync|legacyAsync/.test(mode) ? mode : (!mode ? sync : false)); - req.async = !legacyMode; - } - if(config[p]!==hasCache){ - // accumulate raw config info for client apps which can use this to pass their own config - req.rawConfig[p] = config[p]; - p!="has" && has.add("config-"+p, config[p], 0, booting); - } - } - - // make sure baseUrl exists - if(!req.baseUrl){ - req.baseUrl = "./"; - } - // make sure baseUrl ends with a slash - if(!/\/$/.test(req.baseUrl)){ - req.baseUrl += "/"; - } - - // now do the special work for has, packages, packagePaths, paths, aliases, and cache - - for(p in config.has){ - has.add(p, config.has[p], 0, booting); - } - - // for each package found in any packages config item, augment the packs map owned by the loader - forEach(config.packages, fixupPackageInfo); - - // for each packagePath found in any packagePaths config item, augment the packageConfig - // packagePaths is depricated; remove in 2.0 - for(baseUrl in config.packagePaths){ - forEach(config.packagePaths[baseUrl], function(packageInfo){ - var location = baseUrl + "/" + packageInfo; - if(isString(packageInfo)){ - packageInfo = {name:packageInfo}; - } - packageInfo.location = location; - fixupPackageInfo(packageInfo); - }); - } - - // notice that computeMapProg treats the dest as a reference; therefore, if/when that variable - // is published (see dojo-publish-privates), the published variable will always hold a valid value. - - // this must come after all package processing since package processing may mutate map - computeMapProg(mix(map, config.map), mapProgs); - forEach(mapProgs, function(item){ - item[1] = computeMapProg(item[1], []); - if(item[0]=="*"){ - mapProgs.star = item; - } - }); - - // push in any paths and recompute the internal pathmap - computeMapProg(mix(paths, config.paths), pathsMapProg); - - // aliases - forEach(config.aliases, function(pair){ - if(isString(pair[0])){ - pair[0] = new RegExp("^" + escapeString(pair[0]) + "$"); - } - aliases.push(pair); - }); - - if(booting){ - delayedModuleConfig.push({config:config.config}); - }else{ - for(p in config.config){ - var module = getModule(p, referenceModule); - module.config = mix(module.config || {}, config.config[p]); - } - } - - // push in any new cache values - if(config.cache){ - consumePendingCacheInsert(); - pendingCacheInsert = config.cache; - if(config.cache["*noref"]){ - consumePendingCacheInsert(); - } - } - - signal("config", [config, req.rawConfig]); - }; - - // - // execute the various sniffs; userConfig can override and value - // - - if(has("dojo-cdn") || 1 ){ - // the sniff regex looks for a src attribute ending in dojo.js, optionally preceeded with a path. - // match[3] returns the path to dojo.js (if any) without the trailing slash. This is used for the - // dojo location on CDN deployments and baseUrl when either/both of these are not provided - // explicitly in the config data; this is the 1.6- behavior. - - var scripts = doc.getElementsByTagName("script"), - i = 0, - script, dojoDir, src, match; - while(i < scripts.length){ - script = scripts[i++]; - if((src = script.getAttribute("src")) && (match = src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){ - // sniff dojoDir and baseUrl - dojoDir = match[3] || ""; - defaultConfig.baseUrl = defaultConfig.baseUrl || dojoDir; - - // sniff configuration on attribute in script element - src = (script.getAttribute("data-dojo-config") || script.getAttribute("djConfig")); - if(src){ - dojoSniffConfig = req.eval("({ " + src + " })", "data-dojo-config"); - } - - // sniff requirejs attribute - if( 0 ){ - var dataMain = script.getAttribute("data-main"); - if(dataMain){ - dojoSniffConfig.deps = dojoSniffConfig.deps || [dataMain]; - } - } - break; - } - } - } - - if( 0 ){ - // pass down doh.testConfig from parent as if it were a data-dojo-config - try{ - if(window.parent != window && window.parent.require){ - var doh = window.parent.require("doh"); - doh && mix(dojoSniffConfig, doh.testConfig); - } - }catch(e){} - } - - // configure the loader; let the user override defaults - req.rawConfig = {}; - config(defaultConfig, 1); - - // do this before setting userConfig/sniffConfig to allow userConfig/sniff overrides - if(has("dojo-cdn")){ - packs.dojo.location = dojoDir; - if(dojoDir){ - dojoDir += "/"; - } - packs.dijit.location = dojoDir + "../dijit/"; - packs.dojox.location = dojoDir + "../dojox/"; - } - - config(userConfig, 1); - config(dojoSniffConfig, 1); - - }else{ - // no config API, assume defaultConfig has everything the loader needs...for the entire lifetime of the application - paths = defaultConfig.paths; - pathsMapProg = defaultConfig.pathsMapProg; - packs = defaultConfig.packs; - aliases = defaultConfig.aliases; - mapProgs = defaultConfig.mapProgs; - modules = defaultConfig.modules; - cache = defaultConfig.cache; - cacheBust = defaultConfig.cacheBust; - - // remember the default config for other processes (e.g., dojo/config) - req.rawConfig = defaultConfig; - } - - - if( 0 ){ - req.combo = req.combo || {add:noop}; - var comboPending = 0, - combosPending = [], - comboPendingTimer = null; - } - - - // build the loader machinery iaw configuration, including has feature tests - var injectDependencies = function(module){ - // checkComplete!=0 holds the idle signal; we're not idle if we're injecting dependencies - guardCheckComplete(function(){ - forEach(module.deps, injectModule); - if( 0 && comboPending && !comboPendingTimer){ - comboPendingTimer = setTimeout(function() { - comboPending = 0; - comboPendingTimer = null; - req.combo.done(function(mids, url) { - var onLoadCallback= function(){ - // defQ is a vector of module definitions 1-to-1, onto mids - runDefQ(0, mids); - checkComplete(); - }; - combosPending.push(mids); - injectingModule = mids; - req.injectUrl(url, onLoadCallback, mids); - injectingModule = 0; - }, req); - }, 0); - } - }); - }, - - contextRequire = function(a1, a2, a3, referenceModule, contextRequire){ - var module, syntheticMid; - if(isString(a1)){ - // signature is (moduleId) - module = getModule(a1, referenceModule, true); - if(module && module.executed){ - return module.result; - } - throw makeError("undefinedModule", a1); - } - if(!isArray(a1)){ - // a1 is a configuration - config(a1, 0, referenceModule); - - // juggle args; (a2, a3) may be (dependencies, callback) - a1 = a2; - a2 = a3; - } - if(isArray(a1)){ - // signature is (requestList [,callback]) - if(!a1.length){ - a2 && a2(); - }else{ - syntheticMid = "require*" + uid(); - - // resolve the request list with respect to the reference module - for(var mid, deps = [], i = 0; i < a1.length;){ - mid = a1[i++]; - deps.push(getModule(mid, referenceModule)); - } - - // construct a synthetic module to control execution of the requestList, and, optionally, callback - module = mix(makeModuleInfo("", syntheticMid, 0, ""), { - injected: arrived, - deps: deps, - def: a2 || noop, - require: referenceModule ? referenceModule.require : req, - gc: 1 //garbage collect - }); - modules[module.mid] = module; - - // checkComplete!=0 holds the idle signal; we're not idle if we're injecting dependencies - injectDependencies(module); - - // try to immediately execute - // if already traversing a factory tree, then strict causes circular dependency to abort the execution; maybe - // it's possible to execute this require later after the current traversal completes and avoid the circular dependency. - // ...but *always* insist on immediate in synch mode - var strict = checkCompleteGuard && legacyMode!=sync; - guardCheckComplete(function(){ - execModule(module, strict); - }); - if(!module.executed){ - // some deps weren't on board or circular dependency detected and strict; therefore, push into the execQ - execQ.push(module); - } - checkComplete(); - } - } - return contextRequire; - }, - - createRequire = function(module){ - if(!module){ - return req; - } - var result = module.require; - if(!result){ - result = function(a1, a2, a3){ - return contextRequire(a1, a2, a3, module, result); - }; - module.require = mix(result, req); - result.module = module; - result.toUrl = function(name){ - return toUrl(name, module); - }; - result.toAbsMid = function(mid){ - return toAbsMid(mid, module); - }; - if( 0 ){ - result.undef = function(mid){ - req.undef(mid, module); - }; - } - if( 1 ){ - result.syncLoadNls = function(mid){ - var nlsModuleInfo = getModuleInfo(mid, module), - nlsModule = modules[nlsModuleInfo.mid]; - if(!nlsModule || !nlsModule.executed){ - cached = cache[nlsModuleInfo.mid] || cache[urlKeyPrefix + nlsModuleInfo.url]; - if(cached){ - evalModuleText(cached); - nlsModule = modules[nlsModuleInfo.mid]; - } - } - return nlsModule && nlsModule.executed && nlsModule.result; - }; - } - - } - return result; - }, - - execQ = - // The list of modules that need to be evaluated. - [], - - defQ = - // The queue of define arguments sent to loader. - [], - - waiting = - // The set of modules upon which the loader is waiting for definition to arrive - {}, - - setRequested = function(module){ - module.injected = requested; - waiting[module.mid] = 1; - if(module.url){ - waiting[module.url] = module.pack || 1; - } - startTimer(); - }, - - setArrived = function(module){ - module.injected = arrived; - delete waiting[module.mid]; - if(module.url){ - delete waiting[module.url]; - } - if(isEmpty(waiting)){ - clearTimer(); - 1 && legacyMode==xd && (legacyMode = sync); - } - }, - - execComplete = req.idle = - // says the loader has completed (or not) its work - function(){ - return !defQ.length && isEmpty(waiting) && !execQ.length && !checkCompleteGuard; - }, - - runMapProg = function(targetMid, map){ - // search for targetMid in map; return the map item if found; falsy otherwise - if(map){ - for(var i = 0; i < map.length; i++){ - if(map[i][2].test(targetMid)){ - return map[i]; - } - } - } - return 0; - }, - - compactPath = function(path){ - var result = [], - segment, lastSegment; - path = path.replace(/\\/g, '/').split('/'); - while(path.length){ - segment = path.shift(); - if(segment==".." && result.length && lastSegment!=".."){ - result.pop(); - lastSegment = result[result.length - 1]; - }else if(segment!="."){ - result.push(lastSegment= segment); - } // else ignore "." - } - return result.join("/"); - }, - - makeModuleInfo = function(pid, mid, pack, url){ - if( 1 ){ - var xd= req.isXdUrl(url); - return {pid:pid, mid:mid, pack:pack, url:url, executed:0, def:0, isXd:xd, isAmd:!!(xd || (packs[pid] && packs[pid].isAmd))}; - }else{ - return {pid:pid, mid:mid, pack:pack, url:url, executed:0, def:0}; - } - }, - - getModuleInfo_ = function(mid, referenceModule, packs, modules, baseUrl, mapProgs, pathsMapProg, alwaysCreate){ - // arguments are passed instead of using lexical variables so that this function my be used independent of the loader (e.g., the builder) - // alwaysCreate is useful in this case so that getModuleInfo never returns references to real modules owned by the loader - var pid, pack, midInPackage, mapProg, mapItem, url, result, isRelative, requestedMid; - requestedMid = mid; - isRelative = /^\./.test(mid); - if(/(^\/)|(\:)|(\.js$)/.test(mid) || (isRelative && !referenceModule)){ - // absolute path or protocol of .js filetype, or relative path but no reference module and therefore relative to page - // whatever it is, it's not a module but just a URL of some sort - // note: pid===0 indicates the routine is returning an unmodified mid - - return makeModuleInfo(0, mid, 0, mid); - }else{ - // relative module ids are relative to the referenceModule; get rid of any dots - mid = compactPath(isRelative ? (referenceModule.mid + "/../" + mid) : mid); - if(/^\./.test(mid)){ - throw makeError("irrationalPath", mid); - } - // at this point, mid is an absolute mid - - // map the mid - if(referenceModule){ - mapItem = runMapProg(referenceModule.mid, mapProgs); - } - mapItem = mapItem || mapProgs.star; - mapItem = mapItem && runMapProg(mid, mapItem[1]); - - if(mapItem){ - mid = mapItem[1] + mid.substring(mapItem[3]); - } - - match = mid.match(/^([^\/]+)(\/(.+))?$/); - pid = match ? match[1] : ""; - if((pack = packs[pid])){ - mid = pid + "/" + (midInPackage = (match[3] || pack.main)); - }else{ - pid = ""; - } - - // search aliases - var candidateLength = 0, - candidate = 0; - forEach(aliases, function(pair){ - var match = mid.match(pair[0]); - if(match && match.length>candidateLength){ - candidate = isFunction(pair[1]) ? mid.replace(pair[0], pair[1]) : pair[1]; - } - }); - if(candidate){ - return getModuleInfo_(candidate, 0, packs, modules, baseUrl, mapProgs, pathsMapProg, alwaysCreate); - } - - result = modules[mid]; - if(result){ - return alwaysCreate ? makeModuleInfo(result.pid, result.mid, result.pack, result.url) : modules[mid]; - } - } - // get here iff the sought-after module does not yet exist; therefore, we need to compute the URL given the - // fully resolved (i.e., all relative indicators and package mapping resolved) module id - - // note: pid!==0 indicates the routine is returning a url that has .js appended unmodified mid - mapItem = runMapProg(mid, pathsMapProg); - if(mapItem){ - url = mapItem[1] + mid.substring(mapItem[3]); - }else if(pid){ - url = pack.location + "/" + midInPackage; - }else if(has("config-tlmSiblingOfDojo")){ - url = "../" + mid; - }else{ - url = mid; - } - // if result is not absolute, add baseUrl - if(!(/(^\/)|(\:)/.test(url))){ - url = baseUrl + url; - } - url += ".js"; - return makeModuleInfo(pid, mid, pack, compactPath(url)); - }, - - getModuleInfo = function(mid, referenceModule){ - return getModuleInfo_(mid, referenceModule, packs, modules, req.baseUrl, mapProgs, pathsMapProg); - }, - - resolvePluginResourceId = function(plugin, prid, referenceModule){ - return plugin.normalize ? plugin.normalize(prid, function(mid){return toAbsMid(mid, referenceModule);}) : toAbsMid(prid, referenceModule); - }, - - dynamicPluginUidGenerator = 0, - - getModule = function(mid, referenceModule, immediate){ - // compute and optionally construct (if necessary) the module implied by the mid with respect to referenceModule - var match, plugin, prid, result; - match = mid.match(/^(.+?)\!(.*)$/); - if(match){ - // name was ! - plugin = getModule(match[1], referenceModule, immediate); - - if( 1 && legacyMode == sync && !plugin.executed){ - injectModule(plugin); - if(plugin.injected===arrived && !plugin.executed){ - guardCheckComplete(function(){ - execModule(plugin); - }); - } - if(plugin.executed){ - promoteModuleToPlugin(plugin); - }else{ - // we are in xdomain mode for some reason - execQ.unshift(plugin); - } - } - - - - if(plugin.executed === executed && !plugin.load){ - // executed the module not knowing it was a plugin - promoteModuleToPlugin(plugin); - } - - // if the plugin has not been loaded, then can't resolve the prid and must assume this plugin is dynamic until we find out otherwise - if(plugin.load){ - prid = resolvePluginResourceId(plugin, match[2], referenceModule); - mid = (plugin.mid + "!" + (plugin.dynamic ? ++dynamicPluginUidGenerator + "!" : "") + prid); - }else{ - prid = match[2]; - mid = plugin.mid + "!" + (++dynamicPluginUidGenerator) + "!waitingForPlugin"; - } - result = {plugin:plugin, mid:mid, req:createRequire(referenceModule), prid:prid}; - }else{ - result = getModuleInfo(mid, referenceModule); - } - return modules[result.mid] || (!immediate && (modules[result.mid] = result)); - }, - - toAbsMid = req.toAbsMid = function(mid, referenceModule){ - return getModuleInfo(mid, referenceModule).mid; - }, - - toUrl = req.toUrl = function(name, referenceModule){ - var moduleInfo = getModuleInfo(name+"/x", referenceModule), - url= moduleInfo.url; - return fixupUrl(moduleInfo.pid===0 ? - // if pid===0, then name had a protocol or absolute path; either way, toUrl is the identify function in such cases - name : - // "/x.js" since getModuleInfo automatically appends ".js" and we appended "/x" to make name look likde a module id - url.substring(0, url.length-5) - ); - }, - - nonModuleProps = { - injected: arrived, - executed: executed, - def: nonmodule, - result: nonmodule - }, - - makeCjs = function(mid){ - return modules[mid] = mix({mid:mid}, nonModuleProps); - }, - - cjsRequireModule = makeCjs("require"), - cjsExportsModule = makeCjs("exports"), - cjsModuleModule = makeCjs("module"), - - runFactory = function(module, args){ - req.trace("loader-run-factory", [module.mid]); - var factory = module.def, - result; - 1 && syncExecStack.unshift(module); - if(has("config-dojo-loader-catches")){ - try{ - result= isFunction(factory) ? factory.apply(null, args) : factory; - }catch(e){ - signal(error, module.result = makeError("factoryThrew", [module, e])); - } - }else{ - result= isFunction(factory) ? factory.apply(null, args) : factory; - } - module.result = result===undefined && module.cjs ? module.cjs.exports : result; - 1 && syncExecStack.shift(module); - }, - - abortExec = {}, - - defOrder = 0, - - promoteModuleToPlugin = function(pluginModule){ - var plugin = pluginModule.result; - pluginModule.dynamic = plugin.dynamic; - pluginModule.normalize = plugin.normalize; - pluginModule.load = plugin.load; - return pluginModule; - }, - - resolvePluginLoadQ = function(plugin){ - // plugins is a newly executed module that has a loadQ waiting to run - - // step 1: traverse the loadQ and fixup the mid and prid; remember the map from original mid to new mid - // recall the original mid was created before the plugin was on board and therefore it was impossible to - // compute the final mid; accordingly, prid may or may not change, but the mid will definitely change - var map = {}; - forEach(plugin.loadQ, function(pseudoPluginResource){ - // manufacture and insert the real module in modules - var prid = resolvePluginResourceId(plugin, pseudoPluginResource.prid, pseudoPluginResource.req.module), - mid = plugin.dynamic ? pseudoPluginResource.mid.replace(/waitingForPlugin$/, prid) : (plugin.mid + "!" + prid), - pluginResource = mix(mix({}, pseudoPluginResource), {mid:mid, prid:prid, injected:0}); - if(!modules[mid]){ - // create a new (the real) plugin resource and inject it normally now that the plugin is on board - injectPlugin(modules[mid] = pluginResource); - } // else this was a duplicate request for the same (plugin, rid) for a nondynamic plugin - - // pluginResource is really just a placeholder with the wrong mid (because we couldn't calculate it until the plugin was on board) - // mark is as arrived and delete it from modules; the real module was requested above - map[pseudoPluginResource.mid] = modules[mid]; - setArrived(pseudoPluginResource); - delete modules[pseudoPluginResource.mid]; - }); - plugin.loadQ = 0; - - // step2: replace all references to any placeholder modules with real modules - var substituteModules = function(module){ - for(var replacement, deps = module.deps || [], i = 0; i")]); - return (!module.def || strict) ? abortExec : (module.cjs && module.cjs.exports); - } - // at this point the module is either not executed or fully executed - - - if(!module.executed){ - if(!module.def){ - return abortExec; - } - var mid = module.mid, - deps = module.deps || [], - arg, argResult, - args = [], - i = 0; - - if( 0 ){ - circleTrace.push(mid); - req.trace("loader-exec-module", ["exec", circleTrace.length, mid]); - } - - // for circular dependencies, assume the first module encountered was executed OK - // modules that circularly depend on a module that has not run its factory will get - // the premade cjs.exports===module.result. They can take a reference to this object and/or - // add properties to it. When the module finally runs its factory, the factory can - // read/write/replace this object. Notice that so long as the object isn't replaced, any - // reference taken earlier while walking the deps list is still valid. - module.executed = executing; - while(i < deps.length){ - arg = deps[i++]; - argResult = ((arg === cjsRequireModule) ? createRequire(module) : - ((arg === cjsExportsModule) ? module.cjs.exports : - ((arg === cjsModuleModule) ? module.cjs : - execModule(arg, strict)))); - if(argResult === abortExec){ - module.executed = 0; - req.trace("loader-exec-module", ["abort", mid]); - 0 && circleTrace.pop(); - return abortExec; - } - args.push(argResult); - } - runFactory(module, args); - finishExec(module); - 0 && circleTrace.pop(); - } - // at this point the module is guaranteed fully executed - - return module.result; - }, - - - checkCompleteGuard = 0, - - guardCheckComplete = function(proc){ - try{ - checkCompleteGuard++; - proc(); - }finally{ - checkCompleteGuard--; - } - if(execComplete()){ - signal("idle", []); - } - }, - - checkComplete = function(){ - // keep going through the execQ as long as at least one factory is executed - // plugins, recursion, cached modules all make for many execution path possibilities - if(checkCompleteGuard){ - return; - } - guardCheckComplete(function(){ - checkDojoRequirePlugin(); - for(var currentDefOrder, module, i = 0; i < execQ.length;){ - currentDefOrder = defOrder; - module = execQ[i]; - execModule(module); - if(currentDefOrder!=defOrder){ - // defOrder was bumped one or more times indicating something was executed (note, this indicates - // the execQ was modified, maybe a lot (for example a later module causes an earlier module to execute) - checkDojoRequirePlugin(); - i = 0; - }else{ - // nothing happened; check the next module in the exec queue - i++; - } - } - }); - }; - - - if( 0 ){ - req.undef = function(moduleId, referenceModule){ - // In order to reload a module, it must be undefined (this routine) and then re-requested. - // This is useful for testing frameworks (at least). - var module = getModule(moduleId, referenceModule); - setArrived(module); - delete modules[module.mid]; - }; - } - - if( 1 ){ - if(has("dojo-loader-eval-hint-url")===undefined){ - has.add("dojo-loader-eval-hint-url", 1); - } - - var fixupUrl= function(url){ - url += ""; // make sure url is a Javascript string (some paths may be a Java string) - return url + (cacheBust ? ((/\?/.test(url) ? "&" : "?") + cacheBust) : ""); - }, - - injectPlugin = function( - module - ){ - // injects the plugin module given by module; may have to inject the plugin itself - var plugin = module.plugin; - - if(plugin.executed === executed && !plugin.load){ - // executed the module not knowing it was a plugin - promoteModuleToPlugin(plugin); - } - - var onLoad = function(def){ - module.result = def; - setArrived(module); - finishExec(module); - checkComplete(); - }; - - if(plugin.load){ - plugin.load(module.prid, module.req, onLoad); - }else if(plugin.loadQ){ - plugin.loadQ.push(module); - }else{ - // the unshift instead of push is important: we don't want plugins to execute as - // dependencies of some other module because this may cause circles when the plugin - // loadQ is run; also, generally, we want plugins to run early since they may load - // several other modules and therefore can potentially unblock many modules - plugin.loadQ = [module]; - execQ.unshift(plugin); - injectModule(plugin); - } - }, - - // for IE, injecting a module may result in a recursive execution if the module is in the cache - - cached = 0, - - injectingModule = 0, - - injectingCachedModule = 0, - - evalModuleText = function(text, module){ - // see def() for the injectingCachedModule bracket; it simply causes a short, safe curcuit - if(has("config-stripStrict")){ - text = text.replace(/"use strict"/g, ''); - } - injectingCachedModule = 1; - if(has("config-dojo-loader-catches")){ - try{ - if(text===cached){ - cached.call(null); - }else{ - req.eval(text, has("dojo-loader-eval-hint-url") ? module.url : module.mid); - } - }catch(e){ - signal(error, makeError("evalModuleThrew", module)); - } - }else{ - if(text===cached){ - cached.call(null); - }else{ - req.eval(text, has("dojo-loader-eval-hint-url") ? module.url : module.mid); - } - } - injectingCachedModule = 0; - }, - - injectModule = function(module){ - // Inject the module. In the browser environment, this means appending a script element into - // the document; in other environments, it means loading a file. - // - // If in synchronous mode, then get the module synchronously if it's not xdomainLoading. - - var mid = module.mid, - url = module.url; - if(module.executed || module.injected || waiting[mid] || (module.url && ((module.pack && waiting[module.url]===module.pack) || waiting[module.url]==1))){ - return; - } - setRequested(module); - - if( 0 ){ - var viaCombo = 0; - if(module.plugin && module.plugin.isCombo){ - // a combo plugin; therefore, must be handled by combo service - // the prid should have already been converted to a URL (if required by the plugin) during - // the normalze process; in any event, there is no way for the loader to know how to - // to the conversion; therefore the third argument is zero - req.combo.add(module.plugin.mid, module.prid, 0, req); - viaCombo = 1; - }else if(!module.plugin){ - viaCombo = req.combo.add(0, module.mid, module.url, req); - } - if(viaCombo){ - comboPending= 1; - return; - } - } - - if(module.plugin){ - injectPlugin(module); - return; - } // else a normal module (not a plugin) - - - var onLoadCallback = function(){ - runDefQ(module); - if(module.injected !== arrived){ - // the script that contained the module arrived and has been executed yet - // nothing was added to the defQ (so it wasn't an AMD module) and the module - // wasn't marked as arrived by dojo.provide (so it wasn't a v1.6- module); - // therefore, it must not have been a module; adjust state accordingly - setArrived(module); - mix(module, nonModuleProps); - req.trace("loader-define-nonmodule", [module.url]); - } - - if( 1 && legacyMode){ - // must call checkComplete even in for sync loader because we may be in xdomainLoading mode; - // but, if xd loading, then don't call checkComplete until out of the current sync traversal - // in order to preserve order of execution of the dojo.required modules - !syncExecStack.length && checkComplete(); - }else{ - checkComplete(); - } - }; - cached = cache[mid] || cache[urlKeyPrefix + module.url]; - if(cached){ - req.trace("loader-inject", ["cache", module.mid, url]); - evalModuleText(cached, module); - onLoadCallback(); - return; - } - if( 1 && legacyMode){ - if(module.isXd){ - // switch to async mode temporarily; if current legacyMode!=sync, then is must be one of {legacyAsync, xd, false} - legacyMode==sync && (legacyMode = xd); - // fall through and load via script injection - }else if(module.isAmd && legacyMode!=sync){ - // fall through and load via script injection - }else{ - // mode may be sync, xd/legacyAsync, or async; module may be AMD or legacy; but module is always located on the same domain - var xhrCallback = function(text){ - if(legacyMode==sync){ - // the top of syncExecStack gives the current synchronously executing module; the loader needs - // to know this if it has to switch to async loading in the middle of evaluating a legacy module - // this happens when a modules dojo.require's a module that must be loaded async because it's xdomain - // (using unshift/shift because there is no back() methods for Javascript arrays) - syncExecStack.unshift(module); - evalModuleText(text, module); - syncExecStack.shift(); - - // maybe the module was an AMD module - runDefQ(module); - - // legacy modules never get to defineModule() => cjs and injected never set; also evaluation implies executing - if(!module.cjs){ - setArrived(module); - finishExec(module); - } - - if(module.finish){ - // while synchronously evaluating this module, dojo.require was applied referencing a module - // that had to be loaded async; therefore, the loader stopped answering all dojo.require - // requests so they could be answered completely in the correct sequence; module.finish gives - // the list of dojo.requires that must be re-applied once all target modules are available; - // make a synthetic module to execute the dojo.require's in the correct order - - // compute a guarnateed-unique mid for the synthetic finish module; remember the finish vector; remove it from the reference module - // TODO: can we just leave the module.finish...what's it hurting? - var finishMid = mid + "*finish", - finish = module.finish; - delete module.finish; - - def(finishMid, ["dojo", ("dojo/require!" + finish.join(",")).replace(/\./g, "/")], function(dojo){ - forEach(finish, function(mid){ dojo.require(mid); }); - }); - // unshift, not push, which causes the current traversal to be reattempted from the top - execQ.unshift(getModule(finishMid)); - } - onLoadCallback(); - }else{ - text = transformToAmd(module, text); - if(text){ - evalModuleText(text, module); - onLoadCallback(); - }else{ - // if transformToAmd returned falsy, then the module was already AMD and it can be script-injected - // do so to improve debugability(even though it means another download...which probably won't happen with a good browser cache) - injectingModule = module; - req.injectUrl(fixupUrl(url), onLoadCallback, module); - injectingModule = 0; - } - } - }; - - req.trace("loader-inject", ["xhr", module.mid, url, legacyMode!=sync]); - if(has("config-dojo-loader-catches")){ - try{ - req.getText(url, legacyMode!=sync, xhrCallback); - }catch(e){ - signal(error, makeError("xhrInjectFailed", [module, e])); - } - }else{ - req.getText(url, legacyMode!=sync, xhrCallback); - } - return; - } - } // else async mode or fell through in xdomain loading mode; either way, load by script injection - req.trace("loader-inject", ["script", module.mid, url]); - injectingModule = module; - req.injectUrl(fixupUrl(url), onLoadCallback, module); - injectingModule = 0; - }, - - defineModule = function(module, deps, def){ - req.trace("loader-define-module", [module.mid, deps]); - - if( 0 && module.plugin && module.plugin.isCombo){ - // the module is a plugin resource loaded by the combo service - // note: check for module.plugin should be enough since normal plugin resources should - // not follow this path; module.plugin.isCombo is future-proofing belt and suspenders - module.result = isFunction(def) ? def() : def; - setArrived(module); - finishExec(module); - return module; - }; - - var mid = module.mid; - if(module.injected === arrived){ - signal(error, makeError("multipleDefine", module)); - return module; - } - mix(module, { - deps: deps, - def: def, - cjs: { - id: module.mid, - uri: module.url, - exports: (module.result = {}), - setExports: function(exports){ - module.cjs.exports = exports; - }, - config:function(){ - return module.config; - } - } - }); - - // resolve deps with respect to this module - for(var i = 0; i < deps.length; i++){ - deps[i] = getModule(deps[i], module); - } - - if( 1 && legacyMode && !waiting[mid]){ - // the module showed up without being asked for; it was probably in a - // - return new NodeList(); // dojo/NodeList - }; - =====*/ - - // the query that is returned from this module is slightly different than dojo.query, - // because dojo.query has to maintain backwards compatibility with returning a - // true array which has performance problems. The query returned from the module - // does not use true arrays, but rather inherits from Array, making it much faster to - // instantiate. - dojo.query = queryForEngine(defaultEngine, function(array){ - // call it without the new operator to invoke the back-compat behavior that returns a true array - return NodeList(array); // dojo/NodeList - }); - - query.load = function(id, parentRequire, loaded){ - // summary: - // can be used as AMD plugin to conditionally load new query engine - // example: - // | require(["dojo/query!custom"], function(qsa){ - // | // loaded selector/custom.js as engine - // | qsa("#foobar").forEach(...); - // | }); - loader.load(id, parentRequire, function(engine){ - loaded(queryForEngine(engine, NodeList)); - }); - }; - - dojo._filterQueryResult = query._filterResult = function(nodes, selector, root){ - return new NodeList(query.filter(nodes, selector, root)); - }; - dojo.NodeList = query.NodeList = NodeList; - return query; -}); - -}, -'dojo/has':function(){ -define(["require", "module"], function(require, module){ - // module: - // dojo/has - // summary: - // Defines the has.js API and several feature tests used by dojo. - // description: - // This module defines the has API as described by the project has.js with the following additional features: - // - // - the has test cache is exposed at has.cache. - // - the method has.add includes a forth parameter that controls whether or not existing tests are replaced - // - the loader's has cache may be optionally copied into this module's has cahce. - // - // This module adopted from https://github.com/phiggins42/has.js; thanks has.js team! - - // try to pull the has implementation from the loader; both the dojo loader and bdLoad provide one - // if using a foreign loader, then the has cache may be initialized via the config object for this module - // WARNING: if a foreign loader defines require.has to be something other than the has.js API, then this implementation fail - var has = require.has || function(){}; - if(! 1 ){ - var - isBrowser = - // the most fundamental decision: are we in the browser? - typeof window != "undefined" && - typeof location != "undefined" && - typeof document != "undefined" && - window.location == location && window.document == document, - - // has API variables - global = this, - doc = isBrowser && document, - element = doc && doc.createElement("DiV"), - cache = (module.config && module.config()) || {}; - - has = function(name){ - // summary: - // Return the current value of the named feature. - // - // name: String|Integer - // The name (if a string) or identifier (if an integer) of the feature to test. - // - // description: - // Returns the value of the feature named by name. The feature must have been - // previously added to the cache by has.add. - - return typeof cache[name] == "function" ? (cache[name] = cache[name](global, doc, element)) : cache[name]; // Boolean - }; - - has.cache = cache; - - has.add = function(name, test, now, force){ - // summary: - // Register a new feature test for some named feature. - // name: String|Integer - // The name (if a string) or identifier (if an integer) of the feature to test. - // test: Function - // A test function to register. If a function, queued for testing until actually - // needed. The test function should return a boolean indicating - // the presence of a feature or bug. - // now: Boolean? - // Optional. Omit if `test` is not a function. Provides a way to immediately - // run the test and cache the result. - // force: Boolean? - // Optional. If the test already exists and force is truthy, then the existing - // test will be replaced; otherwise, add does not replace an existing test (that - // is, by default, the first test advice wins). - // example: - // A redundant test, testFn with immediate execution: - // | has.add("javascript", function(){ return true; }, true); - // - // example: - // Again with the redundantness. You can do this in your tests, but we should - // not be doing this in any internal has.js tests - // | has.add("javascript", true); - // - // example: - // Three things are passed to the testFunction. `global`, `document`, and a generic element - // from which to work your test should the need arise. - // | has.add("bug-byid", function(g, d, el){ - // | // g == global, typically window, yadda yadda - // | // d == document object - // | // el == the generic element. a `has` element. - // | return false; // fake test, byid-when-form-has-name-matching-an-id is slightly longer - // | }); - - (typeof cache[name]=="undefined" || force) && (cache[name]= test); - return now && has(name); - }; - - // since we're operating under a loader that doesn't provide a has API, we must explicitly initialize - // has as it would have otherwise been initialized by the dojo loader; use has.add to the builder - // can optimize these away iff desired - 1 || has.add("host-browser", isBrowser); - 1 || has.add("dom", isBrowser); - 1 || has.add("dojo-dom-ready-api", 1); - 1 || has.add("dojo-sniff", 1); - } - - if( 1 ){ - // Common application level tests - has.add("dom-addeventlistener", !!document.addEventListener); - has.add("touch", "ontouchstart" in document); - // I don't know if any of these tests are really correct, just a rough guess - has.add("device-width", screen.availWidth || innerWidth); - - // Tests for DOMNode.attributes[] behavior: - // - dom-attributes-explicit - attributes[] only lists explicitly user specified attributes - // - dom-attributes-specified-flag (IE8) - need to check attr.specified flag to skip attributes user didn't specify - // - Otherwise, in IE6-7. attributes[] will list hundreds of values, so need to do outerHTML to get attrs instead. - var form = document.createElement("form"); - has.add("dom-attributes-explicit", form.attributes.length == 0); // W3C - has.add("dom-attributes-specified-flag", form.attributes.length > 0 && form.attributes.length < 40); // IE8 - } - - has.clearElement = function(element){ - // summary: - // Deletes the contents of the element passed to test functions. - element.innerHTML= ""; - return element; - }; - - has.normalize = function(id, toAbsMid){ - // summary: - // Resolves id into a module id based on possibly-nested tenary expression that branches on has feature test value(s). - // - // toAbsMid: Function - // Resolves a relative module id into an absolute module id - var - tokens = id.match(/[\?:]|[^:\?]*/g), i = 0, - get = function(skip){ - var term = tokens[i++]; - if(term == ":"){ - // empty string module name, resolves to 0 - return 0; - }else{ - // postfixed with a ? means it is a feature to branch on, the term is the name of the feature - if(tokens[i++] == "?"){ - if(!skip && has(term)){ - // matched the feature, get the first value from the options - return get(); - }else{ - // did not match, get the second value, passing over the first - get(true); - return get(skip); - } - } - // a module - return term || 0; - } - }; - id = get(); - return id && toAbsMid(id); - }; - - has.load = function(id, parentRequire, loaded){ - // summary: - // Conditional loading of AMD modules based on a has feature test value. - // id: String - // Gives the resolved module id to load. - // parentRequire: Function - // The loader require function with respect to the module that contained the plugin resource in it's - // dependency list. - // loaded: Function - // Callback to loader that consumes result of plugin demand. - - if(id){ - parentRequire([id], loaded); - }else{ - loaded(); - } - }; - - return has; -}); - -}, -'dojo/_base/loader':function(){ -define(["./kernel", "../has", "require", "module", "./json", "./lang", "./array"], function(dojo, has, require, thisModule, json, lang, array) { - // module: - // dojo/_base/loader - - // This module defines the v1.x synchronous loader API. - - // signal the loader in sync mode... - //>>pure-amd - - if (! 1 ){ - console.error("cannot load the Dojo v1.x loader with a foreign loader"); - return 0; - } - - 1 || has.add("dojo-fast-sync-require", 1); - - - var makeErrorToken = function(id){ - return {src:thisModule.id, id:id}; - }, - - slashName = function(name){ - return name.replace(/\./g, "/"); - }, - - buildDetectRe = /\/\/>>built/, - - dojoRequireCallbacks = [], - dojoRequireModuleStack = [], - - dojoRequirePlugin = function(mid, require, loaded){ - dojoRequireCallbacks.push(loaded); - array.forEach(mid.split(","), function(mid){ - var module = getModule(mid, require.module); - dojoRequireModuleStack.push(module); - injectModule(module); - }); - checkDojoRequirePlugin(); - }, - - checkDojoRequirePlugin = ( 1 ? - // This version of checkDojoRequirePlugin makes the observation that all dojoRequireCallbacks can be released - // when all *non-dojo/require!, dojo/loadInit!* modules are either executed, not requested, or arrived. This is - // the case since there are no more modules the loader is waiting for, therefore, dojo/require! must have - // everything it needs on board. - // - // The potential weakness of this algorithm is that dojo/require will not execute callbacks until *all* dependency - // trees are ready. It is possible that some trees may be ready earlier than others, and this extra wait is non-optimal. - // Still, for big projects, this seems better than the original algorithm below that proved slow in some cases. - // Note, however, the original algorithm had the potential to execute partial trees, but that potential was never enabled. - // There are also other optimization available with the original algorithm that have not been explored. - function(){ - var module, mid; - for(mid in modules){ - module = modules[mid]; - if(module.noReqPluginCheck===undefined){ - // tag the module as either a loadInit or require plugin or not for future reference - module.noReqPluginCheck = /loadInit\!/.test(mid) || /require\!/.test(mid) ? 1 : 0; - } - if(!module.executed && !module.noReqPluginCheck && module.injected==requested){ - return; - } - } - - guardCheckComplete(function(){ - var oldCallbacks = dojoRequireCallbacks; - dojoRequireCallbacks = []; - array.forEach(oldCallbacks, function(cb){cb(1);}); - }); - } : (function(){ - // Note: this is the original checkDojoRequirePlugin that is much slower than the algorithm above. However, we know it - // works, so we leave it here in case the algorithm above fails in some corner case. - // - // checkDojoRequirePlugin inspects all of the modules demanded by a dojo/require! dependency - // to see if they have arrived. The loader does not release *any* of these modules to be instantiated - // until *all* of these modules are on board, thereby preventing the evaluation of a module with dojo.require's - // that reference modules that are not available. - // - // The algorithm works by traversing the dependency graphs (remember, there can be cycles so they are not trees) - // of each module in the dojoRequireModuleStack array (which contains the list of modules demanded by dojo/require!). - // The moment a single module is discovered that is missing, the algorithm gives up and indicates that not all - // modules are on board. dojo/loadInit! and dojo/require! are ignored because there dependencies are inserted - // directly in dojoRequireModuleStack. For example, if "your/module" module depends on "dojo/require!my/module", then - // *both* "dojo/require!my/module" and "my/module" will be in dojoRequireModuleStack. Obviously, if "my/module" - // is on board, then "dojo/require!my/module" is also satisfied, so the algorithm doesn't check for "dojo/require!my/module". - // - // Note: inserting a dojo/require! dependency in the dojoRequireModuleStack achieves nothing - // with the current algorithm; however, having such modules present makes it possible to optimize the algorithm - // - // Note: prior versions of this algorithm had an optimization that signaled loaded on dojo/require! dependencies - // individually (rather than waiting for them all to be resolved). The implementation proved problematic with cycles - // and plugins. However, it is possible to reattach that strategy in the future. - - // a set from module-id to {undefined | 1 | 0}, where... - // undefined => the module has not been inspected - // 0 => the module or at least one of its dependencies has not arrived - // 1 => the module is a loadInit! or require! plugin resource, or is currently being traversed (therefore, assume - // OK until proven otherwise), or has been completely traversed and all dependencies have arrived - - var touched, - traverse = function(m){ - touched[m.mid] = 1; - for(var t, module, deps = m.deps || [], i= 0; i a built module, always AMD - // extractResult==0 => no sync API - return 0; - } - - // manufacture a synthetic module id that can never be a real mdule id (just like require does) - id = module.mid + "-*loadInit"; - - // construct the dojo/loadInit names vector which causes any relocated names to be defined as lexical variables under their not-relocated name - // the dojo/loadInit plugin assumes the first name in names is "dojo" - - for(var p in getModule("dojo", module).result.scopeMap){ - names.push(p); - namesAsStrings.push('"' + p + '"'); - } - - // rewrite the module as a synthetic dojo/loadInit plugin resource + the module expressed as an AMD module that depends on this synthetic resource - // don't have to map dojo/init since that will occur when the dependency is resolved - return "// xdomain rewrite of " + module.mid + "\n" + - "define('" + id + "',{\n" + - "\tnames:" + dojo.toJson(names) + ",\n" + - "\tdef:function(" + names.join(",") + "){" + extractResult[1] + "}" + - "});\n\n" + - "define(" + dojo.toJson(names.concat(["dojo/loadInit!"+id])) + ", function(" + names.join(",") + "){\n" + extractResult[0] + "});"; - }, - - loaderVars = require.initSyncLoader(dojoRequirePlugin, checkDojoRequirePlugin, transformToAmd), - - sync = - loaderVars.sync, - - requested = - loaderVars.requested, - - arrived = - loaderVars.arrived, - - nonmodule = - loaderVars.nonmodule, - - executing = - loaderVars.executing, - - executed = - loaderVars.executed, - - syncExecStack = - loaderVars.syncExecStack, - - modules = - loaderVars.modules, - - execQ = - loaderVars.execQ, - - getModule = - loaderVars.getModule, - - injectModule = - loaderVars.injectModule, - - setArrived = - loaderVars.setArrived, - - signal = - loaderVars.signal, - - finishExec = - loaderVars.finishExec, - - execModule = - loaderVars.execModule, - - getLegacyMode = - loaderVars.getLegacyMode, - - guardCheckComplete = - loaderVars.guardCheckComplete; - - // there is exactly one dojoRequirePlugin among possibly-many dojo/_base/loader's (owing to mapping) - dojoRequirePlugin = loaderVars.dojoRequirePlugin; - - dojo.provide = function(mid){ - var executingModule = syncExecStack[0], - module = lang.mixin(getModule(slashName(mid), require.module), { - executed:executing, - result:lang.getObject(mid, true) - }); - setArrived(module); - if(executingModule){ - (executingModule.provides || (executingModule.provides = [])).push(function(){ - module.result = lang.getObject(mid); - delete module.provides; - module.executed!==executed && finishExec(module); - }); - }// else dojo.provide called not consequent to loading; therefore, give up trying to publish module value to loader namespace - return module.result; - }; - - has.add("config-publishRequireResult", 1, 0, 0); - - dojo.require = function(moduleName, omitModuleCheck) { - // summary: - // loads a Javascript module from the appropriate URI - // - // moduleName: String - // module name to load, using periods for separators, - // e.g. "dojo.date.locale". Module paths are de-referenced by dojo's - // internal mapping of locations to names and are disambiguated by - // longest prefix. See `dojo.registerModulePath()` for details on - // registering new modules. - // - // omitModuleCheck: Boolean? - // if `true`, omitModuleCheck skips the step of ensuring that the - // loaded file actually defines the symbol it is referenced by. - // For example if it called as `dojo.require("a.b.c")` and the - // file located at `a/b/c.js` does not define an object `a.b.c`, - // and exception will be throws whereas no exception is raised - // when called as `dojo.require("a.b.c", true)` - // - // description: - // Modules are loaded via dojo.require by using one of two loaders: the normal loader - // and the xdomain loader. The xdomain loader is used when dojo was built with a - // custom build that specified loader=xdomain and the module lives on a modulePath - // that is a whole URL, with protocol and a domain. The versions of Dojo that are on - // the Google and AOL CDNs use the xdomain loader. - // - // If the module is loaded via the xdomain loader, it is an asynchronous load, since - // the module is added via a dynamically created script tag. This - // means that dojo.require() can return before the module has loaded. However, this - // should only happen in the case where you do dojo.require calls in the top-level - // HTML page, or if you purposely avoid the loader checking for dojo.require - // dependencies in your module by using a syntax like dojo["require"] to load the module. - // - // Sometimes it is useful to not have the loader detect the dojo.require calls in the - // module so that you can dynamically load the modules as a result of an action on the - // page, instead of right at module load time. - // - // Also, for script blocks in an HTML page, the loader does not pre-process them, so - // it does not know to download the modules before the dojo.require calls occur. - // - // So, in those two cases, when you want on-the-fly module loading or for script blocks - // in the HTML page, special care must be taken if the dojo.required code is loaded - // asynchronously. To make sure you can execute code that depends on the dojo.required - // modules, be sure to add the code that depends on the modules in a dojo.addOnLoad() - // callback. dojo.addOnLoad waits for all outstanding modules to finish loading before - // executing. - // - // This type of syntax works with both xdomain and normal loaders, so it is good - // practice to always use this idiom for on-the-fly code loading and in HTML script - // blocks. If at some point you change loaders and where the code is loaded from, - // it will all still work. - // - // More on how dojo.require - // `dojo.require("A.B")` first checks to see if symbol A.B is - // defined. If it is, it is simply returned (nothing to do). - // - // If it is not defined, it will look for `A/B.js` in the script root - // directory. - // - // `dojo.require` throws an exception if it cannot find a file - // to load, or if the symbol `A.B` is not defined after loading. - // - // It returns the object `A.B`, but note the caveats above about on-the-fly loading and - // HTML script blocks when the xdomain loader is loading a module. - // - // `dojo.require()` does nothing about importing symbols into - // the current namespace. It is presumed that the caller will - // take care of that. - // - // example: - // To use dojo.require in conjunction with dojo.ready: - // - // | dojo.require("foo"); - // | dojo.require("bar"); - // | dojo.addOnLoad(function(){ - // | //you can now safely do something with foo and bar - // | }); - // - // example: - // For example, to import all symbols into a local block, you might write: - // - // | with (dojo.require("A.B")) { - // | ... - // | } - // - // And to import just the leaf symbol to a local variable: - // - // | var B = dojo.require("A.B"); - // | ... - // - // returns: - // the required namespace object - function doRequire(mid, omitModuleCheck){ - var module = getModule(slashName(mid), require.module); - if(syncExecStack.length && syncExecStack[0].finish){ - // switched to async loading in the middle of evaluating a legacy module; stop - // applying dojo.require so the remaining dojo.requires are applied in order - syncExecStack[0].finish.push(mid); - return undefined; - } - - // recall module.executed has values {0, executing, executed}; therefore, truthy indicates executing or executed - if(module.executed){ - return module.result; - } - omitModuleCheck && (module.result = nonmodule); - - // rcg...why here and in two lines?? - var currentMode = getLegacyMode(); - - // recall, in sync mode to inject is to *eval* the module text - // if the module is a legacy module, this is the same as executing - // but if the module is an AMD module, this means defining, not executing - injectModule(module); - // the inject may have changed the mode - currentMode = getLegacyMode(); - - // in sync mode to dojo.require is to execute - if(module.executed!==executed && module.injected===arrived){ - // the module was already here before injectModule was called probably finishing up a xdomain - // load, but maybe a module given to the loader directly rather than having the loader retrieve it - - loaderVars.guardCheckComplete(function(){ - execModule(module); - }); - } - if(module.executed){ - return module.result; - } - - if(currentMode==sync){ - // the only way to get here is in sync mode and dojo.required a module that - // * was loaded async in the injectModule application a few lines up - // * was an AMD module that had deps that are being loaded async and therefore couldn't execute - if(module.cjs){ - // the module was an AMD module; unshift, not push, which causes the current traversal to be reattempted from the top - execQ.unshift(module); - }else{ - // the module was a legacy module - syncExecStack.length && (syncExecStack[0].finish= [mid]); - } - }else{ - // the loader wasn't in sync mode on entry; probably async mode; therefore, no expectation of getting - // the module value synchronously; make sure it gets executed though - execQ.push(module); - } - - return undefined; - } - - var result = doRequire(moduleName, omitModuleCheck); - if(has("config-publishRequireResult") && !lang.exists(moduleName) && result!==undefined){ - lang.setObject(moduleName, result); - } - return result; - }; - - dojo.loadInit = function(f) { - f(); - }; - - dojo.registerModulePath = function(/*String*/moduleName, /*String*/prefix){ - // summary: - // Maps a module name to a path - // description: - // An unregistered module is given the default path of ../[module], - // relative to Dojo root. For example, module acme is mapped to - // ../acme. If you want to use a different module name, use - // dojo.registerModulePath. - // example: - // If your dojo.js is located at this location in the web root: - // | /myapp/js/dojo/dojo/dojo.js - // and your modules are located at: - // | /myapp/js/foo/bar.js - // | /myapp/js/foo/baz.js - // | /myapp/js/foo/thud/xyzzy.js - // Your application can tell Dojo to locate the "foo" namespace by calling: - // | dojo.registerModulePath("foo", "../../foo"); - // At which point you can then use dojo.require() to load the - // modules (assuming they provide() the same things which are - // required). The full code might be: - // | - // | - - var paths = {}; - paths[moduleName.replace(/\./g, "/")] = prefix; - require({paths:paths}); - }; - - dojo.platformRequire = function(/*Object*/modMap){ - // summary: - // require one or more modules based on which host environment - // Dojo is currently operating in - // description: - // This method takes a "map" of arrays which one can use to - // optionally load dojo modules. The map is indexed by the - // possible dojo.name_ values, with two additional values: - // "default" and "common". The items in the "default" array will - // be loaded if none of the other items have been choosen based on - // dojo.name_, set by your host environment. The items in the - // "common" array will *always* be loaded, regardless of which - // list is chosen. - // example: - // | dojo.platformRequire({ - // | browser: [ - // | "foo.sample", // simple module - // | "foo.test", - // | ["foo.bar.baz", true] // skip object check in _loadModule (dojo.require) - // | ], - // | default: [ "foo.sample._base" ], - // | common: [ "important.module.common" ] - // | }); - - var result = (modMap.common || []).concat(modMap[dojo._name] || modMap["default"] || []), - temp; - while(result.length){ - if(lang.isArray(temp = result.shift())){ - dojo.require.apply(dojo, temp); - }else{ - dojo.require(temp); - } - } - }; - - dojo.requireIf = dojo.requireAfterIf = function(/*Boolean*/ condition, /*String*/ moduleName, /*Boolean?*/omitModuleCheck){ - // summary: - // If the condition is true then call `dojo.require()` for the specified - // resource - // - // example: - // | dojo.requireIf(dojo.isBrowser, "my.special.Module"); - - if(condition){ - dojo.require(moduleName, omitModuleCheck); - } - }; - - dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale){ - require(["../i18n"], function(i18n){ - i18n.getLocalization(moduleName, bundleName, locale); - }); - }; - - return { - // summary: - // This module defines the v1.x synchronous loader API. - - extractLegacyApiApplications:extractLegacyApiApplications, - require:dojoRequirePlugin, - loadInit:dojoLoadInitPlugin - }; -}); - -}, -'dojo/json':function(){ -define(["./has"], function(has){ - "use strict"; - var hasJSON = typeof JSON != "undefined"; - has.add("json-parse", hasJSON); // all the parsers work fine - // Firefox 3.5/Gecko 1.9 fails to use replacer in stringify properly https://bugzilla.mozilla.org/show_bug.cgi?id=509184 - has.add("json-stringify", hasJSON && JSON.stringify({a:0}, function(k,v){return v||1;}) == '{"a":1}'); - - /*===== - return { - // summary: - // Functions to parse and serialize JSON - - parse: function(str, strict){ - // summary: - // Parses a [JSON](http://json.org) string to return a JavaScript object. - // description: - // This function follows [native JSON API](https://developer.mozilla.org/en/JSON) - // Throws for invalid JSON strings. This delegates to eval() if native JSON - // support is not available. By default this will evaluate any valid JS expression. - // With the strict parameter set to true, the parser will ensure that only - // valid JSON strings are parsed (otherwise throwing an error). Without the strict - // parameter, the content passed to this method must come - // from a trusted source. - // str: - // a string literal of a JSON item, for instance: - // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'` - // strict: - // When set to true, this will ensure that only valid, secure JSON is ever parsed. - // Make sure this is set to true for untrusted content. Note that on browsers/engines - // without native JSON support, setting this to true will run slower. - }, - stringify: function(value, replacer, spacer){ - // summary: - // Returns a [JSON](http://json.org) serialization of an object. - // description: - // Returns a [JSON](http://json.org) serialization of an object. - // This function follows [native JSON API](https://developer.mozilla.org/en/JSON) - // Note that this doesn't check for infinite recursion, so don't do that! - // value: - // A value to be serialized. - // replacer: - // A replacer function that is called for each value and can return a replacement - // spacer: - // A spacer string to be used for pretty printing of JSON - // example: - // simple serialization of a trivial object - // | define(["dojo/json"], function(JSON){ - // | var jsonStr = JSON.stringify({ howdy: "stranger!", isStrange: true }); - // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr); - } - }; - =====*/ - - if(has("json-stringify")){ - return JSON; - }else{ - var escapeString = function(/*String*/str){ - // summary: - // Adds escape sequences for non-visual characters, double quote and - // backslash and surrounds with double quotes to form a valid string - // literal. - return ('"' + str.replace(/(["\\])/g, '\\$1') + '"'). - replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n"). - replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r"); // string - }; - return { - parse: has("json-parse") ? JSON.parse : function(str, strict){ - if(strict && !/^([\s\[\{]*(?:"(?:\\.|[^"])+"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){ - throw new SyntaxError("Invalid characters in JSON"); - } - return eval('(' + str + ')'); - }, - stringify: function(value, replacer, spacer){ - var undef; - if(typeof replacer == "string"){ - spacer = replacer; - replacer = null; - } - function stringify(it, indent, key){ - if(replacer){ - it = replacer(key, it); - } - var val, objtype = typeof it; - if(objtype == "number"){ - return isFinite(it) ? it + "" : "null"; - } - if(objtype == "boolean"){ - return it + ""; - } - if(it === null){ - return "null"; - } - if(typeof it == "string"){ - return escapeString(it); - } - if(objtype == "function" || objtype == "undefined"){ - return undef; // undefined - } - // short-circuit for objects that support "json" serialization - // if they return "self" then just pass-through... - if(typeof it.toJSON == "function"){ - return stringify(it.toJSON(key), indent, key); - } - if(it instanceof Date){ - return '"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z"'.replace(/\{(\w+)(\+)?\}/g, function(t, prop, plus){ - var num = it["getUTC" + prop]() + (plus ? 1 : 0); - return num < 10 ? "0" + num : num; - }); - } - if(it.valueOf() !== it){ - // primitive wrapper, try again unwrapped: - return stringify(it.valueOf(), indent, key); - } - var nextIndent= spacer ? (indent + spacer) : ""; - /* we used to test for DOM nodes and throw, but FF serializes them as {}, so cross-browser consistency is probably not efficiently attainable */ - - var sep = spacer ? " " : ""; - var newLine = spacer ? "\n" : ""; - - // array - if(it instanceof Array){ - var itl = it.length, res = []; - for(key = 0; key < itl; key++){ - var obj = it[key]; - val = stringify(obj, nextIndent, key); - if(typeof val != "string"){ - val = "null"; - } - res.push(newLine + nextIndent + val); - } - return "[" + res.join(",") + newLine + indent + "]"; - } - // generic object code path - var output = []; - for(key in it){ - var keyStr; - if(it.hasOwnProperty(key)){ - if(typeof key == "number"){ - keyStr = '"' + key + '"'; - }else if(typeof key == "string"){ - keyStr = escapeString(key); - }else{ - // skip non-string or number keys - continue; - } - val = stringify(it[key], nextIndent, key); - if(typeof val != "string"){ - // skip non-serializable values - continue; - } - // At this point, the most non-IE browsers don't get in this branch - // (they have native JSON), so push is definitely the way to - output.push(newLine + nextIndent + keyStr + ":" + sep + val); - } - } - return "{" + output.join(",") + newLine + indent + "}"; // String - } - return stringify(value, "", ""); - } - }; - } -}); - -}, -'dojo/_base/declare':function(){ -define(["./kernel", "../has", "./lang"], function(dojo, has, lang){ - // module: - // dojo/_base/declare - - var mix = lang.mixin, op = Object.prototype, opts = op.toString, - xtor = new Function, counter = 0, cname = "constructor"; - - function err(msg, cls){ throw new Error("declare" + (cls ? " " + cls : "") + ": " + msg); } - - // C3 Method Resolution Order (see http://www.python.org/download/releases/2.3/mro/) - function c3mro(bases, className){ - var result = [], roots = [{cls: 0, refs: []}], nameMap = {}, clsCount = 1, - l = bases.length, i = 0, j, lin, base, top, proto, rec, name, refs; - - // build a list of bases naming them if needed - for(; i < l; ++i){ - base = bases[i]; - if(!base){ - err("mixin #" + i + " is unknown. Did you use dojo.require to pull it in?", className); - }else if(opts.call(base) != "[object Function]"){ - err("mixin #" + i + " is not a callable constructor.", className); - } - lin = base._meta ? base._meta.bases : [base]; - top = 0; - // add bases to the name map - for(j = lin.length - 1; j >= 0; --j){ - proto = lin[j].prototype; - if(!proto.hasOwnProperty("declaredClass")){ - proto.declaredClass = "uniqName_" + (counter++); - } - name = proto.declaredClass; - if(!nameMap.hasOwnProperty(name)){ - nameMap[name] = {count: 0, refs: [], cls: lin[j]}; - ++clsCount; - } - rec = nameMap[name]; - if(top && top !== rec){ - rec.refs.push(top); - ++top.count; - } - top = rec; - } - ++top.count; - roots[0].refs.push(top); - } - - // remove classes without external references recursively - while(roots.length){ - top = roots.pop(); - result.push(top.cls); - --clsCount; - // optimization: follow a single-linked chain - while(refs = top.refs, refs.length == 1){ - top = refs[0]; - if(!top || --top.count){ - // branch or end of chain => do not end to roots - top = 0; - break; - } - result.push(top.cls); - --clsCount; - } - if(top){ - // branch - for(i = 0, l = refs.length; i < l; ++i){ - top = refs[i]; - if(!--top.count){ - roots.push(top); - } - } - } - } - if(clsCount){ - err("can't build consistent linearization", className); - } - - // calculate the superclass offset - base = bases[0]; - result[0] = base ? - base._meta && base === result[result.length - base._meta.bases.length] ? - base._meta.bases.length : 1 : 0; - - return result; - } - - function inherited(args, a, f){ - var name, chains, bases, caller, meta, base, proto, opf, pos, - cache = this._inherited = this._inherited || {}; - - // crack arguments - if(typeof args == "string"){ - name = args; - args = a; - a = f; - } - f = 0; - - caller = args.callee; - name = name || caller.nom; - if(!name){ - err("can't deduce a name to call inherited()", this.declaredClass); - } - - meta = this.constructor._meta; - bases = meta.bases; - - pos = cache.p; - if(name != cname){ - // method - if(cache.c !== caller){ - // cache bust - pos = 0; - base = bases[0]; - meta = base._meta; - if(meta.hidden[name] !== caller){ - // error detection - chains = meta.chains; - if(chains && typeof chains[name] == "string"){ - err("calling chained method with inherited: " + name, this.declaredClass); - } - // find caller - do{ - meta = base._meta; - proto = base.prototype; - if(meta && (proto[name] === caller && proto.hasOwnProperty(name) || meta.hidden[name] === caller)){ - break; - } - }while(base = bases[++pos]); // intentional assignment - pos = base ? pos : -1; - } - } - // find next - base = bases[++pos]; - if(base){ - proto = base.prototype; - if(base._meta && proto.hasOwnProperty(name)){ - f = proto[name]; - }else{ - opf = op[name]; - do{ - proto = base.prototype; - f = proto[name]; - if(f && (base._meta ? proto.hasOwnProperty(name) : f !== opf)){ - break; - } - }while(base = bases[++pos]); // intentional assignment - } - } - f = base && f || op[name]; - }else{ - // constructor - if(cache.c !== caller){ - // cache bust - pos = 0; - meta = bases[0]._meta; - if(meta && meta.ctor !== caller){ - // error detection - chains = meta.chains; - if(!chains || chains.constructor !== "manual"){ - err("calling chained constructor with inherited", this.declaredClass); - } - // find caller - while(base = bases[++pos]){ // intentional assignment - meta = base._meta; - if(meta && meta.ctor === caller){ - break; - } - } - pos = base ? pos : -1; - } - } - // find next - while(base = bases[++pos]){ // intentional assignment - meta = base._meta; - f = meta ? meta.ctor : base; - if(f){ - break; - } - } - f = base && f; - } - - // cache the found super method - cache.c = f; - cache.p = pos; - - // now we have the result - if(f){ - return a === true ? f : f.apply(this, a || args); - } - // intentionally no return if a super method was not found - } - - function getInherited(name, args){ - if(typeof name == "string"){ - return this.__inherited(name, args, true); - } - return this.__inherited(name, true); - } - - function inherited__debug(args, a1, a2){ - var f = this.getInherited(args, a1); - if(f){ return f.apply(this, a2 || a1 || args); } - // intentionally no return if a super method was not found - } - - var inheritedImpl = dojo.config.isDebug ? inherited__debug : inherited; - - // emulation of "instanceof" - function isInstanceOf(cls){ - var bases = this.constructor._meta.bases; - for(var i = 0, l = bases.length; i < l; ++i){ - if(bases[i] === cls){ - return true; - } - } - return this instanceof cls; - } - - function mixOwn(target, source){ - // add props adding metadata for incoming functions skipping a constructor - for(var name in source){ - if(name != cname && source.hasOwnProperty(name)){ - target[name] = source[name]; - } - } - if(has("bug-for-in-skips-shadowed")){ - for(var extraNames= lang._extraNames, i= extraNames.length; i;){ - name = extraNames[--i]; - if(name != cname && source.hasOwnProperty(name)){ - target[name] = source[name]; - } - } - } - } - - // implementation of safe mixin function - function safeMixin(target, source){ - // summary: - // Mix in properties skipping a constructor and decorating functions - // like it is done by declare(). - // target: Object - // Target object to accept new properties. - // source: Object - // Source object for new properties. - // description: - // This function is used to mix in properties like lang.mixin does, - // but it skips a constructor property and decorates functions like - // declare() does. - // - // It is meant to be used with classes and objects produced with - // declare. Functions mixed in with dojo.safeMixin can use - // this.inherited() like normal methods. - // - // This function is used to implement extend() method of a constructor - // produced with declare(). - // - // example: - // | var A = declare(null, { - // | m1: function(){ - // | console.log("A.m1"); - // | }, - // | m2: function(){ - // | console.log("A.m2"); - // | } - // | }); - // | var B = declare(A, { - // | m1: function(){ - // | this.inherited(arguments); - // | console.log("B.m1"); - // | } - // | }); - // | B.extend({ - // | m2: function(){ - // | this.inherited(arguments); - // | console.log("B.m2"); - // | } - // | }); - // | var x = new B(); - // | dojo.safeMixin(x, { - // | m1: function(){ - // | this.inherited(arguments); - // | console.log("X.m1"); - // | }, - // | m2: function(){ - // | this.inherited(arguments); - // | console.log("X.m2"); - // | } - // | }); - // | x.m2(); - // | // prints: - // | // A.m1 - // | // B.m1 - // | // X.m1 - - var name, t; - // add props adding metadata for incoming functions skipping a constructor - for(name in source){ - t = source[name]; - if((t !== op[name] || !(name in op)) && name != cname){ - if(opts.call(t) == "[object Function]"){ - // non-trivial function method => attach its name - t.nom = name; - } - target[name] = t; - } - } - if(has("bug-for-in-skips-shadowed")){ - for(var extraNames= lang._extraNames, i= extraNames.length; i;){ - name = extraNames[--i]; - t = source[name]; - if((t !== op[name] || !(name in op)) && name != cname){ - if(opts.call(t) == "[object Function]"){ - // non-trivial function method => attach its name - t.nom = name; - } - target[name] = t; - } - } - } - return target; - } - - function extend(source){ - declare.safeMixin(this.prototype, source); - return this; - } - - function createSubclass(mixins){ - return declare([this].concat(mixins)); - } - - // chained constructor compatible with the legacy declare() - function chainedConstructor(bases, ctorSpecial){ - return function(){ - var a = arguments, args = a, a0 = a[0], f, i, m, - l = bases.length, preArgs; - - if(!(this instanceof a.callee)){ - // not called via new, so force it - return applyNew(a); - } - - //this._inherited = {}; - // perform the shaman's rituals of the original declare() - // 1) call two types of the preamble - if(ctorSpecial && (a0 && a0.preamble || this.preamble)){ - // full blown ritual - preArgs = new Array(bases.length); - // prepare parameters - preArgs[0] = a; - for(i = 0;;){ - // process the preamble of the 1st argument - a0 = a[0]; - if(a0){ - f = a0.preamble; - if(f){ - a = f.apply(this, a) || a; - } - } - // process the preamble of this class - f = bases[i].prototype; - f = f.hasOwnProperty("preamble") && f.preamble; - if(f){ - a = f.apply(this, a) || a; - } - // one peculiarity of the preamble: - // it is called if it is not needed, - // e.g., there is no constructor to call - // let's watch for the last constructor - // (see ticket #9795) - if(++i == l){ - break; - } - preArgs[i] = a; - } - } - // 2) call all non-trivial constructors using prepared arguments - for(i = l - 1; i >= 0; --i){ - f = bases[i]; - m = f._meta; - f = m ? m.ctor : f; - if(f){ - f.apply(this, preArgs ? preArgs[i] : a); - } - } - // 3) continue the original ritual: call the postscript - f = this.postscript; - if(f){ - f.apply(this, args); - } - }; - } - - - // chained constructor compatible with the legacy declare() - function singleConstructor(ctor, ctorSpecial){ - return function(){ - var a = arguments, t = a, a0 = a[0], f; - - if(!(this instanceof a.callee)){ - // not called via new, so force it - return applyNew(a); - } - - //this._inherited = {}; - // perform the shaman's rituals of the original declare() - // 1) call two types of the preamble - if(ctorSpecial){ - // full blown ritual - if(a0){ - // process the preamble of the 1st argument - f = a0.preamble; - if(f){ - t = f.apply(this, t) || t; - } - } - f = this.preamble; - if(f){ - // process the preamble of this class - f.apply(this, t); - // one peculiarity of the preamble: - // it is called even if it is not needed, - // e.g., there is no constructor to call - // let's watch for the last constructor - // (see ticket #9795) - } - } - // 2) call a constructor - if(ctor){ - ctor.apply(this, a); - } - // 3) continue the original ritual: call the postscript - f = this.postscript; - if(f){ - f.apply(this, a); - } - }; - } - - // plain vanilla constructor (can use inherited() to call its base constructor) - function simpleConstructor(bases){ - return function(){ - var a = arguments, i = 0, f, m; - - if(!(this instanceof a.callee)){ - // not called via new, so force it - return applyNew(a); - } - - //this._inherited = {}; - // perform the shaman's rituals of the original declare() - // 1) do not call the preamble - // 2) call the top constructor (it can use this.inherited()) - for(; f = bases[i]; ++i){ // intentional assignment - m = f._meta; - f = m ? m.ctor : f; - if(f){ - f.apply(this, a); - break; - } - } - // 3) call the postscript - f = this.postscript; - if(f){ - f.apply(this, a); - } - }; - } - - function chain(name, bases, reversed){ - return function(){ - var b, m, f, i = 0, step = 1; - if(reversed){ - i = bases.length - 1; - step = -1; - } - for(; b = bases[i]; i += step){ // intentional assignment - m = b._meta; - f = (m ? m.hidden : b.prototype)[name]; - if(f){ - f.apply(this, arguments); - } - } - }; - } - - // forceNew(ctor) - // return a new object that inherits from ctor.prototype but - // without actually running ctor on the object. - function forceNew(ctor){ - // create object with correct prototype using a do-nothing - // constructor - xtor.prototype = ctor.prototype; - var t = new xtor; - xtor.prototype = null; // clean up - return t; - } - - // applyNew(args) - // just like 'new ctor()' except that the constructor and its arguments come - // from args, which must be an array or an arguments object - function applyNew(args){ - // create an object with ctor's prototype but without - // calling ctor on it. - var ctor = args.callee, t = forceNew(ctor); - // execute the real constructor on the new object - ctor.apply(t, args); - return t; - } - - function declare(className, superclass, props){ - // summary: - // Create a feature-rich constructor from compact notation. - // className: String? - // The optional name of the constructor (loosely, a "class") - // stored in the "declaredClass" property in the created prototype. - // It will be used as a global name for a created constructor. - // superclass: Function|Function[] - // May be null, a Function, or an Array of Functions. This argument - // specifies a list of bases (the left-most one is the most deepest - // base). - // props: Object - // An object whose properties are copied to the created prototype. - // Add an instance-initialization function by making it a property - // named "constructor". - // returns: dojo/_base/declare.__DeclareCreatedObject - // New constructor function. - // description: - // Create a constructor using a compact notation for inheritance and - // prototype extension. - // - // Mixin ancestors provide a type of multiple inheritance. - // Prototypes of mixin ancestors are copied to the new class: - // changes to mixin prototypes will not affect classes to which - // they have been mixed in. - // - // Ancestors can be compound classes created by this version of - // declare(). In complex cases all base classes are going to be - // linearized according to C3 MRO algorithm - // (see http://www.python.org/download/releases/2.3/mro/ for more - // details). - // - // "className" is cached in "declaredClass" property of the new class, - // if it was supplied. The immediate super class will be cached in - // "superclass" property of the new class. - // - // Methods in "props" will be copied and modified: "nom" property - // (the declared name of the method) will be added to all copied - // functions to help identify them for the internal machinery. Be - // very careful, while reusing methods: if you use the same - // function under different names, it can produce errors in some - // cases. - // - // It is possible to use constructors created "manually" (without - // declare()) as bases. They will be called as usual during the - // creation of an instance, their methods will be chained, and even - // called by "this.inherited()". - // - // Special property "-chains-" governs how to chain methods. It is - // a dictionary, which uses method names as keys, and hint strings - // as values. If a hint string is "after", this method will be - // called after methods of its base classes. If a hint string is - // "before", this method will be called before methods of its base - // classes. - // - // If "constructor" is not mentioned in "-chains-" property, it will - // be chained using the legacy mode: using "after" chaining, - // calling preamble() method before each constructor, if available, - // and calling postscript() after all constructors were executed. - // If the hint is "after", it is chained as a regular method, but - // postscript() will be called after the chain of constructors. - // "constructor" cannot be chained "before", but it allows - // a special hint string: "manual", which means that constructors - // are not going to be chained in any way, and programmer will call - // them manually using this.inherited(). In the latter case - // postscript() will be called after the construction. - // - // All chaining hints are "inherited" from base classes and - // potentially can be overridden. Be very careful when overriding - // hints! Make sure that all chained methods can work in a proposed - // manner of chaining. - // - // Once a method was chained, it is impossible to unchain it. The - // only exception is "constructor". You don't need to define a - // method in order to supply a chaining hint. - // - // If a method is chained, it cannot use this.inherited() because - // all other methods in the hierarchy will be called automatically. - // - // Usually constructors and initializers of any kind are chained - // using "after" and destructors of any kind are chained as - // "before". Note that chaining assumes that chained methods do not - // return any value: any returned value will be discarded. - // - // example: - // | declare("my.classes.bar", my.classes.foo, { - // | // properties to be added to the class prototype - // | someValue: 2, - // | // initialization function - // | constructor: function(){ - // | this.myComplicatedObject = new ReallyComplicatedObject(); - // | }, - // | // other functions - // | someMethod: function(){ - // | doStuff(); - // | } - // | }); - // - // example: - // | var MyBase = declare(null, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var MyClass1 = declare(MyBase, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var MyClass2 = declare(MyBase, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var MyDiamond = declare([MyClass1, MyClass2], { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // - // example: - // | var F = function(){ console.log("raw constructor"); }; - // | F.prototype.method = function(){ - // | console.log("raw method"); - // | }; - // | var A = declare(F, { - // | constructor: function(){ - // | console.log("A.constructor"); - // | }, - // | method: function(){ - // | console.log("before calling F.method..."); - // | this.inherited(arguments); - // | console.log("...back in A"); - // | } - // | }); - // | new A().method(); - // | // will print: - // | // raw constructor - // | // A.constructor - // | // before calling F.method... - // | // raw method - // | // ...back in A - // - // example: - // | var A = declare(null, { - // | "-chains-": { - // | destroy: "before" - // | } - // | }); - // | var B = declare(A, { - // | constructor: function(){ - // | console.log("B.constructor"); - // | }, - // | destroy: function(){ - // | console.log("B.destroy"); - // | } - // | }); - // | var C = declare(B, { - // | constructor: function(){ - // | console.log("C.constructor"); - // | }, - // | destroy: function(){ - // | console.log("C.destroy"); - // | } - // | }); - // | new C().destroy(); - // | // prints: - // | // B.constructor - // | // C.constructor - // | // C.destroy - // | // B.destroy - // - // example: - // | var A = declare(null, { - // | "-chains-": { - // | constructor: "manual" - // | } - // | }); - // | var B = declare(A, { - // | constructor: function(){ - // | // ... - // | // call the base constructor with new parameters - // | this.inherited(arguments, [1, 2, 3]); - // | // ... - // | } - // | }); - // - // example: - // | var A = declare(null, { - // | "-chains-": { - // | m1: "before" - // | }, - // | m1: function(){ - // | console.log("A.m1"); - // | }, - // | m2: function(){ - // | console.log("A.m2"); - // | } - // | }); - // | var B = declare(A, { - // | "-chains-": { - // | m2: "after" - // | }, - // | m1: function(){ - // | console.log("B.m1"); - // | }, - // | m2: function(){ - // | console.log("B.m2"); - // | } - // | }); - // | var x = new B(); - // | x.m1(); - // | // prints: - // | // B.m1 - // | // A.m1 - // | x.m2(); - // | // prints: - // | // A.m2 - // | // B.m2 - - // crack parameters - if(typeof className != "string"){ - props = superclass; - superclass = className; - className = ""; - } - props = props || {}; - - var proto, i, t, ctor, name, bases, chains, mixins = 1, parents = superclass; - - // build a prototype - if(opts.call(superclass) == "[object Array]"){ - // C3 MRO - bases = c3mro(superclass, className); - t = bases[0]; - mixins = bases.length - t; - superclass = bases[mixins]; - }else{ - bases = [0]; - if(superclass){ - if(opts.call(superclass) == "[object Function]"){ - t = superclass._meta; - bases = bases.concat(t ? t.bases : superclass); - }else{ - err("base class is not a callable constructor.", className); - } - }else if(superclass !== null){ - err("unknown base class. Did you use dojo.require to pull it in?", className); - } - } - if(superclass){ - for(i = mixins - 1;; --i){ - proto = forceNew(superclass); - if(!i){ - // stop if nothing to add (the last base) - break; - } - // mix in properties - t = bases[i]; - (t._meta ? mixOwn : mix)(proto, t.prototype); - // chain in new constructor - ctor = new Function; - ctor.superclass = superclass; - ctor.prototype = proto; - superclass = proto.constructor = ctor; - } - }else{ - proto = {}; - } - // add all properties - declare.safeMixin(proto, props); - // add constructor - t = props.constructor; - if(t !== op.constructor){ - t.nom = cname; - proto.constructor = t; - } - - // collect chains and flags - for(i = mixins - 1; i; --i){ // intentional assignment - t = bases[i]._meta; - if(t && t.chains){ - chains = mix(chains || {}, t.chains); - } - } - if(proto["-chains-"]){ - chains = mix(chains || {}, proto["-chains-"]); - } - - // build ctor - t = !chains || !chains.hasOwnProperty(cname); - bases[0] = ctor = (chains && chains.constructor === "manual") ? simpleConstructor(bases) : - (bases.length == 1 ? singleConstructor(props.constructor, t) : chainedConstructor(bases, t)); - - // add meta information to the constructor - ctor._meta = {bases: bases, hidden: props, chains: chains, - parents: parents, ctor: props.constructor}; - ctor.superclass = superclass && superclass.prototype; - ctor.extend = extend; - ctor.createSubclass = createSubclass; - ctor.prototype = proto; - proto.constructor = ctor; - - // add "standard" methods to the prototype - proto.getInherited = getInherited; - proto.isInstanceOf = isInstanceOf; - proto.inherited = inheritedImpl; - proto.__inherited = inherited; - - // add name if specified - if(className){ - proto.declaredClass = className; - lang.setObject(className, ctor); - } - - // build chains and add them to the prototype - if(chains){ - for(name in chains){ - if(proto[name] && typeof chains[name] == "string" && name != cname){ - t = proto[name] = chain(name, bases, chains[name] === "after"); - t.nom = name; - } - } - } - // chained methods do not return values - // no need to chain "invisible" functions - - return ctor; // Function - } - - /*===== - declare.__DeclareCreatedObject = { - // summary: - // dojo/_base/declare() returns a constructor `C`. `new C()` returns an Object with the following - // methods, in addition to the methods and properties specified via the arguments passed to declare(). - - inherited: function(name, args, newArgs){ - // summary: - // Calls a super method. - // name: String? - // The optional method name. Should be the same as the caller's - // name. Usually "name" is specified in complex dynamic cases, when - // the calling method was dynamically added, undecorated by - // declare(), and it cannot be determined. - // args: Arguments - // The caller supply this argument, which should be the original - // "arguments". - // newArgs: Object? - // If "true", the found function will be returned without - // executing it. - // If Array, it will be used to call a super method. Otherwise - // "args" will be used. - // returns: - // Whatever is returned by a super method, or a super method itself, - // if "true" was specified as newArgs. - // description: - // This method is used inside method of classes produced with - // declare() to call a super method (next in the chain). It is - // used for manually controlled chaining. Consider using the regular - // chaining, because it is faster. Use "this.inherited()" only in - // complex cases. - // - // This method cannot me called from automatically chained - // constructors including the case of a special (legacy) - // constructor chaining. It cannot be called from chained methods. - // - // If "this.inherited()" cannot find the next-in-chain method, it - // does nothing and returns "undefined". The last method in chain - // can be a default method implemented in Object, which will be - // called last. - // - // If "name" is specified, it is assumed that the method that - // received "args" is the parent method for this call. It is looked - // up in the chain list and if it is found the next-in-chain method - // is called. If it is not found, the first-in-chain method is - // called. - // - // If "name" is not specified, it will be derived from the calling - // method (using a methoid property "nom"). - // - // example: - // | var B = declare(A, { - // | method1: function(a, b, c){ - // | this.inherited(arguments); - // | }, - // | method2: function(a, b){ - // | return this.inherited(arguments, [a + b]); - // | } - // | }); - // | // next method is not in the chain list because it is added - // | // manually after the class was created. - // | B.prototype.method3 = function(){ - // | console.log("This is a dynamically-added method."); - // | this.inherited("method3", arguments); - // | }; - // example: - // | var B = declare(A, { - // | method: function(a, b){ - // | var super = this.inherited(arguments, true); - // | // ... - // | if(!super){ - // | console.log("there is no super method"); - // | return 0; - // | } - // | return super.apply(this, arguments); - // | } - // | }); - return {}; // Object - }, - - getInherited: function(name, args){ - // summary: - // Returns a super method. - // name: String? - // The optional method name. Should be the same as the caller's - // name. Usually "name" is specified in complex dynamic cases, when - // the calling method was dynamically added, undecorated by - // declare(), and it cannot be determined. - // args: Arguments - // The caller supply this argument, which should be the original - // "arguments". - // returns: - // Returns a super method (Function) or "undefined". - // description: - // This method is a convenience method for "this.inherited()". - // It uses the same algorithm but instead of executing a super - // method, it returns it, or "undefined" if not found. - // - // example: - // | var B = declare(A, { - // | method: function(a, b){ - // | var super = this.getInherited(arguments); - // | // ... - // | if(!super){ - // | console.log("there is no super method"); - // | return 0; - // | } - // | return super.apply(this, arguments); - // | } - // | }); - return {}; // Object - }, - - isInstanceOf: function(cls){ - // summary: - // Checks the inheritance chain to see if it is inherited from this - // class. - // cls: Function - // Class constructor. - // returns: - // "true", if this object is inherited from this class, "false" - // otherwise. - // description: - // This method is used with instances of classes produced with - // declare() to determine of they support a certain interface or - // not. It models "instanceof" operator. - // - // example: - // | var A = declare(null, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var B = declare(null, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var C = declare([A, B], { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | var D = declare(A, { - // | // constructor, properties, and methods go here - // | // ... - // | }); - // | - // | var a = new A(), b = new B(), c = new C(), d = new D(); - // | - // | console.log(a.isInstanceOf(A)); // true - // | console.log(b.isInstanceOf(A)); // false - // | console.log(c.isInstanceOf(A)); // true - // | console.log(d.isInstanceOf(A)); // true - // | - // | console.log(a.isInstanceOf(B)); // false - // | console.log(b.isInstanceOf(B)); // true - // | console.log(c.isInstanceOf(B)); // true - // | console.log(d.isInstanceOf(B)); // false - // | - // | console.log(a.isInstanceOf(C)); // false - // | console.log(b.isInstanceOf(C)); // false - // | console.log(c.isInstanceOf(C)); // true - // | console.log(d.isInstanceOf(C)); // false - // | - // | console.log(a.isInstanceOf(D)); // false - // | console.log(b.isInstanceOf(D)); // false - // | console.log(c.isInstanceOf(D)); // false - // | console.log(d.isInstanceOf(D)); // true - return {}; // Object - }, - - extend: function(source){ - // summary: - // Adds all properties and methods of source to constructor's - // prototype, making them available to all instances created with - // constructor. This method is specific to constructors created with - // declare(). - // source: Object - // Source object which properties are going to be copied to the - // constructor's prototype. - // description: - // Adds source properties to the constructor's prototype. It can - // override existing properties. - // - // This method is similar to dojo.extend function, but it is specific - // to constructors produced by declare(). It is implemented - // using dojo.safeMixin, and it skips a constructor property, - // and properly decorates copied functions. - // - // example: - // | var A = declare(null, { - // | m1: function(){}, - // | s1: "Popokatepetl" - // | }); - // | A.extend({ - // | m1: function(){}, - // | m2: function(){}, - // | f1: true, - // | d1: 42 - // | }); - } - }; - =====*/ - - // For back-compat, remove for 2.0 - dojo.safeMixin = declare.safeMixin = safeMixin; - dojo.declare = declare; - - return declare; -}); - -}, -'dojo/dom':function(){ -define(["./sniff", "./_base/window"], - function(has, win){ - // module: - // dojo/dom - - // FIXME: need to add unit tests for all the semi-public methods - - if(has("ie") <= 7){ - try{ - document.execCommand("BackgroundImageCache", false, true); - }catch(e){ - // sane browsers don't have cache "issues" - } - } - - // ============================= - // DOM Functions - // ============================= - - // the result object - var dom = { - // summary: - // This module defines the core dojo DOM API. - }; - - if(has("ie")){ - dom.byId = function(id, doc){ - if(typeof id != "string"){ - return id; - } - var _d = doc || win.doc, te = id && _d.getElementById(id); - // attributes.id.value is better than just id in case the - // user has a name=id inside a form - if(te && (te.attributes.id.value == id || te.id == id)){ - return te; - }else{ - var eles = _d.all[id]; - if(!eles || eles.nodeName){ - eles = [eles]; - } - // if more than 1, choose first with the correct id - var i = 0; - while((te = eles[i++])){ - if((te.attributes && te.attributes.id && te.attributes.id.value == id) || te.id == id){ - return te; - } - } - } - }; - }else{ - dom.byId = function(id, doc){ - // inline'd type check. - // be sure to return null per documentation, to match IE branch. - return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode - }; - } - /*===== - dom.byId = function(id, doc){ - // summary: - // Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined) - // if not found. If `id` is a DomNode, this function is a no-op. - // - // id: String|DOMNode - // A string to match an HTML id attribute or a reference to a DOM Node - // - // doc: Document? - // Document to work in. Defaults to the current value of - // dojo.doc. Can be used to retrieve - // node references from other documents. - // - // example: - // Look up a node by ID: - // | var n = dojo.byId("foo"); - // - // example: - // Check if a node exists, and use it. - // | var n = dojo.byId("bar"); - // | if(n){ doStuff() ... } - // - // example: - // Allow string or DomNode references to be passed to a custom function: - // | var foo = function(nodeOrId){ - // | nodeOrId = dojo.byId(nodeOrId); - // | // ... more stuff - // | } - }; - =====*/ - - dom.isDescendant = function(/*DOMNode|String*/ node, /*DOMNode|String*/ ancestor){ - // summary: - // Returns true if node is a descendant of ancestor - // node: DOMNode|String - // string id or node reference to test - // ancestor: DOMNode|String - // string id or node reference of potential parent to test against - // - // example: - // Test is node id="bar" is a descendant of node id="foo" - // | if(dojo.isDescendant("bar", "foo")){ ... } - - try{ - node = dom.byId(node); - ancestor = dom.byId(ancestor); - while(node){ - if(node == ancestor){ - return true; // Boolean - } - node = node.parentNode; - } - }catch(e){ /* squelch, return false */ } - return false; // Boolean - }; - - - // TODO: do we need setSelectable in the base? - - // Add feature test for user-select CSS property - // (currently known to work in all but IE < 10 and Opera) - has.add("css-user-select", function(global, doc, element){ - // Avoid exception when dom.js is loaded in non-browser environments - if(!element){ return false; } - - var style = element.style; - var prefixes = ["Khtml", "O", "ms", "Moz", "Webkit"], - i = prefixes.length, - name = "userSelect", - prefix; - - // Iterate prefixes from most to least likely - do{ - if(typeof style[name] !== "undefined"){ - // Supported; return property name - return name; - } - }while(i-- && (name = prefixes[i] + "UserSelect")); - - // Not supported if we didn't return before now - return false; - }); - - /*===== - dom.setSelectable = function(node, selectable){ - // summary: - // Enable or disable selection on a node - // node: DOMNode|String - // id or reference to node - // selectable: Boolean - // state to put the node in. false indicates unselectable, true - // allows selection. - // example: - // Make the node id="bar" unselectable - // | dojo.setSelectable("bar"); - // example: - // Make the node id="bar" selectable - // | dojo.setSelectable("bar", true); - }; - =====*/ - - var cssUserSelect = has("css-user-select"); - dom.setSelectable = cssUserSelect ? function(node, selectable){ - // css-user-select returns a (possibly vendor-prefixed) CSS property name - dom.byId(node).style[cssUserSelect] = selectable ? "" : "none"; - } : function(node, selectable){ - node = dom.byId(node); - - // (IE < 10 / Opera) Fall back to setting/removing the - // unselectable attribute on the element and all its children - var nodes = node.getElementsByTagName("*"), - i = nodes.length; - - if(selectable){ - node.removeAttribute("unselectable"); - while(i--){ - nodes[i].removeAttribute("unselectable"); - } - }else{ - node.setAttribute("unselectable", "on"); - while(i--){ - nodes[i].setAttribute("unselectable", "on"); - } - } - }; - - return dom; -}); - -}, -'dojo/_base/browser':function(){ -if(require.has){ - require.has.add("config-selectorEngine", "acme"); -} -define([ - "../ready", - "./kernel", - "./connect", // until we decide if connect is going back into non-browser environments - "./unload", - "./window", - "./event", - "./html", - "./NodeList", - "../query", - "./xhr", - "./fx"], function(dojo){ - - // module: - // dojo/_base/browser - - /*===== - return { - // summary: - // This module causes the browser-only base modules to be loaded. - }; - =====*/ - - return dojo; -}); - -}, -'dojo/errors/RequestTimeoutError':function(){ -define("dojo/errors/RequestTimeoutError", ['./create', './RequestError'], function(create, RequestError){ - // module: - // dojo/errors/RequestTimeoutError - - /*===== - return function(){ - // summary: - // TODOC - }; - =====*/ - - return create("RequestTimeoutError", null, RequestError, { - dojoType: "timeout" - }); -}); - -}, -'dojo/dom-style':function(){ -define("dojo/dom-style", ["./sniff", "./dom"], function(has, dom){ - // module: - // dojo/dom-style - - // ============================= - // Style Functions - // ============================= - - // getComputedStyle drives most of the style code. - // Wherever possible, reuse the returned object. - // - // API functions below that need to access computed styles accept an - // optional computedStyle parameter. - // If this parameter is omitted, the functions will call getComputedStyle themselves. - // This way, calling code can access computedStyle once, and then pass the reference to - // multiple API functions. - - // Although we normally eschew argument validation at this - // level, here we test argument 'node' for (duck)type, - // by testing nodeType, ecause 'document' is the 'parentNode' of 'body' - // it is frequently sent to this function even - // though it is not Element. - var getComputedStyle, style = { - // summary: - // This module defines the core dojo DOM style API. - }; - if(has("webkit")){ - getComputedStyle = function(/*DomNode*/ node){ - var s; - if(node.nodeType == 1){ - var dv = node.ownerDocument.defaultView; - s = dv.getComputedStyle(node, null); - if(!s && node.style){ - node.style.display = ""; - s = dv.getComputedStyle(node, null); - } - } - return s || {}; - }; - }else if(has("ie") && (has("ie") < 9 || has("quirks"))){ - getComputedStyle = function(node){ - // IE (as of 7) doesn't expose Element like sane browsers - // currentStyle can be null on IE8! - return node.nodeType == 1 /* ELEMENT_NODE*/ && node.currentStyle ? node.currentStyle : {}; - }; - }else{ - getComputedStyle = function(node){ - return node.nodeType == 1 /* ELEMENT_NODE*/ ? - node.ownerDocument.defaultView.getComputedStyle(node, null) : {}; - }; - } - style.getComputedStyle = getComputedStyle; - /*===== - style.getComputedStyle = function(node){ - // summary: - // Returns a "computed style" object. - // - // description: - // Gets a "computed style" object which can be used to gather - // information about the current state of the rendered node. - // - // Note that this may behave differently on different browsers. - // Values may have different formats and value encodings across - // browsers. - // - // Note also that this method is expensive. Wherever possible, - // reuse the returned object. - // - // Use the dojo.style() method for more consistent (pixelized) - // return values. - // - // node: DOMNode - // A reference to a DOM node. Does NOT support taking an - // ID string for speed reasons. - // example: - // | dojo.getComputedStyle(dojo.byId('foo')).borderWidth; - // - // example: - // Reusing the returned object, avoiding multiple lookups: - // | var cs = dojo.getComputedStyle(dojo.byId("someNode")); - // | var w = cs.width, h = cs.height; - return; // CSS2Properties - }; - =====*/ - - var toPixel; - if(!has("ie")){ - toPixel = function(element, value){ - // style values can be floats, client code may want - // to round for integer pixels. - return parseFloat(value) || 0; - }; - }else{ - toPixel = function(element, avalue){ - if(!avalue){ return 0; } - // on IE7, medium is usually 4 pixels - if(avalue == "medium"){ return 4; } - // style values can be floats, client code may - // want to round this value for integer pixels. - if(avalue.slice && avalue.slice(-2) == 'px'){ return parseFloat(avalue); } - var s = element.style, rs = element.runtimeStyle, cs = element.currentStyle, - sLeft = s.left, rsLeft = rs.left; - rs.left = cs.left; - try{ - // 'avalue' may be incompatible with style.left, which can cause IE to throw - // this has been observed for border widths using "thin", "medium", "thick" constants - // those particular constants could be trapped by a lookup - // but perhaps there are more - s.left = avalue; - avalue = s.pixelLeft; - }catch(e){ - avalue = 0; - } - s.left = sLeft; - rs.left = rsLeft; - return avalue; - }; - } - style.toPixelValue = toPixel; - /*===== - style.toPixelValue = function(node, value){ - // summary: - // converts style value to pixels on IE or return a numeric value. - // node: DOMNode - // value: String - // returns: Number - }; - =====*/ - - // FIXME: there opacity quirks on FF that we haven't ported over. Hrm. - - var astr = "DXImageTransform.Microsoft.Alpha"; - var af = function(n, f){ - try{ - return n.filters.item(astr); - }catch(e){ - return f ? {} : null; - } - }; - - var _getOpacity = - has("ie") < 9 || (has("ie") < 10 && has("quirks")) ? function(node){ - try{ - return af(node).Opacity / 100; // Number - }catch(e){ - return 1; // Number - } - } : - function(node){ - return getComputedStyle(node).opacity; - }; - - var _setOpacity = - has("ie") < 9 || (has("ie") < 10 && has("quirks")) ? function(/*DomNode*/ node, /*Number*/ opacity){ - var ov = opacity * 100, opaque = opacity == 1; - node.style.zoom = opaque ? "" : 1; - - if(!af(node)){ - if(opaque){ - return opacity; - } - node.style.filter += " progid:" + astr + "(Opacity=" + ov + ")"; - }else{ - af(node, 1).Opacity = ov; - } - - // on IE7 Alpha(Filter opacity=100) makes text look fuzzy so disable it altogether (bug #2661), - //but still update the opacity value so we can get a correct reading if it is read later. - af(node, 1).Enabled = !opaque; - - if(node.tagName.toLowerCase() == "tr"){ - for(var td = node.firstChild; td; td = td.nextSibling){ - if(td.tagName.toLowerCase() == "td"){ - _setOpacity(td, opacity); - } - } - } - return opacity; - } : - function(node, opacity){ - return node.style.opacity = opacity; - }; - - var _pixelNamesCache = { - left: true, top: true - }; - var _pixelRegExp = /margin|padding|width|height|max|min|offset/; // |border - function _toStyleValue(node, type, value){ - //TODO: should we really be doing string case conversion here? Should we cache it? Need to profile! - type = type.toLowerCase(); - if(has("ie")){ - if(value == "auto"){ - if(type == "height"){ return node.offsetHeight; } - if(type == "width"){ return node.offsetWidth; } - } - if(type == "fontweight"){ - switch(value){ - case 700: return "bold"; - case 400: - default: return "normal"; - } - } - } - if(!(type in _pixelNamesCache)){ - _pixelNamesCache[type] = _pixelRegExp.test(type); - } - return _pixelNamesCache[type] ? toPixel(node, value) : value; - } - - var _floatStyle = has("ie") ? "styleFloat" : "cssFloat", - _floatAliases = {"cssFloat": _floatStyle, "styleFloat": _floatStyle, "float": _floatStyle}; - - // public API - - style.get = function getStyle(/*DOMNode|String*/ node, /*String?*/ name){ - // summary: - // Accesses styles on a node. - // description: - // Getting the style value uses the computed style for the node, so the value - // will be a calculated value, not just the immediate node.style value. - // Also when getting values, use specific style names, - // like "borderBottomWidth" instead of "border" since compound values like - // "border" are not necessarily reflected as expected. - // If you want to get node dimensions, use `dojo.marginBox()`, - // `dojo.contentBox()` or `dojo.position()`. - // node: DOMNode|String - // id or reference to node to get style for - // name: String? - // the style property to get - // example: - // Passing only an ID or node returns the computed style object of - // the node: - // | dojo.getStyle("thinger"); - // example: - // Passing a node and a style property returns the current - // normalized, computed value for that property: - // | dojo.getStyle("thinger", "opacity"); // 1 by default - - var n = dom.byId(node), l = arguments.length, op = (name == "opacity"); - if(l == 2 && op){ - return _getOpacity(n); - } - name = _floatAliases[name] || name; - var s = style.getComputedStyle(n); - return (l == 1) ? s : _toStyleValue(n, name, s[name] || n.style[name]); /* CSS2Properties||String||Number */ - }; - - style.set = function setStyle(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets styles on a node. - // node: DOMNode|String - // id or reference to node to set style for - // name: String|Object - // the style property to set in DOM-accessor format - // ("borderWidth", not "border-width") or an object with key/value - // pairs suitable for setting each property. - // value: String? - // If passed, sets value on the node for style, handling - // cross-browser concerns. When setting a pixel value, - // be sure to include "px" in the value. For instance, top: "200px". - // Otherwise, in some cases, some browsers will not apply the style. - // - // example: - // Passing a node, a style property, and a value changes the - // current display of the node and returns the new computed value - // | dojo.setStyle("thinger", "opacity", 0.5); // == 0.5 - // - // example: - // Passing a node, an object-style style property sets each of the values in turn and returns the computed style object of the node: - // | dojo.setStyle("thinger", { - // | "opacity": 0.5, - // | "border": "3px solid black", - // | "height": "300px" - // | }); - // - // example: - // When the CSS style property is hyphenated, the JavaScript property is camelCased. - // font-size becomes fontSize, and so on. - // | dojo.setStyle("thinger",{ - // | fontSize:"14pt", - // | letterSpacing:"1.2em" - // | }); - // - // example: - // dojo/NodeList implements .style() using the same syntax, omitting the "node" parameter, calling - // dojo.style() on every element of the list. See: `dojo.query()` and `dojo/NodeList` - // | dojo.query(".someClassName").style("visibility","hidden"); - // | // or - // | dojo.query("#baz > div").style({ - // | opacity:0.75, - // | fontSize:"13pt" - // | }); - - var n = dom.byId(node), l = arguments.length, op = (name == "opacity"); - name = _floatAliases[name] || name; - if(l == 3){ - return op ? _setOpacity(n, value) : n.style[name] = value; // Number - } - for(var x in name){ - style.set(node, x, name[x]); - } - return style.getComputedStyle(n); - }; - - return style; -}); - -}, -'dojo/dom-geometry':function(){ -define(["./sniff", "./_base/window","./dom", "./dom-style"], - function(has, win, dom, style){ - // module: - // dojo/dom-geometry - - // the result object - var geom = { - // summary: - // This module defines the core dojo DOM geometry API. - }; - - // Box functions will assume this model. - // On IE/Opera, BORDER_BOX will be set if the primary document is in quirks mode. - // Can be set to change behavior of box setters. - - // can be either: - // "border-box" - // "content-box" (default) - geom.boxModel = "content-box"; - - // We punt per-node box mode testing completely. - // If anybody cares, we can provide an additional (optional) unit - // that overrides existing code to include per-node box sensitivity. - - // Opera documentation claims that Opera 9 uses border-box in BackCompat mode. - // but experiments (Opera 9.10.8679 on Windows Vista) indicate that it actually continues to use content-box. - // IIRC, earlier versions of Opera did in fact use border-box. - // Opera guys, this is really confusing. Opera being broken in quirks mode is not our fault. - - if(has("ie") /*|| has("opera")*/){ - // client code may have to adjust if compatMode varies across iframes - geom.boxModel = document.compatMode == "BackCompat" ? "border-box" : "content-box"; - } - - geom.getPadExtents = function getPadExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // Returns object with special values specifically useful for node - // fitting. - // description: - // Returns an object with `w`, `h`, `l`, `t` properties: - // | l/t/r/b = left/top/right/bottom padding (respectively) - // | w = the total of the left and right padding - // | h = the total of the top and bottom padding - // If 'node' has position, l/t forms the origin for child nodes. - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), px = style.toPixelValue, - l = px(node, s.paddingLeft), t = px(node, s.paddingTop), r = px(node, s.paddingRight), b = px(node, s.paddingBottom); - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - var none = "none"; - - geom.getBorderExtents = function getBorderExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object with properties useful for noting the border - // dimensions. - // description: - // - l/t/r/b = the sum of left/top/right/bottom border (respectively) - // - w = the sum of the left and right border - // - h = the sum of the top and bottom border - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var px = style.toPixelValue, s = computedStyle || style.getComputedStyle(node), - l = s.borderLeftStyle != none ? px(node, s.borderLeftWidth) : 0, - t = s.borderTopStyle != none ? px(node, s.borderTopWidth) : 0, - r = s.borderRightStyle != none ? px(node, s.borderRightWidth) : 0, - b = s.borderBottomStyle != none ? px(node, s.borderBottomWidth) : 0; - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - geom.getPadBorderExtents = function getPadBorderExtents(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // Returns object with properties useful for box fitting with - // regards to padding. - // description: - // - l/t/r/b = the sum of left/top/right/bottom padding and left/top/right/bottom border (respectively) - // - w = the sum of the left and right padding and border - // - h = the sum of the top and bottom padding and border - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), - p = geom.getPadExtents(node, s), - b = geom.getBorderExtents(node, s); - return { - l: p.l + b.l, - t: p.t + b.t, - r: p.r + b.r, - b: p.b + b.b, - w: p.w + b.w, - h: p.h + b.h - }; - }; - - geom.getMarginExtents = function getMarginExtents(node, computedStyle){ - // summary: - // returns object with properties useful for box fitting with - // regards to box margins (i.e., the outer-box). - // - // - l/t = marginLeft, marginTop, respectively - // - w = total width, margin inclusive - // - h = total height, margin inclusive - // - // The w/h are used for calculating boxes. - // Normally application code will not need to invoke this - // directly, and will use the ...box... functions instead. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), px = style.toPixelValue, - l = px(node, s.marginLeft), t = px(node, s.marginTop), r = px(node, s.marginRight), b = px(node, s.marginBottom); - return {l: l, t: t, r: r, b: b, w: l + r, h: t + b}; - }; - - // Box getters work in any box context because offsetWidth/clientWidth - // are invariant wrt box context - // - // They do *not* work for display: inline objects that have padding styles - // because the user agent ignores padding (it's bogus styling in any case) - // - // Be careful with IMGs because they are inline or block depending on - // browser and browser mode. - - // Although it would be easier to read, there are not separate versions of - // _getMarginBox for each browser because: - // 1. the branching is not expensive - // 2. factoring the shared code wastes cycles (function call overhead) - // 3. duplicating the shared code wastes bytes - - geom.getMarginBox = function getMarginBox(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object that encodes the width, height, left and top - // positions of the node's margin box. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), me = geom.getMarginExtents(node, s), - l = node.offsetLeft - me.l, t = node.offsetTop - me.t, p = node.parentNode, px = style.toPixelValue, pcs; - if(has("mozilla")){ - // Mozilla: - // If offsetParent has a computed overflow != visible, the offsetLeft is decreased - // by the parent's border. - // We don't want to compute the parent's style, so instead we examine node's - // computed left/top which is more stable. - var sl = parseFloat(s.left), st = parseFloat(s.top); - if(!isNaN(sl) && !isNaN(st)){ - l = sl; - t = st; - }else{ - // If child's computed left/top are not parseable as a number (e.g. "auto"), we - // have no choice but to examine the parent's computed style. - if(p && p.style){ - pcs = style.getComputedStyle(p); - if(pcs.overflow != "visible"){ - l += pcs.borderLeftStyle != none ? px(node, pcs.borderLeftWidth) : 0; - t += pcs.borderTopStyle != none ? px(node, pcs.borderTopWidth) : 0; - } - } - } - }else if(has("opera") || (has("ie") == 8 && !has("quirks"))){ - // On Opera and IE 8, offsetLeft/Top includes the parent's border - if(p){ - pcs = style.getComputedStyle(p); - l -= pcs.borderLeftStyle != none ? px(node, pcs.borderLeftWidth) : 0; - t -= pcs.borderTopStyle != none ? px(node, pcs.borderTopWidth) : 0; - } - } - return {l: l, t: t, w: node.offsetWidth + me.w, h: node.offsetHeight + me.h}; - }; - - geom.getContentBox = function getContentBox(node, computedStyle){ - // summary: - // Returns an object that encodes the width, height, left and top - // positions of the node's content box, irrespective of the - // current box model. - // node: DOMNode - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - // clientWidth/Height are important since the automatically account for scrollbars - // fallback to offsetWidth/Height for special cases (see #3378) - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), w = node.clientWidth, h, - pe = geom.getPadExtents(node, s), be = geom.getBorderExtents(node, s); - if(!w){ - w = node.offsetWidth; - h = node.offsetHeight; - }else{ - h = node.clientHeight; - be.w = be.h = 0; - } - // On Opera, offsetLeft includes the parent's border - if(has("opera")){ - pe.l += be.l; - pe.t += be.t; - } - return {l: pe.l, t: pe.t, w: w - pe.w - be.w, h: h - pe.h - be.h}; - }; - - // Box setters depend on box context because interpretation of width/height styles - // vary wrt box context. - // - // The value of boxModel is used to determine box context. - // boxModel can be set directly to change behavior. - // - // Beware of display: inline objects that have padding styles - // because the user agent ignores padding (it's a bogus setup anyway) - // - // Be careful with IMGs because they are inline or block depending on - // browser and browser mode. - // - // Elements other than DIV may have special quirks, like built-in - // margins or padding, or values not detectable via computedStyle. - // In particular, margins on TABLE do not seems to appear - // at all in computedStyle on Mozilla. - - function setBox(/*DomNode*/ node, /*Number?*/ l, /*Number?*/ t, /*Number?*/ w, /*Number?*/ h, /*String?*/ u){ - // summary: - // sets width/height/left/top in the current (native) box-model - // dimensions. Uses the unit passed in u. - // node: - // DOM Node reference. Id string not supported for performance - // reasons. - // l: - // left offset from parent. - // t: - // top offset from parent. - // w: - // width in current box model. - // h: - // width in current box model. - // u: - // unit measure to use for other measures. Defaults to "px". - u = u || "px"; - var s = node.style; - if(!isNaN(l)){ - s.left = l + u; - } - if(!isNaN(t)){ - s.top = t + u; - } - if(w >= 0){ - s.width = w + u; - } - if(h >= 0){ - s.height = h + u; - } - } - - function isButtonTag(/*DomNode*/ node){ - // summary: - // True if the node is BUTTON or INPUT.type="button". - return node.tagName.toLowerCase() == "button" || - node.tagName.toLowerCase() == "input" && (node.getAttribute("type") || "").toLowerCase() == "button"; // boolean - } - - function usesBorderBox(/*DomNode*/ node){ - // summary: - // True if the node uses border-box layout. - - // We could test the computed style of node to see if a particular box - // has been specified, but there are details and we choose not to bother. - - // TABLE and BUTTON (and INPUT type=button) are always border-box by default. - // If you have assigned a different box to either one via CSS then - // box functions will break. - - return geom.boxModel == "border-box" || node.tagName.toLowerCase() == "table" || isButtonTag(node); // boolean - } - - geom.setContentSize = function setContentSize(/*DomNode*/ node, /*Object*/ box, /*Object*/ computedStyle){ - // summary: - // Sets the size of the node's contents, irrespective of margins, - // padding, or borders. - // node: DOMNode - // box: Object - // hash with optional "w", and "h" properties for "width", and "height" - // respectively. All specified properties should have numeric values in whole pixels. - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var w = box.w, h = box.h; - if(usesBorderBox(node)){ - var pb = geom.getPadBorderExtents(node, computedStyle); - if(w >= 0){ - w += pb.w; - } - if(h >= 0){ - h += pb.h; - } - } - setBox(node, NaN, NaN, w, h); - }; - - var nilExtents = {l: 0, t: 0, w: 0, h: 0}; - - geom.setMarginBox = function setMarginBox(/*DomNode*/ node, /*Object*/ box, /*Object*/ computedStyle){ - // summary: - // sets the size of the node's margin box and placement - // (left/top), irrespective of box model. Think of it as a - // passthrough to setBox that handles box-model vagaries for - // you. - // node: DOMNode - // box: Object - // hash with optional "l", "t", "w", and "h" properties for "left", "right", "width", and "height" - // respectively. All specified properties should have numeric values in whole pixels. - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var s = computedStyle || style.getComputedStyle(node), w = box.w, h = box.h, - // Some elements have special padding, margin, and box-model settings. - // To use box functions you may need to set padding, margin explicitly. - // Controlling box-model is harder, in a pinch you might set dojo/dom-geometry.boxModel. - pb = usesBorderBox(node) ? nilExtents : geom.getPadBorderExtents(node, s), - mb = geom.getMarginExtents(node, s); - if(has("webkit")){ - // on Safari (3.1.2), button nodes with no explicit size have a default margin - // setting an explicit size eliminates the margin. - // We have to swizzle the width to get correct margin reading. - if(isButtonTag(node)){ - var ns = node.style; - if(w >= 0 && !ns.width){ - ns.width = "4px"; - } - if(h >= 0 && !ns.height){ - ns.height = "4px"; - } - } - } - if(w >= 0){ - w = Math.max(w - pb.w - mb.w, 0); - } - if(h >= 0){ - h = Math.max(h - pb.h - mb.h, 0); - } - setBox(node, box.l, box.t, w, h); - }; - - // ============================= - // Positioning - // ============================= - - geom.isBodyLtr = function isBodyLtr(/*Document?*/ doc){ - // summary: - // Returns true if the current language is left-to-right, and false otherwise. - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Boolean - - doc = doc || win.doc; - return (win.body(doc).dir || doc.documentElement.dir || "ltr").toLowerCase() == "ltr"; // Boolean - }; - - geom.docScroll = function docScroll(/*Document?*/ doc){ - // summary: - // Returns an object with {node, x, y} with corresponding offsets. - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Object - - doc = doc || win.doc; - var node = win.doc.parentWindow || win.doc.defaultView; // use UI window, not dojo.global window. TODO: use dojo/window::get() except for circular dependency problem - return "pageXOffset" in node ? {x: node.pageXOffset, y: node.pageYOffset } : - (node = has("quirks") ? win.body(doc) : doc.documentElement) && - {x: geom.fixIeBiDiScrollLeft(node.scrollLeft || 0, doc), y: node.scrollTop || 0 }; - }; - - if(has("ie")){ - geom.getIeDocumentElementOffset = function getIeDocumentElementOffset(/*Document?*/ doc){ - // summary: - // returns the offset in x and y from the document body to the - // visual edge of the page for IE - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // description: - // The following values in IE contain an offset: - // | event.clientX - // | event.clientY - // | node.getBoundingClientRect().left - // | node.getBoundingClientRect().top - // But other position related values do not contain this offset, - // such as node.offsetLeft, node.offsetTop, node.style.left and - // node.style.top. The offset is always (2, 2) in LTR direction. - // When the body is in RTL direction, the offset counts the width - // of left scroll bar's width. This function computes the actual - // offset. - - //NOTE: assumes we're being called in an IE browser - - doc = doc || win.doc; - var de = doc.documentElement; // only deal with HTML element here, position() handles body/quirks - - if(has("ie") < 8){ - var r = de.getBoundingClientRect(), // works well for IE6+ - l = r.left, t = r.top; - if(has("ie") < 7){ - l += de.clientLeft; // scrollbar size in strict/RTL, or, - t += de.clientTop; // HTML border size in strict - } - return { - x: l < 0 ? 0 : l, // FRAME element border size can lead to inaccurate negative values - y: t < 0 ? 0 : t - }; - }else{ - return { - x: 0, - y: 0 - }; - } - }; - } - - geom.fixIeBiDiScrollLeft = function fixIeBiDiScrollLeft(/*Integer*/ scrollLeft, /*Document?*/ doc){ - // summary: - // In RTL direction, scrollLeft should be a negative value, but IE - // returns a positive one. All codes using documentElement.scrollLeft - // must call this function to fix this error, otherwise the position - // will offset to right when there is a horizontal scrollbar. - // scrollLeft: Number - // doc: Document? - // Optional document to query. If unspecified, use win.doc. - // returns: Number - - // In RTL direction, scrollLeft should be a negative value, but IE - // returns a positive one. All codes using documentElement.scrollLeft - // must call this function to fix this error, otherwise the position - // will offset to right when there is a horizontal scrollbar. - - doc = doc || win.doc; - var ie = has("ie"); - if(ie && !geom.isBodyLtr(doc)){ - var qk = has("quirks"), - de = qk ? win.body(doc) : doc.documentElement, - pwin = win.global; // TODO: use winUtils.get(doc) after resolving circular dependency b/w dom-geometry.js and dojo/window.js - if(ie == 6 && !qk && pwin.frameElement && de.scrollHeight > de.clientHeight){ - scrollLeft += de.clientLeft; // workaround ie6+strict+rtl+iframe+vertical-scrollbar bug where clientWidth is too small by clientLeft pixels - } - return (ie < 8 || qk) ? (scrollLeft + de.clientWidth - de.scrollWidth) : -scrollLeft; // Integer - } - return scrollLeft; // Integer - }; - - geom.position = function(/*DomNode*/ node, /*Boolean?*/ includeScroll){ - // summary: - // Gets the position and size of the passed element relative to - // the viewport (if includeScroll==false), or relative to the - // document root (if includeScroll==true). - // - // description: - // Returns an object of the form: - // `{ x: 100, y: 300, w: 20, h: 15 }`. - // If includeScroll==true, the x and y values will include any - // document offsets that may affect the position relative to the - // viewport. - // Uses the border-box model (inclusive of border and padding but - // not margin). Does not act as a setter. - // node: DOMNode|String - // includeScroll: Boolean? - // returns: Object - - node = dom.byId(node); - var db = win.body(node.ownerDocument), - ret = node.getBoundingClientRect(); - ret = {x: ret.left, y: ret.top, w: ret.right - ret.left, h: ret.bottom - ret.top}; - - if(has("ie") < 9){ - // On IE<9 there's a 2px offset that we need to adjust for, see dojo.getIeDocumentElementOffset() - var offset = geom.getIeDocumentElementOffset(node.ownerDocument); - - // fixes the position in IE, quirks mode - ret.x -= offset.x + (has("quirks") ? db.clientLeft + db.offsetLeft : 0); - ret.y -= offset.y + (has("quirks") ? db.clientTop + db.offsetTop : 0); - } - - // account for document scrolling - // if offsetParent is used, ret value already includes scroll position - // so we may have to actually remove that value if !includeScroll - if(includeScroll){ - var scroll = geom.docScroll(node.ownerDocument); - ret.x += scroll.x; - ret.y += scroll.y; - } - - return ret; // Object - }; - - // random "private" functions wildly used throughout the toolkit - - geom.getMarginSize = function getMarginSize(/*DomNode*/ node, /*Object*/ computedStyle){ - // summary: - // returns an object that encodes the width and height of - // the node's margin box - // node: DOMNode|String - // computedStyle: Object? - // This parameter accepts computed styles object. - // If this parameter is omitted, the functions will call - // dojo.getComputedStyle to get one. It is a better way, calling - // dojo.computedStyle once, and then pass the reference to this - // computedStyle parameter. Wherever possible, reuse the returned - // object of dojo/dom-style.getComputedStyle(). - - node = dom.byId(node); - var me = geom.getMarginExtents(node, computedStyle || style.getComputedStyle(node)); - var size = node.getBoundingClientRect(); - return { - w: (size.right - size.left) + me.w, - h: (size.bottom - size.top) + me.h - }; - }; - - geom.normalizeEvent = function(event){ - // summary: - // Normalizes the geometry of a DOM event, normalizing the pageX, pageY, - // offsetX, offsetY, layerX, and layerX properties - // event: Object - if(!("layerX" in event)){ - event.layerX = event.offsetX; - event.layerY = event.offsetY; - } - if(!has("dom-addeventlistener")){ - // old IE version - // FIXME: scroll position query is duped from dojo.html to - // avoid dependency on that entire module. Now that HTML is in - // Base, we should convert back to something similar there. - var se = event.target; - var doc = (se && se.ownerDocument) || document; - // DO NOT replace the following to use dojo.body(), in IE, document.documentElement should be used - // here rather than document.body - var docBody = has("quirks") ? doc.body : doc.documentElement; - var offset = geom.getIeDocumentElementOffset(doc); - event.pageX = event.clientX + geom.fixIeBiDiScrollLeft(docBody.scrollLeft || 0, doc) - offset.x; - event.pageY = event.clientY + (docBody.scrollTop || 0) - offset.y; - } - }; - - // TODO: evaluate separate getters/setters for position and sizes? - - return geom; -}); - -}, -'dojo/dom-prop':function(){ -define(["exports", "./_base/kernel", "./sniff", "./_base/lang", "./dom", "./dom-style", "./dom-construct", "./_base/connect"], - function(exports, dojo, has, lang, dom, style, ctr, conn){ - // module: - // dojo/dom-prop - // summary: - // This module defines the core dojo DOM properties API. - // Indirectly depends on dojo.empty() and dojo.toDom(). - - // TODOC: summary not showing up in output, see https://github.com/csnover/js-doc-parse/issues/42 - - // ============================= - // Element properties Functions - // ============================= - - // helper to connect events - var _evtHdlrMap = {}, _ctr = 0, _attrId = dojo._scopeName + "attrid"; - - exports.names = { - // properties renamed to avoid clashes with reserved words - "class": "className", - "for": "htmlFor", - // properties written as camelCase - tabindex: "tabIndex", - readonly: "readOnly", - colspan: "colSpan", - frameborder: "frameBorder", - rowspan: "rowSpan", - valuetype: "valueType" - }; - - exports.get = function getProp(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Gets a property on an HTML element. - // description: - // Handles normalized getting of properties on DOM nodes. - // - // node: DOMNode|String - // id or reference to the element to get the property on - // name: String - // the name of the property to get. - // returns: - // the value of the requested property or its default value - // - // example: - // | // get the current value of the "foo" property on a node - // | dojo.getProp(dojo.byId("nodeId"), "foo"); - // | // or we can just pass the id: - // | dojo.getProp("nodeId", "foo"); - - node = dom.byId(node); - var lc = name.toLowerCase(), propName = exports.names[lc] || name; - return node[propName]; // Anything - }; - - exports.set = function setProp(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets a property on an HTML element. - // description: - // Handles normalized setting of properties on DOM nodes. - // - // When passing functions as values, note that they will not be - // directly assigned to slots on the node, but rather the default - // behavior will be removed and the new behavior will be added - // using `dojo.connect()`, meaning that event handler properties - // will be normalized and that some caveats with regards to - // non-standard behaviors for onsubmit apply. Namely that you - // should cancel form submission using `dojo.stopEvent()` on the - // passed event object instead of returning a boolean value from - // the handler itself. - // node: DOMNode|String - // id or reference to the element to set the property on - // name: String|Object - // the name of the property to set, or a hash object to set - // multiple properties at once. - // value: String? - // The value to set for the property - // returns: - // the DOM node - // - // example: - // | // use prop() to set the tab index - // | dojo.setProp("nodeId", "tabIndex", 3); - // | - // - // example: - // Set multiple values at once, including event handlers: - // | dojo.setProp("formId", { - // | "foo": "bar", - // | "tabIndex": -1, - // | "method": "POST", - // | "onsubmit": function(e){ - // | // stop submitting the form. Note that the IE behavior - // | // of returning true or false will have no effect here - // | // since our handler is connect()ed to the built-in - // | // onsubmit behavior and so we need to use - // | // dojo.stopEvent() to ensure that the submission - // | // doesn't proceed. - // | dojo.stopEvent(e); - // | - // | // submit the form with Ajax - // | dojo.xhrPost({ form: "formId" }); - // | } - // | }); - // - // example: - // Style is s special case: Only set with an object hash of styles - // | dojo.setProp("someNode",{ - // | id:"bar", - // | style:{ - // | width:"200px", height:"100px", color:"#000" - // | } - // | }); - // - // example: - // Again, only set style as an object hash of styles: - // | var obj = { color:"#fff", backgroundColor:"#000" }; - // | dojo.setProp("someNode", "style", obj); - // | - // | // though shorter to use `dojo.style()` in this case: - // | dojo.style("someNode", obj); - - node = dom.byId(node); - var l = arguments.length; - if(l == 2 && typeof name != "string"){ // inline'd type check - // the object form of setter: the 2nd argument is a dictionary - for(var x in name){ - exports.set(node, x, name[x]); - } - return node; // DomNode - } - var lc = name.toLowerCase(), propName = exports.names[lc] || name; - if(propName == "style" && typeof value != "string"){ // inline'd type check - // special case: setting a style - style.set(node, value); - return node; // DomNode - } - if(propName == "innerHTML"){ - // special case: assigning HTML - // the hash lists elements with read-only innerHTML on IE - if(has("ie") && node.tagName.toLowerCase() in {col: 1, colgroup: 1, - table: 1, tbody: 1, tfoot: 1, thead: 1, tr: 1, title: 1}){ - ctr.empty(node); - node.appendChild(ctr.toDom(value, node.ownerDocument)); - }else{ - node[propName] = value; - } - return node; // DomNode - } - if(lang.isFunction(value)){ - // special case: assigning an event handler - // clobber if we can - var attrId = node[_attrId]; - if(!attrId){ - attrId = _ctr++; - node[_attrId] = attrId; - } - if(!_evtHdlrMap[attrId]){ - _evtHdlrMap[attrId] = {}; - } - var h = _evtHdlrMap[attrId][propName]; - if(h){ - //h.remove(); - conn.disconnect(h); - }else{ - try{ - delete node[propName]; - }catch(e){} - } - // ensure that event objects are normalized, etc. - if(value){ - //_evtHdlrMap[attrId][propName] = on(node, propName, value); - _evtHdlrMap[attrId][propName] = conn.connect(node, propName, value); - }else{ - node[propName] = null; - } - return node; // DomNode - } - node[propName] = value; - return node; // DomNode - }; -}); - -}, -'dojo/when':function(){ -define([ - "./Deferred", - "./promise/Promise" -], function(Deferred, Promise){ - "use strict"; - - // module: - // dojo/when - - return function when(valueOrPromise, callback, errback, progback){ - // summary: - // Transparently applies callbacks to values and/or promises. - // description: - // Accepts promises but also transparently handles non-promises. If no - // callbacks are provided returns a promise, regardless of the initial - // value. Foreign promises are converted. - // - // If callbacks are provided and the initial value is not a promise, - // the callback is executed immediately with no error handling. Returns - // a promise if the initial value is a promise, or the result of the - // callback otherwise. - // valueOrPromise: - // Either a regular value or an object with a `then()` method that - // follows the Promises/A specification. - // callback: Function? - // Callback to be invoked when the promise is resolved, or a non-promise - // is received. - // errback: Function? - // Callback to be invoked when the promise is rejected. - // progback: Function? - // Callback to be invoked when the promise emits a progress update. - // returns: dojo/promise/Promise - // Promise, or if a callback is provided, the result of the callback. - - var receivedPromise = valueOrPromise && typeof valueOrPromise.then === "function"; - var nativePromise = receivedPromise && valueOrPromise instanceof Promise; - - if(!receivedPromise){ - if(callback){ - return callback(valueOrPromise); - }else{ - return new Deferred().resolve(valueOrPromise); - } - }else if(!nativePromise){ - var deferred = new Deferred(valueOrPromise.cancel); - valueOrPromise.then(deferred.resolve, deferred.reject, deferred.progress); - valueOrPromise = deferred.promise; - } - - if(callback || errback || progback){ - return valueOrPromise.then(callback, errback, progback); - } - return valueOrPromise; - }; -}); - -}, -'dojo/dom-attr':function(){ -define(["exports", "./sniff", "./_base/lang", "./dom", "./dom-style", "./dom-prop"], - function(exports, has, lang, dom, style, prop){ - // module: - // dojo/dom-attr - // summary: - // This module defines the core dojo DOM attributes API. - - // TODOC: summary not showing up in output see https://github.com/csnover/js-doc-parse/issues/42 - - // ============================= - // Element attribute Functions - // ============================= - - // This module will be obsolete soon. Use dojo/prop instead. - - // dojo.attr() should conform to http://www.w3.org/TR/DOM-Level-2-Core/ - - // attribute-related functions (to be obsolete soon) - - var forcePropNames = { - innerHTML: 1, - className: 1, - htmlFor: has("ie"), - value: 1 - }, - attrNames = { - // original attribute names - classname: "class", - htmlfor: "for", - // for IE - tabindex: "tabIndex", - readonly: "readOnly" - }; - - function _hasAttr(node, name){ - var attr = node.getAttributeNode && node.getAttributeNode(name); - return attr && attr.specified; // Boolean - } - - // There is a difference in the presence of certain properties and their default values - // between browsers. For example, on IE "disabled" is present on all elements, - // but it is value is "false"; "tabIndex" of
    returns 0 by default on IE, yet other browsers - // can return -1. - - exports.has = function hasAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Returns true if the requested attribute is specified on the - // given element, and false otherwise. - // node: DOMNode|String - // id or reference to the element to check - // name: String - // the name of the attribute - // returns: Boolean - // true if the requested attribute is specified on the - // given element, and false otherwise - - var lc = name.toLowerCase(); - return forcePropNames[prop.names[lc] || name] || _hasAttr(dom.byId(node), attrNames[lc] || name); // Boolean - }; - - exports.get = function getAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Gets an attribute on an HTML element. - // description: - // Handles normalized getting of attributes on DOM Nodes. - // node: DOMNode|String - // id or reference to the element to get the attribute on - // name: String - // the name of the attribute to get. - // returns: - // the value of the requested attribute or null if that attribute does not have a specified or - // default value; - // - // example: - // | // get the current value of the "foo" attribute on a node - // | dojo.getAttr(dojo.byId("nodeId"), "foo"); - // | // or we can just pass the id: - // | dojo.getAttr("nodeId", "foo"); - - node = dom.byId(node); - var lc = name.toLowerCase(), - propName = prop.names[lc] || name, - forceProp = forcePropNames[propName], - value = node[propName]; // should we access this attribute via a property or via getAttribute()? - - if(forceProp && typeof value != "undefined"){ - // node's property - return value; // Anything - } - if(propName != "href" && (typeof value == "boolean" || lang.isFunction(value))){ - // node's property - return value; // Anything - } - // node's attribute - // we need _hasAttr() here to guard against IE returning a default value - var attrName = attrNames[lc] || name; - return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything - }; - - exports.set = function setAttr(/*DOMNode|String*/ node, /*String|Object*/ name, /*String?*/ value){ - // summary: - // Sets an attribute on an HTML element. - // description: - // Handles normalized setting of attributes on DOM Nodes. - // - // When passing functions as values, note that they will not be - // directly assigned to slots on the node, but rather the default - // behavior will be removed and the new behavior will be added - // using `dojo.connect()`, meaning that event handler properties - // will be normalized and that some caveats with regards to - // non-standard behaviors for onsubmit apply. Namely that you - // should cancel form submission using `dojo.stopEvent()` on the - // passed event object instead of returning a boolean value from - // the handler itself. - // node: DOMNode|String - // id or reference to the element to set the attribute on - // name: String|Object - // the name of the attribute to set, or a hash of key-value pairs to set. - // value: String? - // the value to set for the attribute, if the name is a string. - // returns: - // the DOM node - // - // example: - // | // use attr() to set the tab index - // | dojo.setAttr("nodeId", "tabIndex", 3); - // - // example: - // Set multiple values at once, including event handlers: - // | dojo.setAttr("formId", { - // | "foo": "bar", - // | "tabIndex": -1, - // | "method": "POST", - // | "onsubmit": function(e){ - // | // stop submitting the form. Note that the IE behavior - // | // of returning true or false will have no effect here - // | // since our handler is connect()ed to the built-in - // | // onsubmit behavior and so we need to use - // | // dojo.stopEvent() to ensure that the submission - // | // doesn't proceed. - // | dojo.stopEvent(e); - // | - // | // submit the form with Ajax - // | dojo.xhrPost({ form: "formId" }); - // | } - // | }); - // - // example: - // Style is s special case: Only set with an object hash of styles - // | dojo.setAttr("someNode",{ - // | id:"bar", - // | style:{ - // | width:"200px", height:"100px", color:"#000" - // | } - // | }); - // - // example: - // Again, only set style as an object hash of styles: - // | var obj = { color:"#fff", backgroundColor:"#000" }; - // | dojo.setAttr("someNode", "style", obj); - // | - // | // though shorter to use `dojo.style()` in this case: - // | dojo.setStyle("someNode", obj); - - node = dom.byId(node); - if(arguments.length == 2){ // inline'd type check - // the object form of setter: the 2nd argument is a dictionary - for(var x in name){ - exports.set(node, x, name[x]); - } - return node; // DomNode - } - var lc = name.toLowerCase(), - propName = prop.names[lc] || name, - forceProp = forcePropNames[propName]; - if(propName == "style" && typeof value != "string"){ // inline'd type check - // special case: setting a style - style.set(node, value); - return node; // DomNode - } - if(forceProp || typeof value == "boolean" || lang.isFunction(value)){ - return prop.set(node, name, value); - } - // node's attribute - node.setAttribute(attrNames[lc] || name, value); - return node; // DomNode - }; - - exports.remove = function removeAttr(/*DOMNode|String*/ node, /*String*/ name){ - // summary: - // Removes an attribute from an HTML element. - // node: DOMNode|String - // id or reference to the element to remove the attribute from - // name: String - // the name of the attribute to remove - - dom.byId(node).removeAttribute(attrNames[name.toLowerCase()] || name); - }; - - exports.getNodeProp = function getNodeProp(/*DomNode|String*/ node, /*String*/ name){ - // summary: - // Returns an effective value of a property or an attribute. - // node: DOMNode|String - // id or reference to the element to remove the attribute from - // name: String - // the name of the attribute - // returns: - // the value of the attribute - - node = dom.byId(node); - var lc = name.toLowerCase(), propName = prop.names[lc] || name; - if((propName in node) && propName != "href"){ - // node's property - return node[propName]; // Anything - } - // node's attribute - var attrName = attrNames[lc] || name; - return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything - }; -}); - -}, -'dojo/dom-construct':function(){ -define(["exports", "./_base/kernel", "./sniff", "./_base/window", "./dom", "./dom-attr", "./on"], - function(exports, dojo, has, win, dom, attr, on){ - // module: - // dojo/dom-construct - // summary: - // This module defines the core dojo DOM construction API. - - // TODOC: summary not showing up in output, see https://github.com/csnover/js-doc-parse/issues/42 - - // support stuff for toDom() - var tagWrap = { - option: ["select"], - tbody: ["table"], - thead: ["table"], - tfoot: ["table"], - tr: ["table", "tbody"], - td: ["table", "tbody", "tr"], - th: ["table", "thead", "tr"], - legend: ["fieldset"], - caption: ["table"], - colgroup: ["table"], - col: ["table", "colgroup"], - li: ["ul"] - }, - reTag = /<\s*([\w\:]+)/, - masterNode = {}, masterNum = 0, - masterName = "__" + dojo._scopeName + "ToDomId"; - - // generate start/end tag strings to use - // for the injection for each special tag wrap case. - for(var param in tagWrap){ - if(tagWrap.hasOwnProperty(param)){ - var tw = tagWrap[param]; - tw.pre = param == "option" ? '
    First!
    First!