aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/ajax/download.php11
-rw-r--r--apps/files/css/files.css25
-rw-r--r--apps/files/js/fileactions.js35
-rw-r--r--apps/files/js/filelist.js16
-rw-r--r--apps/files/js/files.js27
-rw-r--r--apps/files/l10n/lt_LT.js12
-rw-r--r--apps/files/l10n/lt_LT.json12
-rw-r--r--apps/files/tests/js/fileactionsSpec.js4
-rw-r--r--apps/files/tests/js/filelistSpec.js10
-rw-r--r--apps/files_sharing/css/authenticate.css1
-rw-r--r--apps/files_sharing/l10n/gl.js2
-rw-r--r--apps/files_sharing/l10n/gl.json2
-rw-r--r--apps/files_sharing/l10n/lt_LT.js1
-rw-r--r--apps/files_sharing/l10n/lt_LT.json1
-rw-r--r--apps/files_sharing/templates/authenticate.php3
-rw-r--r--apps/files_trashbin/l10n/lt_LT.js1
-rw-r--r--apps/files_trashbin/l10n/lt_LT.json1
-rw-r--r--bower.json2
-rw-r--r--core/command/db/converttype.php5
-rw-r--r--core/command/maintenance/install.php5
-rw-r--r--core/css/styles.css8
-rw-r--r--core/js/js.js32
-rw-r--r--core/js/setup.js5
-rw-r--r--core/l10n/lt_LT.js13
-rw-r--r--core/l10n/lt_LT.json13
-rw-r--r--core/templates/installation.php3
-rw-r--r--core/templates/layout.base.php1
-rw-r--r--core/templates/layout.guest.php1
-rw-r--r--core/templates/layout.user.php1
-rw-r--r--core/vendor/.gitignore1
-rw-r--r--core/vendor/moment/.bower.json19
-rw-r--r--core/vendor/moment/LICENSE2
-rw-r--r--core/vendor/moment/min/moment-with-locales.js7547
-rw-r--r--lib/base.php4
-rw-r--r--lib/l10n/ar.js3
-rw-r--r--lib/l10n/ar.json3
-rw-r--r--lib/l10n/ast.js3
-rw-r--r--lib/l10n/ast.json3
-rw-r--r--lib/l10n/az.js1
-rw-r--r--lib/l10n/az.json1
-rw-r--r--lib/l10n/bg_BG.js3
-rw-r--r--lib/l10n/bg_BG.json3
-rw-r--r--lib/l10n/ca.js3
-rw-r--r--lib/l10n/ca.json3
-rw-r--r--lib/l10n/cs_CZ.js3
-rw-r--r--lib/l10n/cs_CZ.json3
-rw-r--r--lib/l10n/cy_GB.js1
-rw-r--r--lib/l10n/cy_GB.json1
-rw-r--r--lib/l10n/da.js3
-rw-r--r--lib/l10n/da.json3
-rw-r--r--lib/l10n/de.js3
-rw-r--r--lib/l10n/de.json3
-rw-r--r--lib/l10n/de_DE.js3
-rw-r--r--lib/l10n/de_DE.json3
-rw-r--r--lib/l10n/el.js3
-rw-r--r--lib/l10n/el.json3
-rw-r--r--lib/l10n/en_GB.js3
-rw-r--r--lib/l10n/en_GB.json3
-rw-r--r--lib/l10n/eo.js1
-rw-r--r--lib/l10n/eo.json1
-rw-r--r--lib/l10n/es.js3
-rw-r--r--lib/l10n/es.json3
-rw-r--r--lib/l10n/es_AR.js1
-rw-r--r--lib/l10n/es_AR.json1
-rw-r--r--lib/l10n/es_MX.js1
-rw-r--r--lib/l10n/es_MX.json1
-rw-r--r--lib/l10n/et_EE.js3
-rw-r--r--lib/l10n/et_EE.json3
-rw-r--r--lib/l10n/eu.js3
-rw-r--r--lib/l10n/eu.json3
-rw-r--r--lib/l10n/fa.js1
-rw-r--r--lib/l10n/fa.json1
-rw-r--r--lib/l10n/fi_FI.js1
-rw-r--r--lib/l10n/fi_FI.json1
-rw-r--r--lib/l10n/fr.js3
-rw-r--r--lib/l10n/fr.json3
-rw-r--r--lib/l10n/gl.js3
-rw-r--r--lib/l10n/gl.json3
-rw-r--r--lib/l10n/hr.js3
-rw-r--r--lib/l10n/hr.json3
-rw-r--r--lib/l10n/hu_HU.js3
-rw-r--r--lib/l10n/hu_HU.json3
-rw-r--r--lib/l10n/id.js3
-rw-r--r--lib/l10n/id.json3
-rw-r--r--lib/l10n/it.js3
-rw-r--r--lib/l10n/it.json3
-rw-r--r--lib/l10n/ja.js3
-rw-r--r--lib/l10n/ja.json3
-rw-r--r--lib/l10n/ka_GE.js1
-rw-r--r--lib/l10n/ka_GE.json1
-rw-r--r--lib/l10n/ko.js3
-rw-r--r--lib/l10n/ko.json3
-rw-r--r--lib/l10n/lt_LT.js1
-rw-r--r--lib/l10n/lt_LT.json1
-rw-r--r--lib/l10n/lv.js1
-rw-r--r--lib/l10n/lv.json1
-rw-r--r--lib/l10n/nb_NO.js3
-rw-r--r--lib/l10n/nb_NO.json3
-rw-r--r--lib/l10n/nl.js3
-rw-r--r--lib/l10n/nl.json3
-rw-r--r--lib/l10n/pl.js3
-rw-r--r--lib/l10n/pl.json3
-rw-r--r--lib/l10n/pt_BR.js3
-rw-r--r--lib/l10n/pt_BR.json3
-rw-r--r--lib/l10n/pt_PT.js3
-rw-r--r--lib/l10n/pt_PT.json3
-rw-r--r--lib/l10n/ro.js1
-rw-r--r--lib/l10n/ro.json1
-rw-r--r--lib/l10n/ru.js3
-rw-r--r--lib/l10n/ru.json3
-rw-r--r--lib/l10n/sk_SK.js3
-rw-r--r--lib/l10n/sk_SK.json3
-rw-r--r--lib/l10n/sl.js3
-rw-r--r--lib/l10n/sl.json3
-rw-r--r--lib/l10n/sq.js1
-rw-r--r--lib/l10n/sq.json1
-rw-r--r--lib/l10n/sr.js3
-rw-r--r--lib/l10n/sr.json3
-rw-r--r--lib/l10n/sv.js3
-rw-r--r--lib/l10n/sv.json3
-rw-r--r--lib/l10n/th_TH.js3
-rw-r--r--lib/l10n/th_TH.json3
-rw-r--r--lib/l10n/tr.js3
-rw-r--r--lib/l10n/tr.json3
-rw-r--r--lib/l10n/uk.js3
-rw-r--r--lib/l10n/uk.json3
-rw-r--r--lib/l10n/zh_CN.js3
-rw-r--r--lib/l10n/zh_CN.json3
-rw-r--r--lib/l10n/zh_TW.js3
-rw-r--r--lib/l10n/zh_TW.json3
-rw-r--r--lib/private/db.php2
-rw-r--r--lib/private/db/connectionfactory.php6
-rw-r--r--lib/private/db/mdb2schemamanager.php3
-rw-r--r--lib/private/db/mssqlmigrator.php37
-rw-r--r--lib/private/files/view.php4
-rw-r--r--lib/private/setup.php63
-rw-r--r--lib/private/setup/abstractdatabase.php47
-rw-r--r--lib/private/setup/mssql.php203
-rw-r--r--lib/private/setup/mysql.php187
-rw-r--r--lib/private/setup/oci.php38
-rw-r--r--lib/private/setup/postgresql.php40
-rw-r--r--lib/private/util.php3
-rw-r--r--settings/admin.php5
-rw-r--r--settings/l10n/gl.js4
-rw-r--r--settings/l10n/gl.json4
-rw-r--r--settings/l10n/pt_BR.js2
-rw-r--r--settings/l10n/pt_BR.json2
-rw-r--r--settings/l10n/th_TH.js3
-rw-r--r--settings/l10n/th_TH.json3
-rw-r--r--tests/lib/appframework/utility/SimpleContainerTest.php6
-rw-r--r--tests/lib/db/mdb2schemamanager.php4
-rw-r--r--tests/lib/db/migrator.php6
-rw-r--r--tests/lib/dbschema.php3
-rw-r--r--tests/lib/files/pathverificationtest.php4
-rw-r--r--tests/lib/setup.php35
155 files changed, 4656 insertions, 4124 deletions
diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php
index e67635ab853..26bab8837b4 100644
--- a/apps/files/ajax/download.php
+++ b/apps/files/ajax/download.php
@@ -39,4 +39,15 @@ if (!is_array($files_list)) {
$files_list = array($files);
}
+/**
+ * this sets a cookie to be able to recognize the start of the download
+ * the content must not be longer than 32 characters and must only contain
+ * alphanumeric characters
+ */
+if(isset($_GET['downloadStartSecret'])
+ && !isset($_GET['downloadStartSecret'][32])
+ && preg_match('!^[a-zA-Z0-9]+$!', $_GET['downloadStartSecret']) === 1) {
+ setcookie('ocDownloadStarted', $_GET['downloadStartSecret'], time() + 20, '/');
+}
+
OC_Files::get($dir, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD');
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index e4bf791761d..f2f2c5ac3bc 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -583,14 +583,23 @@ a.action>img {
#fileList tr:focus a.action,
#fileList a.action.permanent,
#fileList tr:hover a.action.no-permission:hover,
-#fileList tr:focus a.action.no-permission:focus
-/*#fileList .name:focus .action*/ {
+#fileList tr:focus a.action.no-permission:focus,
+/*#fileList .name:focus .action,*/
+/* also enforce the low opacity for disabled links that are hovered/focused */
+.ie8 #fileList a.action.disabled:hover img,
+#fileList tr:hover a.action.disabled:hover,
+#fileList tr:focus a.action.disabled:focus,
+#fileList .name:focus a.action.disabled:focus,
+#fileList a.action.disabled img {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
opacity: .5;
display:inline;
}
.ie8 #fileList a.action:hover img,
+#fileList tr a.action.disabled.action-download,
+#fileList tr:hover a.action.disabled.action-download:hover,
+#fileList tr:focus a.action.disabled.action-download:focus,
#fileList tr:hover a.action:hover,
#fileList tr:focus a.action:focus,
#fileList .name:focus a.action:focus {
@@ -599,6 +608,18 @@ a.action>img {
opacity: 1;
display:inline;
}
+#fileList tr a.action.disabled {
+ background: none;
+}
+
+#selectedActionsList a.download.disabled,
+#fileList tr a.action.action-download.disabled {
+ color: #000000;
+}
+
+#fileList tr:hover a.action.disabled:hover * {
+ cursor: default;
+}
.summary {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index 1956fda0077..8dd26d71c3e 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -478,8 +478,21 @@
}, function (filename, context) {
var dir = context.dir || context.fileList.getCurrentDirectory();
var url = context.fileList.getDownloadUrl(filename, dir);
+
+ var downloadFileaction = $(context.$file).find('.fileactions .action-download');
+
+ // don't allow a second click on the download action
+ if(downloadFileaction.hasClass('disabled')) {
+ return;
+ }
+
if (url) {
- OC.redirect(url);
+ var disableLoadingState = function(){
+ OCA.Files.FileActions.updateFileActionSpinner(downloadFileaction, false);
+ };
+
+ OCA.Files.FileActions.updateFileActionSpinner(downloadFileaction, true);
+ OCA.Files.Files.handleDownload(url, disableLoadingState);
}
}, t('files', 'Download'));
}
@@ -488,6 +501,26 @@
OCA.Files.FileActions = FileActions;
/**
+ * Replaces the download icon with a loading spinner and vice versa
+ * - also adds the class disabled to the passed in element
+ *
+ * @param downloadButtonElement download fileaction
+ * @param {boolean} showIt whether to show the spinner(true) or to hide it(false)
+ */
+ OCA.Files.FileActions.updateFileActionSpinner = function(downloadButtonElement, showIt) {
+ var icon = downloadButtonElement.find('img'),
+ sourceImage = icon.attr('src');
+
+ if(showIt) {
+ downloadButtonElement.addClass('disabled');
+ icon.attr('src', sourceImage.replace('actions/download.svg', 'loading-small.gif'));
+ } else {
+ downloadButtonElement.removeClass('disabled');
+ icon.attr('src', sourceImage.replace('loading-small.gif', 'actions/download.svg'));
+ }
+ };
+
+ /**
* File action attributes.
*
* @todo make this a real class in the future
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 8236ef3b4ac..a7d4e41d0e0 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -417,7 +417,21 @@
else {
files = _.pluck(this.getSelectedFiles(), 'name');
}
- OC.redirect(this.getDownloadUrl(files, dir));
+
+ var downloadFileaction = $('#selectedActionsList').find('.download');
+
+ // don't allow a second click on the download action
+ if(downloadFileaction.hasClass('disabled')) {
+ event.preventDefault();
+ return;
+ }
+
+ var disableLoadingState = function(){
+ OCA.Files.FileActions.updateFileActionSpinner(downloadFileaction, false);
+ };
+
+ OCA.Files.FileActions.updateFileActionSpinner(downloadFileaction, true);
+ OCA.Files.Files.handleDownload(this.getDownloadUrl(files, dir), disableLoadingState);
return false;
},
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 034045ee40b..19cc3b26e44 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -271,8 +271,33 @@
FileList.scrollTo(getURLParameter('scrollto'));
}
*/
+ },
+
+ /**
+ * Handles the download and calls the callback function once the download has started
+ * - browser sends download request and adds parameter with a token
+ * - server notices this token and adds a set cookie to the download response
+ * - browser now adds this cookie for the domain
+ * - JS periodically checks for this cookie and then knows when the download has started to call the callback
+ *
+ * @param {string} url download URL
+ * @param {function} callback function to call once the download has started
+ */
+ handleDownload: function(url, callback) {
+ var randomToken = Math.random().toString(36).substring(2),
+ checkForDownloadCookie = function() {
+ if (!OC.Util.isCookieSetToValue('ocDownloadStarted', randomToken)){
+ return false;
+ } else {
+ callback();
+ return true;
+ }
+ };
+
+ OC.redirect(url + '&downloadStartSecret=' + randomToken);
+ OC.Util.waitFor(checkForDownloadCookie, 500);
}
- }
+ };
Files._updateStorageStatisticsDebounced = _.debounce(Files._updateStorageStatistics, 250);
OCA.Files.Files = Files;
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index 376e0d84f67..2106a985350 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -42,15 +42,19 @@ OC.L10N.register(
"Delete" : "Ištrinti",
"Disconnect storage" : "Atjungti saugyklą",
"Unshare" : "Nebesidalinti",
+ "No permission to delete" : "Neturite leidimų ištrinti",
"Download" : "Atsisiųsti",
"Select" : "Pasirinkiti",
"Pending" : "Laukiantis",
"Unable to determine date" : "Nepavyksta nustatyti datos",
+ "This operation is forbidden" : "Ši operacija yra uždrausta",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi",
"Error moving file." : "Klaida perkeliant failą.",
"Error moving file" : "Klaida perkeliant failą",
"Error" : "Klaida",
"Could not rename file" : "Neįmanoma pervadinti failo",
"Error deleting file." : "Klaida trinant failą.",
+ "No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“",
"Name" : "Pavadinimas",
"Size" : "Dydis",
"Modified" : "Pakeista",
@@ -60,13 +64,18 @@ OC.L10N.register(
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
"\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų visa vieta serveryje užimta",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"],
"{dirs} and {files}" : "{dirs} ir {files}",
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
+ "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
"A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų <strong>mėgiamuose failuose</strong> <em>(Tik srautas)</em>",
"A file or folder has been <strong>deleted</strong>" : "Failas ar aplankas buvo <strong>ištrintas</strong>",
"A file or folder has been <strong>restored</strong>" : "Failas ar aplankas buvo <strong>atkurtas</strong>",
"You created %1$s" : "Jūs sukūrėte %1$s",
@@ -85,6 +94,7 @@ OC.L10N.register(
"Maximum upload size" : "Maksimalus įkeliamo failo dydis",
"max. possible: " : "maks. galima:",
"Save" : "Išsaugoti",
+ "Can not be edited from here due to insufficient permissions." : "Negali būti redaguojamas iš čia dėl leidimų trūkumo.",
"Settings" : "Nustatymai",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>",
@@ -95,7 +105,9 @@ OC.L10N.register(
"Folder" : "Katalogas",
"Upload" : "Įkelti",
"Cancel upload" : "Atšaukti siuntimą",
+ "No files in here" : "Čia nėra failų",
"Upload some content or sync with your devices!" : "Įkelkite kokį nors turinį, arba sinchronizuokite su savo įrenginiais!",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, kuris leidžiamas šiame serveryje",
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index b8e296a0d43..b4758b4a9bb 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -40,15 +40,19 @@
"Delete" : "Ištrinti",
"Disconnect storage" : "Atjungti saugyklą",
"Unshare" : "Nebesidalinti",
+ "No permission to delete" : "Neturite leidimų ištrinti",
"Download" : "Atsisiųsti",
"Select" : "Pasirinkiti",
"Pending" : "Laukiantis",
"Unable to determine date" : "Nepavyksta nustatyti datos",
+ "This operation is forbidden" : "Ši operacija yra uždrausta",
+ "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas nepasiekiamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi",
"Error moving file." : "Klaida perkeliant failą.",
"Error moving file" : "Klaida perkeliant failą",
"Error" : "Klaida",
"Could not rename file" : "Neįmanoma pervadinti failo",
"Error deleting file." : "Klaida trinant failą.",
+ "No entries in this folder match '{filter}'" : "Nėra įrašų šiame aplanko atitikmeniui „{filter}“",
"Name" : "Pavadinimas",
"Size" : "Dydis",
"Modified" : "Pakeista",
@@ -58,13 +62,18 @@
"_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"],
"\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas failo pavadinime.",
"File name cannot be empty." : "Failo pavadinimas negali būti tuščias.",
+ "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner} saugykla yra pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų visa vieta serveryje užimta",
+ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner} saugykla yra beveik pilna ({usedSpacePercent}%)",
"Your storage is almost full ({usedSpacePercent}%)" : "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)",
+ "_matches '{filter}'_::_match '{filter}'_" : ["atitikmuo „{filter}“","atitikmenys „{filter}“","atitikmenų „{filter}“"],
"{dirs} and {files}" : "{dirs} ir {files}",
"Favorited" : "Pažymėta mėgstamu",
"Favorite" : "Mėgiamas",
+ "An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"A new file or folder has been <strong>created</strong>" : "Naujas failas ar aplankas buvo <strong>sukurtas</strong>",
"A file or folder has been <strong>changed</strong>" : "Failas ar aplankas buvo <strong>pakeistas</strong>",
+ "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Riboti pranešimus apie sukūrimą ir pokyčius jūsų <strong>mėgiamuose failuose</strong> <em>(Tik srautas)</em>",
"A file or folder has been <strong>deleted</strong>" : "Failas ar aplankas buvo <strong>ištrintas</strong>",
"A file or folder has been <strong>restored</strong>" : "Failas ar aplankas buvo <strong>atkurtas</strong>",
"You created %1$s" : "Jūs sukūrėte %1$s",
@@ -83,6 +92,7 @@
"Maximum upload size" : "Maksimalus įkeliamo failo dydis",
"max. possible: " : "maks. galima:",
"Save" : "Išsaugoti",
+ "Can not be edited from here due to insufficient permissions." : "Negali būti redaguojamas iš čia dėl leidimų trūkumo.",
"Settings" : "Nustatymai",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Naudokite šį adresą, kad <a href=\"%s\" target=\"_blank\">pasiektumėte savo failus per WebDAV</a>",
@@ -93,7 +103,9 @@
"Folder" : "Katalogas",
"Upload" : "Įkelti",
"Cancel upload" : "Atšaukti siuntimą",
+ "No files in here" : "Čia nėra failų",
"Upload some content or sync with your devices!" : "Įkelkite kokį nors turinį, arba sinchronizuokite su savo įrenginiais!",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Upload too large" : "Įkėlimui failas per didelis",
"The files you are trying to upload exceed the maximum size for file uploads on this server." : "Bandomų įkelti failų dydis viršija maksimalų, kuris leidžiamas šiame serveryje",
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index 53fa8707674..e420ab828af 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -105,7 +105,7 @@ describe('OCA.Files.FileActions tests', function() {
$tr.find('.action-download').click();
expect(redirectStub.calledOnce).toEqual(true);
- expect(redirectStub.getCall(0).args[0]).toEqual(
+ expect(redirectStub.getCall(0).args[0]).toContain(
OC.webroot +
'/index.php/apps/files/ajax/download.php' +
'?dir=%2Fsubdir&files=testName.txt');
@@ -129,7 +129,7 @@ describe('OCA.Files.FileActions tests', function() {
$tr.find('.action-download').click();
expect(redirectStub.calledOnce).toEqual(true);
- expect(redirectStub.getCall(0).args[0]).toEqual(
+ expect(redirectStub.getCall(0).args[0]).toContain(
OC.webroot + '/index.php/apps/files/ajax/download.php' +
'?dir=%2Fanotherpath%2Fthere&files=testName.txt'
);
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 316df0281e9..09d698088ae 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -77,8 +77,8 @@ describe('OCA.Files.FileList tests', function() {
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
- '<span class="selectedActions hidden">' +
- '<a href class="download">Download</a>' +
+ '<span id="selectedActionsList" class="selectedActions hidden">' +
+ '<a href class="download"><img src="actions/download.svg">Download</a>' +
'<a href class="delete-selected">Delete</a></span>' +
'</th>' +
'<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' +
@@ -1775,7 +1775,7 @@ describe('OCA.Files.FileList tests', function() {
var redirectStub = sinon.stub(OC, 'redirect');
$('.selectedActions .download').click();
expect(redirectStub.calledOnce).toEqual(true);
- expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22One.txt%22%2C%22Three.pdf%22%2C%22somedir%22%5D');
+ expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22One.txt%22%2C%22Three.pdf%22%2C%22somedir%22%5D');
redirectStub.restore();
});
it('Downloads root folder when all selected in root folder', function() {
@@ -1784,7 +1784,7 @@ describe('OCA.Files.FileList tests', function() {
var redirectStub = sinon.stub(OC, 'redirect');
$('.selectedActions .download').click();
expect(redirectStub.calledOnce).toEqual(true);
- expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=');
+ expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=');
redirectStub.restore();
});
it('Downloads parent folder when all selected in subfolder', function() {
@@ -1792,7 +1792,7 @@ describe('OCA.Files.FileList tests', function() {
var redirectStub = sinon.stub(OC, 'redirect');
$('.selectedActions .download').click();
expect(redirectStub.calledOnce).toEqual(true);
- expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=subdir');
+ expect(redirectStub.getCall(0).args[0]).toContain(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=subdir');
redirectStub.restore();
});
});
diff --git a/apps/files_sharing/css/authenticate.css b/apps/files_sharing/css/authenticate.css
index 15e3e7a2fc5..ac76d4c6870 100644
--- a/apps/files_sharing/css/authenticate.css
+++ b/apps/files_sharing/css/authenticate.css
@@ -1,5 +1,4 @@
#password {
- width: 190px !important;
padding: 10px;
margin: 6px;
}
diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js
index 390befe6ffe..d04db75d0b2 100644
--- a/apps/files_sharing/l10n/gl.js
+++ b/apps/files_sharing/l10n/gl.js
@@ -59,7 +59,7 @@ OC.L10N.register(
"Download" : "Descargar",
"Download %s" : "Descargar %s",
"Direct link" : "Ligazón directa",
- "Federated Cloud Sharing" : "Compartición de nube federada",
+ "Federated Cloud Sharing" : "Nube federada compartida",
"Open documentation" : "Abrir a documentación",
"Allow users on this server to send shares to other servers" : "Permitir aos usuarios deste servidor enviar comparticións a outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir aos usuarios deste servidor recibir comparticións de outros servidores",
diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json
index b00e3d621b0..45f6a369f93 100644
--- a/apps/files_sharing/l10n/gl.json
+++ b/apps/files_sharing/l10n/gl.json
@@ -57,7 +57,7 @@
"Download" : "Descargar",
"Download %s" : "Descargar %s",
"Direct link" : "Ligazón directa",
- "Federated Cloud Sharing" : "Compartición de nube federada",
+ "Federated Cloud Sharing" : "Nube federada compartida",
"Open documentation" : "Abrir a documentación",
"Allow users on this server to send shares to other servers" : "Permitir aos usuarios deste servidor enviar comparticións a outros servidores",
"Allow users on this server to receive shares from other servers" : "Permitir aos usuarios deste servidor recibir comparticións de outros servidores",
diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js
index 3f9926144ad..61860ef2f43 100644
--- a/apps/files_sharing/l10n/lt_LT.js
+++ b/apps/files_sharing/l10n/lt_LT.js
@@ -13,6 +13,7 @@ OC.L10N.register(
"This share is password-protected" : "Turinys apsaugotas slaptažodžiu",
"The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.",
"Password" : "Slaptažodis",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Name" : "Pavadinimas",
"Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.",
"Reasons might be:" : "Galimos priežastys:",
diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json
index c6d3b846ea4..8e42e1ca947 100644
--- a/apps/files_sharing/l10n/lt_LT.json
+++ b/apps/files_sharing/l10n/lt_LT.json
@@ -11,6 +11,7 @@
"This share is password-protected" : "Turinys apsaugotas slaptažodžiu",
"The password is wrong. Try again." : "Netinka slaptažodis: Bandykite dar kartą.",
"Password" : "Slaptažodis",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Name" : "Pavadinimas",
"Sorry, this link doesn’t seem to work anymore." : "Atleiskite, panašu, kad nuoroda yra neveiksni.",
"Reasons might be:" : "Galimos priežastys:",
diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php
index e3aa62b9ece..769b7929144 100644
--- a/apps/files_sharing/templates/authenticate.php
+++ b/apps/files_sharing/templates/authenticate.php
@@ -19,7 +19,8 @@
autocomplete="off" autocapitalize="off" autocorrect="off"
autofocus />
<img class="svg" id="password-icon" src="<?php print_unescaped(image_path('', 'actions/password.svg')); ?>" alt=""/>
- <input type="submit" value="" class="svg icon-confirm" />
+ <input type="submit" value=""
+ class="svg icon-confirm input-button-inline" />
</p>
</fieldset>
</form>
diff --git a/apps/files_trashbin/l10n/lt_LT.js b/apps/files_trashbin/l10n/lt_LT.js
index 3c075536079..afe317ca20a 100644
--- a/apps/files_trashbin/l10n/lt_LT.js
+++ b/apps/files_trashbin/l10n/lt_LT.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"restored" : "atstatyta",
"No deleted files" : "Nėra ištrintų failų",
"You will be able to recover deleted files from here" : "Jūs galėsite atkurti ištrintus failus iš čia",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Name" : "Pavadinimas",
"Deleted" : "Ištrinti",
diff --git a/apps/files_trashbin/l10n/lt_LT.json b/apps/files_trashbin/l10n/lt_LT.json
index 0be508aeb21..bf2cb31b588 100644
--- a/apps/files_trashbin/l10n/lt_LT.json
+++ b/apps/files_trashbin/l10n/lt_LT.json
@@ -8,6 +8,7 @@
"restored" : "atstatyta",
"No deleted files" : "Nėra ištrintų failų",
"You will be able to recover deleted files from here" : "Jūs galėsite atkurti ištrintus failus iš čia",
+ "No entries found in this folder" : "Nerasta įrašų šiame aplanke",
"Select all" : "Pažymėti viską",
"Name" : "Pavadinimas",
"Deleted" : "Ištrinti",
diff --git a/bower.json b/bower.json
index 9a7864ab5e9..112a9a907cd 100644
--- a/bower.json
+++ b/bower.json
@@ -20,7 +20,7 @@
"jquery-migrate": "~1.2.1",
"jquery-ui": "1.10.0",
"jsTimezoneDetect": "~1.0.5",
- "moment": "~2.8.3",
+ "moment": "~2.10.0",
"select2": "~3.4.8",
"zxcvbn": "*",
"snapjs": "~2.0.0-rc1",
diff --git a/core/command/db/converttype.php b/core/command/db/converttype.php
index e6c0f5caa35..dd91d86b8d7 100644
--- a/core/command/db/converttype.php
+++ b/core/command/db/converttype.php
@@ -115,11 +115,6 @@ class ConvertType extends Command {
'Converting to SQLite (sqlite3) is currently not supported.'
);
}
- if ($type === 'mssql') {
- throw new \InvalidArgumentException(
- 'Converting to Microsoft SQL Server (mssql) is currently not supported.'
- );
- }
if ($type === $this->config->getSystemValue('dbtype', '')) {
throw new \InvalidArgumentException(sprintf(
'Can not convert from %1$s to %1$s.',
diff --git a/core/command/maintenance/install.php b/core/command/maintenance/install.php
index 2fea5add438..7f5d9cae647 100644
--- a/core/command/maintenance/install.php
+++ b/core/command/maintenance/install.php
@@ -61,7 +61,10 @@ class Install extends Command {
protected function execute(InputInterface $input, OutputInterface $output) {
// validate the environment
- $setupHelper = new Setup($this->config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults());
+ $server = \OC::$server;
+ $setupHelper = new Setup($this->config, $server->getIniWrapper(),
+ $server->getL10N('lib'), new \OC_Defaults(), $server->getLogger(),
+ $server->getSecureRandom());
$sysInfo = $setupHelper->getSystemInfo(true);
$errors = $sysInfo['errors'];
if (count($errors) > 0) {
diff --git a/core/css/styles.css b/core/css/styles.css
index e019b874f61..db81f850303 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -278,6 +278,14 @@ input[type="submit"].enabled {
border: 1px solid #5e5;
}
+.input-button-inline {
+ position: absolute !important;
+ right: 0;
+ background-color: transparent !important;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
+ opacity: .3;
+}
+
/* CONTENT ------------------------------------------------------------------ */
diff --git a/core/js/js.js b/core/js/js.js
index 8380d56e31e..45c9c90362f 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1609,8 +1609,38 @@ OC.Util = {
}
}
return aa.length - bb.length;
+ },
+ /**
+ * Calls the callback in a given interval until it returns true
+ * @param {function} callback
+ * @param {integer} interval in milliseconds
+ */
+ waitFor: function(callback, interval) {
+ var internalCallback = function() {
+ if(callback() !== true) {
+ setTimeout(internalCallback, interval);
+ }
+ };
+
+ internalCallback();
+ },
+ /**
+ * Checks if a cookie with the given name is present and is set to the provided value.
+ * @param {string} name name of the cookie
+ * @param {string} value value of the cookie
+ * @return {boolean} true if the cookie with the given name has the given value
+ */
+ isCookieSetToValue: function(name, value) {
+ var cookies = document.cookie.split(';');
+ for (var i=0; i < cookies.length; i++) {
+ var cookie = cookies[i].split('=');
+ if (cookie[0].trim() === name && cookie[1].trim() === value) {
+ return true;
+ }
+ }
+ return false;
}
-}
+};
/**
* Utility class for the history API,
diff --git a/core/js/setup.js b/core/js/setup.js
index cfa11a99c3a..cb299597451 100644
--- a/core/js/setup.js
+++ b/core/js/setup.js
@@ -4,8 +4,7 @@ $(document).ready(function() {
sqlite:!!$('#hasSQLite').val(),
mysql:!!$('#hasMySQL').val(),
postgresql:!!$('#hasPostgreSQL').val(),
- oracle:!!$('#hasOracle').val(),
- mssql:!!$('#hasMSSQL').val()
+ oracle:!!$('#hasOracle').val()
};
$('#selectDbType').buttonset();
@@ -28,7 +27,7 @@ $(document).ready(function() {
$('#dbname').attr('pattern','[0-9a-zA-Z$_-]+');
});
- $('#mysql,#pgsql,#mssql').click(function() {
+ $('#mysql,#pgsql').click(function() {
$('#use_other_db').slideDown(250);
$('#use_oracle_db').slideUp(250);
$('#sqliteInformation').hide();
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 7c27d780e38..64f62a8762b 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -4,6 +4,7 @@ OC.L10N.register(
"Couldn't send mail to following users: %s " : "Nepavyko nusiųsti el. pašto šiems naudotojams: %s ",
"Turned on maintenance mode" : "Įjungta priežiūros veiksena",
"Turned off maintenance mode" : "Išjungta priežiūros veiksena",
+ "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi",
"Updated database" : "Atnaujinta duomenų bazė",
"No image or file provided" : "Nenurodytas paveikslėlis ar failas",
"Unknown filetype" : "Nežinomas failo tipas",
@@ -37,6 +38,7 @@ OC.L10N.register(
"Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}",
"Ok" : "Gerai",
"Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}",
+ "read-only" : "tik skaitymui",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} failų konfliktų"],
"One file conflict" : "Vienas failo konfliktas",
"Which files do you want to keep?" : "Kuriuos failus norite laikyti?",
@@ -55,6 +57,7 @@ OC.L10N.register(
"Shared with you and the group {group} by {owner}" : "Pasidalino su Jumis ir {group} grupe {owner}",
"Shared with you by {owner}" : "Pasidalino su Jumis {owner}",
"Share link" : "Dalintis nuoroda",
+ "Link" : "Nuoroda",
"Password protect" : "Apsaugotas slaptažodžiu",
"Password" : "Slaptažodis",
"Email link to person" : "Nusiųsti nuorodą paštu",
@@ -63,6 +66,7 @@ OC.L10N.register(
"Expiration" : "Galiojimo laikas",
"Expiration date" : "Galiojimo laikas",
"group" : "grupė",
+ "remote" : "nutolęs",
"Resharing is not allowed" : "Dalijinasis išnaujo negalimas",
"Shared in {item} with {user}" : "Pasidalino {item} su {user}",
"Unshare" : "Nebesidalinti",
@@ -71,6 +75,7 @@ OC.L10N.register(
"can edit" : "gali redaguoti",
"access control" : "priėjimo kontrolė",
"create" : "sukurti",
+ "change" : "keisti",
"delete" : "ištrinti",
"Password protected" : "Apsaugota slaptažodžiu",
"Error unsetting expiration date" : "Klaida nuimant galiojimo laiką",
@@ -85,11 +90,14 @@ OC.L10N.register(
"Edit tags" : "Redaguoti žymes",
"Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}",
"No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.",
+ "Hello world!" : "Sveikas pasauli!",
+ "sunny" : "saulėta",
"Please reload the page." : "Prašome perkrauti puslapį.",
"The update was successful. Redirecting you to ownCloud now." : "Atnaujinimas buvo sėkmingas. Nukreipiame į jūsų ownCloud.",
"%s password reset" : "%s slaptažodžio atnaujinimas",
"Use the following link to reset your password: {link}" : "Slaptažodio atkūrimui naudokite šią nuorodą: {link}",
"New password" : "Naujas slaptažodis",
+ "New Password" : "Naujas slaptažodis",
"Reset password" : "Atkurti slaptažodį",
"Personal" : "Asmeniniai",
"Users" : "Vartotojai",
@@ -104,9 +112,14 @@ OC.L10N.register(
"Error favoriting" : "Klaida įtraukiant į mėgstamus.",
"Error unfavoriting" : "Klaida pašalinant iš mėgstamų.",
"Access forbidden" : "Priėjimas draudžiamas",
+ "File not found" : "Failas nerastas",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n",
"The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
"Cheers!" : "Sveikinimai!",
+ "Internal Server Error" : "Vidinė serverio klaida",
+ "Technical details" : "Techniniai duomenys",
+ "Trace" : "Sekti",
+ "Security warning" : "Saugumo perspėjimas",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>.",
"Create an <strong>admin account</strong>" : "Sukurti <strong>administratoriaus paskyrą</strong>",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 79184dfdb27..0dae47445c6 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -2,6 +2,7 @@
"Couldn't send mail to following users: %s " : "Nepavyko nusiųsti el. pašto šiems naudotojams: %s ",
"Turned on maintenance mode" : "Įjungta priežiūros veiksena",
"Turned off maintenance mode" : "Išjungta priežiūros veiksena",
+ "Maintenance mode is kept active" : "Priežiūros veiksena yra aktyvi",
"Updated database" : "Atnaujinta duomenų bazė",
"No image or file provided" : "Nenurodytas paveikslėlis ar failas",
"Unknown filetype" : "Nežinomas failo tipas",
@@ -35,6 +36,7 @@
"Error loading file picker template: {error}" : "Klaida įkeliant failo parinkimo ruošinį: {error}",
"Ok" : "Gerai",
"Error loading message template: {error}" : "Klaida įkeliant žinutės ruošinį: {error}",
+ "read-only" : "tik skaitymui",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} failas konfliktuoja","{count} failai konfliktuoja","{count} failų konfliktų"],
"One file conflict" : "Vienas failo konfliktas",
"Which files do you want to keep?" : "Kuriuos failus norite laikyti?",
@@ -53,6 +55,7 @@
"Shared with you and the group {group} by {owner}" : "Pasidalino su Jumis ir {group} grupe {owner}",
"Shared with you by {owner}" : "Pasidalino su Jumis {owner}",
"Share link" : "Dalintis nuoroda",
+ "Link" : "Nuoroda",
"Password protect" : "Apsaugotas slaptažodžiu",
"Password" : "Slaptažodis",
"Email link to person" : "Nusiųsti nuorodą paštu",
@@ -61,6 +64,7 @@
"Expiration" : "Galiojimo laikas",
"Expiration date" : "Galiojimo laikas",
"group" : "grupė",
+ "remote" : "nutolęs",
"Resharing is not allowed" : "Dalijinasis išnaujo negalimas",
"Shared in {item} with {user}" : "Pasidalino {item} su {user}",
"Unshare" : "Nebesidalinti",
@@ -69,6 +73,7 @@
"can edit" : "gali redaguoti",
"access control" : "priėjimo kontrolė",
"create" : "sukurti",
+ "change" : "keisti",
"delete" : "ištrinti",
"Password protected" : "Apsaugota slaptažodžiu",
"Error unsetting expiration date" : "Klaida nuimant galiojimo laiką",
@@ -83,11 +88,14 @@
"Edit tags" : "Redaguoti žymes",
"Error loading dialog template: {error}" : "Klaida įkeliant dialogo ruošinį: {error}",
"No tags selected for deletion." : "Trynimui nepasirinkta jokia žymė.",
+ "Hello world!" : "Sveikas pasauli!",
+ "sunny" : "saulėta",
"Please reload the page." : "Prašome perkrauti puslapį.",
"The update was successful. Redirecting you to ownCloud now." : "Atnaujinimas buvo sėkmingas. Nukreipiame į jūsų ownCloud.",
"%s password reset" : "%s slaptažodžio atnaujinimas",
"Use the following link to reset your password: {link}" : "Slaptažodio atkūrimui naudokite šią nuorodą: {link}",
"New password" : "Naujas slaptažodis",
+ "New Password" : "Naujas slaptažodis",
"Reset password" : "Atkurti slaptažodį",
"Personal" : "Asmeniniai",
"Users" : "Vartotojai",
@@ -102,9 +110,14 @@
"Error favoriting" : "Klaida įtraukiant į mėgstamus.",
"Error unfavoriting" : "Klaida pašalinant iš mėgstamų.",
"Access forbidden" : "Priėjimas draudžiamas",
+ "File not found" : "Failas nerastas",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėti tai: %s\n",
"The share will expire on %s." : "Bendrinimo laikas baigsis %s.",
"Cheers!" : "Sveikinimai!",
+ "Internal Server Error" : "Vidinė serverio klaida",
+ "Technical details" : "Techniniai duomenys",
+ "Trace" : "Sekti",
+ "Security warning" : "Saugumo perspėjimas",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.",
"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>.",
"Create an <strong>admin account</strong>" : "Sukurti <strong>administratoriaus paskyrą</strong>",
diff --git a/core/templates/installation.php b/core/templates/installation.php
index b686a1ca68c..8db55e4bdab 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -8,7 +8,6 @@ script('core', [
<input type='hidden' id='hasSQLite' value='<?php p($_['hasSQLite']) ?>'>
<input type='hidden' id='hasPostgreSQL' value='<?php p($_['hasPostgreSQL']) ?>'>
<input type='hidden' id='hasOracle' value='<?php p($_['hasOracle']) ?>'>
-<input type='hidden' id='hasMSSQL' value='<?php p($_['hasMSSQL']) ?>'>
<form action="index.php" method="post">
<input type="hidden" name="install" value="true">
<?php if(count($_['errors']) > 0): ?>
@@ -79,7 +78,7 @@ script('core', [
<?php if(!$_['dbIsSet'] OR count($_['errors']) > 0): ?>
<fieldset id='databaseBackend'>
- <?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'] or $_['hasMSSQL'])
+ <?php if($_['hasMySQL'] or $_['hasPostgreSQL'] or $_['hasOracle'])
$hasOtherDB = true; else $hasOtherDB =false; //other than SQLite ?>
<legend><?php p($l->t( 'Configure the database' )); ?></legend>
<div id="selectDbType">
diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php
index a5336b1585a..43d692c0364 100644
--- a/core/templates/layout.base.php
+++ b/core/templates/layout.base.php
@@ -9,6 +9,7 @@
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
+ <meta name="theme-color" content="<?php p($theme->getMailHeaderColor()); ?>">
<link rel="shortcut icon" type="image/png" href="<?php print_unescaped(image_path('', 'favicon.png')); ?>">
<link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path('', 'favicon-touch.png')); ?>">
<?php foreach ($_['cssfiles'] as $cssfile): ?>
diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php
index 0557e89ce71..0fd7521271d 100644
--- a/core/templates/layout.guest.php
+++ b/core/templates/layout.guest.php
@@ -10,6 +10,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-itunes-app" content="app-id=<?php p($theme->getiTunesAppId()); ?>">
+ <meta name="theme-color" content="<?php p($theme->getMailHeaderColor()); ?>">
<link rel="shortcut icon" type="image/png" href="<?php print_unescaped(image_path('', 'favicon.png')); ?>">
<link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path('', 'favicon-touch.png')); ?>">
<?php foreach($_['cssfiles'] as $cssfile): ?>
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 61f164719d0..2f93a30ba6a 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -21,6 +21,7 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="<?php p((!empty($_['application']) && $_['appid']!='files')? $_['application']:'ownCloud'); ?>">
<meta name="mobile-web-app-capable" content="yes">
+ <meta name="theme-color" content="<?php p($theme->getMailHeaderColor()); ?>">
<link rel="shortcut icon" type="image/png" href="<?php print_unescaped(image_path($_['appid'], 'favicon.png')); ?>">
<link rel="apple-touch-icon-precomposed" href="<?php print_unescaped(image_path($_['appid'], 'favicon-touch.png')); ?>">
<?php foreach($_['cssfiles'] as $cssfile): ?>
diff --git a/core/vendor/.gitignore b/core/vendor/.gitignore
index 95ad4d67ea6..81dac0364d0 100644
--- a/core/vendor/.gitignore
+++ b/core/vendor/.gitignore
@@ -30,6 +30,7 @@ moment/locale
moment/min/**
moment/moment.js
moment/scripts
+moment/templates
!moment/min/moment-with-locales.js
# jquery
diff --git a/core/vendor/moment/.bower.json b/core/vendor/moment/.bower.json
index e9bdc9bda6f..3d09c660400 100644
--- a/core/vendor/moment/.bower.json
+++ b/core/vendor/moment/.bower.json
@@ -1,30 +1,33 @@
{
"name": "moment",
- "version": "2.8.4",
+ "version": "2.10.3",
"main": "moment.js",
"ignore": [
"**/.*",
- "node_modules",
+ "benchmarks",
"bower_components",
- "test",
- "tests",
+ "meteor",
+ "node_modules",
+ "scripts",
"tasks",
+ "test",
"component.json",
"composer.json",
"CONTRIBUTING.md",
"ender.js",
"Gruntfile.js",
+ "Moment.js.nuspec",
"package.js",
"package.json"
],
"homepage": "https://github.com/moment/moment",
- "_release": "2.8.4",
+ "_release": "2.10.3",
"_resolution": {
"type": "version",
- "tag": "2.8.4",
- "commit": "7ae59de2fc3a1298ae829f6369fe3589b2cd87f8"
+ "tag": "2.10.3",
+ "commit": "6fa444238494318e3c488c81d8520ad2eba8bae7"
},
"_source": "git://github.com/moment/moment.git",
- "_target": "~2.8.3",
+ "_target": "~2.10.0",
"_originalSource": "moment"
} \ No newline at end of file
diff --git a/core/vendor/moment/LICENSE b/core/vendor/moment/LICENSE
index bd172467a6b..34f5b3707a9 100644
--- a/core/vendor/moment/LICENSE
+++ b/core/vendor/moment/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors
+Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
diff --git a/core/vendor/moment/min/moment-with-locales.js b/core/vendor/moment/min/moment-with-locales.js
index 23d06ef3551..61145c0ff75 100644
--- a/core/vendor/moment/min/moment-with-locales.js
+++ b/core/vendor/moment/min/moment-with-locales.js
@@ -1,442 +1,121 @@
-//! moment.js
-//! version : 2.8.3
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-(function (undefined) {
- /************************************
- Constants
- ************************************/
-
- var moment,
- VERSION = '2.8.3',
- // the global-scope this is NOT the global object in Node.js
- globalScope = typeof global !== 'undefined' ? global : this,
- oldGlobalMoment,
- round = Math.round,
- hasOwnProperty = Object.prototype.hasOwnProperty,
- i,
-
- YEAR = 0,
- MONTH = 1,
- DATE = 2,
- HOUR = 3,
- MINUTE = 4,
- SECOND = 5,
- MILLISECOND = 6,
-
- // internal storage for locale config files
- locales = {},
-
- // extra moment internal properties (plugins register props here)
- momentProperties = [],
-
- // check for nodeJS
- hasModule = (typeof module !== 'undefined' && module.exports),
-
- // ASP.NET json date format regex
- aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
- aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
-
- // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
- // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
- isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
-
- // format tokens
- formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
- localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
-
- // parsing token regexes
- parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
- parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
- parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
- parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
- parseTokenDigits = /\d+/, // nonzero number of digits
- parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
- parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
- parseTokenT = /T/i, // T (ISO separator)
- parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
- parseTokenOrdinal = /\d{1,2}/,
-
- //strict parsing regexes
- parseTokenOneDigit = /\d/, // 0 - 9
- parseTokenTwoDigits = /\d\d/, // 00 - 99
- parseTokenThreeDigits = /\d{3}/, // 000 - 999
- parseTokenFourDigits = /\d{4}/, // 0000 - 9999
- parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
- parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
-
- // iso 8601 regex
- // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
- isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-
- isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
-
- isoDates = [
- ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
- ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
- ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
- ['GGGG-[W]WW', /\d{4}-W\d{2}/],
- ['YYYY-DDD', /\d{4}-\d{3}/]
- ],
-
- // iso time formats and regexes
- isoTimes = [
- ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
- ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
- ['HH:mm', /(T| )\d\d:\d\d/],
- ['HH', /(T| )\d\d/]
- ],
-
- // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30']
- parseTimezoneChunker = /([\+\-]|\d\d)/gi,
-
- // getter and setter names
- proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
- unitMillisecondFactors = {
- 'Milliseconds' : 1,
- 'Seconds' : 1e3,
- 'Minutes' : 6e4,
- 'Hours' : 36e5,
- 'Days' : 864e5,
- 'Months' : 2592e6,
- 'Years' : 31536e6
- },
-
- unitAliases = {
- ms : 'millisecond',
- s : 'second',
- m : 'minute',
- h : 'hour',
- d : 'day',
- D : 'date',
- w : 'week',
- W : 'isoWeek',
- M : 'month',
- Q : 'quarter',
- y : 'year',
- DDD : 'dayOfYear',
- e : 'weekday',
- E : 'isoWeekday',
- gg: 'weekYear',
- GG: 'isoWeekYear'
- },
-
- camelFunctions = {
- dayofyear : 'dayOfYear',
- isoweekday : 'isoWeekday',
- isoweek : 'isoWeek',
- weekyear : 'weekYear',
- isoweekyear : 'isoWeekYear'
- },
-
- // format function strings
- formatFunctions = {},
-
- // default relative time thresholds
- relativeTimeThresholds = {
- s: 45, // seconds to minute
- m: 45, // minutes to hour
- h: 22, // hours to day
- d: 26, // days to month
- M: 11 // months to year
- },
-
- // tokens to ordinalize and pad
- ordinalizeTokens = 'DDD w W M D d'.split(' '),
- paddedTokens = 'M D H h m s w W'.split(' '),
-
- formatTokenFunctions = {
- M : function () {
- return this.month() + 1;
- },
- MMM : function (format) {
- return this.localeData().monthsShort(this, format);
- },
- MMMM : function (format) {
- return this.localeData().months(this, format);
- },
- D : function () {
- return this.date();
- },
- DDD : function () {
- return this.dayOfYear();
- },
- d : function () {
- return this.day();
- },
- dd : function (format) {
- return this.localeData().weekdaysMin(this, format);
- },
- ddd : function (format) {
- return this.localeData().weekdaysShort(this, format);
- },
- dddd : function (format) {
- return this.localeData().weekdays(this, format);
- },
- w : function () {
- return this.week();
- },
- W : function () {
- return this.isoWeek();
- },
- YY : function () {
- return leftZeroFill(this.year() % 100, 2);
- },
- YYYY : function () {
- return leftZeroFill(this.year(), 4);
- },
- YYYYY : function () {
- return leftZeroFill(this.year(), 5);
- },
- YYYYYY : function () {
- var y = this.year(), sign = y >= 0 ? '+' : '-';
- return sign + leftZeroFill(Math.abs(y), 6);
- },
- gg : function () {
- return leftZeroFill(this.weekYear() % 100, 2);
- },
- gggg : function () {
- return leftZeroFill(this.weekYear(), 4);
- },
- ggggg : function () {
- return leftZeroFill(this.weekYear(), 5);
- },
- GG : function () {
- return leftZeroFill(this.isoWeekYear() % 100, 2);
- },
- GGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 4);
- },
- GGGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 5);
- },
- e : function () {
- return this.weekday();
- },
- E : function () {
- return this.isoWeekday();
- },
- a : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), true);
- },
- A : function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), false);
- },
- H : function () {
- return this.hours();
- },
- h : function () {
- return this.hours() % 12 || 12;
- },
- m : function () {
- return this.minutes();
- },
- s : function () {
- return this.seconds();
- },
- S : function () {
- return toInt(this.milliseconds() / 100);
- },
- SS : function () {
- return leftZeroFill(toInt(this.milliseconds() / 10), 2);
- },
- SSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- SSSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- Z : function () {
- var a = -this.zone(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
- },
- ZZ : function () {
- var a = -this.zone(),
- b = '+';
- if (a < 0) {
- a = -a;
- b = '-';
- }
- return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
- },
- z : function () {
- return this.zoneAbbr();
- },
- zz : function () {
- return this.zoneName();
- },
- X : function () {
- return this.unix();
- },
- Q : function () {
- return this.quarter();
- }
- },
-
- deprecations = {},
-
- lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ global.moment = factory()
+}(this, function () { 'use strict';
- // Pick the first defined of two or three arguments. dfl comes from
- // default.
- function dfl(a, b, c) {
- switch (arguments.length) {
- case 2: return a != null ? a : b;
- case 3: return a != null ? a : b != null ? b : c;
- default: throw new Error('Implement me');
- }
- }
+ var hookCallback;
- function hasOwnProp(a, b) {
- return hasOwnProperty.call(a, b);
+ function utils_hooks__hooks () {
+ return hookCallback.apply(null, arguments);
}
- function defaultParsingFlags() {
- // We need to deep clone this object, and es5 standard is not very
- // helpful.
- return {
- empty : false,
- unusedTokens : [],
- unusedInput : [],
- overflow : -2,
- charsLeftOver : 0,
- nullInput : false,
- invalidMonth : null,
- invalidFormat : false,
- userInvalidated : false,
- iso: false
- };
+ // This is done to register the method called with moment()
+ // without creating circular dependencies.
+ function setHookCallback (callback) {
+ hookCallback = callback;
}
- function printMsg(msg) {
- if (moment.suppressDeprecationWarnings === false &&
- typeof console !== 'undefined' && console.warn) {
- console.warn('Deprecation warning: ' + msg);
- }
+ function isArray(input) {
+ return Object.prototype.toString.call(input) === '[object Array]';
}
- function deprecate(msg, fn) {
- var firstTime = true;
- return extend(function () {
- if (firstTime) {
- printMsg(msg);
- firstTime = false;
- }
- return fn.apply(this, arguments);
- }, fn);
+ function isDate(input) {
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
}
- function deprecateSimple(name, msg) {
- if (!deprecations[name]) {
- printMsg(msg);
- deprecations[name] = true;
+ function map(arr, fn) {
+ var res = [], i;
+ for (i = 0; i < arr.length; ++i) {
+ res.push(fn(arr[i], i));
}
+ return res;
}
- function padToken(func, count) {
- return function (a) {
- return leftZeroFill(func.call(this, a), count);
- };
- }
- function ordinalizeToken(func, period) {
- return function (a) {
- return this.localeData().ordinal(func.call(this, a), period);
- };
+ function hasOwnProp(a, b) {
+ return Object.prototype.hasOwnProperty.call(a, b);
}
- while (ordinalizeTokens.length) {
- i = ordinalizeTokens.pop();
- formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
- }
- while (paddedTokens.length) {
- i = paddedTokens.pop();
- formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
- }
- formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
+ function extend(a, b) {
+ for (var i in b) {
+ if (hasOwnProp(b, i)) {
+ a[i] = b[i];
+ }
+ }
+ if (hasOwnProp(b, 'toString')) {
+ a.toString = b.toString;
+ }
- /************************************
- Constructors
- ************************************/
+ if (hasOwnProp(b, 'valueOf')) {
+ a.valueOf = b.valueOf;
+ }
- function Locale() {
+ return a;
}
- // Moment prototype object
- function Moment(config, skipOverflow) {
- if (skipOverflow !== false) {
- checkOverflow(config);
- }
- copyConfig(this, config);
- this._d = new Date(+config._d);
+ function create_utc__createUTC (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, true).utc();
}
- // Duration Constructor
- function Duration(duration) {
- var normalizedInput = normalizeObjectUnits(duration),
- years = normalizedInput.year || 0,
- quarters = normalizedInput.quarter || 0,
- months = normalizedInput.month || 0,
- weeks = normalizedInput.week || 0,
- days = normalizedInput.day || 0,
- hours = normalizedInput.hour || 0,
- minutes = normalizedInput.minute || 0,
- seconds = normalizedInput.second || 0,
- milliseconds = normalizedInput.millisecond || 0;
-
- // representation for dateAddRemove
- this._milliseconds = +milliseconds +
- seconds * 1e3 + // 1000
- minutes * 6e4 + // 1000 * 60
- hours * 36e5; // 1000 * 60 * 60
- // Because of dateAddRemove treats 24 hours as different from a
- // day when working around DST, we need to store them separately
- this._days = +days +
- weeks * 7;
- // It is impossible translate months into days without knowing
- // which months you are are talking about, so we have to store
- // it separately.
- this._months = +months +
- quarters * 3 +
- years * 12;
-
- this._data = {};
-
- this._locale = moment.localeData();
-
- this._bubble();
+ function defaultParsingFlags() {
+ // We need to deep clone this object.
+ return {
+ empty : false,
+ unusedTokens : [],
+ unusedInput : [],
+ overflow : -2,
+ charsLeftOver : 0,
+ nullInput : false,
+ invalidMonth : null,
+ invalidFormat : false,
+ userInvalidated : false,
+ iso : false
+ };
}
- /************************************
- Helpers
- ************************************/
+ function getParsingFlags(m) {
+ if (m._pf == null) {
+ m._pf = defaultParsingFlags();
+ }
+ return m._pf;
+ }
+ function valid__isValid(m) {
+ if (m._isValid == null) {
+ var flags = getParsingFlags(m);
+ m._isValid = !isNaN(m._d.getTime()) &&
+ flags.overflow < 0 &&
+ !flags.empty &&
+ !flags.invalidMonth &&
+ !flags.nullInput &&
+ !flags.invalidFormat &&
+ !flags.userInvalidated;
- function extend(a, b) {
- for (var i in b) {
- if (hasOwnProp(b, i)) {
- a[i] = b[i];
+ if (m._strict) {
+ m._isValid = m._isValid &&
+ flags.charsLeftOver === 0 &&
+ flags.unusedTokens.length === 0 &&
+ flags.bigHour === undefined;
}
}
+ return m._isValid;
+ }
- if (hasOwnProp(b, 'toString')) {
- a.toString = b.toString;
+ function valid__createInvalid (flags) {
+ var m = create_utc__createUTC(NaN);
+ if (flags != null) {
+ extend(getParsingFlags(m), flags);
}
-
- if (hasOwnProp(b, 'valueOf')) {
- a.valueOf = b.valueOf;
+ else {
+ getParsingFlags(m).userInvalidated = true;
}
- return a;
+ return m;
}
+ var momentProperties = utils_hooks__hooks.momentProperties = [];
+
function copyConfig(to, from) {
var i, prop, val;
@@ -465,7 +144,7 @@
to._offset = from._offset;
}
if (typeof from._pf !== 'undefined') {
- to._pf = from._pf;
+ to._pf = getParsingFlags(from);
}
if (typeof from._locale !== 'undefined') {
to._locale = from._locale;
@@ -484,102 +163,40 @@
return to;
}
- function absRound(number) {
- if (number < 0) {
- return Math.ceil(number);
- } else {
- return Math.floor(number);
- }
- }
+ var updateInProgress = false;
- // left zero fill a number
- // see http://jsperf.com/left-zero-filling for performance comparison
- function leftZeroFill(number, targetLength, forceSign) {
- var output = '' + Math.abs(number),
- sign = number >= 0;
-
- while (output.length < targetLength) {
- output = '0' + output;
+ // Moment prototype object
+ function Moment(config) {
+ copyConfig(this, config);
+ this._d = new Date(+config._d);
+ // Prevent infinite loop in case updateOffset creates new moment
+ // objects.
+ if (updateInProgress === false) {
+ updateInProgress = true;
+ utils_hooks__hooks.updateOffset(this);
+ updateInProgress = false;
}
- return (sign ? (forceSign ? '+' : '') : '-') + output;
}
- function positiveMomentsDifference(base, other) {
- var res = {milliseconds: 0, months: 0};
-
- res.months = other.month() - base.month() +
- (other.year() - base.year()) * 12;
- if (base.clone().add(res.months, 'M').isAfter(other)) {
- --res.months;
- }
-
- res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
-
- return res;
+ function isMoment (obj) {
+ return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
}
- function momentsDifference(base, other) {
- var res;
- other = makeAs(other, base);
- if (base.isBefore(other)) {
- res = positiveMomentsDifference(base, other);
- } else {
- res = positiveMomentsDifference(other, base);
- res.milliseconds = -res.milliseconds;
- res.months = -res.months;
- }
-
- return res;
- }
+ function toInt(argumentForCoercion) {
+ var coercedNumber = +argumentForCoercion,
+ value = 0;
- // TODO: remove 'name' arg after deprecation is removed
- function createAdder(direction, name) {
- return function (val, period) {
- var dur, tmp;
- //invert the arguments, but complain about it
- if (period !== null && !isNaN(+period)) {
- deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
- tmp = val; val = period; period = tmp;
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+ if (coercedNumber >= 0) {
+ value = Math.floor(coercedNumber);
+ } else {
+ value = Math.ceil(coercedNumber);
}
-
- val = typeof val === 'string' ? +val : val;
- dur = moment.duration(val, period);
- addOrSubtractDurationFromMoment(this, dur, direction);
- return this;
- };
- }
-
- function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
- var milliseconds = duration._milliseconds,
- days = duration._days,
- months = duration._months;
- updateOffset = updateOffset == null ? true : updateOffset;
-
- if (milliseconds) {
- mom._d.setTime(+mom._d + milliseconds * isAdding);
- }
- if (days) {
- rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
- }
- if (months) {
- rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
}
- if (updateOffset) {
- moment.updateOffset(mom, days || months);
- }
- }
- // check if is an array
- function isArray(input) {
- return Object.prototype.toString.call(input) === '[object Array]';
- }
-
- function isDate(input) {
- return Object.prototype.toString.call(input) === '[object Date]' ||
- input instanceof Date;
+ return value;
}
- // compare two arrays, return the number of differences
function compareArrays(array1, array2, dontConvert) {
var len = Math.min(array1.length, array2.length),
lengthDiff = Math.abs(array1.length - array2.length),
@@ -594,142 +211,11 @@
return diffs + lengthDiff;
}
- function normalizeUnits(units) {
- if (units) {
- var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
- units = unitAliases[units] || camelFunctions[lowered] || lowered;
- }
- return units;
- }
-
- function normalizeObjectUnits(inputObject) {
- var normalizedInput = {},
- normalizedProp,
- prop;
-
- for (prop in inputObject) {
- if (hasOwnProp(inputObject, prop)) {
- normalizedProp = normalizeUnits(prop);
- if (normalizedProp) {
- normalizedInput[normalizedProp] = inputObject[prop];
- }
- }
- }
-
- return normalizedInput;
- }
-
- function makeList(field) {
- var count, setter;
-
- if (field.indexOf('week') === 0) {
- count = 7;
- setter = 'day';
- }
- else if (field.indexOf('month') === 0) {
- count = 12;
- setter = 'month';
- }
- else {
- return;
- }
-
- moment[field] = function (format, index) {
- var i, getter,
- method = moment._locale[field],
- results = [];
-
- if (typeof format === 'number') {
- index = format;
- format = undefined;
- }
-
- getter = function (i) {
- var m = moment().utc().set(setter, i);
- return method.call(moment._locale, m, format || '');
- };
-
- if (index != null) {
- return getter(index);
- }
- else {
- for (i = 0; i < count; i++) {
- results.push(getter(i));
- }
- return results;
- }
- };
- }
-
- function toInt(argumentForCoercion) {
- var coercedNumber = +argumentForCoercion,
- value = 0;
-
- if (coercedNumber !== 0 && isFinite(coercedNumber)) {
- if (coercedNumber >= 0) {
- value = Math.floor(coercedNumber);
- } else {
- value = Math.ceil(coercedNumber);
- }
- }
-
- return value;
- }
-
- function daysInMonth(year, month) {
- return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
- }
-
- function weeksInYear(year, dow, doy) {
- return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
- }
-
- function daysInYear(year) {
- return isLeapYear(year) ? 366 : 365;
- }
-
- function isLeapYear(year) {
- return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
- }
-
- function checkOverflow(m) {
- var overflow;
- if (m._a && m._pf.overflow === -2) {
- overflow =
- m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
- m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
- m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
- m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
- m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
- m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
- -1;
-
- if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
- overflow = DATE;
- }
-
- m._pf.overflow = overflow;
- }
+ function Locale() {
}
- function isValid(m) {
- if (m._isValid == null) {
- m._isValid = !isNaN(m._d.getTime()) &&
- m._pf.overflow < 0 &&
- !m._pf.empty &&
- !m._pf.invalidMonth &&
- !m._pf.nullInput &&
- !m._pf.invalidFormat &&
- !m._pf.userInvalidated;
-
- if (m._strict) {
- m._isValid = m._isValid &&
- m._pf.charsLeftOver === 0 &&
- m._pf.unusedTokens.length === 0;
- }
- }
- return m._isValid;
- }
+ var locales = {};
+ var globalLocale;
function normalizeLocale(key) {
return key ? key.toLowerCase().replace('_', '-') : key;
@@ -764,215 +250,193 @@
function loadLocale(name) {
var oldLocale = null;
- if (!locales[name] && hasModule) {
+ // TODO: Find a better way to register and load all the locales in Node
+ if (!locales[name] && typeof module !== 'undefined' &&
+ module && module.exports) {
try {
- oldLocale = moment.locale();
+ oldLocale = globalLocale._abbr;
require('./locale/' + name);
- // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
- moment.locale(oldLocale);
+ // because defineLocale currently also sets the global locale, we
+ // want to undo that for lazy loaded locales
+ locale_locales__getSetGlobalLocale(oldLocale);
} catch (e) { }
}
return locales[name];
}
- // Return a moment from input, that is local/utc/zone equivalent to model.
- function makeAs(input, model) {
- return model._isUTC ? moment(input).zone(model._offset || 0) :
- moment(input).local();
- }
-
- /************************************
- Locale
- ************************************/
+ // This function will load locale and then set the global locale. If
+ // no arguments are passed in, it will simply return the current global
+ // locale key.
+ function locale_locales__getSetGlobalLocale (key, values) {
+ var data;
+ if (key) {
+ if (typeof values === 'undefined') {
+ data = locale_locales__getLocale(key);
+ }
+ else {
+ data = defineLocale(key, values);
+ }
+ if (data) {
+ // moment.duration._locale = moment._locale = data;
+ globalLocale = data;
+ }
+ }
- extend(Locale.prototype, {
+ return globalLocale._abbr;
+ }
- set : function (config) {
- var prop, i;
- for (i in config) {
- prop = config[i];
- if (typeof prop === 'function') {
- this[i] = prop;
- } else {
- this['_' + i] = prop;
- }
+ function defineLocale (name, values) {
+ if (values !== null) {
+ values.abbr = name;
+ if (!locales[name]) {
+ locales[name] = new Locale();
}
- },
+ locales[name].set(values);
- _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
- months : function (m) {
- return this._months[m.month()];
- },
+ // backwards compat for now: also set the locale
+ locale_locales__getSetGlobalLocale(name);
- _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
- monthsShort : function (m) {
- return this._monthsShort[m.month()];
- },
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
+ }
+ }
- monthsParse : function (monthName) {
- var i, mom, regex;
+ // returns locale data
+ function locale_locales__getLocale (key) {
+ var locale;
- if (!this._monthsParse) {
- this._monthsParse = [];
- }
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
- for (i = 0; i < 12; i++) {
- // make the regex if we don't have it already
- if (!this._monthsParse[i]) {
- mom = moment.utc([2000, i]);
- regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
- this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._monthsParse[i].test(monthName)) {
- return i;
- }
+ if (!key) {
+ return globalLocale;
+ }
+
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
}
- },
+ key = [key];
+ }
- _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
- weekdays : function (m) {
- return this._weekdays[m.day()];
- },
+ return chooseLocale(key);
+ }
- _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
- weekdaysShort : function (m) {
- return this._weekdaysShort[m.day()];
- },
+ var aliases = {};
- _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
- weekdaysMin : function (m) {
- return this._weekdaysMin[m.day()];
- },
+ function addUnitAlias (unit, shorthand) {
+ var lowerCase = unit.toLowerCase();
+ aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
+ }
- weekdaysParse : function (weekdayName) {
- var i, mom, regex;
+ function normalizeUnits(units) {
+ return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
+ }
- if (!this._weekdaysParse) {
- this._weekdaysParse = [];
- }
+ function normalizeObjectUnits(inputObject) {
+ var normalizedInput = {},
+ normalizedProp,
+ prop;
- for (i = 0; i < 7; i++) {
- // make the regex if we don't have it already
- if (!this._weekdaysParse[i]) {
- mom = moment([2000, 1]).day(i);
- regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
- this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._weekdaysParse[i].test(weekdayName)) {
- return i;
+ for (prop in inputObject) {
+ if (hasOwnProp(inputObject, prop)) {
+ normalizedProp = normalizeUnits(prop);
+ if (normalizedProp) {
+ normalizedInput[normalizedProp] = inputObject[prop];
}
}
- },
-
- _longDateFormat : {
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY LT',
- LLLL : 'dddd, MMMM D, YYYY LT'
- },
- longDateFormat : function (key) {
- var output = this._longDateFormat[key];
- if (!output && this._longDateFormat[key.toUpperCase()]) {
- output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
- return val.slice(1);
- });
- this._longDateFormat[key] = output;
- }
- return output;
- },
+ }
- isPM : function (input) {
- // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
- // Using charAt should be more compatible.
- return ((input + '').toLowerCase().charAt(0) === 'p');
- },
+ return normalizedInput;
+ }
- _meridiemParse : /[ap]\.?m?\.?/i,
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'pm' : 'PM';
+ function makeGetSet (unit, keepTime) {
+ return function (value) {
+ if (value != null) {
+ get_set__set(this, unit, value);
+ utils_hooks__hooks.updateOffset(this, keepTime);
+ return this;
} else {
- return isLower ? 'am' : 'AM';
+ return get_set__get(this, unit);
}
- },
-
- _calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- calendar : function (key, mom) {
- var output = this._calendar[key];
- return typeof output === 'function' ? output.apply(mom) : output;
- },
+ };
+ }
- _relativeTime : {
- future : 'in %s',
- past : '%s ago',
- s : 'a few seconds',
- m : 'a minute',
- mm : '%d minutes',
- h : 'an hour',
- hh : '%d hours',
- d : 'a day',
- dd : '%d days',
- M : 'a month',
- MM : '%d months',
- y : 'a year',
- yy : '%d years'
- },
+ function get_set__get (mom, unit) {
+ return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
+ }
- relativeTime : function (number, withoutSuffix, string, isFuture) {
- var output = this._relativeTime[string];
- return (typeof output === 'function') ?
- output(number, withoutSuffix, string, isFuture) :
- output.replace(/%d/i, number);
- },
+ function get_set__set (mom, unit, value) {
+ return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ }
- pastFuture : function (diff, output) {
- var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
- return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
- },
+ // MOMENTS
- ordinal : function (number) {
- return this._ordinal.replace('%d', number);
- },
- _ordinal : '%d',
+ function getSet (units, value) {
+ var unit;
+ if (typeof units === 'object') {
+ for (unit in units) {
+ this.set(unit, units[unit]);
+ }
+ } else {
+ units = normalizeUnits(units);
+ if (typeof this[units] === 'function') {
+ return this[units](value);
+ }
+ }
+ return this;
+ }
- preparse : function (string) {
- return string;
- },
+ function zeroFill(number, targetLength, forceSign) {
+ var output = '' + Math.abs(number),
+ sign = number >= 0;
- postformat : function (string) {
- return string;
- },
+ while (output.length < targetLength) {
+ output = '0' + output;
+ }
+ return (sign ? (forceSign ? '+' : '') : '-') + output;
+ }
- week : function (mom) {
- return weekOfYear(mom, this._week.dow, this._week.doy).week;
- },
+ var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g;
- _week : {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- },
+ var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
- _invalidDate: 'Invalid date',
- invalidDate: function () {
- return this._invalidDate;
- }
- });
+ var formatFunctions = {};
- /************************************
- Formatting
- ************************************/
+ var formatTokenFunctions = {};
+ // token: 'M'
+ // padded: ['MM', 2]
+ // ordinal: 'Mo'
+ // callback: function () { this.month() + 1 }
+ function addFormatToken (token, padded, ordinal, callback) {
+ var func = callback;
+ if (typeof callback === 'string') {
+ func = function () {
+ return this[callback]();
+ };
+ }
+ if (token) {
+ formatTokenFunctions[token] = func;
+ }
+ if (padded) {
+ formatTokenFunctions[padded[0]] = function () {
+ return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
+ };
+ }
+ if (ordinal) {
+ formatTokenFunctions[ordinal] = function () {
+ return this.localeData().ordinal(func.apply(this, arguments), token);
+ };
+ }
+ }
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
@@ -1033,292 +497,549 @@
return format;
}
+ var match1 = /\d/; // 0 - 9
+ var match2 = /\d\d/; // 00 - 99
+ var match3 = /\d{3}/; // 000 - 999
+ var match4 = /\d{4}/; // 0000 - 9999
+ var match6 = /[+-]?\d{6}/; // -999999 - 999999
+ var match1to2 = /\d\d?/; // 0 - 99
+ var match1to3 = /\d{1,3}/; // 0 - 999
+ var match1to4 = /\d{1,4}/; // 0 - 9999
+ var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
- /************************************
- Parsing
- ************************************/
-
-
- // get the regex to find the next token
- function getParseRegexForToken(token, config) {
- var a, strict = config._strict;
- switch (token) {
- case 'Q':
- return parseTokenOneDigit;
- case 'DDDD':
- return parseTokenThreeDigits;
- case 'YYYY':
- case 'GGGG':
- case 'gggg':
- return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
- case 'Y':
- case 'G':
- case 'g':
- return parseTokenSignedNumber;
- case 'YYYYYY':
- case 'YYYYY':
- case 'GGGGG':
- case 'ggggg':
- return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
- case 'S':
- if (strict) {
- return parseTokenOneDigit;
- }
- /* falls through */
- case 'SS':
- if (strict) {
- return parseTokenTwoDigits;
- }
- /* falls through */
- case 'SSS':
- if (strict) {
- return parseTokenThreeDigits;
- }
- /* falls through */
- case 'DDD':
- return parseTokenOneToThreeDigits;
- case 'MMM':
- case 'MMMM':
- case 'dd':
- case 'ddd':
- case 'dddd':
- return parseTokenWord;
- case 'a':
- case 'A':
- return config._locale._meridiemParse;
- case 'X':
- return parseTokenTimestampMs;
- case 'Z':
- case 'ZZ':
- return parseTokenTimezone;
- case 'T':
- return parseTokenT;
- case 'SSSS':
- return parseTokenDigits;
- case 'MM':
- case 'DD':
- case 'YY':
- case 'GG':
- case 'gg':
- case 'HH':
- case 'hh':
- case 'mm':
- case 'ss':
- case 'ww':
- case 'WW':
- return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
- case 'M':
- case 'D':
- case 'd':
- case 'H':
- case 'h':
- case 'm':
- case 's':
- case 'w':
- case 'W':
- case 'e':
- case 'E':
- return parseTokenOneOrTwoDigits;
- case 'Do':
- return parseTokenOrdinal;
- default :
- a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
- return a;
+ var matchUnsigned = /\d+/; // 0 - inf
+ var matchSigned = /[+-]?\d+/; // -inf - inf
+
+ var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
+
+ var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
+
+ // any word (or two) characters or numbers including two/three word month in arabic.
+ var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
+
+ var regexes = {};
+
+ function addRegexToken (token, regex, strictRegex) {
+ regexes[token] = typeof regex === 'function' ? regex : function (isStrict) {
+ return (isStrict && strictRegex) ? strictRegex : regex;
+ };
+ }
+
+ function getParseRegexForToken (token, config) {
+ if (!hasOwnProp(regexes, token)) {
+ return new RegExp(unescapeFormat(token));
}
+
+ return regexes[token](config._strict, config._locale);
}
- function timezoneMinutesFromString(string) {
- string = string || '';
- var possibleTzMatches = (string.match(parseTokenTimezone) || []),
- tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
- parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
- minutes = +(parts[1] * 60) + toInt(parts[2]);
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function unescapeFormat(s) {
+ return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
+ return p1 || p2 || p3 || p4;
+ }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ }
- return parts[0] === '+' ? -minutes : minutes;
+ var tokens = {};
+
+ function addParseToken (token, callback) {
+ var i, func = callback;
+ if (typeof token === 'string') {
+ token = [token];
+ }
+ if (typeof callback === 'number') {
+ func = function (input, array) {
+ array[callback] = toInt(input);
+ };
+ }
+ for (i = 0; i < token.length; i++) {
+ tokens[token[i]] = func;
+ }
+ }
+
+ function addWeekParseToken (token, callback) {
+ addParseToken(token, function (input, array, config, token) {
+ config._w = config._w || {};
+ callback(input, config._w, config, token);
+ });
}
- // function to convert string input to date
function addTimeToArrayFromToken(token, input, config) {
- var a, datePartArray = config._a;
+ if (input != null && hasOwnProp(tokens, token)) {
+ tokens[token](input, config._a, config, token);
+ }
+ }
- switch (token) {
- // QUARTER
- case 'Q':
- if (input != null) {
- datePartArray[MONTH] = (toInt(input) - 1) * 3;
- }
- break;
- // MONTH
- case 'M' : // fall through to MM
- case 'MM' :
- if (input != null) {
- datePartArray[MONTH] = toInt(input) - 1;
- }
- break;
- case 'MMM' : // fall through to MMMM
- case 'MMMM' :
- a = config._locale.monthsParse(input);
- // if we didn't find a month name, mark the date as invalid.
- if (a != null) {
- datePartArray[MONTH] = a;
- } else {
- config._pf.invalidMonth = input;
+ var YEAR = 0;
+ var MONTH = 1;
+ var DATE = 2;
+ var HOUR = 3;
+ var MINUTE = 4;
+ var SECOND = 5;
+ var MILLISECOND = 6;
+
+ function daysInMonth(year, month) {
+ return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
+ }
+
+ // FORMATTING
+
+ addFormatToken('M', ['MM', 2], 'Mo', function () {
+ return this.month() + 1;
+ });
+
+ addFormatToken('MMM', 0, 0, function (format) {
+ return this.localeData().monthsShort(this, format);
+ });
+
+ addFormatToken('MMMM', 0, 0, function (format) {
+ return this.localeData().months(this, format);
+ });
+
+ // ALIASES
+
+ addUnitAlias('month', 'M');
+
+ // PARSING
+
+ addRegexToken('M', match1to2);
+ addRegexToken('MM', match1to2, match2);
+ addRegexToken('MMM', matchWord);
+ addRegexToken('MMMM', matchWord);
+
+ addParseToken(['M', 'MM'], function (input, array) {
+ array[MONTH] = toInt(input) - 1;
+ });
+
+ addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
+ var month = config._locale.monthsParse(input, token, config._strict);
+ // if we didn't find a month name, mark the date as invalid.
+ if (month != null) {
+ array[MONTH] = month;
+ } else {
+ getParsingFlags(config).invalidMonth = input;
+ }
+ });
+
+ // LOCALES
+
+ var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
+ function localeMonths (m) {
+ return this._months[m.month()];
+ }
+
+ var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
+ function localeMonthsShort (m) {
+ return this._monthsShort[m.month()];
+ }
+
+ function localeMonthsParse (monthName, format, strict) {
+ var i, mom, regex;
+
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ this._longMonthsParse = [];
+ this._shortMonthsParse = [];
+ }
+
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, i]);
+ if (strict && !this._longMonthsParse[i]) {
+ this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
+ this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
}
- break;
- // DAY OF MONTH
- case 'D' : // fall through to DD
- case 'DD' :
- if (input != null) {
- datePartArray[DATE] = toInt(input);
+ if (!strict && !this._monthsParse[i]) {
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
- break;
- case 'Do' :
- if (input != null) {
- datePartArray[DATE] = toInt(parseInt(input, 10));
+ // test the regex
+ if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (!strict && this._monthsParse[i].test(monthName)) {
+ return i;
}
- break;
- // DAY OF YEAR
- case 'DDD' : // fall through to DDDD
- case 'DDDD' :
- if (input != null) {
- config._dayOfYear = toInt(input);
+ }
+ }
+
+ // MOMENTS
+
+ function setMonth (mom, value) {
+ var dayOfMonth;
+
+ // TODO: Move this out of here!
+ if (typeof value === 'string') {
+ value = mom.localeData().monthsParse(value);
+ // TODO: Another silent failure?
+ if (typeof value !== 'number') {
+ return mom;
}
+ }
- break;
- // YEAR
- case 'YY' :
- datePartArray[YEAR] = moment.parseTwoDigitYear(input);
- break;
- case 'YYYY' :
- case 'YYYYY' :
- case 'YYYYYY' :
- datePartArray[YEAR] = toInt(input);
- break;
- // AM / PM
- case 'a' : // fall through to A
- case 'A' :
- config._isPm = config._locale.isPM(input);
- break;
- // 24 HOUR
- case 'H' : // fall through to hh
- case 'HH' : // fall through to hh
- case 'h' : // fall through to hh
- case 'hh' :
- datePartArray[HOUR] = toInt(input);
- break;
- // MINUTE
- case 'm' : // fall through to mm
- case 'mm' :
- datePartArray[MINUTE] = toInt(input);
- break;
- // SECOND
- case 's' : // fall through to ss
- case 'ss' :
- datePartArray[SECOND] = toInt(input);
- break;
- // MILLISECOND
- case 'S' :
- case 'SS' :
- case 'SSS' :
- case 'SSSS' :
- datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
- break;
- // UNIX TIMESTAMP WITH MS
- case 'X':
- config._d = new Date(parseFloat(input) * 1000);
- break;
- // TIMEZONE
- case 'Z' : // fall through to ZZ
- case 'ZZ' :
- config._useUTC = true;
- config._tzm = timezoneMinutesFromString(input);
- break;
- // WEEKDAY - human
- case 'dd':
- case 'ddd':
- case 'dddd':
- a = config._locale.weekdaysParse(input);
- // if we didn't get a weekday name, mark the date as invalid
- if (a != null) {
- config._w = config._w || {};
- config._w['d'] = a;
- } else {
- config._pf.invalidWeekday = input;
+ dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+ return mom;
+ }
+
+ function getSetMonth (value) {
+ if (value != null) {
+ setMonth(this, value);
+ utils_hooks__hooks.updateOffset(this, true);
+ return this;
+ } else {
+ return get_set__get(this, 'Month');
+ }
+ }
+
+ function getDaysInMonth () {
+ return daysInMonth(this.year(), this.month());
+ }
+
+ function checkOverflow (m) {
+ var overflow;
+ var a = m._a;
+
+ if (a && getParsingFlags(m).overflow === -2) {
+ overflow =
+ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
+ a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
+ a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
+ a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
+ a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
+ a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
+ -1;
+
+ if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ overflow = DATE;
}
- break;
- // WEEK, WEEK DAY - numeric
- case 'w':
- case 'ww':
- case 'W':
- case 'WW':
- case 'd':
- case 'e':
- case 'E':
- token = token.substr(0, 1);
- /* falls through */
- case 'gggg':
- case 'GGGG':
- case 'GGGGG':
- token = token.substr(0, 2);
- if (input) {
- config._w = config._w || {};
- config._w[token] = toInt(input);
+
+ getParsingFlags(m).overflow = overflow;
+ }
+
+ return m;
+ }
+
+ function warn(msg) {
+ if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
+ console.warn('Deprecation warning: ' + msg);
+ }
+ }
+
+ function deprecate(msg, fn) {
+ var firstTime = true,
+ msgWithStack = msg + '\n' + (new Error()).stack;
+
+ return extend(function () {
+ if (firstTime) {
+ warn(msgWithStack);
+ firstTime = false;
}
- break;
- case 'gg':
- case 'GG':
- config._w = config._w || {};
- config._w[token] = moment.parseTwoDigitYear(input);
+ return fn.apply(this, arguments);
+ }, fn);
+ }
+
+ var deprecations = {};
+
+ function deprecateSimple(name, msg) {
+ if (!deprecations[name]) {
+ warn(msg);
+ deprecations[name] = true;
}
}
- function dayOfYearFromWeekInfo(config) {
- var w, weekYear, week, weekday, dow, doy, temp;
+ utils_hooks__hooks.suppressDeprecationWarnings = false;
- w = config._w;
- if (w.GG != null || w.W != null || w.E != null) {
- dow = 1;
- doy = 4;
+ var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
- // TODO: We need to take the current isoWeekYear, but that depends on
- // how we interpret now (local, utc, fixed offset). So create
- // a now version of current config (take local/utc/offset flags, and
- // create now).
- weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
- week = dfl(w.W, 1);
- weekday = dfl(w.E, 1);
- } else {
- dow = config._locale._week.dow;
- doy = config._locale._week.doy;
+ var isoDates = [
+ ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
+ ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
+ ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
+ ['GGGG-[W]WW', /\d{4}-W\d{2}/],
+ ['YYYY-DDD', /\d{4}-\d{3}/]
+ ];
- weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
- week = dfl(w.w, 1);
+ // iso time formats and regexes
+ var isoTimes = [
+ ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
+ ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
+ ['HH:mm', /(T| )\d\d:\d\d/],
+ ['HH', /(T| )\d\d/]
+ ];
- if (w.d != null) {
- // weekday -- low day numbers are considered next week
- weekday = w.d;
- if (weekday < dow) {
- ++week;
+ var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
+
+ // date from iso format
+ function configFromISO(config) {
+ var i, l,
+ string = config._i,
+ match = from_string__isoRegex.exec(string);
+
+ if (match) {
+ getParsingFlags(config).iso = true;
+ for (i = 0, l = isoDates.length; i < l; i++) {
+ if (isoDates[i][1].exec(string)) {
+ // match[5] should be 'T' or undefined
+ config._f = isoDates[i][0] + (match[6] || ' ');
+ break;
}
- } else if (w.e != null) {
- // local weekday -- counting starts from begining of week
- weekday = w.e + dow;
- } else {
- // default to begining of week
- weekday = dow;
}
+ for (i = 0, l = isoTimes.length; i < l; i++) {
+ if (isoTimes[i][1].exec(string)) {
+ config._f += isoTimes[i][0];
+ break;
+ }
+ }
+ if (string.match(matchOffset)) {
+ config._f += 'Z';
+ }
+ configFromStringAndFormat(config);
+ } else {
+ config._isValid = false;
}
- temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
+ }
- config._a[YEAR] = temp.year;
- config._dayOfYear = temp.dayOfYear;
+ // date from iso format or fallback
+ function configFromString(config) {
+ var matched = aspNetJsonRegex.exec(config._i);
+
+ if (matched !== null) {
+ config._d = new Date(+matched[1]);
+ return;
+ }
+
+ configFromISO(config);
+ if (config._isValid === false) {
+ delete config._isValid;
+ utils_hooks__hooks.createFromInputFallback(config);
+ }
+ }
+
+ utils_hooks__hooks.createFromInputFallback = deprecate(
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+ }
+ );
+
+ function createDate (y, m, d, h, M, s, ms) {
+ //can't just apply() to create a date:
+ //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
+ var date = new Date(y, m, d, h, M, s, ms);
+
+ //the date constructor doesn't accept years < 1970
+ if (y < 1970) {
+ date.setFullYear(y);
+ }
+ return date;
+ }
+
+ function createUTCDate (y) {
+ var date = new Date(Date.UTC.apply(null, arguments));
+ if (y < 1970) {
+ date.setUTCFullYear(y);
+ }
+ return date;
+ }
+
+ addFormatToken(0, ['YY', 2], 0, function () {
+ return this.year() % 100;
+ });
+
+ addFormatToken(0, ['YYYY', 4], 0, 'year');
+ addFormatToken(0, ['YYYYY', 5], 0, 'year');
+ addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
+
+ // ALIASES
+
+ addUnitAlias('year', 'y');
+
+ // PARSING
+
+ addRegexToken('Y', matchSigned);
+ addRegexToken('YY', match1to2, match2);
+ addRegexToken('YYYY', match1to4, match4);
+ addRegexToken('YYYYY', match1to6, match6);
+ addRegexToken('YYYYYY', match1to6, match6);
+
+ addParseToken(['YYYY', 'YYYYY', 'YYYYYY'], YEAR);
+ addParseToken('YY', function (input, array) {
+ array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
+
+ // HELPERS
+
+ function daysInYear(year) {
+ return isLeapYear(year) ? 366 : 365;
+ }
+
+ function isLeapYear(year) {
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ }
+
+ // HOOKS
+
+ utils_hooks__hooks.parseTwoDigitYear = function (input) {
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+ };
+
+ // MOMENTS
+
+ var getSetYear = makeGetSet('FullYear', false);
+
+ function getIsLeapYear () {
+ return isLeapYear(this.year());
+ }
+
+ addFormatToken('w', ['ww', 2], 'wo', 'week');
+ addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+ // ALIASES
+
+ addUnitAlias('week', 'w');
+ addUnitAlias('isoWeek', 'W');
+
+ // PARSING
+
+ addRegexToken('w', match1to2);
+ addRegexToken('ww', match1to2, match2);
+ addRegexToken('W', match1to2);
+ addRegexToken('WW', match1to2, match2);
+
+ addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
+ week[token.substr(0, 1)] = toInt(input);
+ });
+
+ // HELPERS
+
+ // firstDayOfWeek 0 = sun, 6 = sat
+ // the day of the week that starts the week
+ // (usually sunday or monday)
+ // firstDayOfWeekOfYear 0 = sun, 6 = sat
+ // the first week is the week that contains the first
+ // of this day of the week
+ // (eg. ISO weeks use thursday (4))
+ function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
+ var end = firstDayOfWeekOfYear - firstDayOfWeek,
+ daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
+ adjustedMoment;
+
+
+ if (daysToDayOfWeek > end) {
+ daysToDayOfWeek -= 7;
+ }
+
+ if (daysToDayOfWeek < end - 7) {
+ daysToDayOfWeek += 7;
+ }
+
+ adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');
+ return {
+ week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+ year: adjustedMoment.year()
+ };
+ }
+
+ // LOCALES
+
+ function localeWeek (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+ }
+
+ var defaultLocaleWeek = {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ };
+
+ function localeFirstDayOfWeek () {
+ return this._week.dow;
+ }
+
+ function localeFirstDayOfYear () {
+ return this._week.doy;
+ }
+
+ // MOMENTS
+
+ function getSetWeek (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ function getSetISOWeek (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
+
+ // ALIASES
+
+ addUnitAlias('dayOfYear', 'DDD');
+
+ // PARSING
+
+ addRegexToken('DDD', match1to3);
+ addRegexToken('DDDD', match3);
+ addParseToken(['DDD', 'DDDD'], function (input, array, config) {
+ config._dayOfYear = toInt(input);
+ });
+
+ // HELPERS
+
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
+ var d = createUTCDate(year, 0, 1).getUTCDay();
+ var daysToAdd;
+ var dayOfYear;
+
+ d = d === 0 ? 7 : d;
+ weekday = weekday != null ? weekday : firstDayOfWeek;
+ daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
+ dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
+
+ return {
+ year : dayOfYear > 0 ? year : year - 1,
+ dayOfYear : dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
+ };
+ }
+
+ // MOMENTS
+
+ function getSetDayOfYear (input) {
+ var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
+ }
+
+ // Pick the first defined of two or three arguments.
+ function defaults(a, b, c) {
+ if (a != null) {
+ return a;
+ }
+ if (b != null) {
+ return b;
+ }
+ return c;
+ }
+
+ function currentDateArray(config) {
+ var now = new Date();
+ if (config._useUTC) {
+ return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];
+ }
+ return [now.getFullYear(), now.getMonth(), now.getDate()];
}
// convert an array to a date.
// the array should mirror the parameters below
// note: all values past the year are optional and will default to the lowest possible value.
// [year, month, day , hour, minute, second, millisecond]
- function dateFromConfig(config) {
+ function configFromArray (config) {
var i, date, input = [], currentDate, yearToUse;
if (config._d) {
@@ -1334,13 +1055,13 @@
//if the day of the year is set, figure out what it is
if (config._dayOfYear) {
- yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
+ yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
if (config._dayOfYear > daysInYear(yearToUse)) {
- config._pf._overflowDayOfYear = true;
+ getParsingFlags(config)._overflowDayOfYear = true;
}
- date = makeUTCDate(yearToUse, 0, config._dayOfYear);
+ date = createUTCDate(yearToUse, 0, config._dayOfYear);
config._a[MONTH] = date.getUTCMonth();
config._a[DATE] = date.getUTCDate();
}
@@ -1359,57 +1080,81 @@
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
}
- config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
- // Apply timezone offset from input. The actual zone can be changed
+ // Check for 24:00:00.000
+ if (config._a[HOUR] === 24 &&
+ config._a[MINUTE] === 0 &&
+ config._a[SECOND] === 0 &&
+ config._a[MILLISECOND] === 0) {
+ config._nextDay = true;
+ config._a[HOUR] = 0;
+ }
+
+ config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
+ // Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if (config._tzm != null) {
- config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
}
- }
-
- function dateFromObject(config) {
- var normalizedInput;
- if (config._d) {
- return;
+ if (config._nextDay) {
+ config._a[HOUR] = 24;
}
+ }
- normalizedInput = normalizeObjectUnits(config._i);
- config._a = [
- normalizedInput.year,
- normalizedInput.month,
- normalizedInput.day,
- normalizedInput.hour,
- normalizedInput.minute,
- normalizedInput.second,
- normalizedInput.millisecond
- ];
+ function dayOfYearFromWeekInfo(config) {
+ var w, weekYear, week, weekday, dow, doy, temp;
- dateFromConfig(config);
- }
+ w = config._w;
+ if (w.GG != null || w.W != null || w.E != null) {
+ dow = 1;
+ doy = 4;
- function currentDateArray(config) {
- var now = new Date();
- if (config._useUTC) {
- return [
- now.getUTCFullYear(),
- now.getUTCMonth(),
- now.getUTCDate()
- ];
+ // TODO: We need to take the current isoWeekYear, but that depends on
+ // how we interpret now (local, utc, fixed offset). So create
+ // a now version of current config (take local/utc/offset flags, and
+ // create now).
+ weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
+ week = defaults(w.W, 1);
+ weekday = defaults(w.E, 1);
} else {
- return [now.getFullYear(), now.getMonth(), now.getDate()];
+ dow = config._locale._week.dow;
+ doy = config._locale._week.doy;
+
+ weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
+ week = defaults(w.w, 1);
+
+ if (w.d != null) {
+ // weekday -- low day numbers are considered next week
+ weekday = w.d;
+ if (weekday < dow) {
+ ++week;
+ }
+ } else if (w.e != null) {
+ // local weekday -- counting starts from begining of week
+ weekday = w.e + dow;
+ } else {
+ // default to begining of week
+ weekday = dow;
+ }
}
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
+
+ config._a[YEAR] = temp.year;
+ config._dayOfYear = temp.dayOfYear;
}
+ utils_hooks__hooks.ISO_8601 = function () {};
+
// date from string and format string
- function makeDateFromStringAndFormat(config) {
- if (config._f === moment.ISO_8601) {
- parseISO(config);
+ function configFromStringAndFormat(config) {
+ // TODO: Move this to another part of the creation flow to prevent circular deps
+ if (config._f === utils_hooks__hooks.ISO_8601) {
+ configFromISO(config);
return;
}
config._a = [];
- config._pf.empty = true;
+ getParsingFlags(config).empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
@@ -1425,7 +1170,7 @@
if (parsedInput) {
skipped = string.substr(0, string.indexOf(parsedInput));
if (skipped.length > 0) {
- config._pf.unusedInput.push(skipped);
+ getParsingFlags(config).unusedInput.push(skipped);
}
string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
totalParsedInputLength += parsedInput.length;
@@ -1433,50 +1178,64 @@
// don't parse if it's not a known token
if (formatTokenFunctions[token]) {
if (parsedInput) {
- config._pf.empty = false;
+ getParsingFlags(config).empty = false;
}
else {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
addTimeToArrayFromToken(token, parsedInput, config);
}
else if (config._strict && !parsedInput) {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
}
// add remaining unparsed input length to the string
- config._pf.charsLeftOver = stringLength - totalParsedInputLength;
+ getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
- config._pf.unusedInput.push(string);
+ getParsingFlags(config).unusedInput.push(string);
}
- // handle am pm
- if (config._isPm && config._a[HOUR] < 12) {
- config._a[HOUR] += 12;
- }
- // if is 12 am, change hours to 0
- if (config._isPm === false && config._a[HOUR] === 12) {
- config._a[HOUR] = 0;
+ // clear _12h flag if hour is <= 12
+ if (getParsingFlags(config).bigHour === true &&
+ config._a[HOUR] <= 12 &&
+ config._a[HOUR] > 0) {
+ getParsingFlags(config).bigHour = undefined;
}
+ // handle meridiem
+ config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
- dateFromConfig(config);
+ configFromArray(config);
checkOverflow(config);
}
- function unescapeFormat(s) {
- return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
- return p1 || p2 || p3 || p4;
- });
- }
- // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
- function regexpEscape(s) {
- return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ function meridiemFixWrap (locale, hour, meridiem) {
+ var isPm;
+
+ if (meridiem == null) {
+ // nothing to do
+ return hour;
+ }
+ if (locale.meridiemHour != null) {
+ return locale.meridiemHour(hour, meridiem);
+ } else if (locale.isPM != null) {
+ // Fallback
+ isPm = locale.isPM(meridiem);
+ if (isPm && hour < 12) {
+ hour += 12;
+ }
+ if (!isPm && hour === 12) {
+ hour = 0;
+ }
+ return hour;
+ } else {
+ // this is not supposed to happen
+ return hour;
+ }
}
- // date from string and array of format strings
- function makeDateFromStringAndArray(config) {
+ function configFromStringAndArray(config) {
var tempConfig,
bestMoment,
@@ -1485,7 +1244,7 @@
currentScore;
if (config._f.length === 0) {
- config._pf.invalidFormat = true;
+ getParsingFlags(config).invalidFormat = true;
config._d = new Date(NaN);
return;
}
@@ -1496,21 +1255,20 @@
if (config._useUTC != null) {
tempConfig._useUTC = config._useUTC;
}
- tempConfig._pf = defaultParsingFlags();
tempConfig._f = config._f[i];
- makeDateFromStringAndFormat(tempConfig);
+ configFromStringAndFormat(tempConfig);
- if (!isValid(tempConfig)) {
+ if (!valid__isValid(tempConfig)) {
continue;
}
// if there is any input that was not parsed add a penalty for that format
- currentScore += tempConfig._pf.charsLeftOver;
+ currentScore += getParsingFlags(tempConfig).charsLeftOver;
//or tokens
- currentScore += tempConfig._pf.unusedTokens.length * 10;
+ currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
- tempConfig._pf.score = currentScore;
+ getParsingFlags(tempConfig).score = currentScore;
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore;
@@ -1521,341 +1279,400 @@
extend(config, bestMoment || tempConfig);
}
- // date from iso format
- function parseISO(config) {
- var i, l,
- string = config._i,
- match = isoRegex.exec(string);
-
- if (match) {
- config._pf.iso = true;
- for (i = 0, l = isoDates.length; i < l; i++) {
- if (isoDates[i][1].exec(string)) {
- // match[5] should be 'T' or undefined
- config._f = isoDates[i][0] + (match[6] || ' ');
- break;
- }
- }
- for (i = 0, l = isoTimes.length; i < l; i++) {
- if (isoTimes[i][1].exec(string)) {
- config._f += isoTimes[i][0];
- break;
- }
- }
- if (string.match(parseTokenTimezone)) {
- config._f += 'Z';
- }
- makeDateFromStringAndFormat(config);
- } else {
- config._isValid = false;
+ function configFromObject(config) {
+ if (config._d) {
+ return;
}
+
+ var i = normalizeObjectUnits(config._i);
+ config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];
+
+ configFromArray(config);
}
- // date from iso format or fallback
- function makeDateFromString(config) {
- parseISO(config);
- if (config._isValid === false) {
- delete config._isValid;
- moment.createFromInputFallback(config);
+ function createFromConfig (config) {
+ var input = config._i,
+ format = config._f,
+ res;
+
+ config._locale = config._locale || locale_locales__getLocale(config._l);
+
+ if (input === null || (format === undefined && input === '')) {
+ return valid__createInvalid({nullInput: true});
}
- }
- function map(arr, fn) {
- var res = [], i;
- for (i = 0; i < arr.length; ++i) {
- res.push(fn(arr[i], i));
+ if (typeof input === 'string') {
+ config._i = input = config._locale.preparse(input);
+ }
+
+ if (isMoment(input)) {
+ return new Moment(checkOverflow(input));
+ } else if (isArray(format)) {
+ configFromStringAndArray(config);
+ } else if (format) {
+ configFromStringAndFormat(config);
+ } else if (isDate(input)) {
+ config._d = input;
+ } else {
+ configFromInput(config);
}
+
+ res = new Moment(checkOverflow(config));
+ if (res._nextDay) {
+ // Adding is smart enough around DST
+ res.add(1, 'd');
+ res._nextDay = undefined;
+ }
+
return res;
}
- function makeDateFromInput(config) {
- var input = config._i, matched;
+ function configFromInput(config) {
+ var input = config._i;
if (input === undefined) {
config._d = new Date();
} else if (isDate(input)) {
config._d = new Date(+input);
- } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
- config._d = new Date(+matched[1]);
} else if (typeof input === 'string') {
- makeDateFromString(config);
+ configFromString(config);
} else if (isArray(input)) {
config._a = map(input.slice(0), function (obj) {
return parseInt(obj, 10);
});
- dateFromConfig(config);
+ configFromArray(config);
} else if (typeof(input) === 'object') {
- dateFromObject(config);
+ configFromObject(config);
} else if (typeof(input) === 'number') {
// from milliseconds
config._d = new Date(input);
} else {
- moment.createFromInputFallback(config);
+ utils_hooks__hooks.createFromInputFallback(config);
}
}
- function makeDate(y, m, d, h, M, s, ms) {
- //can't just apply() to create a date:
- //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
- var date = new Date(y, m, d, h, M, s, ms);
+ function createLocalOrUTC (input, format, locale, strict, isUTC) {
+ var c = {};
- //the date constructor doesn't accept years < 1970
- if (y < 1970) {
- date.setFullYear(y);
+ if (typeof(locale) === 'boolean') {
+ strict = locale;
+ locale = undefined;
}
- return date;
+ // object construction must be done this way.
+ // https://github.com/moment/moment/issues/1423
+ c._isAMomentObject = true;
+ c._useUTC = c._isUTC = isUTC;
+ c._l = locale;
+ c._i = input;
+ c._f = format;
+ c._strict = strict;
+
+ return createFromConfig(c);
}
- function makeUTCDate(y) {
- var date = new Date(Date.UTC.apply(null, arguments));
- if (y < 1970) {
- date.setUTCFullYear(y);
- }
- return date;
+ function local__createLocal (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, false);
}
- function parseWeekday(input, locale) {
- if (typeof input === 'string') {
- if (!isNaN(input)) {
- input = parseInt(input, 10);
- }
- else {
- input = locale.weekdaysParse(input);
- if (typeof input !== 'number') {
- return null;
- }
+ var prototypeMin = deprecate(
+ 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ return other < this ? this : other;
+ }
+ );
+
+ var prototypeMax = deprecate(
+ 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ return other > this ? this : other;
+ }
+ );
+
+ // Pick a moment m from moments so that m[fn](other) is true for all
+ // other. This relies on the function fn to be transitive.
+ //
+ // moments should either be an array of moment objects or an array, whose
+ // first element is an array of moment objects.
+ function pickBy(fn, moments) {
+ var res, i;
+ if (moments.length === 1 && isArray(moments[0])) {
+ moments = moments[0];
+ }
+ if (!moments.length) {
+ return local__createLocal();
+ }
+ res = moments[0];
+ for (i = 1; i < moments.length; ++i) {
+ if (moments[i][fn](res)) {
+ res = moments[i];
}
}
- return input;
+ return res;
}
- /************************************
- Relative Time
- ************************************/
+ // TODO: Use [].sort instead?
+ function min () {
+ var args = [].slice.call(arguments, 0);
+
+ return pickBy('isBefore', args);
+ }
+ function max () {
+ var args = [].slice.call(arguments, 0);
- // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
- function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
- return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ return pickBy('isAfter', args);
}
- function relativeTime(posNegDuration, withoutSuffix, locale) {
- var duration = moment.duration(posNegDuration).abs(),
- seconds = round(duration.as('s')),
- minutes = round(duration.as('m')),
- hours = round(duration.as('h')),
- days = round(duration.as('d')),
- months = round(duration.as('M')),
- years = round(duration.as('y')),
+ function Duration (duration) {
+ var normalizedInput = normalizeObjectUnits(duration),
+ years = normalizedInput.year || 0,
+ quarters = normalizedInput.quarter || 0,
+ months = normalizedInput.month || 0,
+ weeks = normalizedInput.week || 0,
+ days = normalizedInput.day || 0,
+ hours = normalizedInput.hour || 0,
+ minutes = normalizedInput.minute || 0,
+ seconds = normalizedInput.second || 0,
+ milliseconds = normalizedInput.millisecond || 0;
- args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
- minutes === 1 && ['m'] ||
- minutes < relativeTimeThresholds.m && ['mm', minutes] ||
- hours === 1 && ['h'] ||
- hours < relativeTimeThresholds.h && ['hh', hours] ||
- days === 1 && ['d'] ||
- days < relativeTimeThresholds.d && ['dd', days] ||
- months === 1 && ['M'] ||
- months < relativeTimeThresholds.M && ['MM', months] ||
- years === 1 && ['y'] || ['yy', years];
+ // representation for dateAddRemove
+ this._milliseconds = +milliseconds +
+ seconds * 1e3 + // 1000
+ minutes * 6e4 + // 1000 * 60
+ hours * 36e5; // 1000 * 60 * 60
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = +days +
+ weeks * 7;
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = +months +
+ quarters * 3 +
+ years * 12;
- args[2] = withoutSuffix;
- args[3] = +posNegDuration > 0;
- args[4] = locale;
- return substituteTimeAgo.apply({}, args);
- }
+ this._data = {};
+ this._locale = locale_locales__getLocale();
- /************************************
- Week of Year
- ************************************/
+ this._bubble();
+ }
+ function isDuration (obj) {
+ return obj instanceof Duration;
+ }
- // firstDayOfWeek 0 = sun, 6 = sat
- // the day of the week that starts the week
- // (usually sunday or monday)
- // firstDayOfWeekOfYear 0 = sun, 6 = sat
- // the first week is the week that contains the first
- // of this day of the week
- // (eg. ISO weeks use thursday (4))
- function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
- var end = firstDayOfWeekOfYear - firstDayOfWeek,
- daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
- adjustedMoment;
+ function offset (token, separator) {
+ addFormatToken(token, 0, 0, function () {
+ var offset = this.utcOffset();
+ var sign = '+';
+ if (offset < 0) {
+ offset = -offset;
+ sign = '-';
+ }
+ return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
+ });
+ }
+ offset('Z', ':');
+ offset('ZZ', '');
- if (daysToDayOfWeek > end) {
- daysToDayOfWeek -= 7;
- }
+ // PARSING
- if (daysToDayOfWeek < end - 7) {
- daysToDayOfWeek += 7;
- }
+ addRegexToken('Z', matchOffset);
+ addRegexToken('ZZ', matchOffset);
+ addParseToken(['Z', 'ZZ'], function (input, array, config) {
+ config._useUTC = true;
+ config._tzm = offsetFromString(input);
+ });
- adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
- return {
- week: Math.ceil(adjustedMoment.dayOfYear() / 7),
- year: adjustedMoment.year()
- };
- }
+ // HELPERS
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
- function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
- var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
+ // timezone chunker
+ // '+10:00' > ['10', '00']
+ // '-1530' > ['-15', '30']
+ var chunkOffset = /([\+\-]|\d\d)/gi;
- d = d === 0 ? 7 : d;
- weekday = weekday != null ? weekday : firstDayOfWeek;
- daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
- dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
+ function offsetFromString(string) {
+ var matches = ((string || '').match(matchOffset) || []);
+ var chunk = matches[matches.length - 1] || [];
+ var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
+ var minutes = +(parts[1] * 60) + toInt(parts[2]);
- return {
- year: dayOfYear > 0 ? year : year - 1,
- dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
- };
+ return parts[0] === '+' ? minutes : -minutes;
}
- /************************************
- Top Level Functions
- ************************************/
+ // Return a moment from input, that is local/utc/zone equivalent to model.
+ function cloneWithOffset(input, model) {
+ var res, diff;
+ if (model._isUTC) {
+ res = model.clone();
+ diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
+ // Use low-level api, because this fn is low-level api.
+ res._d.setTime(+res._d + diff);
+ utils_hooks__hooks.updateOffset(res, false);
+ return res;
+ } else {
+ return local__createLocal(input).local();
+ }
+ return model._isUTC ? local__createLocal(input).zone(model._offset || 0) : local__createLocal(input).local();
+ }
- function makeMoment(config) {
- var input = config._i,
- format = config._f;
+ function getDateOffset (m) {
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
+ }
- config._locale = config._locale || moment.localeData(config._l);
+ // HOOKS
- if (input === null || (format === undefined && input === '')) {
- return moment.invalid({nullInput: true});
- }
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ utils_hooks__hooks.updateOffset = function () {};
- if (typeof input === 'string') {
- config._i = input = config._locale.preparse(input);
- }
+ // MOMENTS
- if (moment.isMoment(input)) {
- return new Moment(input, true);
- } else if (format) {
- if (isArray(format)) {
- makeDateFromStringAndArray(config);
- } else {
- makeDateFromStringAndFormat(config);
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ function getSetOffset (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = offsetFromString(input);
+ }
+ if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = getDateOffset(this);
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (localAdjust != null) {
+ this.add(localAdjust, 'm');
+ }
+ if (offset !== input) {
+ if (!keepLocalTime || this._changeInProgress) {
+ add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
+ } else if (!this._changeInProgress) {
+ this._changeInProgress = true;
+ utils_hooks__hooks.updateOffset(this, true);
+ this._changeInProgress = null;
+ }
}
+ return this;
} else {
- makeDateFromInput(config);
+ return this._isUTC ? offset : getDateOffset(this);
}
-
- return new Moment(config);
}
- moment = function (input, format, locale, strict) {
- var c;
+ function getSetZone (input, keepLocalTime) {
+ if (input != null) {
+ if (typeof input !== 'string') {
+ input = -input;
+ }
- if (typeof(locale) === 'boolean') {
- strict = locale;
- locale = undefined;
+ this.utcOffset(input, keepLocalTime);
+
+ return this;
+ } else {
+ return -this.utcOffset();
}
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c = {};
- c._isAMomentObject = true;
- c._i = input;
- c._f = format;
- c._l = locale;
- c._strict = strict;
- c._isUTC = false;
- c._pf = defaultParsingFlags();
+ }
- return makeMoment(c);
- };
+ function setOffsetToUTC (keepLocalTime) {
+ return this.utcOffset(0, keepLocalTime);
+ }
- moment.suppressDeprecationWarnings = false;
+ function setOffsetToLocal (keepLocalTime) {
+ if (this._isUTC) {
+ this.utcOffset(0, keepLocalTime);
+ this._isUTC = false;
- moment.createFromInputFallback = deprecate(
- 'moment construction falls back to js Date. This is ' +
- 'discouraged and will be removed in upcoming major ' +
- 'release. Please refer to ' +
- 'https://github.com/moment/moment/issues/1407 for more info.',
- function (config) {
- config._d = new Date(config._i);
+ if (keepLocalTime) {
+ this.subtract(getDateOffset(this), 'm');
+ }
}
- );
+ return this;
+ }
- // Pick a moment m from moments so that m[fn](other) is true for all
- // other. This relies on the function fn to be transitive.
- //
- // moments should either be an array of moment objects or an array, whose
- // first element is an array of moment objects.
- function pickBy(fn, moments) {
- var res, i;
- if (moments.length === 1 && isArray(moments[0])) {
- moments = moments[0];
+ function setOffsetToParsedOffset () {
+ if (this._tzm) {
+ this.utcOffset(this._tzm);
+ } else if (typeof this._i === 'string') {
+ this.utcOffset(offsetFromString(this._i));
}
- if (!moments.length) {
- return moment();
+ return this;
+ }
+
+ function hasAlignedHourOffset (input) {
+ if (!input) {
+ input = 0;
}
- res = moments[0];
- for (i = 1; i < moments.length; ++i) {
- if (moments[i][fn](res)) {
- res = moments[i];
- }
+ else {
+ input = local__createLocal(input).utcOffset();
}
- return res;
+
+ return (this.utcOffset() - input) % 60 === 0;
}
- moment.min = function () {
- var args = [].slice.call(arguments, 0);
+ function isDaylightSavingTime () {
+ return (
+ this.utcOffset() > this.clone().month(0).utcOffset() ||
+ this.utcOffset() > this.clone().month(5).utcOffset()
+ );
+ }
- return pickBy('isBefore', args);
- };
+ function isDaylightSavingTimeShifted () {
+ if (this._a) {
+ var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);
+ return this.isValid() && compareArrays(this._a, other.toArray()) > 0;
+ }
- moment.max = function () {
- var args = [].slice.call(arguments, 0);
+ return false;
+ }
- return pickBy('isAfter', args);
- };
+ function isLocal () {
+ return !this._isUTC;
+ }
- // creating with utc
- moment.utc = function (input, format, locale, strict) {
- var c;
+ function isUtcOffset () {
+ return this._isUTC;
+ }
- if (typeof(locale) === 'boolean') {
- strict = locale;
- locale = undefined;
- }
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c = {};
- c._isAMomentObject = true;
- c._useUTC = true;
- c._isUTC = true;
- c._l = locale;
- c._i = input;
- c._f = format;
- c._strict = strict;
- c._pf = defaultParsingFlags();
+ function isUtc () {
+ return this._isUTC && this._offset === 0;
+ }
- return makeMoment(c).utc();
- };
+ var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;
- // creating with unix timestamp (in seconds)
- moment.unix = function (input) {
- return moment(input * 1000);
- };
+ // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+ // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+ var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
- // duration
- moment.duration = function (input, key) {
+ function create__createDuration (input, key) {
var duration = input,
// matching against regexp is expensive, do it on demand
match = null,
sign,
ret,
- parseIso,
diffRes;
- if (moment.isDuration(input)) {
+ if (isDuration(input)) {
duration = {
- ms: input._milliseconds,
- d: input._days,
- M: input._months
+ ms : input._milliseconds,
+ d : input._days,
+ M : input._months
};
} else if (typeof input === 'number') {
duration = {};
@@ -1864,38 +1681,31 @@
} else {
duration.milliseconds = input;
}
- } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
+ } else if (!!(match = aspNetRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
- y: 0,
- d: toInt(match[DATE]) * sign,
- h: toInt(match[HOUR]) * sign,
- m: toInt(match[MINUTE]) * sign,
- s: toInt(match[SECOND]) * sign,
- ms: toInt(match[MILLISECOND]) * sign
+ y : 0,
+ d : toInt(match[DATE]) * sign,
+ h : toInt(match[HOUR]) * sign,
+ m : toInt(match[MINUTE]) * sign,
+ s : toInt(match[SECOND]) * sign,
+ ms : toInt(match[MILLISECOND]) * sign
};
- } else if (!!(match = isoDurationRegex.exec(input))) {
+ } else if (!!(match = create__isoRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
- parseIso = function (inp) {
- // We'd normally use ~~inp for this, but unfortunately it also
- // converts floats to ints.
- // inp may be undefined, so careful calling replace on it.
- var res = inp && parseFloat(inp.replace(',', '.'));
- // apply sign while we're at it
- return (isNaN(res) ? 0 : res) * sign;
- };
duration = {
- y: parseIso(match[2]),
- M: parseIso(match[3]),
- d: parseIso(match[4]),
- h: parseIso(match[5]),
- m: parseIso(match[6]),
- s: parseIso(match[7]),
- w: parseIso(match[8])
+ y : parseIso(match[2], sign),
+ M : parseIso(match[3], sign),
+ d : parseIso(match[4], sign),
+ h : parseIso(match[5], sign),
+ m : parseIso(match[6], sign),
+ s : parseIso(match[7], sign),
+ w : parseIso(match[8], sign)
};
- } else if (typeof duration === 'object' &&
- ('from' in duration || 'to' in duration)) {
- diffRes = momentsDifference(moment(duration.from), moment(duration.to));
+ } else if (duration == null) {// checks for null or undefined
+ duration = {};
+ } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
duration = {};
duration.ms = diffRes.milliseconds;
@@ -1904,906 +1714,1036 @@
ret = new Duration(duration);
- if (moment.isDuration(input) && hasOwnProp(input, '_locale')) {
+ if (isDuration(input) && hasOwnProp(input, '_locale')) {
ret._locale = input._locale;
}
return ret;
- };
+ }
- // version number
- moment.version = VERSION;
+ create__createDuration.fn = Duration.prototype;
- // default format
- moment.defaultFormat = isoFormat;
+ function parseIso (inp, sign) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var res = inp && parseFloat(inp.replace(',', '.'));
+ // apply sign while we're at it
+ return (isNaN(res) ? 0 : res) * sign;
+ }
- // constant that refers to the ISO standard
- moment.ISO_8601 = function () {};
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
- // Plugins that add properties should also add the key here (null value),
- // so we can properly clone ourselves.
- moment.momentProperties = momentProperties;
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
+ }
- // This function will be called whenever a moment is mutated.
- // It is intended to keep the offset in sync with the timezone.
- moment.updateOffset = function () {};
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
- // This function allows you to set a threshold for relative time strings
- moment.relativeTimeThreshold = function (threshold, limit) {
- if (relativeTimeThresholds[threshold] === undefined) {
- return false;
- }
- if (limit === undefined) {
- return relativeTimeThresholds[threshold];
- }
- relativeTimeThresholds[threshold] = limit;
- return true;
- };
+ return res;
+ }
- moment.lang = deprecate(
- 'moment.lang is deprecated. Use moment.locale instead.',
- function (key, value) {
- return moment.locale(key, value);
+ function momentsDifference(base, other) {
+ var res;
+ other = cloneWithOffset(other, base);
+ if (base.isBefore(other)) {
+ res = positiveMomentsDifference(base, other);
+ } else {
+ res = positiveMomentsDifference(other, base);
+ res.milliseconds = -res.milliseconds;
+ res.months = -res.months;
}
- );
- // This function will load locale and then set the global locale. If
- // no arguments are passed in, it will simply return the current global
- // locale key.
- moment.locale = function (key, values) {
- var data;
- if (key) {
- if (typeof(values) !== 'undefined') {
- data = moment.defineLocale(key, values);
- }
- else {
- data = moment.localeData(key);
- }
+ return res;
+ }
- if (data) {
- moment.duration._locale = moment._locale = data;
+ function createAdder(direction, name) {
+ return function (val, period) {
+ var dur, tmp;
+ //invert the arguments, but complain about it
+ if (period !== null && !isNaN(+period)) {
+ deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
+ tmp = val; val = period; period = tmp;
}
+
+ val = typeof val === 'string' ? +val : val;
+ dur = create__createDuration(val, period);
+ add_subtract__addSubtract(this, dur, direction);
+ return this;
+ };
+ }
+
+ function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = duration._days,
+ months = duration._months;
+ updateOffset = updateOffset == null ? true : updateOffset;
+
+ if (milliseconds) {
+ mom._d.setTime(+mom._d + milliseconds * isAdding);
}
+ if (days) {
+ get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
+ }
+ if (months) {
+ setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
+ }
+ if (updateOffset) {
+ utils_hooks__hooks.updateOffset(mom, days || months);
+ }
+ }
- return moment._locale._abbr;
- };
+ var add_subtract__add = createAdder(1, 'add');
+ var add_subtract__subtract = createAdder(-1, 'subtract');
- moment.defineLocale = function (name, values) {
- if (values !== null) {
- values.abbr = name;
- if (!locales[name]) {
- locales[name] = new Locale();
- }
- locales[name].set(values);
+ function moment_calendar__calendar (time) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're local/utc/offset or not.
+ var now = time || local__createLocal(),
+ sod = cloneWithOffset(now, this).startOf('day'),
+ diff = this.diff(sod, 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+ return this.format(this.localeData().calendar(format, this, local__createLocal(now)));
+ }
- // backwards compat for now: also set the locale
- moment.locale(name);
+ function clone () {
+ return new Moment(this);
+ }
- return locales[name];
+ function isAfter (input, units) {
+ var inputMs;
+ units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
+ if (units === 'millisecond') {
+ input = isMoment(input) ? input : local__createLocal(input);
+ return +this > +input;
} else {
- // useful for testing
- delete locales[name];
- return null;
+ inputMs = isMoment(input) ? +input : +local__createLocal(input);
+ return inputMs < +this.clone().startOf(units);
}
- };
+ }
- moment.langData = deprecate(
- 'moment.langData is deprecated. Use moment.localeData instead.',
- function (key) {
- return moment.localeData(key);
+ function isBefore (input, units) {
+ var inputMs;
+ units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
+ if (units === 'millisecond') {
+ input = isMoment(input) ? input : local__createLocal(input);
+ return +this < +input;
+ } else {
+ inputMs = isMoment(input) ? +input : +local__createLocal(input);
+ return +this.clone().endOf(units) < inputMs;
}
- );
+ }
- // returns locale data
- moment.localeData = function (key) {
- var locale;
+ function isBetween (from, to, units) {
+ return this.isAfter(from, units) && this.isBefore(to, units);
+ }
- if (key && key._locale && key._locale._abbr) {
- key = key._locale._abbr;
+ function isSame (input, units) {
+ var inputMs;
+ units = normalizeUnits(units || 'millisecond');
+ if (units === 'millisecond') {
+ input = isMoment(input) ? input : local__createLocal(input);
+ return +this === +input;
+ } else {
+ inputMs = +local__createLocal(input);
+ return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
}
+ }
- if (!key) {
- return moment._locale;
+ function absFloor (number) {
+ if (number < 0) {
+ return Math.ceil(number);
+ } else {
+ return Math.floor(number);
}
+ }
- if (!isArray(key)) {
- //short-circuit everything else
- locale = loadLocale(key);
- if (locale) {
- return locale;
+ function diff (input, units, asFloat) {
+ var that = cloneWithOffset(input, this),
+ zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,
+ delta, output;
+
+ units = normalizeUnits(units);
+
+ if (units === 'year' || units === 'month' || units === 'quarter') {
+ output = monthDiff(this, that);
+ if (units === 'quarter') {
+ output = output / 3;
+ } else if (units === 'year') {
+ output = output / 12;
}
- key = [key];
+ } else {
+ delta = this - that;
+ output = units === 'second' ? delta / 1e3 : // 1000
+ units === 'minute' ? delta / 6e4 : // 1000 * 60
+ units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
+ units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
+ units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
+ delta;
+ }
+ return asFloat ? output : absFloor(output);
+ }
+
+ function monthDiff (a, b) {
+ // difference in months
+ var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
+ // b is in (anchor - 1 month, anchor + 1 month)
+ anchor = a.clone().add(wholeMonthDiff, 'months'),
+ anchor2, adjust;
+
+ if (b - anchor < 0) {
+ anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor - anchor2);
+ } else {
+ anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor2 - anchor);
}
- return chooseLocale(key);
- };
+ return -(wholeMonthDiff + adjust);
+ }
- // compare moment object
- moment.isMoment = function (obj) {
- return obj instanceof Moment ||
- (obj != null && hasOwnProp(obj, '_isAMomentObject'));
- };
+ utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
- // for typechecking Duration objects
- moment.isDuration = function (obj) {
- return obj instanceof Duration;
- };
+ function toString () {
+ return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+ }
- for (i = lists.length - 1; i >= 0; --i) {
- makeList(lists[i]);
+ function moment_format__toISOString () {
+ var m = this.clone().utc();
+ if (0 < m.year() && m.year() <= 9999) {
+ if ('function' === typeof Date.prototype.toISOString) {
+ // native implementation is ~50x faster, use it when we can
+ return this.toDate().toISOString();
+ } else {
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ } else {
+ return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
}
- moment.normalizeUnits = function (units) {
- return normalizeUnits(units);
- };
+ function moment_format__format (inputString) {
+ var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
+ return this.localeData().postformat(output);
+ }
- moment.invalid = function (flags) {
- var m = moment.utc(NaN);
- if (flags != null) {
- extend(m._pf, flags);
+ function from (time, withoutSuffix) {
+ if (!this.isValid()) {
+ return this.localeData().invalidDate();
}
- else {
- m._pf.userInvalidated = true;
+ return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
+ }
+
+ function fromNow (withoutSuffix) {
+ return this.from(local__createLocal(), withoutSuffix);
+ }
+
+ function to (time, withoutSuffix) {
+ if (!this.isValid()) {
+ return this.localeData().invalidDate();
}
+ return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
+ }
- return m;
- };
+ function toNow (withoutSuffix) {
+ return this.to(local__createLocal(), withoutSuffix);
+ }
- moment.parseZone = function () {
- return moment.apply(null, arguments).parseZone();
- };
+ function locale (key) {
+ var newLocaleData;
- moment.parseTwoDigitYear = function (input) {
- return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
- };
+ if (key === undefined) {
+ return this._locale._abbr;
+ } else {
+ newLocaleData = locale_locales__getLocale(key);
+ if (newLocaleData != null) {
+ this._locale = newLocaleData;
+ }
+ return this;
+ }
+ }
- /************************************
- Moment Prototype
- ************************************/
+ var lang = deprecate(
+ 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ return this.locale(key);
+ }
+ }
+ );
+ function localeData () {
+ return this._locale;
+ }
- extend(moment.fn = Moment.prototype, {
+ function startOf (units) {
+ units = normalizeUnits(units);
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (units) {
+ case 'year':
+ this.month(0);
+ /* falls through */
+ case 'quarter':
+ case 'month':
+ this.date(1);
+ /* falls through */
+ case 'week':
+ case 'isoWeek':
+ case 'day':
+ this.hours(0);
+ /* falls through */
+ case 'hour':
+ this.minutes(0);
+ /* falls through */
+ case 'minute':
+ this.seconds(0);
+ /* falls through */
+ case 'second':
+ this.milliseconds(0);
+ }
- clone : function () {
- return moment(this);
- },
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ }
+ if (units === 'isoWeek') {
+ this.isoWeekday(1);
+ }
- valueOf : function () {
- return +this._d + ((this._offset || 0) * 60000);
- },
+ // quarters are also special
+ if (units === 'quarter') {
+ this.month(Math.floor(this.month() / 3) * 3);
+ }
- unix : function () {
- return Math.floor(+this / 1000);
- },
+ return this;
+ }
- toString : function () {
- return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
- },
+ function endOf (units) {
+ units = normalizeUnits(units);
+ if (units === undefined || units === 'millisecond') {
+ return this;
+ }
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
+ }
- toDate : function () {
- return this._offset ? new Date(+this) : this._d;
- },
+ function to_type__valueOf () {
+ return +this._d - ((this._offset || 0) * 60000);
+ }
- toISOString : function () {
- var m = moment(this).utc();
- if (0 < m.year() && m.year() <= 9999) {
- return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- } else {
- return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- }
- },
+ function unix () {
+ return Math.floor(+this / 1000);
+ }
- toArray : function () {
- var m = this;
- return [
- m.year(),
- m.month(),
- m.date(),
- m.hours(),
- m.minutes(),
- m.seconds(),
- m.milliseconds()
- ];
- },
+ function toDate () {
+ return this._offset ? new Date(+this) : this._d;
+ }
- isValid : function () {
- return isValid(this);
- },
+ function toArray () {
+ var m = this;
+ return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
+ }
- isDSTShifted : function () {
- if (this._a) {
- return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
- }
+ function moment_valid__isValid () {
+ return valid__isValid(this);
+ }
- return false;
- },
+ function parsingFlags () {
+ return extend({}, getParsingFlags(this));
+ }
- parsingFlags : function () {
- return extend({}, this._pf);
- },
+ function invalidAt () {
+ return getParsingFlags(this).overflow;
+ }
- invalidAt: function () {
- return this._pf.overflow;
- },
+ addFormatToken(0, ['gg', 2], 0, function () {
+ return this.weekYear() % 100;
+ });
- utc : function (keepLocalTime) {
- return this.zone(0, keepLocalTime);
- },
+ addFormatToken(0, ['GG', 2], 0, function () {
+ return this.isoWeekYear() % 100;
+ });
- local : function (keepLocalTime) {
- if (this._isUTC) {
- this.zone(0, keepLocalTime);
- this._isUTC = false;
+ function addWeekYearFormatToken (token, getter) {
+ addFormatToken(0, [token, token.length], 0, getter);
+ }
- if (keepLocalTime) {
- this.add(this._dateTzOffset(), 'm');
- }
- }
- return this;
- },
+ addWeekYearFormatToken('gggg', 'weekYear');
+ addWeekYearFormatToken('ggggg', 'weekYear');
+ addWeekYearFormatToken('GGGG', 'isoWeekYear');
+ addWeekYearFormatToken('GGGGG', 'isoWeekYear');
- format : function (inputString) {
- var output = formatMoment(this, inputString || moment.defaultFormat);
- return this.localeData().postformat(output);
- },
+ // ALIASES
- add : createAdder(1, 'add'),
+ addUnitAlias('weekYear', 'gg');
+ addUnitAlias('isoWeekYear', 'GG');
- subtract : createAdder(-1, 'subtract'),
+ // PARSING
- diff : function (input, units, asFloat) {
- var that = makeAs(input, this),
- zoneDiff = (this.zone() - that.zone()) * 6e4,
- diff, output, daysAdjust;
+ addRegexToken('G', matchSigned);
+ addRegexToken('g', matchSigned);
+ addRegexToken('GG', match1to2, match2);
+ addRegexToken('gg', match1to2, match2);
+ addRegexToken('GGGG', match1to4, match4);
+ addRegexToken('gggg', match1to4, match4);
+ addRegexToken('GGGGG', match1to6, match6);
+ addRegexToken('ggggg', match1to6, match6);
- units = normalizeUnits(units);
+ addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
+ week[token.substr(0, 2)] = toInt(input);
+ });
- if (units === 'year' || units === 'month') {
- // average number of days in the months in the given dates
- diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
- // difference in months
- output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
- // adjust by taking difference in days, average number of days
- // and dst in the given months.
- daysAdjust = (this - moment(this).startOf('month')) -
- (that - moment(that).startOf('month'));
- // same as above but with zones, to negate all dst
- daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) -
- (that.zone() - moment(that).startOf('month').zone())) * 6e4;
- output += daysAdjust / diff;
- if (units === 'year') {
- output = output / 12;
- }
- } else {
- diff = (this - that);
- output = units === 'second' ? diff / 1e3 : // 1000
- units === 'minute' ? diff / 6e4 : // 1000 * 60
- units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
- units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
- units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
- diff;
- }
- return asFloat ? output : absRound(output);
- },
+ addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+ week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
- from : function (time, withoutSuffix) {
- return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
- },
+ // HELPERS
- fromNow : function (withoutSuffix) {
- return this.from(moment(), withoutSuffix);
- },
+ function weeksInYear(year, dow, doy) {
+ return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
+ }
- calendar : function (time) {
- // We want to compare the start of today, vs this.
- // Getting start-of-today depends on whether we're zone'd or not.
- var now = time || moment(),
- sod = makeAs(now, this).startOf('day'),
- diff = this.diff(sod, 'days', true),
- format = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(this.localeData().calendar(format, this));
- },
+ // MOMENTS
- isLeapYear : function () {
- return isLeapYear(this.year());
- },
+ function getSetWeekYear (input) {
+ var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
+ return input == null ? year : this.add((input - year), 'y');
+ }
- isDST : function () {
- return (this.zone() < this.clone().month(0).zone() ||
- this.zone() < this.clone().month(5).zone());
- },
+ function getSetISOWeekYear (input) {
+ var year = weekOfYear(this, 1, 4).year;
+ return input == null ? year : this.add((input - year), 'y');
+ }
- day : function (input) {
- var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
- if (input != null) {
- input = parseWeekday(input, this.localeData());
- return this.add(input - day, 'd');
- } else {
- return day;
- }
- },
+ function getISOWeeksInYear () {
+ return weeksInYear(this.year(), 1, 4);
+ }
- month : makeAccessor('Month', true),
+ function getWeeksInYear () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+ }
- startOf : function (units) {
- units = normalizeUnits(units);
- // the following switch intentionally omits break keywords
- // to utilize falling through the cases.
- switch (units) {
- case 'year':
- this.month(0);
- /* falls through */
- case 'quarter':
- case 'month':
- this.date(1);
- /* falls through */
- case 'week':
- case 'isoWeek':
- case 'day':
- this.hours(0);
- /* falls through */
- case 'hour':
- this.minutes(0);
- /* falls through */
- case 'minute':
- this.seconds(0);
- /* falls through */
- case 'second':
- this.milliseconds(0);
- /* falls through */
- }
-
- // weeks are a special case
- if (units === 'week') {
- this.weekday(0);
- } else if (units === 'isoWeek') {
- this.isoWeekday(1);
- }
-
- // quarters are also special
- if (units === 'quarter') {
- this.month(Math.floor(this.month() / 3) * 3);
- }
+ addFormatToken('Q', 0, 0, 'quarter');
- return this;
- },
+ // ALIASES
- endOf: function (units) {
- units = normalizeUnits(units);
- return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
- },
+ addUnitAlias('quarter', 'Q');
- isAfter: function (input, units) {
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this > +input;
- } else {
- return +this.clone().startOf(units) > +moment(input).startOf(units);
- }
- },
+ // PARSING
- isBefore: function (input, units) {
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this < +input;
- } else {
- return +this.clone().startOf(units) < +moment(input).startOf(units);
- }
- },
+ addRegexToken('Q', match1);
+ addParseToken('Q', function (input, array) {
+ array[MONTH] = (toInt(input) - 1) * 3;
+ });
- isSame: function (input, units) {
- units = normalizeUnits(units || 'millisecond');
- if (units === 'millisecond') {
- input = moment.isMoment(input) ? input : moment(input);
- return +this === +input;
- } else {
- return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
- }
- },
+ // MOMENTS
- min: deprecate(
- 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
- function (other) {
- other = moment.apply(null, arguments);
- return other < this ? this : other;
- }
- ),
+ function getSetQuarter (input) {
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
+ }
- max: deprecate(
- 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
- function (other) {
- other = moment.apply(null, arguments);
- return other > this ? this : other;
- }
- ),
-
- // keepLocalTime = true means only change the timezone, without
- // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]-->
- // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone
- // +0200, so we adjust the time as needed, to be valid.
- //
- // Keeping the time actually adds/subtracts (one hour)
- // from the actual represented time. That is why we call updateOffset
- // a second time. In case it wants us to change the offset again
- // _changeInProgress == true case, then we have to adjust, because
- // there is no such time in the given timezone.
- zone : function (input, keepLocalTime) {
- var offset = this._offset || 0,
- localAdjust;
- if (input != null) {
- if (typeof input === 'string') {
- input = timezoneMinutesFromString(input);
- }
- if (Math.abs(input) < 16) {
- input = input * 60;
- }
- if (!this._isUTC && keepLocalTime) {
- localAdjust = this._dateTzOffset();
- }
- this._offset = input;
- this._isUTC = true;
- if (localAdjust != null) {
- this.subtract(localAdjust, 'm');
- }
- if (offset !== input) {
- if (!keepLocalTime || this._changeInProgress) {
- addOrSubtractDurationFromMoment(this,
- moment.duration(offset - input, 'm'), 1, false);
- } else if (!this._changeInProgress) {
- this._changeInProgress = true;
- moment.updateOffset(this, true);
- this._changeInProgress = null;
- }
- }
- } else {
- return this._isUTC ? offset : this._dateTzOffset();
- }
- return this;
- },
+ addFormatToken('D', ['DD', 2], 'Do', 'date');
- zoneAbbr : function () {
- return this._isUTC ? 'UTC' : '';
- },
+ // ALIASES
- zoneName : function () {
- return this._isUTC ? 'Coordinated Universal Time' : '';
- },
+ addUnitAlias('date', 'D');
- parseZone : function () {
- if (this._tzm) {
- this.zone(this._tzm);
- } else if (typeof this._i === 'string') {
- this.zone(this._i);
- }
- return this;
- },
+ // PARSING
- hasAlignedHourOffset : function (input) {
- if (!input) {
- input = 0;
- }
- else {
- input = moment(input).zone();
- }
+ addRegexToken('D', match1to2);
+ addRegexToken('DD', match1to2, match2);
+ addRegexToken('Do', function (isStrict, locale) {
+ return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
+ });
- return (this.zone() - input) % 60 === 0;
- },
+ addParseToken(['D', 'DD'], DATE);
+ addParseToken('Do', function (input, array) {
+ array[DATE] = toInt(input.match(match1to2)[0], 10);
+ });
- daysInMonth : function () {
- return daysInMonth(this.year(), this.month());
- },
+ // MOMENTS
- dayOfYear : function (input) {
- var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
- return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
- },
+ var getSetDayOfMonth = makeGetSet('Date', true);
- quarter : function (input) {
- return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
- },
+ addFormatToken('d', 0, 'do', 'day');
- weekYear : function (input) {
- var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
- return input == null ? year : this.add((input - year), 'y');
- },
+ addFormatToken('dd', 0, 0, function (format) {
+ return this.localeData().weekdaysMin(this, format);
+ });
- isoWeekYear : function (input) {
- var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add((input - year), 'y');
- },
+ addFormatToken('ddd', 0, 0, function (format) {
+ return this.localeData().weekdaysShort(this, format);
+ });
- week : function (input) {
- var week = this.localeData().week(this);
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
+ addFormatToken('dddd', 0, 0, function (format) {
+ return this.localeData().weekdays(this, format);
+ });
- isoWeek : function (input) {
- var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add((input - week) * 7, 'd');
- },
+ addFormatToken('e', 0, 0, 'weekday');
+ addFormatToken('E', 0, 0, 'isoWeekday');
- weekday : function (input) {
- var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
- return input == null ? weekday : this.add(input - weekday, 'd');
- },
+ // ALIASES
- isoWeekday : function (input) {
- // behaves the same as moment#day except
- // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
- // as a setter, sunday should belong to the previous week.
- return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
- },
+ addUnitAlias('day', 'd');
+ addUnitAlias('weekday', 'e');
+ addUnitAlias('isoWeekday', 'E');
- isoWeeksInYear : function () {
- return weeksInYear(this.year(), 1, 4);
- },
+ // PARSING
- weeksInYear : function () {
- var weekInfo = this.localeData()._week;
- return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
- },
+ addRegexToken('d', match1to2);
+ addRegexToken('e', match1to2);
+ addRegexToken('E', match1to2);
+ addRegexToken('dd', matchWord);
+ addRegexToken('ddd', matchWord);
+ addRegexToken('dddd', matchWord);
- get : function (units) {
- units = normalizeUnits(units);
- return this[units]();
- },
+ addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {
+ var weekday = config._locale.weekdaysParse(input);
+ // if we didn't get a weekday name, mark the date as invalid
+ if (weekday != null) {
+ week.d = weekday;
+ } else {
+ getParsingFlags(config).invalidWeekday = input;
+ }
+ });
- set : function (units, value) {
- units = normalizeUnits(units);
- if (typeof this[units] === 'function') {
- this[units](value);
- }
- return this;
- },
+ addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
+ week[token] = toInt(input);
+ });
- // If passed a locale key, it will set the locale for this
- // instance. Otherwise, it will return the locale configuration
- // variables for this instance.
- locale : function (key) {
- var newLocaleData;
+ // HELPERS
- if (key === undefined) {
- return this._locale._abbr;
- } else {
- newLocaleData = moment.localeData(key);
- if (newLocaleData != null) {
- this._locale = newLocaleData;
+ function parseWeekday(input, locale) {
+ if (typeof input === 'string') {
+ if (!isNaN(input)) {
+ input = parseInt(input, 10);
+ }
+ else {
+ input = locale.weekdaysParse(input);
+ if (typeof input !== 'number') {
+ return null;
}
- return this;
}
- },
+ }
+ return input;
+ }
- lang : deprecate(
- 'moment().lang() is deprecated. Use moment().localeData() instead.',
- function (key) {
- if (key === undefined) {
- return this.localeData();
- } else {
- return this.locale(key);
- }
+ // LOCALES
+
+ var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
+ function localeWeekdays (m) {
+ return this._weekdays[m.day()];
+ }
+
+ var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
+ function localeWeekdaysShort (m) {
+ return this._weekdaysShort[m.day()];
+ }
+
+ var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
+ function localeWeekdaysMin (m) {
+ return this._weekdaysMin[m.day()];
+ }
+
+ function localeWeekdaysParse (weekdayName) {
+ var i, mom, regex;
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+ if (!this._weekdaysParse[i]) {
+ mom = local__createLocal([2000, 1]).day(i);
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._weekdaysParse[i].test(weekdayName)) {
+ return i;
}
- ),
+ }
+ }
- localeData : function () {
- return this._locale;
- },
+ // MOMENTS
- _dateTzOffset : function () {
- // On Firefox.24 Date#getTimezoneOffset returns a floating point.
- // https://github.com/moment/moment/pull/1871
- return Math.round(this._d.getTimezoneOffset() / 15) * 15;
+ function getSetDayOfWeek (input) {
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ if (input != null) {
+ input = parseWeekday(input, this.localeData());
+ return this.add(input - day, 'd');
+ } else {
+ return day;
}
+ }
+
+ function getSetLocaleDayOfWeek (input) {
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
+ }
+
+ function getSetISODayOfWeek (input) {
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
+ }
+
+ addFormatToken('H', ['HH', 2], 0, 'hour');
+ addFormatToken('h', ['hh', 2], 0, function () {
+ return this.hours() % 12 || 12;
});
- function rawMonthSetter(mom, value) {
- var dayOfMonth;
+ function meridiem (token, lowercase) {
+ addFormatToken(token, 0, 0, function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
+ });
+ }
- // TODO: Move this out of here!
- if (typeof value === 'string') {
- value = mom.localeData().monthsParse(value);
- // TODO: Another silent failure?
- if (typeof value !== 'number') {
- return mom;
- }
- }
+ meridiem('a', true);
+ meridiem('A', false);
- dayOfMonth = Math.min(mom.date(),
- daysInMonth(mom.year(), value));
- mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
- return mom;
+ // ALIASES
+
+ addUnitAlias('hour', 'h');
+
+ // PARSING
+
+ function matchMeridiem (isStrict, locale) {
+ return locale._meridiemParse;
}
- function rawGetter(mom, unit) {
- return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
+ addRegexToken('a', matchMeridiem);
+ addRegexToken('A', matchMeridiem);
+ addRegexToken('H', match1to2);
+ addRegexToken('h', match1to2);
+ addRegexToken('HH', match1to2, match2);
+ addRegexToken('hh', match1to2, match2);
+
+ addParseToken(['H', 'HH'], HOUR);
+ addParseToken(['a', 'A'], function (input, array, config) {
+ config._isPm = config._locale.isPM(input);
+ config._meridiem = input;
+ });
+ addParseToken(['h', 'hh'], function (input, array, config) {
+ array[HOUR] = toInt(input);
+ getParsingFlags(config).bigHour = true;
+ });
+
+ // LOCALES
+
+ function localeIsPM (input) {
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+ // Using charAt should be more compatible.
+ return ((input + '').toLowerCase().charAt(0) === 'p');
}
- function rawSetter(mom, unit, value) {
- if (unit === 'Month') {
- return rawMonthSetter(mom, value);
+ var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
+ function localeMeridiem (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
} else {
- return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ return isLower ? 'am' : 'AM';
}
}
- function makeAccessor(unit, keepTime) {
- return function (value) {
- if (value != null) {
- rawSetter(this, unit, value);
- moment.updateOffset(this, keepTime);
- return this;
- } else {
- return rawGetter(this, unit);
- }
- };
- }
- moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false);
- moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false);
- moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false);
+ // MOMENTS
+
// Setting the hour should keep the time, because the user explicitly
// specified which hour he wants. So trying to maintain the same hour (in
// a new timezone) makes sense. Adding/subtracting hours does not follow
// this rule.
- moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
- // moment.fn.month is defined separately
- moment.fn.date = makeAccessor('Date', true);
- moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
- moment.fn.year = makeAccessor('FullYear', true);
- moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));
+ var getSetHour = makeGetSet('Hours', true);
- // add plural methods
- moment.fn.days = moment.fn.day;
- moment.fn.months = moment.fn.month;
- moment.fn.weeks = moment.fn.week;
- moment.fn.isoWeeks = moment.fn.isoWeek;
- moment.fn.quarters = moment.fn.quarter;
+ addFormatToken('m', ['mm', 2], 0, 'minute');
- // add aliased format methods
- moment.fn.toJSON = moment.fn.toISOString;
+ // ALIASES
- /************************************
- Duration Prototype
- ************************************/
+ addUnitAlias('minute', 'm');
+ // PARSING
- function daysToYears (days) {
- // 400 years have 146097 days (taking into account leap year rules)
- return days * 400 / 146097;
- }
+ addRegexToken('m', match1to2);
+ addRegexToken('mm', match1to2, match2);
+ addParseToken(['m', 'mm'], MINUTE);
- function yearsToDays (years) {
- // years * 365 + absRound(years / 4) -
- // absRound(years / 100) + absRound(years / 400);
- return years * 146097 / 400;
- }
-
- extend(moment.duration.fn = Duration.prototype, {
+ // MOMENTS
- _bubble : function () {
- var milliseconds = this._milliseconds,
- days = this._days,
- months = this._months,
- data = this._data,
- seconds, minutes, hours, years = 0;
+ var getSetMinute = makeGetSet('Minutes', false);
- // The following code bubbles up values, see the tests for
- // examples of what that means.
- data.milliseconds = milliseconds % 1000;
+ addFormatToken('s', ['ss', 2], 0, 'second');
- seconds = absRound(milliseconds / 1000);
- data.seconds = seconds % 60;
+ // ALIASES
- minutes = absRound(seconds / 60);
- data.minutes = minutes % 60;
+ addUnitAlias('second', 's');
- hours = absRound(minutes / 60);
- data.hours = hours % 24;
+ // PARSING
- days += absRound(hours / 24);
+ addRegexToken('s', match1to2);
+ addRegexToken('ss', match1to2, match2);
+ addParseToken(['s', 'ss'], SECOND);
- // Accurately convert days to years, assume start from year 0.
- years = absRound(daysToYears(days));
- days -= absRound(yearsToDays(years));
+ // MOMENTS
- // 30 days to a month
- // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
- months += absRound(days / 30);
- days %= 30;
+ var getSetSecond = makeGetSet('Seconds', false);
- // 12 months -> 1 year
- years += absRound(months / 12);
- months %= 12;
+ addFormatToken('S', 0, 0, function () {
+ return ~~(this.millisecond() / 100);
+ });
- data.days = days;
- data.months = months;
- data.years = years;
- },
+ addFormatToken(0, ['SS', 2], 0, function () {
+ return ~~(this.millisecond() / 10);
+ });
- abs : function () {
- this._milliseconds = Math.abs(this._milliseconds);
- this._days = Math.abs(this._days);
- this._months = Math.abs(this._months);
+ function millisecond__milliseconds (token) {
+ addFormatToken(0, [token, 3], 0, 'millisecond');
+ }
- this._data.milliseconds = Math.abs(this._data.milliseconds);
- this._data.seconds = Math.abs(this._data.seconds);
- this._data.minutes = Math.abs(this._data.minutes);
- this._data.hours = Math.abs(this._data.hours);
- this._data.months = Math.abs(this._data.months);
- this._data.years = Math.abs(this._data.years);
+ millisecond__milliseconds('SSS');
+ millisecond__milliseconds('SSSS');
- return this;
- },
+ // ALIASES
- weeks : function () {
- return absRound(this.days() / 7);
- },
+ addUnitAlias('millisecond', 'ms');
- valueOf : function () {
- return this._milliseconds +
- this._days * 864e5 +
- (this._months % 12) * 2592e6 +
- toInt(this._months / 12) * 31536e6;
- },
+ // PARSING
- humanize : function (withSuffix) {
- var output = relativeTime(this, !withSuffix, this.localeData());
+ addRegexToken('S', match1to3, match1);
+ addRegexToken('SS', match1to3, match2);
+ addRegexToken('SSS', match1to3, match3);
+ addRegexToken('SSSS', matchUnsigned);
+ addParseToken(['S', 'SS', 'SSS', 'SSSS'], function (input, array) {
+ array[MILLISECOND] = toInt(('0.' + input) * 1000);
+ });
- if (withSuffix) {
- output = this.localeData().pastFuture(+this, output);
- }
+ // MOMENTS
+
+ var getSetMillisecond = makeGetSet('Milliseconds', false);
+
+ addFormatToken('z', 0, 0, 'zoneAbbr');
+ addFormatToken('zz', 0, 0, 'zoneName');
+
+ // MOMENTS
+
+ function getZoneAbbr () {
+ return this._isUTC ? 'UTC' : '';
+ }
+
+ function getZoneName () {
+ return this._isUTC ? 'Coordinated Universal Time' : '';
+ }
+
+ var momentPrototype__proto = Moment.prototype;
+
+ momentPrototype__proto.add = add_subtract__add;
+ momentPrototype__proto.calendar = moment_calendar__calendar;
+ momentPrototype__proto.clone = clone;
+ momentPrototype__proto.diff = diff;
+ momentPrototype__proto.endOf = endOf;
+ momentPrototype__proto.format = moment_format__format;
+ momentPrototype__proto.from = from;
+ momentPrototype__proto.fromNow = fromNow;
+ momentPrototype__proto.to = to;
+ momentPrototype__proto.toNow = toNow;
+ momentPrototype__proto.get = getSet;
+ momentPrototype__proto.invalidAt = invalidAt;
+ momentPrototype__proto.isAfter = isAfter;
+ momentPrototype__proto.isBefore = isBefore;
+ momentPrototype__proto.isBetween = isBetween;
+ momentPrototype__proto.isSame = isSame;
+ momentPrototype__proto.isValid = moment_valid__isValid;
+ momentPrototype__proto.lang = lang;
+ momentPrototype__proto.locale = locale;
+ momentPrototype__proto.localeData = localeData;
+ momentPrototype__proto.max = prototypeMax;
+ momentPrototype__proto.min = prototypeMin;
+ momentPrototype__proto.parsingFlags = parsingFlags;
+ momentPrototype__proto.set = getSet;
+ momentPrototype__proto.startOf = startOf;
+ momentPrototype__proto.subtract = add_subtract__subtract;
+ momentPrototype__proto.toArray = toArray;
+ momentPrototype__proto.toDate = toDate;
+ momentPrototype__proto.toISOString = moment_format__toISOString;
+ momentPrototype__proto.toJSON = moment_format__toISOString;
+ momentPrototype__proto.toString = toString;
+ momentPrototype__proto.unix = unix;
+ momentPrototype__proto.valueOf = to_type__valueOf;
+
+ // Year
+ momentPrototype__proto.year = getSetYear;
+ momentPrototype__proto.isLeapYear = getIsLeapYear;
+
+ // Week Year
+ momentPrototype__proto.weekYear = getSetWeekYear;
+ momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
+
+ // Quarter
+ momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
+
+ // Month
+ momentPrototype__proto.month = getSetMonth;
+ momentPrototype__proto.daysInMonth = getDaysInMonth;
+
+ // Week
+ momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
+ momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
+ momentPrototype__proto.weeksInYear = getWeeksInYear;
+ momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
+
+ // Day
+ momentPrototype__proto.date = getSetDayOfMonth;
+ momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
+ momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
+ momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
+ momentPrototype__proto.dayOfYear = getSetDayOfYear;
+
+ // Hour
+ momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
+
+ // Minute
+ momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
+
+ // Second
+ momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
+
+ // Millisecond
+ momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
+
+ // Offset
+ momentPrototype__proto.utcOffset = getSetOffset;
+ momentPrototype__proto.utc = setOffsetToUTC;
+ momentPrototype__proto.local = setOffsetToLocal;
+ momentPrototype__proto.parseZone = setOffsetToParsedOffset;
+ momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
+ momentPrototype__proto.isDST = isDaylightSavingTime;
+ momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
+ momentPrototype__proto.isLocal = isLocal;
+ momentPrototype__proto.isUtcOffset = isUtcOffset;
+ momentPrototype__proto.isUtc = isUtc;
+ momentPrototype__proto.isUTC = isUtc;
+
+ // Timezone
+ momentPrototype__proto.zoneAbbr = getZoneAbbr;
+ momentPrototype__proto.zoneName = getZoneName;
+
+ // Deprecations
+ momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
+ momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
+ momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
+ momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
+
+ var momentPrototype = momentPrototype__proto;
+
+ function moment_moment__createUnix (input) {
+ return local__createLocal(input * 1000);
+ }
+
+ function moment_moment__createInZone () {
+ return local__createLocal.apply(null, arguments).parseZone();
+ }
+
+ var defaultCalendar = {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ };
- return this.localeData().postformat(output);
- },
+ function locale_calendar__calendar (key, mom, now) {
+ var output = this._calendar[key];
+ return typeof output === 'function' ? output.call(mom, now) : output;
+ }
- add : function (input, val) {
- // supports only 2.0-style add(1, 's') or add(moment)
- var dur = moment.duration(input, val);
+ var defaultLongDateFormat = {
+ LTS : 'h:mm:ss A',
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY LT',
+ LLLL : 'dddd, MMMM D, YYYY LT'
+ };
- this._milliseconds += dur._milliseconds;
- this._days += dur._days;
- this._months += dur._months;
+ function longDateFormat (key) {
+ var output = this._longDateFormat[key];
+ if (!output && this._longDateFormat[key.toUpperCase()]) {
+ output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+ this._longDateFormat[key] = output;
+ }
+ return output;
+ }
- this._bubble();
+ var defaultInvalidDate = 'Invalid date';
- return this;
- },
+ function invalidDate () {
+ return this._invalidDate;
+ }
- subtract : function (input, val) {
- var dur = moment.duration(input, val);
+ var defaultOrdinal = '%d';
+ var defaultOrdinalParse = /\d{1,2}/;
- this._milliseconds -= dur._milliseconds;
- this._days -= dur._days;
- this._months -= dur._months;
+ function ordinal (number) {
+ return this._ordinal.replace('%d', number);
+ }
- this._bubble();
+ function preParsePostFormat (string) {
+ return string;
+ }
- return this;
- },
+ var defaultRelativeTime = {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
+ };
- get : function (units) {
- units = normalizeUnits(units);
- return this[units.toLowerCase() + 's']();
- },
+ function relative__relativeTime (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (typeof output === 'function') ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
+ }
- as : function (units) {
- var days, months;
- units = normalizeUnits(units);
+ function pastFuture (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
+ }
- if (units === 'month' || units === 'year') {
- days = this._days + this._milliseconds / 864e5;
- months = this._months + daysToYears(days) * 12;
- return units === 'month' ? months : months / 12;
+ function locale_set__set (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (typeof prop === 'function') {
+ this[i] = prop;
} else {
- // handle milliseconds separately because of floating point math errors (issue #1867)
- days = this._days + yearsToDays(this._months / 12);
- switch (units) {
- case 'week': return days / 7 + this._milliseconds / 6048e5;
- case 'day': return days + this._milliseconds / 864e5;
- case 'hour': return days * 24 + this._milliseconds / 36e5;
- case 'minute': return days * 24 * 60 + this._milliseconds / 6e4;
- case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000;
- // Math.floor prevents floating point math errors here
- case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds;
- default: throw new Error('Unknown unit ' + units);
- }
+ this['_' + i] = prop;
}
- },
+ }
+ // Lenient ordinal parsing accepts just a number in addition to
+ // number + (possibly) stuff coming from _ordinalParseLenient.
+ this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
+ }
- lang : moment.fn.lang,
- locale : moment.fn.locale,
+ var prototype__proto = Locale.prototype;
- toIsoString : deprecate(
- 'toIsoString() is deprecated. Please use toISOString() instead ' +
- '(notice the capitals)',
- function () {
- return this.toISOString();
- }
- ),
+ prototype__proto._calendar = defaultCalendar;
+ prototype__proto.calendar = locale_calendar__calendar;
+ prototype__proto._longDateFormat = defaultLongDateFormat;
+ prototype__proto.longDateFormat = longDateFormat;
+ prototype__proto._invalidDate = defaultInvalidDate;
+ prototype__proto.invalidDate = invalidDate;
+ prototype__proto._ordinal = defaultOrdinal;
+ prototype__proto.ordinal = ordinal;
+ prototype__proto._ordinalParse = defaultOrdinalParse;
+ prototype__proto.preparse = preParsePostFormat;
+ prototype__proto.postformat = preParsePostFormat;
+ prototype__proto._relativeTime = defaultRelativeTime;
+ prototype__proto.relativeTime = relative__relativeTime;
+ prototype__proto.pastFuture = pastFuture;
+ prototype__proto.set = locale_set__set;
- toISOString : function () {
- // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
- var years = Math.abs(this.years()),
- months = Math.abs(this.months()),
- days = Math.abs(this.days()),
- hours = Math.abs(this.hours()),
- minutes = Math.abs(this.minutes()),
- seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
+ // Month
+ prototype__proto.months = localeMonths;
+ prototype__proto._months = defaultLocaleMonths;
+ prototype__proto.monthsShort = localeMonthsShort;
+ prototype__proto._monthsShort = defaultLocaleMonthsShort;
+ prototype__proto.monthsParse = localeMonthsParse;
- if (!this.asSeconds()) {
- // this is the same as C#'s (Noda) and python (isodate)...
- // but not other JS (goog.date)
- return 'P0D';
- }
+ // Week
+ prototype__proto.week = localeWeek;
+ prototype__proto._week = defaultLocaleWeek;
+ prototype__proto.firstDayOfYear = localeFirstDayOfYear;
+ prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
- return (this.asSeconds() < 0 ? '-' : '') +
- 'P' +
- (years ? years + 'Y' : '') +
- (months ? months + 'M' : '') +
- (days ? days + 'D' : '') +
- ((hours || minutes || seconds) ? 'T' : '') +
- (hours ? hours + 'H' : '') +
- (minutes ? minutes + 'M' : '') +
- (seconds ? seconds + 'S' : '');
- },
+ // Day of Week
+ prototype__proto.weekdays = localeWeekdays;
+ prototype__proto._weekdays = defaultLocaleWeekdays;
+ prototype__proto.weekdaysMin = localeWeekdaysMin;
+ prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
+ prototype__proto.weekdaysShort = localeWeekdaysShort;
+ prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
+ prototype__proto.weekdaysParse = localeWeekdaysParse;
- localeData : function () {
- return this._locale;
+ // Hours
+ prototype__proto.isPM = localeIsPM;
+ prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
+ prototype__proto.meridiem = localeMeridiem;
+
+ function lists__get (format, index, field, setter) {
+ var locale = locale_locales__getLocale();
+ var utc = create_utc__createUTC().set(setter, index);
+ return locale[field](utc, format);
+ }
+
+ function list (format, index, field, count, setter) {
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
}
- });
- moment.duration.fn.toString = moment.duration.fn.toISOString;
+ format = format || '';
- function makeDurationGetter(name) {
- moment.duration.fn[name] = function () {
- return this._data[name];
- };
- }
+ if (index != null) {
+ return lists__get(format, index, field, setter);
+ }
- for (i in unitMillisecondFactors) {
- if (hasOwnProp(unitMillisecondFactors, i)) {
- makeDurationGetter(i.toLowerCase());
+ var i;
+ var out = [];
+ for (i = 0; i < count; i++) {
+ out[i] = lists__get(format, i, field, setter);
}
+ return out;
}
- moment.duration.fn.asMilliseconds = function () {
- return this.as('ms');
- };
- moment.duration.fn.asSeconds = function () {
- return this.as('s');
- };
- moment.duration.fn.asMinutes = function () {
- return this.as('m');
- };
- moment.duration.fn.asHours = function () {
- return this.as('h');
- };
- moment.duration.fn.asDays = function () {
- return this.as('d');
- };
- moment.duration.fn.asWeeks = function () {
- return this.as('weeks');
- };
- moment.duration.fn.asMonths = function () {
- return this.as('M');
- };
- moment.duration.fn.asYears = function () {
- return this.as('y');
- };
+ function lists__listMonths (format, index) {
+ return list(format, index, 'months', 12, 'month');
+ }
- /************************************
- Default Locale
- ************************************/
+ function lists__listMonthsShort (format, index) {
+ return list(format, index, 'monthsShort', 12, 'month');
+ }
+ function lists__listWeekdays (format, index) {
+ return list(format, index, 'weekdays', 7, 'day');
+ }
- // Set default locale, other locale will inherit from English.
- moment.locale('en', {
+ function lists__listWeekdaysShort (format, index) {
+ return list(format, index, 'weekdaysShort', 7, 'day');
+ }
+
+ function lists__listWeekdaysMin (format, index) {
+ return list(format, index, 'weekdaysMin', 7, 'day');
+ }
+
+ locale_locales__getSetGlobalLocale('en', {
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
var b = number % 10,
output = (toInt(number % 100 / 10) === 1) ? 'th' :
@@ -2814,19 +2754,373 @@
}
});
- // moment.js locale configuration
-// locale : afrikaans (af)
-// author : Werner Mollentze : https://github.com/wernerm
+ // Side effect imports
+ utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
+ utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
+
+ var mathAbs = Math.abs;
+
+ function duration_abs__abs () {
+ var data = this._data;
+
+ this._milliseconds = mathAbs(this._milliseconds);
+ this._days = mathAbs(this._days);
+ this._months = mathAbs(this._months);
+
+ data.milliseconds = mathAbs(data.milliseconds);
+ data.seconds = mathAbs(data.seconds);
+ data.minutes = mathAbs(data.minutes);
+ data.hours = mathAbs(data.hours);
+ data.months = mathAbs(data.months);
+ data.years = mathAbs(data.years);
+
+ return this;
+ }
+
+ function duration_add_subtract__addSubtract (duration, input, value, direction) {
+ var other = create__createDuration(input, value);
+
+ duration._milliseconds += direction * other._milliseconds;
+ duration._days += direction * other._days;
+ duration._months += direction * other._months;
+
+ return duration._bubble();
+ }
+
+ // supports only 2.0-style add(1, 's') or add(duration)
+ function duration_add_subtract__add (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, 1);
+ }
+
+ // supports only 2.0-style subtract(1, 's') or subtract(duration)
+ function duration_add_subtract__subtract (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, -1);
+ }
+
+ function bubble () {
+ var milliseconds = this._milliseconds;
+ var days = this._days;
+ var months = this._months;
+ var data = this._data;
+ var seconds, minutes, hours, years = 0;
+
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
+
+ seconds = absFloor(milliseconds / 1000);
+ data.seconds = seconds % 60;
+
+ minutes = absFloor(seconds / 60);
+ data.minutes = minutes % 60;
+
+ hours = absFloor(minutes / 60);
+ data.hours = hours % 24;
+
+ days += absFloor(hours / 24);
+
+ // Accurately convert days to years, assume start from year 0.
+ years = absFloor(daysToYears(days));
+ days -= absFloor(yearsToDays(years));
+
+ // 30 days to a month
+ // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
+ months += absFloor(days / 30);
+ days %= 30;
+
+ // 12 months -> 1 year
+ years += absFloor(months / 12);
+ months %= 12;
+
+ data.days = days;
+ data.months = months;
+ data.years = years;
+
+ return this;
+ }
+
+ function daysToYears (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ return days * 400 / 146097;
+ }
+
+ function yearsToDays (years) {
+ // years * 365 + absFloor(years / 4) -
+ // absFloor(years / 100) + absFloor(years / 400);
+ return years * 146097 / 400;
+ }
+
+ function as (units) {
+ var days;
+ var months;
+ var milliseconds = this._milliseconds;
+
+ units = normalizeUnits(units);
+
+ if (units === 'month' || units === 'year') {
+ days = this._days + milliseconds / 864e5;
+ months = this._months + daysToYears(days) * 12;
+ return units === 'month' ? months : months / 12;
+ } else {
+ // handle milliseconds separately because of floating point math errors (issue #1867)
+ days = this._days + Math.round(yearsToDays(this._months / 12));
+ switch (units) {
+ case 'week' : return days / 7 + milliseconds / 6048e5;
+ case 'day' : return days + milliseconds / 864e5;
+ case 'hour' : return days * 24 + milliseconds / 36e5;
+ case 'minute' : return days * 1440 + milliseconds / 6e4;
+ case 'second' : return days * 86400 + milliseconds / 1000;
+ // Math.floor prevents floating point math errors here
+ case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
+ default: throw new Error('Unknown unit ' + units);
+ }
+ }
+ }
+
+ // TODO: Use this.as('ms')?
+ function duration_as__valueOf () {
+ return (
+ this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ toInt(this._months / 12) * 31536e6
+ );
+ }
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('af', {
+ function makeAs (alias) {
+ return function () {
+ return this.as(alias);
+ };
+ }
+
+ var asMilliseconds = makeAs('ms');
+ var asSeconds = makeAs('s');
+ var asMinutes = makeAs('m');
+ var asHours = makeAs('h');
+ var asDays = makeAs('d');
+ var asWeeks = makeAs('w');
+ var asMonths = makeAs('M');
+ var asYears = makeAs('y');
+
+ function duration_get__get (units) {
+ units = normalizeUnits(units);
+ return this[units + 's']();
+ }
+
+ function makeGetter(name) {
+ return function () {
+ return this._data[name];
+ };
+ }
+
+ var duration_get__milliseconds = makeGetter('milliseconds');
+ var seconds = makeGetter('seconds');
+ var minutes = makeGetter('minutes');
+ var hours = makeGetter('hours');
+ var days = makeGetter('days');
+ var duration_get__months = makeGetter('months');
+ var years = makeGetter('years');
+
+ function weeks () {
+ return absFloor(this.days() / 7);
+ }
+
+ var round = Math.round;
+ var thresholds = {
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11 // months to year
+ };
+
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ }
+
+ function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
+ var duration = create__createDuration(posNegDuration).abs();
+ var seconds = round(duration.as('s'));
+ var minutes = round(duration.as('m'));
+ var hours = round(duration.as('h'));
+ var days = round(duration.as('d'));
+ var months = round(duration.as('M'));
+ var years = round(duration.as('y'));
+
+ var a = seconds < thresholds.s && ['s', seconds] ||
+ minutes === 1 && ['m'] ||
+ minutes < thresholds.m && ['mm', minutes] ||
+ hours === 1 && ['h'] ||
+ hours < thresholds.h && ['hh', hours] ||
+ days === 1 && ['d'] ||
+ days < thresholds.d && ['dd', days] ||
+ months === 1 && ['M'] ||
+ months < thresholds.M && ['MM', months] ||
+ years === 1 && ['y'] || ['yy', years];
+
+ a[2] = withoutSuffix;
+ a[3] = +posNegDuration > 0;
+ a[4] = locale;
+ return substituteTimeAgo.apply(null, a);
+ }
+
+ // This function allows you to set a threshold for relative time strings
+ function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
+ if (thresholds[threshold] === undefined) {
+ return false;
+ }
+ if (limit === undefined) {
+ return thresholds[threshold];
+ }
+ thresholds[threshold] = limit;
+ return true;
+ }
+
+ function humanize (withSuffix) {
+ var locale = this.localeData();
+ var output = duration_humanize__relativeTime(this, !withSuffix, locale);
+
+ if (withSuffix) {
+ output = locale.pastFuture(+this, output);
+ }
+
+ return locale.postformat(output);
+ }
+
+ var iso_string__abs = Math.abs;
+
+ function iso_string__toISOString() {
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var Y = iso_string__abs(this.years());
+ var M = iso_string__abs(this.months());
+ var D = iso_string__abs(this.days());
+ var h = iso_string__abs(this.hours());
+ var m = iso_string__abs(this.minutes());
+ var s = iso_string__abs(this.seconds() + this.milliseconds() / 1000);
+ var total = this.asSeconds();
+
+ if (!total) {
+ // this is the same as C#'s (Noda) and python (isodate)...
+ // but not other JS (goog.date)
+ return 'P0D';
+ }
+
+ return (total < 0 ? '-' : '') +
+ 'P' +
+ (Y ? Y + 'Y' : '') +
+ (M ? M + 'M' : '') +
+ (D ? D + 'D' : '') +
+ ((h || m || s) ? 'T' : '') +
+ (h ? h + 'H' : '') +
+ (m ? m + 'M' : '') +
+ (s ? s + 'S' : '');
+ }
+
+ var duration_prototype__proto = Duration.prototype;
+
+ duration_prototype__proto.abs = duration_abs__abs;
+ duration_prototype__proto.add = duration_add_subtract__add;
+ duration_prototype__proto.subtract = duration_add_subtract__subtract;
+ duration_prototype__proto.as = as;
+ duration_prototype__proto.asMilliseconds = asMilliseconds;
+ duration_prototype__proto.asSeconds = asSeconds;
+ duration_prototype__proto.asMinutes = asMinutes;
+ duration_prototype__proto.asHours = asHours;
+ duration_prototype__proto.asDays = asDays;
+ duration_prototype__proto.asWeeks = asWeeks;
+ duration_prototype__proto.asMonths = asMonths;
+ duration_prototype__proto.asYears = asYears;
+ duration_prototype__proto.valueOf = duration_as__valueOf;
+ duration_prototype__proto._bubble = bubble;
+ duration_prototype__proto.get = duration_get__get;
+ duration_prototype__proto.milliseconds = duration_get__milliseconds;
+ duration_prototype__proto.seconds = seconds;
+ duration_prototype__proto.minutes = minutes;
+ duration_prototype__proto.hours = hours;
+ duration_prototype__proto.days = days;
+ duration_prototype__proto.weeks = weeks;
+ duration_prototype__proto.months = duration_get__months;
+ duration_prototype__proto.years = years;
+ duration_prototype__proto.humanize = humanize;
+ duration_prototype__proto.toISOString = iso_string__toISOString;
+ duration_prototype__proto.toString = iso_string__toISOString;
+ duration_prototype__proto.toJSON = iso_string__toISOString;
+ duration_prototype__proto.locale = locale;
+ duration_prototype__proto.localeData = localeData;
+
+ // Deprecations
+ duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
+ duration_prototype__proto.lang = lang;
+
+ // Side effect imports
+
+ addFormatToken('X', 0, 0, 'unix');
+ addFormatToken('x', 0, 0, 'valueOf');
+
+ // PARSING
+
+ addRegexToken('x', matchSigned);
+ addRegexToken('X', matchTimestamp);
+ addParseToken('X', function (input, array, config) {
+ config._d = new Date(parseFloat(input, 10) * 1000);
+ });
+ addParseToken('x', function (input, array, config) {
+ config._d = new Date(toInt(input));
+ });
+
+ // Side effect imports
+
+ ;
+
+ //! moment.js
+ //! version : 2.10.3
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+ //! license : MIT
+ //! momentjs.com
+
+ utils_hooks__hooks.version = '2.10.3';
+
+ setHookCallback(local__createLocal);
+
+ utils_hooks__hooks.fn = momentPrototype;
+ utils_hooks__hooks.min = min;
+ utils_hooks__hooks.max = max;
+ utils_hooks__hooks.utc = create_utc__createUTC;
+ utils_hooks__hooks.unix = moment_moment__createUnix;
+ utils_hooks__hooks.months = lists__listMonths;
+ utils_hooks__hooks.isDate = isDate;
+ utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
+ utils_hooks__hooks.invalid = valid__createInvalid;
+ utils_hooks__hooks.duration = create__createDuration;
+ utils_hooks__hooks.isMoment = isMoment;
+ utils_hooks__hooks.weekdays = lists__listWeekdays;
+ utils_hooks__hooks.parseZone = moment_moment__createInZone;
+ utils_hooks__hooks.localeData = locale_locales__getLocale;
+ utils_hooks__hooks.isDuration = isDuration;
+ utils_hooks__hooks.monthsShort = lists__listMonthsShort;
+ utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
+ utils_hooks__hooks.defineLocale = defineLocale;
+ utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
+ utils_hooks__hooks.normalizeUnits = normalizeUnits;
+ utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
+
+ var _moment__default = utils_hooks__hooks;
+
+ //! moment.js locale configuration
+ //! locale : afrikaans (af)
+ //! author : Werner Mollentze : https://github.com/wernerm
+
+ var af = _moment__default.defineLocale('af', {
months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+ meridiemParse: /vm|nm/i,
+ isPM : function (input) {
+ return /^nm$/i.test(input);
+ },
meridiem : function (hours, minutes, isLower) {
if (hours < 12) {
return isLower ? 'vm' : 'VM';
@@ -2836,6 +3130,7 @@
},
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -2864,6 +3159,7 @@
y : '\'n jaar',
yy : '%d jaar'
},
+ ordinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
},
@@ -2872,16 +3168,13 @@
doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
}
});
-}));
-// moment.js locale configuration
-// locale : Moroccan Arabic (ar-ma)
-// author : ElFadili Yassine : https://github.com/ElFadiliY
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ar-ma', {
+
+ //! moment.js locale configuration
+ //! locale : Moroccan Arabic (ar-ma)
+ //! author : ElFadili Yassine : https://github.com/ElFadiliY
+ //! author : Abdel Said : https://github.com/abdelsaid
+
+ var ar_ma = _moment__default.defineLocale('ar-ma', {
months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
@@ -2889,6 +3182,7 @@
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -2922,15 +3216,12 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Arabic Saudi Arabia (ar-sa)
-// author : Suhail Alkowaileet : https://github.com/xsoh
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Arabic Saudi Arabia (ar-sa)
+ //! author : Suhail Alkowaileet : https://github.com/xsoh
+
+ var ar_sa__symbolMap = {
'1': '١',
'2': '٢',
'3': '٣',
@@ -2941,7 +3232,7 @@
'8': '٨',
'9': '٩',
'0': '٠'
- }, numberMap = {
+ }, ar_sa__numberMap = {
'١': '1',
'٢': '2',
'٣': '3',
@@ -2954,7 +3245,7 @@
'٠': '0'
};
- return moment.defineLocale('ar-sa', {
+ var ar_sa = _moment__default.defineLocale('ar-sa', {
months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
@@ -2962,11 +3253,16 @@
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
LLLL : 'dddd D MMMM YYYY LT'
},
+ meridiemParse: /ص|م/,
+ isPM : function (input) {
+ return 'م' === input;
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
@@ -2998,13 +3294,13 @@
yy : '%d سنوات'
},
preparse: function (string) {
- return string.replace(/[۰-۹]/g, function (match) {
- return numberMap[match];
+ return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+ return ar_sa__numberMap[match];
}).replace(/،/g, ',');
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return ar_sa__symbolMap[match];
}).replace(/,/g, '،');
},
week : {
@@ -3012,17 +3308,60 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// Locale: Arabic (ar)
-// Author: Abdel Said: https://github.com/abdelsaid
-// Changes in months, weekdays: Ahmed Elkhatib
-// Native plural forms: forabi https://github.com/forabi
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Tunisian Arabic (ar-tn)
+
+ var ar_tn = _moment__default.defineLocale('ar-tn', {
+ months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ longDateFormat: {
+ LT: 'HH:mm',
+ LTS: 'LT:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY LT',
+ LLLL: 'dddd D MMMM YYYY LT'
+ },
+ calendar: {
+ sameDay: '[اليوم على الساعة] LT',
+ nextDay: '[غدا على الساعة] LT',
+ nextWeek: 'dddd [على الساعة] LT',
+ lastDay: '[أمس على الساعة] LT',
+ lastWeek: 'dddd [على الساعة] LT',
+ sameElse: 'L'
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ },
+ week: {
+ dow: 1, // Monday is the first day of the week.
+ doy: 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ //! moment.js locale configuration
+ //! Locale: Arabic (ar)
+ //! Author: Abdel Said: https://github.com/abdelsaid
+ //! Changes in months, weekdays: Ahmed Elkhatib
+ //! Native plural forms: forabi https://github.com/forabi
+
+ var ar__symbolMap = {
'1': '١',
'2': '٢',
'3': '٣',
@@ -3033,7 +3372,7 @@
'8': '٨',
'9': '٩',
'0': '٠'
- }, numberMap = {
+ }, ar__numberMap = {
'١': '1',
'٢': '2',
'٣': '3',
@@ -3062,7 +3401,7 @@
}
return str.replace(/%d/i, number);
};
- }, months = [
+ }, ar__months = [
'كانون الثاني يناير',
'شباط فبراير',
'آذار مارس',
@@ -3077,19 +3416,24 @@
'كانون الأول ديسمبر'
];
- return moment.defineLocale('ar', {
- months : months,
- monthsShort : months,
+ var ar = _moment__default.defineLocale('ar', {
+ months : ar__months,
+ monthsShort : ar__months,
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
longDateFormat : {
LT : 'HH:mm',
- L : 'DD/MM/YYYY',
+ LTS : 'HH:mm:ss',
+ L : 'D/\u200FM/\u200FYYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
LLLL : 'dddd D MMMM YYYY LT'
},
+ meridiemParse: /ص|م/,
+ isPM : function (input) {
+ return 'م' === input;
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
return 'ص';
@@ -3121,13 +3465,13 @@
yy : pluralize('y')
},
preparse: function (string) {
- return string.replace(/[۰-۹]/g, function (match) {
- return numberMap[match];
+ return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+ return ar__numberMap[match];
}).replace(/،/g, ',');
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return ar__symbolMap[match];
}).replace(/,/g, '،');
},
week : {
@@ -3135,40 +3479,33 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : azerbaijani (az)
-// author : topchiyev : https://github.com/topchiyev
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var suffixes = {
+
+ //! moment.js locale configuration
+ //! locale : azerbaijani (az)
+ //! author : topchiyev : https://github.com/topchiyev
+
+ var az__suffixes = {
1: '-inci',
5: '-inci',
8: '-inci',
70: '-inci',
80: '-inci',
-
2: '-nci',
7: '-nci',
20: '-nci',
50: '-nci',
-
3: '-üncü',
4: '-üncü',
100: '-üncü',
-
6: '-ncı',
-
9: '-uncu',
10: '-uncu',
30: '-uncu',
-
60: '-ıncı',
90: '-ıncı'
};
- return moment.defineLocale('az', {
+
+ var az = _moment__default.defineLocale('az', {
months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
@@ -3176,6 +3513,7 @@
weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -3204,6 +3542,10 @@
y : 'bir il',
yy : '%d il'
},
+ meridiemParse: /gecə|səhər|gündüz|axşam/,
+ isPM : function (input) {
+ return /^(gündüz|axşam)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'gecə';
@@ -3215,6 +3557,7 @@
return 'axşam';
}
},
+ ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
ordinal : function (number) {
if (number === 0) { // special case for zero
return number + '-ıncı';
@@ -3222,30 +3565,25 @@
var a = number % 10,
b = number % 100 - a,
c = number >= 100 ? 100 : null;
-
- return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+ return number + (az__suffixes[a] || az__suffixes[b] || az__suffixes[c]);
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : belarusian (be)
-// author : Dmitry Demidov : https://github.com/demidov91
-// author: Praleska: http://praleska.pro/
-// Author : Menelion Elensúle : https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(word, num) {
+
+ //! moment.js locale configuration
+ //! locale : belarusian (be)
+ //! author : Dmitry Demidov : https://github.com/demidov91
+ //! author: Praleska: http://praleska.pro/
+ //! Author : Menelion Elensúle : https://github.com/Oire
+
+ function be__plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
+ function be__relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
@@ -3260,44 +3598,39 @@
return withoutSuffix ? 'гадзіна' : 'гадзіну';
}
else {
- return number + ' ' + plural(format[key], +number);
+ return number + ' ' + be__plural(format[key], +number);
}
}
-
- function monthsCaseReplace(m, format) {
+ function be__monthsCaseReplace(m, format) {
var months = {
'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
},
-
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return months[nounCase][m.month()];
}
-
- function weekdaysCaseReplace(m, format) {
+ function be__weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_')
},
-
nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ?
'accusative' :
'nominative';
-
return weekdays[nounCase][m.day()];
}
- return moment.defineLocale('be', {
- months : monthsCaseReplace,
+ var be = _moment__default.defineLocale('be', {
+ months : be__monthsCaseReplace,
monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
- weekdays : weekdaysCaseReplace,
+ weekdays : be__weekdaysCaseReplace,
weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY г.',
LLL : 'D MMMM YYYY г., LT',
@@ -3329,19 +3662,21 @@
future : 'праз %s',
past : '%s таму',
s : 'некалькі секунд',
- m : relativeTimeWithPlural,
- mm : relativeTimeWithPlural,
- h : relativeTimeWithPlural,
- hh : relativeTimeWithPlural,
+ m : be__relativeTimeWithPlural,
+ mm : be__relativeTimeWithPlural,
+ h : be__relativeTimeWithPlural,
+ hh : be__relativeTimeWithPlural,
d : 'дзень',
- dd : relativeTimeWithPlural,
+ dd : be__relativeTimeWithPlural,
M : 'месяц',
- MM : relativeTimeWithPlural,
+ MM : be__relativeTimeWithPlural,
y : 'год',
- yy : relativeTimeWithPlural
+ yy : be__relativeTimeWithPlural
+ },
+ meridiemParse: /ночы|раніцы|дня|вечара/,
+ isPM : function (input) {
+ return /^(дня|вечара)$/.test(input);
},
-
-
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'ночы';
@@ -3353,7 +3688,7 @@
return 'вечара';
}
},
-
+ ordinalParse: /\d{1,2}-(і|ы|га)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -3368,21 +3703,17 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : bulgarian (bg)
-// author : Krasen Borisov : https://github.com/kraz
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('bg', {
+
+ //! moment.js locale configuration
+ //! locale : bulgarian (bg)
+ //! author : Krasen Borisov : https://github.com/kraz
+
+ var bg = _moment__default.defineLocale('bg', {
months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
@@ -3390,6 +3721,7 @@
weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'D.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -3430,6 +3762,7 @@
y : 'година',
yy : '%d години'
},
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
var lastDigit = number % 10,
last2Digits = number % 100;
@@ -3454,15 +3787,12 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Bengali (bn)
-// author : Kaushik Gandhi : https://github.com/kaushikgandhi
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Bengali (bn)
+ //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
+
+ var bn__symbolMap = {
'1': '১',
'2': '২',
'3': '৩',
@@ -3474,7 +3804,7 @@
'9': '৯',
'0': '০'
},
- numberMap = {
+ bn__numberMap = {
'১': '1',
'২': '2',
'৩': '3',
@@ -3487,7 +3817,7 @@
'০': '0'
};
- return moment.defineLocale('bn', {
+ var bn = _moment__default.defineLocale('bn', {
months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'),
weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'),
@@ -3495,6 +3825,7 @@
weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'),
longDateFormat : {
LT : 'A h:mm সময়',
+ LTS : 'A h:mm:ss সময়',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -3525,14 +3856,18 @@
},
preparse: function (string) {
return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
- return numberMap[match];
+ return bn__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return bn__symbolMap[match];
});
},
+ meridiemParse: /রাত|শকাল|দুপুর|বিকেল|রাত/,
+ isPM: function (input) {
+ return /^(দুপুর|বিকেল|রাত)$/.test(input);
+ },
//Bengali is a vast language its spoken
//in different forms in various parts of the world.
//I have just generalized with most common one used
@@ -3554,15 +3889,12 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : tibetan (bo)
-// author : Thupten N. Chakrishar : https://github.com/vajradog
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : tibetan (bo)
+ //! author : Thupten N. Chakrishar : https://github.com/vajradog
+
+ var bo__symbolMap = {
'1': '༡',
'2': '༢',
'3': '༣',
@@ -3574,7 +3906,7 @@
'9': '༩',
'0': '༠'
},
- numberMap = {
+ bo__numberMap = {
'༡': '1',
'༢': '2',
'༣': '3',
@@ -3587,7 +3919,7 @@
'༠': '0'
};
- return moment.defineLocale('bo', {
+ var bo = _moment__default.defineLocale('bo', {
months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
@@ -3595,6 +3927,7 @@
weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
longDateFormat : {
LT : 'A h:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -3625,14 +3958,18 @@
},
preparse: function (string) {
return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
- return numberMap[match];
+ return bo__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return bo__symbolMap[match];
});
},
+ meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
+ isPM: function (input) {
+ return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'མཚན་མོ';
@@ -3651,14 +3988,11 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : breton (br)
-// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
+
+ //! moment.js locale configuration
+ //! locale : breton (br)
+ //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
+
function relativeTimeWithMutation(number, withoutSuffix, key) {
var format = {
'mm': 'munutenn',
@@ -3667,7 +4001,6 @@
};
return number + ' ' + mutation(format[key], number);
}
-
function specialMutationForYears(number) {
switch (lastNumber(number)) {
case 1:
@@ -3680,21 +4013,18 @@
return number + ' vloaz';
}
}
-
function lastNumber(number) {
if (number > 9) {
return lastNumber(number % 10);
}
return number;
}
-
function mutation(text, number) {
if (number === 2) {
return softMutation(text);
}
return text;
}
-
function softMutation(text) {
var mutationTable = {
'm': 'v',
@@ -3707,7 +4037,7 @@
return mutationTable[text.charAt(0)] + text.substring(1);
}
- return moment.defineLocale('br', {
+ var br = _moment__default.defineLocale('br', {
months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
@@ -3715,6 +4045,7 @@
weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
longDateFormat : {
LT : 'h[e]mm A',
+ LTS : 'h[e]mm:ss A',
L : 'DD/MM/YYYY',
LL : 'D [a viz] MMMM YYYY',
LLL : 'D [a viz] MMMM YYYY LT',
@@ -3743,6 +4074,7 @@
y : 'ur bloaz',
yy : specialMutationForYears
},
+ ordinalParse: /\d{1,2}(añ|vet)/,
ordinal : function (number) {
var output = (number === 1) ? 'añ' : 'vet';
return number + output;
@@ -3752,16 +4084,13 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : bosnian (bs)
-// author : Nedim Cholich : https://github.com/frontyard
-// based on (hr) translation by Bojan Marković
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function translate(number, withoutSuffix, key) {
+
+ //! moment.js locale configuration
+ //! locale : bosnian (bs)
+ //! author : Nedim Cholich : https://github.com/frontyard
+ //! based on (hr) translation by Bojan Marković
+
+ function bs__translate(number, withoutSuffix, key) {
var result = number + ' ';
switch (key) {
case 'm':
@@ -3814,14 +4143,15 @@
}
}
- return moment.defineLocale('bs', {
- months : 'januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar'.split('_'),
- monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
+ var bs = _moment__default.defineLocale('bs', {
+ months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
+ monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD. MM. YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -3830,7 +4160,6 @@
calendar : {
sameDay : '[danas u] LT',
nextDay : '[sutra u] LT',
-
nextWeek : function () {
switch (this.day()) {
case 0:
@@ -3867,32 +4196,30 @@
future : 'za %s',
past : 'prije %s',
s : 'par sekundi',
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
+ m : bs__translate,
+ mm : bs__translate,
+ h : bs__translate,
+ hh : bs__translate,
d : 'dan',
- dd : translate,
+ dd : bs__translate,
M : 'mjesec',
- MM : translate,
+ MM : bs__translate,
y : 'godinu',
- yy : translate
+ yy : bs__translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : catalan (ca)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ca', {
+
+ //! moment.js locale configuration
+ //! locale : catalan (ca)
+ //! author : Juan G. Hurtado : https://github.com/juanghurtado
+
+ var ca = _moment__default.defineLocale('ca', {
months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
@@ -3900,6 +4227,7 @@
weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -3938,28 +4266,33 @@
y : 'un any',
yy : '%d anys'
},
- ordinal : '%dº',
+ ordinalParse: /\d{1,2}(r|n|t|è|a)/,
+ ordinal : function (number, period) {
+ var output = (number === 1) ? 'r' :
+ (number === 2) ? 'n' :
+ (number === 3) ? 'r' :
+ (number === 4) ? 't' : 'è';
+ if (period === 'w' || period === 'W') {
+ output = 'a';
+ }
+ return number + output;
+ },
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : czech (cs)
-// author : petrbela : https://github.com/petrbela
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
- monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
-
- function plural(n) {
+
+ //! moment.js locale configuration
+ //! locale : czech (cs)
+ //! author : petrbela : https://github.com/petrbela
+
+ var cs__months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
+ cs__monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
+ function cs__plural(n) {
return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
}
-
- function translate(number, withoutSuffix, key, isFuture) {
+ function cs__translate(number, withoutSuffix, key, isFuture) {
var result = number + ' ';
switch (key) {
case 's': // a few seconds / in a few seconds / a few seconds ago
@@ -3968,7 +4301,7 @@
return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'minuty' : 'minut');
+ return result + (cs__plural(number) ? 'minuty' : 'minut');
} else {
return result + 'minutami';
}
@@ -3977,7 +4310,7 @@
return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
case 'hh': // 9 hours / in 9 hours / 9 hours ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'hodiny' : 'hodin');
+ return result + (cs__plural(number) ? 'hodiny' : 'hodin');
} else {
return result + 'hodinami';
}
@@ -3986,7 +4319,7 @@
return (withoutSuffix || isFuture) ? 'den' : 'dnem';
case 'dd': // 9 days / in 9 days / 9 days ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'dny' : 'dní');
+ return result + (cs__plural(number) ? 'dny' : 'dní');
} else {
return result + 'dny';
}
@@ -3995,7 +4328,7 @@
return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
case 'MM': // 9 months / in 9 months / 9 months ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'měsíce' : 'měsíců');
+ return result + (cs__plural(number) ? 'měsíce' : 'měsíců');
} else {
return result + 'měsíci';
}
@@ -4004,7 +4337,7 @@
return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
case 'yy': // 9 years / in 9 years / 9 years ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'roky' : 'let');
+ return result + (cs__plural(number) ? 'roky' : 'let');
} else {
return result + 'lety';
}
@@ -4012,9 +4345,9 @@
}
}
- return moment.defineLocale('cs', {
- months : months,
- monthsShort : monthsShort,
+ var cs = _moment__default.defineLocale('cs', {
+ months : cs__months,
+ monthsShort : cs__monthsShort,
monthsParse : (function (months, monthsShort) {
var i, _monthsParse = [];
for (i = 0; i < 12; i++) {
@@ -4022,13 +4355,14 @@
_monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
}
return _monthsParse;
- }(months, monthsShort)),
+ }(cs__months, cs__monthsShort)),
weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
longDateFormat : {
LT: 'H:mm',
- L : 'DD. MM. YYYY',
+ LTS : 'LT:ss',
+ L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
LLLL : 'dddd D. MMMM YYYY LT'
@@ -4075,86 +4409,83 @@
relativeTime : {
future : 'za %s',
past : 'před %s',
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
+ s : cs__translate,
+ m : cs__translate,
+ mm : cs__translate,
+ h : cs__translate,
+ hh : cs__translate,
+ d : cs__translate,
+ dd : cs__translate,
+ M : cs__translate,
+ MM : cs__translate,
+ y : cs__translate,
+ yy : cs__translate
+ },
+ ordinalParse : /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : chuvash (cv)
-// author : Anatoly Mironov : https://github.com/mirontoli
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('cv', {
- months : 'кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав'.split('_'),
- monthsShort : 'кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш'.split('_'),
- weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун'.split('_'),
- weekdaysShort : 'выр_тун_ытл_юн_кĕç_эрн_шăм'.split('_'),
- weekdaysMin : 'вр_тн_ыт_юн_кç_эр_шм'.split('_'),
+
+ //! moment.js locale configuration
+ //! locale : chuvash (cv)
+ //! author : Anatoly Mironov : https://github.com/mirontoli
+
+ var cv = _moment__default.defineLocale('cv', {
+ months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
+ monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
+ weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
+ weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
+ weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD-MM-YYYY',
- LL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]',
- LLL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT',
- LLLL : 'dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT'
+ LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+ LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], LT',
+ LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], LT'
},
calendar : {
sameDay: '[Паян] LT [сехетре]',
nextDay: '[Ыран] LT [сехетре]',
- lastDay: '[Ĕнер] LT [сехетре]',
- nextWeek: '[Çитес] dddd LT [сехетре]',
- lastWeek: '[Иртнĕ] dddd LT [сехетре]',
+ lastDay: '[Ӗнер] LT [сехетре]',
+ nextWeek: '[Ҫитес] dddd LT [сехетре]',
+ lastWeek: '[Иртнӗ] dddd LT [сехетре]',
sameElse: 'L'
},
relativeTime : {
future : function (output) {
- var affix = /сехет$/i.exec(output) ? 'рен' : /çул$/i.exec(output) ? 'тан' : 'ран';
+ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
return output + affix;
},
past : '%s каялла',
- s : 'пĕр-ик çеккунт',
- m : 'пĕр минут',
+ s : 'пӗр-ик ҫеккунт',
+ m : 'пӗр минут',
mm : '%d минут',
- h : 'пĕр сехет',
+ h : 'пӗр сехет',
hh : '%d сехет',
- d : 'пĕр кун',
+ d : 'пӗр кун',
dd : '%d кун',
- M : 'пĕр уйăх',
- MM : '%d уйăх',
- y : 'пĕр çул',
- yy : '%d çул'
+ M : 'пӗр уйӑх',
+ MM : '%d уйӑх',
+ y : 'пӗр ҫул',
+ yy : '%d ҫул'
},
- ordinal : '%d-мĕш',
+ ordinalParse: /\d{1,2}-мӗш/,
+ ordinal : '%d-мӗш',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Welsh (cy)
-// author : Robert Allen
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('cy', {
+
+ //! moment.js locale configuration
+ //! locale : Welsh (cy)
+ //! author : Robert Allen
+
+ var cy = _moment__default.defineLocale('cy', {
months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
@@ -4163,6 +4494,7 @@
// time formats are the same as en-gb
longDateFormat: {
LT: 'HH:mm',
+ LTS : 'LT:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY LT',
@@ -4191,6 +4523,7 @@
y: 'blwyddyn',
yy: '%d flynedd'
},
+ ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
// traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
ordinal: function (number) {
var b = number,
@@ -4199,7 +4532,6 @@
'', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
];
-
if (b > 20) {
if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
output = 'fed'; // not 30ain, 70ain or 90ain
@@ -4209,7 +4541,6 @@
} else if (b > 0) {
output = lookup[b];
}
-
return number + output;
},
week : {
@@ -4217,15 +4548,12 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : danish (da)
-// author : Ulrik Nielsen : https://github.com/mrbase
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('da', {
+
+ //! moment.js locale configuration
+ //! locale : danish (da)
+ //! author : Ulrik Nielsen : https://github.com/mrbase
+
+ var da = _moment__default.defineLocale('da', {
months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
@@ -4233,6 +4561,7 @@
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -4261,23 +4590,21 @@
y : 'et år',
yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : austrian german (de-at)
-// author : lluchs : https://github.com/lluchs
-// author: Menelion Elensúle: https://github.com/Oire
-// author : Martin Groller : https://github.com/MadMG
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
+
+ //! moment.js locale configuration
+ //! locale : austrian german (de-at)
+ //! author : lluchs : https://github.com/lluchs
+ //! author: Menelion Elensúle: https://github.com/Oire
+ //! author : Martin Groller : https://github.com/MadMG
+
+ function de_at__processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
@@ -4291,58 +4618,57 @@
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.defineLocale('de-at', {
+ var de_at = _moment__default.defineLocale('de-at', {
months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
longDateFormat : {
- LT: 'HH:mm [Uhr]',
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
LLLL : 'dddd, D. MMMM YYYY LT'
},
calendar : {
- sameDay: '[Heute um] LT',
+ sameDay: '[Heute um] LT [Uhr]',
sameElse: 'L',
- nextDay: '[Morgen um] LT',
- nextWeek: 'dddd [um] LT',
- lastDay: '[Gestern um] LT',
- lastWeek: '[letzten] dddd [um] LT'
+ nextDay: '[Morgen um] LT [Uhr]',
+ nextWeek: 'dddd [um] LT [Uhr]',
+ lastDay: '[Gestern um] LT [Uhr]',
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
- m : processRelativeTime,
+ m : de_at__processRelativeTime,
mm : '%d Minuten',
- h : processRelativeTime,
+ h : de_at__processRelativeTime,
hh : '%d Stunden',
- d : processRelativeTime,
- dd : processRelativeTime,
- M : processRelativeTime,
- MM : processRelativeTime,
- y : processRelativeTime,
- yy : processRelativeTime
- },
+ d : de_at__processRelativeTime,
+ dd : de_at__processRelativeTime,
+ M : de_at__processRelativeTime,
+ MM : de_at__processRelativeTime,
+ y : de_at__processRelativeTime,
+ yy : de_at__processRelativeTime
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : german (de)
-// author : lluchs : https://github.com/lluchs
-// author: Menelion Elensúle: https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
+
+ //! moment.js locale configuration
+ //! locale : german (de)
+ //! author : lluchs : https://github.com/lluchs
+ //! author: Menelion Elensúle: https://github.com/Oire
+
+ function de__processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
@@ -4356,57 +4682,56 @@
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.defineLocale('de', {
+ var de = _moment__default.defineLocale('de', {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
longDateFormat : {
- LT: 'HH:mm [Uhr]',
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
LLLL : 'dddd, D. MMMM YYYY LT'
},
calendar : {
- sameDay: '[Heute um] LT',
+ sameDay: '[Heute um] LT [Uhr]',
sameElse: 'L',
- nextDay: '[Morgen um] LT',
- nextWeek: 'dddd [um] LT',
- lastDay: '[Gestern um] LT',
- lastWeek: '[letzten] dddd [um] LT'
+ nextDay: '[Morgen um] LT [Uhr]',
+ nextWeek: 'dddd [um] LT [Uhr]',
+ lastDay: '[Gestern um] LT [Uhr]',
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
- m : processRelativeTime,
+ m : de__processRelativeTime,
mm : '%d Minuten',
- h : processRelativeTime,
+ h : de__processRelativeTime,
hh : '%d Stunden',
- d : processRelativeTime,
- dd : processRelativeTime,
- M : processRelativeTime,
- MM : processRelativeTime,
- y : processRelativeTime,
- yy : processRelativeTime
- },
+ d : de__processRelativeTime,
+ dd : de__processRelativeTime,
+ M : de__processRelativeTime,
+ MM : de__processRelativeTime,
+ y : de__processRelativeTime,
+ yy : de__processRelativeTime
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : modern greek (el)
-// author : Aggelos Karalias : https://github.com/mehiel
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('el', {
+
+ //! moment.js locale configuration
+ //! locale : modern greek (el)
+ //! author : Aggelos Karalias : https://github.com/mehiel
+
+ var el = _moment__default.defineLocale('el', {
monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
months : function (momentToFormat, format) {
@@ -4433,6 +4758,7 @@
meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
longDateFormat : {
LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -4456,17 +4782,15 @@
calendar : function (key, mom) {
var output = this._calendarEl[key],
hours = mom && mom.hours();
-
if (typeof output === 'function') {
output = output.apply(mom);
}
-
return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
},
relativeTime : {
future : 'σε %s',
past : '%s πριν',
- s : 'δευτερόλεπτα',
+ s : 'λίγα δευτερόλεπτα',
m : 'ένα λεπτό',
mm : '%d λεπτά',
h : 'μία ώρα',
@@ -4478,22 +4802,18 @@
y : 'ένας χρόνος',
yy : '%d χρόνια'
},
- ordinal : function (number) {
- return number + 'η';
- },
+ ordinalParse: /\d{1,2}η/,
+ ordinal: '%dη',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : australian english (en-au)
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('en-au', {
+
+ //! moment.js locale configuration
+ //! locale : australian english (en-au)
+
+ var en_au = _moment__default.defineLocale('en-au', {
months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
@@ -4501,6 +4821,7 @@
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -4529,6 +4850,7 @@
y : 'a year',
yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -4542,15 +4864,12 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : canadian english (en-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('en-ca', {
+
+ //! moment.js locale configuration
+ //! locale : canadian english (en-ca)
+ //! author : Jonathan Abourbih : https://github.com/jonbca
+
+ var en_ca = _moment__default.defineLocale('en-ca', {
months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
@@ -4558,6 +4877,7 @@
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
L : 'YYYY-MM-DD',
LL : 'D MMMM, YYYY',
LLL : 'D MMMM, YYYY LT',
@@ -4586,6 +4906,7 @@
y : 'a year',
yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -4595,15 +4916,12 @@
return number + output;
}
});
-}));
-// moment.js locale configuration
-// locale : great britain english (en-gb)
-// author : Chris Gedrim : https://github.com/chrisgedrim
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('en-gb', {
+
+ //! moment.js locale configuration
+ //! locale : great britain english (en-gb)
+ //! author : Chris Gedrim : https://github.com/chrisgedrim
+
+ var en_gb = _moment__default.defineLocale('en-gb', {
months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
@@ -4611,6 +4929,7 @@
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -4639,6 +4958,7 @@
y : 'a year',
yy : '%d years'
},
+ ordinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -4652,17 +4972,14 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : esperanto (eo)
-// author : Colin Dean : https://github.com/colindean
-// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
-// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('eo', {
+
+ //! moment.js locale configuration
+ //! locale : esperanto (eo)
+ //! author : Colin Dean : https://github.com/colindean
+ //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
+ //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
+
+ var eo = _moment__default.defineLocale('eo', {
months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
@@ -4670,11 +4987,16 @@
weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'YYYY-MM-DD',
LL : 'D[-an de] MMMM, YYYY',
LLL : 'D[-an de] MMMM, YYYY LT',
LLLL : 'dddd, [la] D[-an de] MMMM, YYYY LT'
},
+ meridiemParse: /[ap]\.t\.m/i,
+ isPM: function (input) {
+ return input.charAt(0).toLowerCase() === 'p';
+ },
meridiem : function (hours, minutes, isLower) {
if (hours > 11) {
return isLower ? 'p.t.m.' : 'P.T.M.';
@@ -4705,37 +5027,36 @@
y : 'jaro',
yy : '%d jaroj'
},
+ ordinalParse: /\d{1,2}a/,
ordinal : '%da',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : spanish (es)
-// author : Julio Napurí : https://github.com/julionc
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
- monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
-
- return moment.defineLocale('es', {
- months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+
+ //! moment.js locale configuration
+ //! locale : spanish (es)
+ //! author : Julio Napurí : https://github.com/julionc
+
+ var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'),
+ es__monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_');
+
+ var es = _moment__default.defineLocale('es', {
+ months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
- return monthsShort[m.month()];
+ return es__monthsShort[m.month()];
} else {
return monthsShortDot[m.month()];
}
},
- weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
- weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'),
+ weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'),
weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY LT',
@@ -4774,22 +5095,20 @@
y : 'un año',
yy : '%d años'
},
+ ordinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : estonian (et)
-// author : Henry Kehlmann : https://github.com/madhenry
-// improvements : Illimar Tambek : https://github.com/ragulka
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
+
+ //! moment.js locale configuration
+ //! locale : estonian (et)
+ //! author : Henry Kehlmann : https://github.com/madhenry
+ //! improvements : Illimar Tambek : https://github.com/ragulka
+
+ function et__processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
'm' : ['ühe minuti', 'üks minut'],
@@ -4808,7 +5127,7 @@
return isFuture ? format[key][0] : format[key][1];
}
- return moment.defineLocale('et', {
+ var et = _moment__default.defineLocale('et', {
months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
@@ -4816,6 +5135,7 @@
weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -4832,33 +5152,31 @@
relativeTime : {
future : '%s pärast',
past : '%s tagasi',
- s : processRelativeTime,
- m : processRelativeTime,
- mm : processRelativeTime,
- h : processRelativeTime,
- hh : processRelativeTime,
- d : processRelativeTime,
+ s : et__processRelativeTime,
+ m : et__processRelativeTime,
+ mm : et__processRelativeTime,
+ h : et__processRelativeTime,
+ hh : et__processRelativeTime,
+ d : et__processRelativeTime,
dd : '%d päeva',
- M : processRelativeTime,
- MM : processRelativeTime,
- y : processRelativeTime,
- yy : processRelativeTime
+ M : et__processRelativeTime,
+ MM : et__processRelativeTime,
+ y : et__processRelativeTime,
+ yy : et__processRelativeTime
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : euskara (eu)
-// author : Eneko Illarramendi : https://github.com/eillarra
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('eu', {
+
+ //! moment.js locale configuration
+ //! locale : euskara (eu)
+ //! author : Eneko Illarramendi : https://github.com/eillarra
+
+ var eu = _moment__default.defineLocale('eu', {
months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
@@ -4866,6 +5184,7 @@
weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'YYYY-MM-DD',
LL : 'YYYY[ko] MMMM[ren] D[a]',
LLL : 'YYYY[ko] MMMM[ren] D[a] LT',
@@ -4898,21 +5217,19 @@
y : 'urte bat',
yy : '%d urte'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Persian (fa)
-// author : Ebrahim Byagowi : https://github.com/ebraminio
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Persian (fa)
+ //! author : Ebrahim Byagowi : https://github.com/ebraminio
+
+ var fa__symbolMap = {
'1': '۱',
'2': '۲',
'3': '۳',
@@ -4923,7 +5240,7 @@
'8': '۸',
'9': '۹',
'0': '۰'
- }, numberMap = {
+ }, fa__numberMap = {
'۱': '1',
'۲': '2',
'۳': '3',
@@ -4936,7 +5253,7 @@
'۰': '0'
};
- return moment.defineLocale('fa', {
+ var fa = _moment__default.defineLocale('fa', {
months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
@@ -4944,11 +5261,16 @@
weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
LLLL : 'dddd, D MMMM YYYY LT'
},
+ meridiemParse: /قبل از ظهر|بعد از ظهر/,
+ isPM: function (input) {
+ return /بعد از ظهر/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
return 'قبل از ظهر';
@@ -4981,35 +5303,32 @@
},
preparse: function (string) {
return string.replace(/[۰-۹]/g, function (match) {
- return numberMap[match];
+ return fa__numberMap[match];
}).replace(/،/g, ',');
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return fa__symbolMap[match];
}).replace(/,/g, '،');
},
+ ordinalParse: /\d{1,2}م/,
ordinal : '%dم',
week : {
dow : 6, // Saturday is the first day of the week.
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : finnish (fi)
-// author : Tarmo Aidantausta : https://github.com/bleadof
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
+
+ //! moment.js locale configuration
+ //! locale : finnish (fi)
+ //! author : Tarmo Aidantausta : https://github.com/bleadof
+
var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
numbersFuture = [
'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
numbersPast[7], numbersPast[8], numbersPast[9]
];
-
- function translate(number, withoutSuffix, key, isFuture) {
+ function fi__translate(number, withoutSuffix, key, isFuture) {
var result = '';
switch (key) {
case 's':
@@ -5043,12 +5362,11 @@
result = verbalNumber(number, isFuture) + ' ' + result;
return result;
}
-
function verbalNumber(number, isFuture) {
return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
}
- return moment.defineLocale('fi', {
+ var fi = _moment__default.defineLocale('fi', {
months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
@@ -5056,6 +5374,7 @@
weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
longDateFormat : {
LT : 'HH.mm',
+ LTS : 'HH.mm.ss',
L : 'DD.MM.YYYY',
LL : 'Do MMMM[ta] YYYY',
LLL : 'Do MMMM[ta] YYYY, [klo] LT',
@@ -5076,33 +5395,31 @@
relativeTime : {
future : '%s päästä',
past : '%s sitten',
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
+ s : fi__translate,
+ m : fi__translate,
+ mm : fi__translate,
+ h : fi__translate,
+ hh : fi__translate,
+ d : fi__translate,
+ dd : fi__translate,
+ M : fi__translate,
+ MM : fi__translate,
+ y : fi__translate,
+ yy : fi__translate
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : faroese (fo)
-// author : Ragnar Johannesen : https://github.com/ragnar123
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('fo', {
+
+ //! moment.js locale configuration
+ //! locale : faroese (fo)
+ //! author : Ragnar Johannesen : https://github.com/ragnar123
+
+ var fo = _moment__default.defineLocale('fo', {
months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
@@ -5110,6 +5427,7 @@
weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -5138,21 +5456,19 @@
y : 'eitt ár',
yy : '%d ár'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : canadian french (fr-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('fr-ca', {
+
+ //! moment.js locale configuration
+ //! locale : canadian french (fr-ca)
+ //! author : Jonathan Abourbih : https://github.com/jonbca
+
+ var fr_ca = _moment__default.defineLocale('fr-ca', {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
@@ -5160,6 +5476,7 @@
weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'YYYY-MM-DD',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -5188,19 +5505,17 @@
y : 'un an',
yy : '%d ans'
},
+ ordinalParse: /\d{1,2}(er|)/,
ordinal : function (number) {
return number + (number === 1 ? 'er' : '');
}
});
-}));
-// moment.js locale configuration
-// locale : french (fr)
-// author : John Fischer : https://github.com/jfroffice
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('fr', {
+
+ //! moment.js locale configuration
+ //! locale : french (fr)
+ //! author : John Fischer : https://github.com/jfroffice
+
+ var fr = _moment__default.defineLocale('fr', {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
@@ -5208,6 +5523,7 @@
weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -5236,6 +5552,7 @@
y : 'un an',
yy : '%d ans'
},
+ ordinalParse: /\d{1,2}(er|)/,
ordinal : function (number) {
return number + (number === 1 ? 'er' : '');
},
@@ -5244,15 +5561,72 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : galician (gl)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('gl', {
+
+ //! moment.js locale configuration
+ //! locale : frisian (fy)
+ //! author : Robin van der Vliet : https://github.com/robin0van0der0v
+
+ var fy__monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
+ fy__monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
+
+ var fy = _moment__default.defineLocale('fy', {
+ months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
+ monthsShort : function (m, format) {
+ if (/-MMM-/.test(format)) {
+ return fy__monthsShortWithoutDots[m.month()];
+ } else {
+ return fy__monthsShortWithDots[m.month()];
+ }
+ },
+ weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
+ weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
+ weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
+ longDateFormat : {
+ LT : 'HH:mm',
+ LTS : 'LT:ss',
+ L : 'DD-MM-YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY LT',
+ LLLL : 'dddd D MMMM YYYY LT'
+ },
+ calendar : {
+ sameDay: '[hjoed om] LT',
+ nextDay: '[moarn om] LT',
+ nextWeek: 'dddd [om] LT',
+ lastDay: '[juster om] LT',
+ lastWeek: '[ôfrûne] dddd [om] LT',
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : 'oer %s',
+ past : '%s lyn',
+ s : 'in pear sekonden',
+ m : 'ien minút',
+ mm : '%d minuten',
+ h : 'ien oere',
+ hh : '%d oeren',
+ d : 'ien dei',
+ dd : '%d dagen',
+ M : 'ien moanne',
+ MM : '%d moannen',
+ y : 'ien jier',
+ yy : '%d jierren'
+ },
+ ordinalParse: /\d{1,2}(ste|de)/,
+ ordinal : function (number) {
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
+ }
+ });
+
+ //! moment.js locale configuration
+ //! locale : galician (gl)
+ //! author : Juan G. Hurtado : https://github.com/juanghurtado
+
+ var gl = _moment__default.defineLocale('gl', {
months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'),
monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'),
weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'),
@@ -5260,6 +5634,7 @@
weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -5303,23 +5678,21 @@
y : 'un ano',
yy : '%d anos'
},
+ ordinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Hebrew (he)
-// author : Tomer Cohen : https://github.com/tomer
-// author : Moshe Simantov : https://github.com/DevelopmentIL
-// author : Tal Ater : https://github.com/TalAter
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('he', {
+
+ //! moment.js locale configuration
+ //! locale : Hebrew (he)
+ //! author : Tomer Cohen : https://github.com/tomer
+ //! author : Moshe Simantov : https://github.com/DevelopmentIL
+ //! author : Tal Ater : https://github.com/TalAter
+
+ var he = _moment__default.defineLocale('he', {
months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
@@ -5327,6 +5700,7 @@
weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D [ב]MMMM YYYY',
LLL : 'D [ב]MMMM YYYY LT',
@@ -5375,20 +5749,19 @@
yy : function (number) {
if (number === 2) {
return 'שנתיים';
+ } else if (number % 10 === 0 && number !== 10) {
+ return number + ' שנה';
}
return number + ' שנים';
}
}
});
-}));
-// moment.js locale configuration
-// locale : hindi (hi)
-// author : Mayank Singhal : https://github.com/mayanksinghal
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : hindi (hi)
+ //! author : Mayank Singhal : https://github.com/mayanksinghal
+
+ var hi__symbolMap = {
'1': '१',
'2': '२',
'3': '३',
@@ -5400,7 +5773,7 @@
'9': '९',
'0': '०'
},
- numberMap = {
+ hi__numberMap = {
'१': '1',
'२': '2',
'३': '3',
@@ -5413,7 +5786,7 @@
'०': '0'
};
- return moment.defineLocale('hi', {
+ var hi = _moment__default.defineLocale('hi', {
months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
@@ -5421,6 +5794,7 @@
weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
LT : 'A h:mm बजे',
+ LTS : 'A h:mm:ss बजे',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -5451,16 +5825,31 @@
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
+ return hi__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return hi__symbolMap[match];
});
},
// Hindi notation for meridiems are quite fuzzy in practice. While there exists
// a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
+ meridiemParse: /रात|सुबह|दोपहर|शाम/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'रात') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'सुबह') {
+ return hour;
+ } else if (meridiem === 'दोपहर') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'शाम') {
+ return hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'रात';
@@ -5479,17 +5868,12 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : hrvatski (hr)
-// author : Bojan Marković : https://github.com/bmarkovic
-// based on (sl) translation by Robert Sedovšek
+ //! moment.js locale configuration
+ //! locale : hrvatski (hr)
+ //! author : Bojan Marković : https://github.com/bmarkovic
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function translate(number, withoutSuffix, key) {
+ function hr__translate(number, withoutSuffix, key) {
var result = number + ' ';
switch (key) {
case 'm':
@@ -5542,14 +5926,15 @@
}
}
- return moment.defineLocale('hr', {
- months : 'sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'),
- monthsShort : 'sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
+ var hr = _moment__default.defineLocale('hr', {
+ months : 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'),
+ monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD. MM. YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -5558,7 +5943,6 @@
calendar : {
sameDay : '[danas u] LT',
nextDay : '[sutra u] LT',
-
nextWeek : function () {
switch (this.day()) {
case 0:
@@ -5595,37 +5979,33 @@
future : 'za %s',
past : 'prije %s',
s : 'par sekundi',
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
+ m : hr__translate,
+ mm : hr__translate,
+ h : hr__translate,
+ hh : hr__translate,
d : 'dan',
- dd : translate,
+ dd : hr__translate,
M : 'mjesec',
- MM : translate,
+ MM : hr__translate,
y : 'godinu',
- yy : translate
+ yy : hr__translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : hungarian (hu)
-// author : Adam Brunner : https://github.com/adambrunner
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
- function translate(number, withoutSuffix, key, isFuture) {
+ //! moment.js locale configuration
+ //! locale : hungarian (hu)
+ //! author : Adam Brunner : https://github.com/adambrunner
+
+ var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
+ function hu__translate(number, withoutSuffix, key, isFuture) {
var num = number,
suffix;
-
switch (key) {
case 's':
return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
@@ -5650,15 +6030,13 @@
case 'yy':
return num + (isFuture || withoutSuffix ? ' év' : ' éve');
}
-
return '';
}
-
function week(isFuture) {
return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
}
- return moment.defineLocale('hu', {
+ var hu = _moment__default.defineLocale('hu', {
months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
@@ -5666,11 +6044,16 @@
weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'YYYY.MM.DD.',
LL : 'YYYY. MMMM D.',
LLL : 'YYYY. MMMM D., LT',
LLLL : 'YYYY. MMMM D., dddd LT'
},
+ meridiemParse: /de|du/i,
+ isPM: function (input) {
+ return input.charAt(1).toLowerCase() === 'u';
+ },
meridiem : function (hours, minutes, isLower) {
if (hours < 12) {
return isLower === true ? 'de' : 'DE';
@@ -5693,65 +6076,58 @@
relativeTime : {
future : '%s múlva',
past : '%s',
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
+ s : hu__translate,
+ m : hu__translate,
+ mm : hu__translate,
+ h : hu__translate,
+ hh : hu__translate,
+ d : hu__translate,
+ dd : hu__translate,
+ M : hu__translate,
+ MM : hu__translate,
+ y : hu__translate,
+ yy : hu__translate
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Armenian (hy-am)
-// author : Armendarabyan : https://github.com/armendarabyan
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function monthsCaseReplace(m, format) {
+
+ //! moment.js locale configuration
+ //! locale : Armenian (hy-am)
+ //! author : Armendarabyan : https://github.com/armendarabyan
+
+ function hy_am__monthsCaseReplace(m, format) {
var months = {
'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_')
},
-
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return months[nounCase][m.month()];
}
-
- function monthsShortCaseReplace(m, format) {
+ function hy_am__monthsShortCaseReplace(m, format) {
var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_');
-
return monthsShort[m.month()];
}
-
- function weekdaysCaseReplace(m, format) {
+ function hy_am__weekdaysCaseReplace(m, format) {
var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_');
-
return weekdays[m.day()];
}
- return moment.defineLocale('hy-am', {
- months : monthsCaseReplace,
- monthsShort : monthsShortCaseReplace,
- weekdays : weekdaysCaseReplace,
+ var hy_am = _moment__default.defineLocale('hy-am', {
+ months : hy_am__monthsCaseReplace,
+ monthsShort : hy_am__monthsShortCaseReplace,
+ weekdays : hy_am__weekdaysCaseReplace,
weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY թ.',
LLL : 'D MMMM YYYY թ., LT',
@@ -5784,7 +6160,10 @@
y : 'տարի',
yy : '%d տարի'
},
-
+ meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
+ isPM: function (input) {
+ return /^(ցերեկվա|երեկոյան)$/.test(input);
+ },
meridiem : function (hour) {
if (hour < 4) {
return 'գիշերվա';
@@ -5796,7 +6175,7 @@
return 'երեկոյան';
}
},
-
+ ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
ordinal: function (number, period) {
switch (period) {
case 'DDD':
@@ -5811,22 +6190,18 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Bahasa Indonesia (id)
-// author : Mohammad Satrio Utomo : https://github.com/tyok
-// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('id', {
+
+ //! moment.js locale configuration
+ //! locale : Bahasa Indonesia (id)
+ //! author : Mohammad Satrio Utomo : https://github.com/tyok
+ //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
+
+ var id = _moment__default.defineLocale('id', {
months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
@@ -5834,11 +6209,25 @@
weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
LT : 'HH.mm',
+ LTS : 'LT.ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY [pukul] LT',
LLLL : 'dddd, D MMMM YYYY [pukul] LT'
},
+ meridiemParse: /pagi|siang|sore|malam/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'pagi') {
+ return hour;
+ } else if (meridiem === 'siang') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'sore' || meridiem === 'malam') {
+ return hour + 12;
+ }
+ },
meridiem : function (hours, minutes, isLower) {
if (hours < 11) {
return 'pagi';
@@ -5878,15 +6267,12 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : icelandic (is)
-// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(n) {
+
+ //! moment.js locale configuration
+ //! locale : icelandic (is)
+ //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
+
+ function is__plural(n) {
if (n % 100 === 11) {
return true;
} else if (n % 10 === 1) {
@@ -5894,8 +6280,7 @@
}
return true;
}
-
- function translate(number, withoutSuffix, key, isFuture) {
+ function is__translate(number, withoutSuffix, key, isFuture) {
var result = number + ' ';
switch (key) {
case 's':
@@ -5903,14 +6288,14 @@
case 'm':
return withoutSuffix ? 'mínúta' : 'mínútu';
case 'mm':
- if (plural(number)) {
+ if (is__plural(number)) {
return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
} else if (withoutSuffix) {
return result + 'mínúta';
}
return result + 'mínútu';
case 'hh':
- if (plural(number)) {
+ if (is__plural(number)) {
return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
}
return result + 'klukkustund';
@@ -5920,7 +6305,7 @@
}
return isFuture ? 'dag' : 'degi';
case 'dd':
- if (plural(number)) {
+ if (is__plural(number)) {
if (withoutSuffix) {
return result + 'dagar';
}
@@ -5935,7 +6320,7 @@
}
return isFuture ? 'mánuð' : 'mánuði';
case 'MM':
- if (plural(number)) {
+ if (is__plural(number)) {
if (withoutSuffix) {
return result + 'mánuðir';
}
@@ -5947,14 +6332,14 @@
case 'y':
return withoutSuffix || isFuture ? 'ár' : 'ári';
case 'yy':
- if (plural(number)) {
+ if (is__plural(number)) {
return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
}
return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
}
}
- return moment.defineLocale('is', {
+ var is = _moment__default.defineLocale('is', {
months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
@@ -5962,6 +6347,7 @@
weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY [kl.] LT',
@@ -5978,34 +6364,32 @@
relativeTime : {
future : 'eftir %s',
past : 'fyrir %s síðan',
- s : translate,
- m : translate,
- mm : translate,
+ s : is__translate,
+ m : is__translate,
+ mm : is__translate,
h : 'klukkustund',
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
+ hh : is__translate,
+ d : is__translate,
+ dd : is__translate,
+ M : is__translate,
+ MM : is__translate,
+ y : is__translate,
+ yy : is__translate
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : italian (it)
-// author : Lorenzo : https://github.com/aliem
-// author: Mattia Larentis: https://github.com/nostalgiaz
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('it', {
+
+ //! moment.js locale configuration
+ //! locale : italian (it)
+ //! author : Lorenzo : https://github.com/aliem
+ //! author: Mattia Larentis: https://github.com/nostalgiaz
+
+ var it = _moment__default.defineLocale('it', {
months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
@@ -6013,6 +6397,7 @@
weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -6023,7 +6408,14 @@
nextDay: '[Domani alle] LT',
nextWeek: 'dddd [alle] LT',
lastDay: '[Ieri alle] LT',
- lastWeek: '[lo scorso] dddd [alle] LT',
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[la scorsa] dddd [alle] LT';
+ default:
+ return '[lo scorso] dddd [alle] LT';
+ }
+ },
sameElse: 'L'
},
relativeTime : {
@@ -6043,21 +6435,19 @@
y : 'un anno',
yy : '%d anni'
},
+ ordinalParse : /\d{1,2}º/,
ordinal: '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : japanese (ja)
-// author : LI Long : https://github.com/baryon
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ja', {
+
+ //! moment.js locale configuration
+ //! locale : japanese (ja)
+ //! author : LI Long : https://github.com/baryon
+
+ var ja = _moment__default.defineLocale('ja', {
months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
@@ -6065,11 +6455,16 @@
weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
longDateFormat : {
LT : 'Ah時m分',
+ LTS : 'LTs秒',
L : 'YYYY/MM/DD',
LL : 'YYYY年M月D日',
LLL : 'YYYY年M月D日LT',
LLLL : 'YYYY年M月D日LT dddd'
},
+ meridiemParse: /午前|午後/i,
+ isPM : function (input) {
+ return input === '午後';
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
return '午前';
@@ -6101,48 +6496,113 @@
yy : '%d年'
}
});
-}));
-// moment.js locale configuration
-// locale : Georgian (ka)
-// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function monthsCaseReplace(m, format) {
+
+ //! moment.js locale configuration
+ //! locale : Boso Jowo (jv)
+ //! author : Rony Lantip : https://github.com/lantip
+ //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
+
+ var jv = _moment__default.defineLocale('jv', {
+ months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
+ monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
+ weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
+ weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
+ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
+ longDateFormat : {
+ LT : 'HH.mm',
+ LTS : 'LT.ss',
+ L : 'DD/MM/YYYY',
+ LL : 'D MMMM YYYY',
+ LLL : 'D MMMM YYYY [pukul] LT',
+ LLLL : 'dddd, D MMMM YYYY [pukul] LT'
+ },
+ meridiemParse: /enjing|siyang|sonten|ndalu/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'enjing') {
+ return hour;
+ } else if (meridiem === 'siyang') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
+ return hour + 12;
+ }
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 11) {
+ return 'enjing';
+ } else if (hours < 15) {
+ return 'siyang';
+ } else if (hours < 19) {
+ return 'sonten';
+ } else {
+ return 'ndalu';
+ }
+ },
+ calendar : {
+ sameDay : '[Dinten puniko pukul] LT',
+ nextDay : '[Mbenjang pukul] LT',
+ nextWeek : 'dddd [pukul] LT',
+ lastDay : '[Kala wingi pukul] LT',
+ lastWeek : 'dddd [kepengker pukul] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'wonten ing %s',
+ past : '%s ingkang kepengker',
+ s : 'sawetawis detik',
+ m : 'setunggal menit',
+ mm : '%d menit',
+ h : 'setunggal jam',
+ hh : '%d jam',
+ d : 'sedinten',
+ dd : '%d dinten',
+ M : 'sewulan',
+ MM : '%d wulan',
+ y : 'setaun',
+ yy : '%d taun'
+ },
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ //! moment.js locale configuration
+ //! locale : Georgian (ka)
+ //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
+
+ function ka__monthsCaseReplace(m, format) {
var months = {
'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
},
-
nounCase = (/D[oD] *MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return months[nounCase][m.month()];
}
-
- function weekdaysCaseReplace(m, format) {
+ function ka__weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_')
},
-
nounCase = (/(წინა|შემდეგ)/).test(format) ?
'accusative' :
'nominative';
-
return weekdays[nounCase][m.day()];
}
- return moment.defineLocale('ka', {
- months : monthsCaseReplace,
+ var ka = _moment__default.defineLocale('ka', {
+ months : ka__monthsCaseReplace,
monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
- weekdays : weekdaysCaseReplace,
+ weekdays : ka__weekdaysCaseReplace,
weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
longDateFormat : {
LT : 'h:mm A',
+ LTS : 'h:mm:ss A',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -6182,19 +6642,17 @@
y : 'წელი',
yy : '%d წელი'
},
+ ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
ordinal : function (number) {
if (number === 0) {
return number;
}
-
if (number === 1) {
return number + '-ლი';
}
-
if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
return 'მე-' + number;
}
-
return number + '-ე';
},
week : {
@@ -6202,15 +6660,12 @@
doy : 7
}
});
-}));
-// moment.js locale configuration
-// locale : khmer (km)
-// author : Kruy Vanna : https://github.com/kruyvanna
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('km', {
+
+ //! moment.js locale configuration
+ //! locale : khmer (km)
+ //! author : Kruy Vanna : https://github.com/kruyvanna
+
+ var km = _moment__default.defineLocale('km', {
months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
@@ -6218,6 +6673,7 @@
weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
longDateFormat: {
LT: 'HH:mm',
+ LTS : 'LT:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY LT',
@@ -6251,18 +6707,16 @@
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : korean (ko)
-//
-// authors
-//
-// - Kyungwook, Park : https://github.com/kyungw00k
-// - Jeeeyul Lee <jeeeyul@gmail.com>
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ko', {
+
+ //! moment.js locale configuration
+ //! locale : korean (ko)
+ //!
+ //! authors
+ //!
+ //! - Kyungwook, Park : https://github.com/kyungw00k
+ //! - Jeeeyul Lee <jeeeyul@gmail.com>
+
+ var ko = _moment__default.defineLocale('ko', {
months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
@@ -6270,14 +6724,12 @@
weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
longDateFormat : {
LT : 'A h시 m분',
+ LTS : 'A h시 m분 s초',
L : 'YYYY.MM.DD',
LL : 'YYYY년 MMMM D일',
LLL : 'YYYY년 MMMM D일 LT',
LLLL : 'YYYY년 MMMM D일 dddd LT'
},
- meridiem : function (hour, minute, isUpper) {
- return hour < 12 ? '오전' : '오후';
- },
calendar : {
sameDay : '오늘 LT',
nextDay : '내일 LT',
@@ -6302,25 +6754,22 @@
y : '일년',
yy : '%d년'
},
+ ordinalParse : /\d{1,2}일/,
ordinal : '%d일',
- meridiemParse : /(오전|오후)/,
+ meridiemParse : /오전|오후/,
isPM : function (token) {
return token === '오후';
+ },
+ meridiem : function (hour, minute, isUpper) {
+ return hour < 12 ? '오전' : '오후';
}
});
-}));
-// moment.js locale configuration
-// locale : Luxembourgish (lb)
-// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
-
-// Note: Luxembourgish has a very particular phonological rule ('Eifeler Regel') that causes the
-// deletion of the final 'n' in certain contexts. That's what the 'eifelerRegelAppliesToWeekday'
-// and 'eifelerRegelAppliesToNumber' methods are meant for
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
+
+ //! moment.js locale configuration
+ //! locale : Luxembourgish (lb)
+ //! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
+
+ function lb__processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eng Minutt', 'enger Minutt'],
'h': ['eng Stonn', 'enger Stonn'],
@@ -6330,7 +6779,6 @@
};
return withoutSuffix ? format[key][0] : format[key][1];
}
-
function processFutureTime(string) {
var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
@@ -6338,7 +6786,6 @@
}
return 'an ' + string;
}
-
function processPastTime(string) {
var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
@@ -6346,7 +6793,6 @@
}
return 'virun ' + string;
}
-
/**
* Returns true if the word before the given number loses the '-n' ending.
* e.g. 'an 10 Deeg' but 'a 5 Deeg'
@@ -6388,7 +6834,7 @@
}
}
- return moment.defineLocale('lb', {
+ var lb = _moment__default.defineLocale('lb', {
months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
@@ -6396,6 +6842,7 @@
weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
longDateFormat: {
LT: 'H:mm [Auer]',
+ LTS: 'H:mm:ss [Auer]',
L: 'DD.MM.YYYY',
LL: 'D. MMMM YYYY',
LLL: 'D. MMMM YYYY LT',
@@ -6422,32 +6869,30 @@
future : processFutureTime,
past : processPastTime,
s : 'e puer Sekonnen',
- m : processRelativeTime,
+ m : lb__processRelativeTime,
mm : '%d Minutten',
- h : processRelativeTime,
+ h : lb__processRelativeTime,
hh : '%d Stonnen',
- d : processRelativeTime,
+ d : lb__processRelativeTime,
dd : '%d Deeg',
- M : processRelativeTime,
+ M : lb__processRelativeTime,
MM : '%d Méint',
- y : processRelativeTime,
+ y : lb__processRelativeTime,
yy : '%d Joer'
},
+ ordinalParse: /\d{1,2}\./,
ordinal: '%d.',
week: {
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Lithuanian (lt)
-// author : Mindaugas Mozūras : https://github.com/mmozuras
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var units = {
+
+ //! moment.js locale configuration
+ //! locale : Lithuanian (lt)
+ //! author : Mindaugas Mozūras : https://github.com/mmozuras
+
+ var lt__units = {
'm' : 'minutė_minutės_minutę',
'mm': 'minutės_minučių_minutes',
'h' : 'valanda_valandos_valandą',
@@ -6460,7 +6905,6 @@
'yy': 'metai_metų_metus'
},
weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_');
-
function translateSeconds(number, withoutSuffix, key, isFuture) {
if (withoutSuffix) {
return 'kelios sekundės';
@@ -6468,20 +6912,16 @@
return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
}
}
-
function translateSingular(number, withoutSuffix, key, isFuture) {
return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
}
-
function special(number) {
return number % 10 === 0 || (number > 10 && number < 20);
}
-
function forms(key) {
- return units[key].split('_');
+ return lt__units[key].split('_');
}
-
- function translate(number, withoutSuffix, key, isFuture) {
+ function lt__translate(number, withoutSuffix, key, isFuture) {
var result = number + ' ';
if (number === 1) {
return result + translateSingular(number, withoutSuffix, key[0], isFuture);
@@ -6495,15 +6935,13 @@
}
}
}
-
function relativeWeekDay(moment, format) {
var nominative = format.indexOf('dddd HH:mm') === -1,
weekDay = weekDays[moment.day()];
-
return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į';
}
- return moment.defineLocale('lt', {
+ var lt = _moment__default.defineLocale('lt', {
months : 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
weekdays : relativeWeekDay,
@@ -6511,6 +6949,7 @@
weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'YYYY-MM-DD',
LL : 'YYYY [m.] MMMM D [d.]',
LLL : 'YYYY [m.] MMMM D [d.], LT [val.]',
@@ -6533,16 +6972,17 @@
past : 'prieš %s',
s : translateSeconds,
m : translateSingular,
- mm : translate,
+ mm : lt__translate,
h : translateSingular,
- hh : translate,
+ hh : lt__translate,
d : translateSingular,
- dd : translate,
+ dd : lt__translate,
M : translateSingular,
- MM : translate,
+ MM : lt__translate,
y : translateSingular,
- yy : translate
+ yy : lt__translate
},
+ ordinalParse: /\d{1,2}-oji/,
ordinal : function (number) {
return number + '-oji';
},
@@ -6551,36 +6991,48 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : latvian (lv)
-// author : Kristaps Karlsons : https://github.com/skakri
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var units = {
- 'mm': 'minūti_minūtes_minūte_minūtes',
- 'hh': 'stundu_stundas_stunda_stundas',
- 'dd': 'dienu_dienas_diena_dienas',
- 'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
- 'yy': 'gadu_gadus_gads_gadi'
- };
- function format(word, number, withoutSuffix) {
- var forms = word.split('_');
+ //! moment.js locale configuration
+ //! locale : latvian (lv)
+ //! author : Kristaps Karlsons : https://github.com/skakri
+ //! author : Jānis Elmeris : https://github.com/JanisE
+
+ var lv__units = {
+ 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+ 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+ 'h': 'stundas_stundām_stunda_stundas'.split('_'),
+ 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
+ 'd': 'dienas_dienām_diena_dienas'.split('_'),
+ 'dd': 'dienas_dienām_diena_dienas'.split('_'),
+ 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+ 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+ 'y': 'gada_gadiem_gads_gadi'.split('_'),
+ 'yy': 'gada_gadiem_gads_gadi'.split('_')
+ };
+ /**
+ * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
+ */
+ function lv__format(forms, number, withoutSuffix) {
if (withoutSuffix) {
+ // E.g. "21 minūte", "3 minūtes".
return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
} else {
+ // E.g. "21 minūtes" as in "pēc 21 minūtes".
+ // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
}
}
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
- return number + ' ' + format(units[key], number, withoutSuffix);
+ function lv__relativeTimeWithPlural(number, withoutSuffix, key) {
+ return number + ' ' + lv__format(lv__units[key], number, withoutSuffix);
+ }
+ function relativeTimeWithSingular(number, withoutSuffix, key) {
+ return lv__format(lv__units[key], number, withoutSuffix);
+ }
+ function relativeSeconds(number, withoutSuffix) {
+ return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
}
- return moment.defineLocale('lv', {
+ var lv = _moment__default.defineLocale('lv', {
months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
@@ -6588,7 +7040,8 @@
weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
longDateFormat : {
LT : 'HH:mm',
- L : 'DD.MM.YYYY',
+ LTS : 'LT:ss',
+ L : 'DD.MM.YYYY.',
LL : 'YYYY. [gada] D. MMMM',
LLL : 'YYYY. [gada] D. MMMM, LT',
LLLL : 'YYYY. [gada] D. MMMM, dddd, LT'
@@ -6602,35 +7055,131 @@
sameElse : 'L'
},
relativeTime : {
- future : '%s vēlāk',
- past : '%s agrāk',
- s : 'dažas sekundes',
- m : 'minūti',
- mm : relativeTimeWithPlural,
- h : 'stundu',
- hh : relativeTimeWithPlural,
- d : 'dienu',
- dd : relativeTimeWithPlural,
- M : 'mēnesi',
- MM : relativeTimeWithPlural,
- y : 'gadu',
- yy : relativeTimeWithPlural
- },
+ future : 'pēc %s',
+ past : 'pirms %s',
+ s : relativeSeconds,
+ m : relativeTimeWithSingular,
+ mm : lv__relativeTimeWithPlural,
+ h : relativeTimeWithSingular,
+ hh : lv__relativeTimeWithPlural,
+ d : relativeTimeWithSingular,
+ dd : lv__relativeTimeWithPlural,
+ M : relativeTimeWithSingular,
+ MM : lv__relativeTimeWithPlural,
+ y : relativeTimeWithSingular,
+ yy : lv__relativeTimeWithPlural
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : macedonian (mk)
-// author : Borislav Mickov : https://github.com/B0k0
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('mk', {
+
+ //! moment.js locale configuration
+ //! locale : Montenegrin (me)
+ //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
+
+ var me__translator = {
+ words: { //Different grammatical cases
+ m: ['jedan minut', 'jednog minuta'],
+ mm: ['minut', 'minuta', 'minuta'],
+ h: ['jedan sat', 'jednog sata'],
+ hh: ['sat', 'sata', 'sati'],
+ dd: ['dan', 'dana', 'dana'],
+ MM: ['mjesec', 'mjeseca', 'mjeseci'],
+ yy: ['godina', 'godine', 'godina']
+ },
+ correctGrammaticalCase: function (number, wordKey) {
+ return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
+ },
+ translate: function (number, withoutSuffix, key) {
+ var wordKey = me__translator.words[key];
+ if (key.length === 1) {
+ return withoutSuffix ? wordKey[0] : wordKey[1];
+ } else {
+ return number + ' ' + me__translator.correctGrammaticalCase(number, wordKey);
+ }
+ }
+ };
+
+ var me = _moment__default.defineLocale('me', {
+ months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
+ monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
+ weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+ weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
+ weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
+ longDateFormat: {
+ LT: 'H:mm',
+ LTS : 'LT:ss',
+ L: 'DD. MM. YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY LT',
+ LLLL: 'dddd, D. MMMM YYYY LT'
+ },
+ calendar: {
+ sameDay: '[danas u] LT',
+ nextDay: '[sjutra u] LT',
+
+ nextWeek: function () {
+ switch (this.day()) {
+ case 0:
+ return '[u] [nedjelju] [u] LT';
+ case 3:
+ return '[u] [srijedu] [u] LT';
+ case 6:
+ return '[u] [subotu] [u] LT';
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return '[u] dddd [u] LT';
+ }
+ },
+ lastDay : '[juče u] LT',
+ lastWeek : function () {
+ var lastWeekDays = [
+ '[prošle] [nedjelje] [u] LT',
+ '[prošlog] [ponedjeljka] [u] LT',
+ '[prošlog] [utorka] [u] LT',
+ '[prošle] [srijede] [u] LT',
+ '[prošlog] [četvrtka] [u] LT',
+ '[prošlog] [petka] [u] LT',
+ '[prošle] [subote] [u] LT'
+ ];
+ return lastWeekDays[this.day()];
+ },
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : 'za %s',
+ past : 'prije %s',
+ s : 'nekoliko sekundi',
+ m : me__translator.translate,
+ mm : me__translator.translate,
+ h : me__translator.translate,
+ hh : me__translator.translate,
+ d : 'dan',
+ dd : me__translator.translate,
+ M : 'mjesec',
+ MM : me__translator.translate,
+ y : 'godinu',
+ yy : me__translator.translate
+ },
+ ordinalParse: /\d{1,2}\./,
+ ordinal : '%d.',
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+
+ //! moment.js locale configuration
+ //! locale : macedonian (mk)
+ //! author : Borislav Mickov : https://github.com/B0k0
+
+ var mk = _moment__default.defineLocale('mk', {
months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
@@ -6638,6 +7187,7 @@
weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'D.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -6678,6 +7228,7 @@
y : 'година',
yy : '%d години'
},
+ ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
var lastDigit = number % 10,
last2Digits = number % 100;
@@ -6702,15 +7253,12 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : malayalam (ml)
-// author : Floyd Pink : https://github.com/floydpink
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ml', {
+
+ //! moment.js locale configuration
+ //! locale : malayalam (ml)
+ //! author : Floyd Pink : https://github.com/floydpink
+
+ var ml = _moment__default.defineLocale('ml', {
months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
@@ -6718,6 +7266,7 @@
weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
longDateFormat : {
LT : 'A h:mm -നു',
+ LTS : 'A h:mm:ss -നു',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -6746,6 +7295,10 @@
y : 'ഒരു വർഷം',
yy : '%d വർഷം'
},
+ meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
+ isPM : function (input) {
+ return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'രാത്രി';
@@ -6760,15 +7313,12 @@
}
}
});
-}));
-// moment.js locale configuration
-// locale : Marathi (mr)
-// author : Harshad Kale : https://github.com/kalehv
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Marathi (mr)
+ //! author : Harshad Kale : https://github.com/kalehv
+
+ var mr__symbolMap = {
'1': '१',
'2': '२',
'3': '३',
@@ -6780,7 +7330,7 @@
'9': '९',
'0': '०'
},
- numberMap = {
+ mr__numberMap = {
'१': '1',
'२': '2',
'३': '3',
@@ -6793,7 +7343,7 @@
'०': '0'
};
- return moment.defineLocale('mr', {
+ var mr = _moment__default.defineLocale('mr', {
months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
@@ -6801,6 +7351,7 @@
weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
LT : 'A h:mm वाजता',
+ LTS : 'A h:mm:ss वाजता',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -6831,16 +7382,30 @@
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
+ return mr__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return mr__symbolMap[match];
});
},
- meridiem: function (hour, minute, isLower)
- {
+ meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'रात्री') {
+ return hour < 4 ? hour : hour + 12;
+ } else if (meridiem === 'सकाळी') {
+ return hour;
+ } else if (meridiem === 'दुपारी') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'सायंकाळी') {
+ return hour + 12;
+ }
+ },
+ meridiem: function (hour, minute, isLower) {
if (hour < 4) {
return 'रात्री';
} else if (hour < 10) {
@@ -6858,15 +7423,12 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Bahasa Malaysia (ms-MY)
-// author : Weldan Jamili : https://github.com/weldan
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('ms-my', {
+
+ //! moment.js locale configuration
+ //! locale : Bahasa Malaysia (ms-MY)
+ //! author : Weldan Jamili : https://github.com/weldan
+
+ var ms_my = _moment__default.defineLocale('ms-my', {
months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
@@ -6874,11 +7436,25 @@
weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
LT : 'HH.mm',
+ LTS : 'LT.ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY [pukul] LT',
LLLL : 'dddd, D MMMM YYYY [pukul] LT'
},
+ meridiemParse: /pagi|tengahari|petang|malam/,
+ meridiemHour: function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'pagi') {
+ return hour;
+ } else if (meridiem === 'tengahari') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === 'petang' || meridiem === 'malam') {
+ return hour + 12;
+ }
+ },
meridiem : function (hours, minutes, isLower) {
if (hours < 11) {
return 'pagi';
@@ -6918,15 +7494,12 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Burmese (my)
-// author : Squar team, mysquar.com
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : Burmese (my)
+ //! author : Squar team, mysquar.com
+
+ var my__symbolMap = {
'1': '၁',
'2': '၂',
'3': '၃',
@@ -6937,7 +7510,7 @@
'8': '၈',
'9': '၉',
'0': '၀'
- }, numberMap = {
+ }, my__numberMap = {
'၁': '1',
'၂': '2',
'၃': '3',
@@ -6949,14 +7522,17 @@
'၉': '9',
'၀': '0'
};
- return moment.defineLocale('my', {
+
+ var my = _moment__default.defineLocale('my', {
months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
- weekdaysShort: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
- weekdaysMin: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+ weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+ weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+
longDateFormat: {
LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY LT',
@@ -6987,12 +7563,12 @@
},
preparse: function (string) {
return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
- return numberMap[match];
+ return my__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return my__symbolMap[match];
});
},
week: {
@@ -7000,16 +7576,13 @@
doy: 4 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : norwegian bokmål (nb)
-// authors : Espen Hovlandsdal : https://github.com/rexxars
-// Sigurd Gartmann : https://github.com/sigurdga
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('nb', {
+
+ //! moment.js locale configuration
+ //! locale : norwegian bokmål (nb)
+ //! authors : Espen Hovlandsdal : https://github.com/rexxars
+ //! Sigurd Gartmann : https://github.com/sigurdga
+
+ var nb = _moment__default.defineLocale('nb', {
months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
@@ -7017,6 +7590,7 @@
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'H.mm',
+ LTS : 'LT.ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY [kl.] LT',
@@ -7045,21 +7619,19 @@
y : 'ett år',
yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : nepali/nepalese
-// author : suvash : https://github.com/suvash
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
+
+ //! moment.js locale configuration
+ //! locale : nepali/nepalese
+ //! author : suvash : https://github.com/suvash
+
+ var ne__symbolMap = {
'1': '१',
'2': '२',
'3': '३',
@@ -7071,7 +7643,7 @@
'9': '९',
'0': '०'
},
- numberMap = {
+ ne__numberMap = {
'१': '1',
'२': '2',
'३': '3',
@@ -7084,7 +7656,7 @@
'०': '0'
};
- return moment.defineLocale('ne', {
+ var ne = _moment__default.defineLocale('ne', {
months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
@@ -7092,6 +7664,7 @@
weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'),
longDateFormat : {
LT : 'Aको h:mm बजे',
+ LTS : 'Aको h:mm:ss बजे',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -7099,14 +7672,29 @@
},
preparse: function (string) {
return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
+ return ne__numberMap[match];
});
},
postformat: function (string) {
return string.replace(/\d/g, function (match) {
- return symbolMap[match];
+ return ne__symbolMap[match];
});
},
+ meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'राती') {
+ return hour < 3 ? hour : hour + 12;
+ } else if (meridiem === 'बिहान') {
+ return hour;
+ } else if (meridiem === 'दिउँसो') {
+ return hour >= 10 ? hour : hour + 12;
+ } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') {
+ return hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 3) {
return 'राती';
@@ -7150,24 +7738,21 @@
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : dutch (nl)
-// author : Joris Röling : https://github.com/jjupiter
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
- monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
-
- return moment.defineLocale('nl', {
+
+ //! moment.js locale configuration
+ //! locale : dutch (nl)
+ //! author : Joris Röling : https://github.com/jjupiter
+
+ var nl__monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ nl__monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
+
+ var nl = _moment__default.defineLocale('nl', {
months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
- return monthsShortWithoutDots[m.month()];
+ return nl__monthsShortWithoutDots[m.month()];
} else {
- return monthsShortWithDots[m.month()];
+ return nl__monthsShortWithDots[m.month()];
}
},
weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
@@ -7175,6 +7760,7 @@
weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD-MM-YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -7203,6 +7789,7 @@
y : 'één jaar',
yy : '%d jaar'
},
+ ordinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
@@ -7211,15 +7798,12 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : norwegian nynorsk (nn)
-// author : https://github.com/mechuwind
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('nn', {
+
+ //! moment.js locale configuration
+ //! locale : norwegian nynorsk (nn)
+ //! author : https://github.com/mechuwind
+
+ var nn = _moment__default.defineLocale('nn', {
months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
@@ -7227,6 +7811,7 @@
weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -7255,48 +7840,49 @@
y : 'eit år',
yy : '%d år'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : polish (pl)
-// author : Rafal Hirsz : https://github.com/evoL
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
+
+ //! moment.js locale configuration
+ //! locale : polish (pl)
+ //! author : Rafal Hirsz : https://github.com/evoL
+
var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
-
- function plural(n) {
+ function pl__plural(n) {
return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
}
-
- function translate(number, withoutSuffix, key) {
+ function pl__translate(number, withoutSuffix, key) {
var result = number + ' ';
switch (key) {
case 'm':
return withoutSuffix ? 'minuta' : 'minutę';
case 'mm':
- return result + (plural(number) ? 'minuty' : 'minut');
+ return result + (pl__plural(number) ? 'minuty' : 'minut');
case 'h':
return withoutSuffix ? 'godzina' : 'godzinę';
case 'hh':
- return result + (plural(number) ? 'godziny' : 'godzin');
+ return result + (pl__plural(number) ? 'godziny' : 'godzin');
case 'MM':
- return result + (plural(number) ? 'miesiące' : 'miesięcy');
+ return result + (pl__plural(number) ? 'miesiące' : 'miesięcy');
case 'yy':
- return result + (plural(number) ? 'lata' : 'lat');
+ return result + (pl__plural(number) ? 'lata' : 'lat');
}
}
- return moment.defineLocale('pl', {
+ var pl = _moment__default.defineLocale('pl', {
months : function (momentToFormat, format) {
- if (/D MMMM/.test(format)) {
+ if (format === '') {
+ // Hack: if format empty we know this is used to generate
+ // RegExp by moment. Give then back both valid forms of months
+ // in RegExp ready format.
+ return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
+ } else if (/D MMMM/.test(format)) {
return monthsSubjective[momentToFormat.month()];
} else {
return monthsNominative[momentToFormat.month()];
@@ -7308,6 +7894,7 @@
weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -7336,39 +7923,38 @@
future : 'za %s',
past : '%s temu',
s : 'kilka sekund',
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
+ m : pl__translate,
+ mm : pl__translate,
+ h : pl__translate,
+ hh : pl__translate,
d : '1 dzień',
dd : '%d dni',
M : 'miesiąc',
- MM : translate,
+ MM : pl__translate,
y : 'rok',
- yy : translate
+ yy : pl__translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : brazilian portuguese (pt-br)
-// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('pt-br', {
- months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
- monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
- weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
- weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
- weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'),
+
+ //! moment.js locale configuration
+ //! locale : brazilian portuguese (pt-br)
+ //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
+
+ var pt_br = _moment__default.defineLocale('pt-br', {
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+ weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY [às] LT',
@@ -7401,24 +7987,23 @@
y : 'um ano',
yy : '%d anos'
},
+ ordinalParse: /\d{1,2}º/,
ordinal : '%dº'
});
-}));
-// moment.js locale configuration
-// locale : portuguese (pt)
-// author : Jefferson : https://github.com/jalex79
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('pt', {
- months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
- monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
- weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
- weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
- weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'),
+
+ //! moment.js locale configuration
+ //! locale : portuguese (pt)
+ //! author : Jefferson : https://github.com/jalex79
+
+ var pt = _moment__default.defineLocale('pt', {
+ months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
+ monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+ weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
+ weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+ weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY LT',
@@ -7451,22 +8036,20 @@
y : 'um ano',
yy : '%d anos'
},
+ ordinalParse: /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : romanian (ro)
-// author : Vlad Gurdiga : https://github.com/gurdiga
-// author : Valentin Agachi : https://github.com/avaly
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function relativeTimeWithPlural(number, withoutSuffix, key) {
+
+ //! moment.js locale configuration
+ //! locale : romanian (ro)
+ //! author : Vlad Gurdiga : https://github.com/gurdiga
+ //! author : Valentin Agachi : https://github.com/avaly
+
+ function ro__relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': 'minute',
'hh': 'ore',
@@ -7478,11 +8061,10 @@
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
separator = ' de ';
}
-
return number + separator + format[key];
}
- return moment.defineLocale('ro', {
+ var ro = _moment__default.defineLocale('ro', {
months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
@@ -7490,6 +8072,7 @@
weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY H:mm',
@@ -7508,36 +8091,32 @@
past : '%s în urmă',
s : 'câteva secunde',
m : 'un minut',
- mm : relativeTimeWithPlural,
+ mm : ro__relativeTimeWithPlural,
h : 'o oră',
- hh : relativeTimeWithPlural,
+ hh : ro__relativeTimeWithPlural,
d : 'o zi',
- dd : relativeTimeWithPlural,
+ dd : ro__relativeTimeWithPlural,
M : 'o lună',
- MM : relativeTimeWithPlural,
+ MM : ro__relativeTimeWithPlural,
y : 'un an',
- yy : relativeTimeWithPlural
+ yy : ro__relativeTimeWithPlural
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : russian (ru)
-// author : Viktorminator : https://github.com/Viktorminator
-// Author : Menelion Elensúle : https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(word, num) {
+
+ //! moment.js locale configuration
+ //! locale : russian (ru)
+ //! author : Viktorminator : https://github.com/Viktorminator
+ //! Author : Menelion Elensúle : https://github.com/Oire
+
+ function ru__plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
+ function ru__relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
'hh': 'час_часа_часов',
@@ -7549,58 +8128,50 @@
return withoutSuffix ? 'минута' : 'минуту';
}
else {
- return number + ' ' + plural(format[key], +number);
+ return number + ' ' + ru__plural(format[key], +number);
}
}
-
- function monthsCaseReplace(m, format) {
+ function ru__monthsCaseReplace(m, format) {
var months = {
'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
},
-
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return months[nounCase][m.month()];
}
-
- function monthsShortCaseReplace(m, format) {
+ function ru__monthsShortCaseReplace(m, format) {
var monthsShort = {
- 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
+ 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
},
-
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return monthsShort[nounCase][m.month()];
}
-
- function weekdaysCaseReplace(m, format) {
+ function ru__weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_')
},
-
- nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ?
+ nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ?
'accusative' :
'nominative';
-
return weekdays[nounCase][m.day()];
}
- return moment.defineLocale('ru', {
- months : monthsCaseReplace,
- monthsShort : monthsShortCaseReplace,
- weekdays : weekdaysCaseReplace,
+ var ru = _moment__default.defineLocale('ru', {
+ months : ru__monthsCaseReplace,
+ monthsShort : ru__monthsShortCaseReplace,
+ weekdays : ru__weekdaysCaseReplace,
weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i],
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY г.',
LLL : 'D MMMM YYYY г., LT',
@@ -7613,18 +8184,26 @@
nextWeek: function () {
return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
},
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[В прошлое] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В прошлый] dddd [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В прошлую] dddd [в] LT';
+ lastWeek: function (now) {
+ if (now.week() !== this.week()) {
+ switch (this.day()) {
+ case 0:
+ return '[В прошлое] dddd [в] LT';
+ case 1:
+ case 2:
+ case 4:
+ return '[В прошлый] dddd [в] LT';
+ case 3:
+ case 5:
+ case 6:
+ return '[В прошлую] dddd [в] LT';
+ }
+ } else {
+ if (this.day() === 2) {
+ return '[Во] dddd [в] LT';
+ } else {
+ return '[В] dddd [в] LT';
+ }
}
},
sameElse: 'L'
@@ -7633,23 +8212,21 @@
future : 'через %s',
past : '%s назад',
s : 'несколько секунд',
- m : relativeTimeWithPlural,
- mm : relativeTimeWithPlural,
+ m : ru__relativeTimeWithPlural,
+ mm : ru__relativeTimeWithPlural,
h : 'час',
- hh : relativeTimeWithPlural,
+ hh : ru__relativeTimeWithPlural,
d : 'день',
- dd : relativeTimeWithPlural,
+ dd : ru__relativeTimeWithPlural,
M : 'месяц',
- MM : relativeTimeWithPlural,
+ MM : ru__relativeTimeWithPlural,
y : 'год',
- yy : relativeTimeWithPlural
+ yy : ru__relativeTimeWithPlural
},
-
meridiemParse: /ночи|утра|дня|вечера/i,
isPM : function (input) {
return /^(дня|вечера)$/.test(input);
},
-
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'ночи';
@@ -7661,7 +8238,7 @@
return 'вечера';
}
},
-
+ ordinalParse: /\d{1,2}-(й|го|я)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -7677,29 +8254,77 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : slovak (sk)
-// author : Martin Minka : https://github.com/k2s
-// based on work of petrbela : https://github.com/petrbela
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
- monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-
- function plural(n) {
+
+ //! moment.js locale configuration
+ //! locale : Sinhalese (si)
+ //! author : Sampath Sitinamaluwa : https://github.com/sampathsris
+
+ var si = _moment__default.defineLocale('si', {
+ months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
+ monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
+ weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
+ weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
+ weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
+ longDateFormat : {
+ LT : 'a h:mm',
+ LTS : 'a h:mm:ss',
+ L : 'YYYY/MM/DD',
+ LL : 'YYYY MMMM D',
+ LLL : 'YYYY MMMM D, LT',
+ LLLL : 'YYYY MMMM D [වැනි] dddd, LTS'
+ },
+ calendar : {
+ sameDay : '[අද] LT[ට]',
+ nextDay : '[හෙට] LT[ට]',
+ nextWeek : 'dddd LT[ට]',
+ lastDay : '[ඊයේ] LT[ට]',
+ lastWeek : '[පසුගිය] dddd LT[ට]',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : '%sකින්',
+ past : '%sකට පෙර',
+ s : 'තත්පර කිහිපය',
+ m : 'මිනිත්තුව',
+ mm : 'මිනිත්තු %d',
+ h : 'පැය',
+ hh : 'පැය %d',
+ d : 'දිනය',
+ dd : 'දින %d',
+ M : 'මාසය',
+ MM : 'මාස %d',
+ y : 'වසර',
+ yy : 'වසර %d'
+ },
+ ordinalParse: /\d{1,2} වැනි/,
+ ordinal : function (number) {
+ return number + ' වැනි';
+ },
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'ප.ව.' : 'පස් වරු';
+ } else {
+ return isLower ? 'පෙ.ව.' : 'පෙර වරු';
+ }
+ }
+ });
+
+ //! moment.js locale configuration
+ //! locale : slovak (sk)
+ //! author : Martin Minka : https://github.com/k2s
+ //! based on work of petrbela : https://github.com/petrbela
+
+ var sk__months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
+ sk__monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
+ function sk__plural(n) {
return (n > 1) && (n < 5);
}
-
- function translate(number, withoutSuffix, key, isFuture) {
+ function sk__translate(number, withoutSuffix, key, isFuture) {
var result = number + ' ';
switch (key) {
case 's': // a few seconds / in a few seconds / a few seconds ago
@@ -7708,7 +8333,7 @@
return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'minúty' : 'minút');
+ return result + (sk__plural(number) ? 'minúty' : 'minút');
} else {
return result + 'minútami';
}
@@ -7717,7 +8342,7 @@
return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
case 'hh': // 9 hours / in 9 hours / 9 hours ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'hodiny' : 'hodín');
+ return result + (sk__plural(number) ? 'hodiny' : 'hodín');
} else {
return result + 'hodinami';
}
@@ -7726,7 +8351,7 @@
return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
case 'dd': // 9 days / in 9 days / 9 days ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'dni' : 'dní');
+ return result + (sk__plural(number) ? 'dni' : 'dní');
} else {
return result + 'dňami';
}
@@ -7735,7 +8360,7 @@
return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
case 'MM': // 9 months / in 9 months / 9 months ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'mesiace' : 'mesiacov');
+ return result + (sk__plural(number) ? 'mesiace' : 'mesiacov');
} else {
return result + 'mesiacmi';
}
@@ -7744,7 +8369,7 @@
return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
case 'yy': // 9 years / in 9 years / 9 years ago
if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'roky' : 'rokov');
+ return result + (sk__plural(number) ? 'roky' : 'rokov');
} else {
return result + 'rokmi';
}
@@ -7752,9 +8377,9 @@
}
}
- return moment.defineLocale('sk', {
- months : months,
- monthsShort : monthsShort,
+ var sk = _moment__default.defineLocale('sk', {
+ months : sk__months,
+ monthsShort : sk__monthsShort,
monthsParse : (function (months, monthsShort) {
var i, _monthsParse = [];
for (i = 0; i < 12; i++) {
@@ -7762,12 +8387,13 @@
_monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
}
return _monthsParse;
- }(months, monthsShort)),
+ }(sk__months, sk__monthsShort)),
weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
longDateFormat : {
LT: 'H:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -7815,94 +8441,102 @@
relativeTime : {
future : 'za %s',
past : 'pred %s',
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
+ s : sk__translate,
+ m : sk__translate,
+ mm : sk__translate,
+ h : sk__translate,
+ hh : sk__translate,
+ d : sk__translate,
+ dd : sk__translate,
+ M : sk__translate,
+ MM : sk__translate,
+ y : sk__translate,
+ yy : sk__translate
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : slovenian (sl)
-// author : Robert Sedovšek : https://github.com/sedovsek
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function translate(number, withoutSuffix, key) {
+
+ //! moment.js locale configuration
+ //! locale : slovenian (sl)
+ //! author : Robert Sedovšek : https://github.com/sedovsek
+
+ function sl__processRelativeTime(number, withoutSuffix, key, isFuture) {
var result = number + ' ';
switch (key) {
+ case 's':
+ return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
case 'm':
return withoutSuffix ? 'ena minuta' : 'eno minuto';
case 'mm':
if (number === 1) {
- result += 'minuta';
+ result += withoutSuffix ? 'minuta' : 'minuto';
} else if (number === 2) {
- result += 'minuti';
- } else if (number === 3 || number === 4) {
- result += 'minute';
+ result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'minute' : 'minutami';
} else {
- result += 'minut';
+ result += withoutSuffix || isFuture ? 'minut' : 'minutami';
}
return result;
case 'h':
return withoutSuffix ? 'ena ura' : 'eno uro';
case 'hh':
if (number === 1) {
- result += 'ura';
+ result += withoutSuffix ? 'ura' : 'uro';
} else if (number === 2) {
- result += 'uri';
- } else if (number === 3 || number === 4) {
- result += 'ure';
+ result += withoutSuffix || isFuture ? 'uri' : 'urama';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'ure' : 'urami';
} else {
- result += 'ur';
+ result += withoutSuffix || isFuture ? 'ur' : 'urami';
}
return result;
+ case 'd':
+ return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
case 'dd':
if (number === 1) {
- result += 'dan';
+ result += withoutSuffix || isFuture ? 'dan' : 'dnem';
+ } else if (number === 2) {
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
} else {
- result += 'dni';
+ result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
}
return result;
+ case 'M':
+ return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
case 'MM':
if (number === 1) {
- result += 'mesec';
+ result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
} else if (number === 2) {
- result += 'meseca';
- } else if (number === 3 || number === 4) {
- result += 'mesece';
+ result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
} else {
- result += 'mesecev';
+ result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
}
return result;
+ case 'y':
+ return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
case 'yy':
if (number === 1) {
- result += 'leto';
+ result += withoutSuffix || isFuture ? 'leto' : 'letom';
} else if (number === 2) {
- result += 'leti';
- } else if (number === 3 || number === 4) {
- result += 'leta';
+ result += withoutSuffix || isFuture ? 'leti' : 'letoma';
+ } else if (number < 5) {
+ result += withoutSuffix || isFuture ? 'leta' : 'leti';
} else {
- result += 'let';
+ result += withoutSuffix || isFuture ? 'let' : 'leti';
}
return result;
}
}
- return moment.defineLocale('sl', {
+ var sl = _moment__default.defineLocale('sl', {
months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
@@ -7910,6 +8544,7 @@
weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
longDateFormat : {
LT : 'H:mm',
+ LTS : 'LT:ss',
L : 'DD. MM. YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY LT',
@@ -7938,9 +8573,11 @@
lastWeek : function () {
switch (this.day()) {
case 0:
+ return '[prejšnjo] [nedeljo] [ob] LT';
case 3:
+ return '[prejšnjo] [sredo] [ob] LT';
case 6:
- return '[prejšnja] dddd [ob] LT';
+ return '[prejšnjo] [soboto] [ob] LT';
case 1:
case 2:
case 4:
@@ -7952,46 +8589,49 @@
},
relativeTime : {
future : 'čez %s',
- past : '%s nazaj',
- s : 'nekaj sekund',
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : 'en dan',
- dd : translate,
- M : 'en mesec',
- MM : translate,
- y : 'eno leto',
- yy : translate
- },
+ past : 'pred %s',
+ s : sl__processRelativeTime,
+ m : sl__processRelativeTime,
+ mm : sl__processRelativeTime,
+ h : sl__processRelativeTime,
+ hh : sl__processRelativeTime,
+ d : sl__processRelativeTime,
+ dd : sl__processRelativeTime,
+ M : sl__processRelativeTime,
+ MM : sl__processRelativeTime,
+ y : sl__processRelativeTime,
+ yy : sl__processRelativeTime
+ },
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Albanian (sq)
-// author : Flakërim Ismani : https://github.com/flakerimi
-// author: Menelion Elensúle: https://github.com/Oire (tests)
-// author : Oerd Cukalla : https://github.com/oerd (fixes)
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('sq', {
+
+ //! moment.js locale configuration
+ //! locale : Albanian (sq)
+ //! author : Flakërim Ismani : https://github.com/flakerimi
+ //! author: Menelion Elensúle: https://github.com/Oire (tests)
+ //! author : Oerd Cukalla : https://github.com/oerd (fixes)
+
+ var sq = _moment__default.defineLocale('sq', {
months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
+ meridiemParse: /PD|MD/,
+ isPM: function (input) {
+ return input.charAt(0) === 'M';
+ },
meridiem : function (hours, minutes, isLower) {
return hours < 12 ? 'PD' : 'MD';
},
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8020,21 +8660,19 @@
y : 'një vit',
yy : '%d vite'
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Serbian-cyrillic (sr-cyrl)
-// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var translator = {
+
+ //! moment.js locale configuration
+ //! locale : Serbian-cyrillic (sr-cyrl)
+ //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
+
+ var sr_cyrl__translator = {
words: { //Different grammatical cases
m: ['један минут', 'једне минуте'],
mm: ['минут', 'минуте', 'минута'],
@@ -8048,16 +8686,16 @@
return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
- var wordKey = translator.words[key];
+ var wordKey = sr_cyrl__translator.words[key];
if (key.length === 1) {
return withoutSuffix ? wordKey[0] : wordKey[1];
} else {
- return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
+ return number + ' ' + sr_cyrl__translator.correctGrammaticalCase(number, wordKey);
}
}
};
- return moment.defineLocale('sr-cyrl', {
+ var sr_cyrl = _moment__default.defineLocale('sr-cyrl', {
months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
@@ -8065,6 +8703,7 @@
weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
longDateFormat: {
LT: 'H:mm',
+ LTS : 'LT:ss',
L: 'DD. MM. YYYY',
LL: 'D. MMMM YYYY',
LLL: 'D. MMMM YYYY LT',
@@ -8073,7 +8712,6 @@
calendar: {
sameDay: '[данас у] LT',
nextDay: '[сутра у] LT',
-
nextWeek: function () {
switch (this.day()) {
case 0:
@@ -8108,32 +8746,30 @@
future : 'за %s',
past : 'пре %s',
s : 'неколико секунди',
- m : translator.translate,
- mm : translator.translate,
- h : translator.translate,
- hh : translator.translate,
+ m : sr_cyrl__translator.translate,
+ mm : sr_cyrl__translator.translate,
+ h : sr_cyrl__translator.translate,
+ hh : sr_cyrl__translator.translate,
d : 'дан',
- dd : translator.translate,
+ dd : sr_cyrl__translator.translate,
M : 'месец',
- MM : translator.translate,
+ MM : sr_cyrl__translator.translate,
y : 'годину',
- yy : translator.translate
+ yy : sr_cyrl__translator.translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Serbian-latin (sr)
-// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var translator = {
+
+ //! moment.js locale configuration
+ //! locale : Serbian-latin (sr)
+ //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
+
+ var sr__translator = {
words: { //Different grammatical cases
m: ['jedan minut', 'jedne minute'],
mm: ['minut', 'minute', 'minuta'],
@@ -8147,16 +8783,16 @@
return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
- var wordKey = translator.words[key];
+ var wordKey = sr__translator.words[key];
if (key.length === 1) {
return withoutSuffix ? wordKey[0] : wordKey[1];
} else {
- return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
+ return number + ' ' + sr__translator.correctGrammaticalCase(number, wordKey);
}
}
};
- return moment.defineLocale('sr', {
+ var sr = _moment__default.defineLocale('sr', {
months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
@@ -8164,6 +8800,7 @@
weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
longDateFormat: {
LT: 'H:mm',
+ LTS : 'LT:ss',
L: 'DD. MM. YYYY',
LL: 'D. MMMM YYYY',
LLL: 'D. MMMM YYYY LT',
@@ -8172,7 +8809,6 @@
calendar: {
sameDay: '[danas u] LT',
nextDay: '[sutra u] LT',
-
nextWeek: function () {
switch (this.day()) {
case 0:
@@ -8207,32 +8843,30 @@
future : 'za %s',
past : 'pre %s',
s : 'nekoliko sekundi',
- m : translator.translate,
- mm : translator.translate,
- h : translator.translate,
- hh : translator.translate,
+ m : sr__translator.translate,
+ mm : sr__translator.translate,
+ h : sr__translator.translate,
+ hh : sr__translator.translate,
d : 'dan',
- dd : translator.translate,
+ dd : sr__translator.translate,
M : 'mesec',
- MM : translator.translate,
+ MM : sr__translator.translate,
y : 'godinu',
- yy : translator.translate
+ yy : sr__translator.translate
},
+ ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : swedish (sv)
-// author : Jens Alm : https://github.com/ulmus
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('sv', {
+
+ //! moment.js locale configuration
+ //! locale : swedish (sv)
+ //! author : Jens Alm : https://github.com/ulmus
+
+ var sv = _moment__default.defineLocale('sv', {
months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
@@ -8240,6 +8874,7 @@
weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'YYYY-MM-DD',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8249,8 +8884,8 @@
sameDay: '[Idag] LT',
nextDay: '[Imorgon] LT',
lastDay: '[Igår] LT',
- nextWeek: 'dddd LT',
- lastWeek: '[Förra] dddd[en] LT',
+ nextWeek: '[På] dddd LT',
+ lastWeek: '[I] dddd[s] LT',
sameElse: 'L'
},
relativeTime : {
@@ -8268,6 +8903,7 @@
y : 'ett år',
yy : '%d år'
},
+ ordinalParse: /\d{1,2}(e|a)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'e' :
@@ -8281,40 +8917,12 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : tamil (ta)
-// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- /*var symbolMap = {
- '1': '௧',
- '2': '௨',
- '3': '௩',
- '4': '௪',
- '5': '௫',
- '6': '௬',
- '7': '௭',
- '8': '௮',
- '9': '௯',
- '0': '௦'
- },
- numberMap = {
- '௧': '1',
- '௨': '2',
- '௩': '3',
- '௪': '4',
- '௫': '5',
- '௬': '6',
- '௭': '7',
- '௮': '8',
- '௯': '9',
- '௦': '0'
- }; */
-
- return moment.defineLocale('ta', {
+
+ //! moment.js locale configuration
+ //! locale : tamil (ta)
+ //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
+
+ var ta = _moment__default.defineLocale('ta', {
months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
@@ -8322,6 +8930,7 @@
weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY, LT',
@@ -8350,36 +8959,41 @@
y : 'ஒரு வருடம்',
yy : '%d ஆண்டுகள்'
},
-/* preparse: function (string) {
- return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
- return numberMap[match];
- });
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- });
- },*/
+ ordinalParse: /\d{1,2}வது/,
ordinal : function (number) {
return number + 'வது';
},
-
-
// refer http://ta.wikipedia.org/s/1er1
-
+ meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
meridiem : function (hour, minute, isLower) {
- if (hour >= 6 && hour <= 10) {
- return ' காலை';
- } else if (hour >= 10 && hour <= 14) {
- return ' நண்பகல்';
- } else if (hour >= 14 && hour <= 18) {
- return ' எற்பாடு';
- } else if (hour >= 18 && hour <= 20) {
- return ' மாலை';
- } else if (hour >= 20 && hour <= 24) {
- return ' இரவு';
- } else if (hour >= 0 && hour <= 6) {
- return ' வைகறை';
+ if (hour < 2) {
+ return ' யாமம்';
+ } else if (hour < 6) {
+ return ' வைகறை'; // வைகறை
+ } else if (hour < 10) {
+ return ' காலை'; // காலை
+ } else if (hour < 14) {
+ return ' நண்பகல்'; // நண்பகல்
+ } else if (hour < 18) {
+ return ' எற்பாடு'; // எற்பாடு
+ } else if (hour < 22) {
+ return ' மாலை'; // மாலை
+ } else {
+ return ' யாமம்';
+ }
+ },
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === 'யாமம்') {
+ return hour < 2 ? hour : hour + 12;
+ } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
+ return hour;
+ } else if (meridiem === 'நண்பகல்') {
+ return hour >= 10 ? hour : hour + 12;
+ } else {
+ return hour + 12;
}
},
week : {
@@ -8387,15 +9001,12 @@
doy : 6 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : thai (th)
-// author : Kridsada Thanabulpong : https://github.com/sirn
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('th', {
+
+ //! moment.js locale configuration
+ //! locale : thai (th)
+ //! author : Kridsada Thanabulpong : https://github.com/sirn
+
+ var th = _moment__default.defineLocale('th', {
months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'),
weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
@@ -8403,11 +9014,16 @@
weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
longDateFormat : {
LT : 'H นาฬิกา m นาที',
+ LTS : 'LT s วินาที',
L : 'YYYY/MM/DD',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY เวลา LT',
LLLL : 'วันddddที่ D MMMM YYYY เวลา LT'
},
+ meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
+ isPM: function (input) {
+ return input === 'หลังเที่ยง';
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 12) {
return 'ก่อนเที่ยง';
@@ -8439,15 +9055,12 @@
yy : '%d ปี'
}
});
-}));
-// moment.js locale configuration
-// locale : Tagalog/Filipino (tl-ph)
-// author : Dan Hagman
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('tl-ph', {
+
+ //! moment.js locale configuration
+ //! locale : Tagalog/Filipino (tl-ph)
+ //! author : Dan Hagman
+
+ var tl_ph = _moment__default.defineLocale('tl-ph', {
months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
@@ -8455,6 +9068,7 @@
weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'MM/D/YYYY',
LL : 'MMMM D, YYYY',
LLL : 'MMMM D, YYYY LT',
@@ -8483,6 +9097,7 @@
y : 'isang taon',
yy : '%d taon'
},
+ ordinalParse: /\d{1,2}/,
ordinal : function (number) {
return number;
},
@@ -8491,42 +9106,34 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : turkish (tr)
-// authors : Erhan Gundogan : https://github.com/erhangundogan,
-// Burak Yiğit Kaya: https://github.com/BYK
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var suffixes = {
+
+ //! moment.js locale configuration
+ //! locale : turkish (tr)
+ //! authors : Erhan Gundogan : https://github.com/erhangundogan,
+ //! Burak Yiğit Kaya: https://github.com/BYK
+
+ var tr__suffixes = {
1: '\'inci',
5: '\'inci',
8: '\'inci',
70: '\'inci',
80: '\'inci',
-
2: '\'nci',
7: '\'nci',
20: '\'nci',
50: '\'nci',
-
3: '\'üncü',
4: '\'üncü',
100: '\'üncü',
-
6: '\'ncı',
-
9: '\'uncu',
10: '\'uncu',
30: '\'uncu',
-
60: '\'ıncı',
90: '\'ıncı'
};
- return moment.defineLocale('tr', {
+ var tr = _moment__default.defineLocale('tr', {
months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
@@ -8534,6 +9141,7 @@
weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8562,6 +9170,7 @@
y : 'bir yıl',
yy : '%d yıl'
},
+ ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
ordinal : function (number) {
if (number === 0) { // special case for zero
return number + '\'ıncı';
@@ -8569,23 +9178,19 @@
var a = number % 10,
b = number % 100 - a,
c = number >= 100 ? 100 : null;
-
- return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+ return number + (tr__suffixes[a] || tr__suffixes[b] || tr__suffixes[c]);
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('tzm-latn', {
+
+ //! moment.js locale configuration
+ //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
+ //! author : Abdel Said : https://github.com/abdelsaid
+
+ var tzm_latn = _moment__default.defineLocale('tzm-latn', {
months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
@@ -8593,6 +9198,7 @@
weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8626,15 +9232,12 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : Morocco Central Atlas Tamaziɣt (tzm)
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('tzm', {
+
+ //! moment.js locale configuration
+ //! locale : Morocco Central Atlas Tamaziɣt (tzm)
+ //! author : Abdel Said : https://github.com/abdelsaid
+
+ var tzm = _moment__default.defineLocale('tzm', {
months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
@@ -8642,6 +9245,7 @@
weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS: 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8675,21 +9279,17 @@
doy : 12 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : ukrainian (uk)
-// author : zemlanin : https://github.com/zemlanin
-// Author : Menelion Elensúle : https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(word, num) {
+
+ //! moment.js locale configuration
+ //! locale : ukrainian (uk)
+ //! author : zemlanin : https://github.com/zemlanin
+ //! Author : Menelion Elensúle : https://github.com/Oire
+
+ function uk__plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
+ function uk__relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': 'хвилина_хвилини_хвилин',
'hh': 'година_години_годин',
@@ -8704,53 +9304,47 @@
return withoutSuffix ? 'година' : 'годину';
}
else {
- return number + ' ' + plural(format[key], +number);
+ return number + ' ' + uk__plural(format[key], +number);
}
}
-
- function monthsCaseReplace(m, format) {
+ function uk__monthsCaseReplace(m, format) {
var months = {
'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
},
-
nounCase = (/D[oD]? *MMMM?/).test(format) ?
'accusative' :
'nominative';
-
return months[nounCase][m.month()];
}
-
- function weekdaysCaseReplace(m, format) {
+ function uk__weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
},
-
nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
'accusative' :
((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
'genitive' :
'nominative');
-
return weekdays[nounCase][m.day()];
}
-
function processHoursFunction(str) {
return function () {
return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
};
}
- return moment.defineLocale('uk', {
- months : monthsCaseReplace,
+ var uk = _moment__default.defineLocale('uk', {
+ months : uk__monthsCaseReplace,
monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
- weekdays : weekdaysCaseReplace,
+ weekdays : uk__weekdaysCaseReplace,
weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY р.',
LLL : 'D MMMM YYYY р., LT',
@@ -8780,20 +9374,22 @@
future : 'за %s',
past : '%s тому',
s : 'декілька секунд',
- m : relativeTimeWithPlural,
- mm : relativeTimeWithPlural,
+ m : uk__relativeTimeWithPlural,
+ mm : uk__relativeTimeWithPlural,
h : 'годину',
- hh : relativeTimeWithPlural,
+ hh : uk__relativeTimeWithPlural,
d : 'день',
- dd : relativeTimeWithPlural,
+ dd : uk__relativeTimeWithPlural,
M : 'місяць',
- MM : relativeTimeWithPlural,
+ MM : uk__relativeTimeWithPlural,
y : 'рік',
- yy : relativeTimeWithPlural
+ yy : uk__relativeTimeWithPlural
},
-
// M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-
+ meridiemParse: /ночі|ранку|дня|вечора/,
+ isPM: function (input) {
+ return /^(дня|вечора)$/.test(input);
+ },
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'ночі';
@@ -8805,7 +9401,7 @@
return 'вечора';
}
},
-
+ ordinalParse: /\d{1,2}-(й|го)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
@@ -8820,21 +9416,17 @@
return number;
}
},
-
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : uzbek (uz)
-// author : Sardor Muminov : https://github.com/muminoff
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('uz', {
+
+ //! moment.js locale configuration
+ //! locale : uzbek (uz)
+ //! author : Sardor Muminov : https://github.com/muminoff
+
+ var uz = _moment__default.defineLocale('uz', {
months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
@@ -8842,6 +9434,7 @@
weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY LT',
@@ -8875,15 +9468,12 @@
doy : 7 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : vietnamese (vi)
-// author : Bang Nguyen : https://github.com/bangnk
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('vi', {
+
+ //! moment.js locale configuration
+ //! locale : vietnamese (vi)
+ //! author : Bang Nguyen : https://github.com/bangnk
+
+ var vi = _moment__default.defineLocale('vi', {
months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
@@ -8891,6 +9481,7 @@
weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
longDateFormat : {
LT : 'HH:mm',
+ LTS : 'LT:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM [năm] YYYY',
LLL : 'D MMMM [năm] YYYY LT',
@@ -8923,6 +9514,7 @@
y : 'một năm',
yy : '%d năm'
},
+ ordinalParse: /\d{1,2}/,
ordinal : function (number) {
return number;
},
@@ -8931,23 +9523,21 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : chinese (zh-cn)
-// author : suupic : https://github.com/suupic
-// author : Zeno Zeng : https://github.com/zenozeng
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('zh-cn', {
+
+ //! moment.js locale configuration
+ //! locale : chinese (zh-cn)
+ //! author : suupic : https://github.com/suupic
+ //! author : Zeno Zeng : https://github.com/zenozeng
+
+ var zh_cn = _moment__default.defineLocale('zh-cn', {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
- LT : 'Ah点mm',
+ LT : 'Ah点mm分',
+ LTS : 'Ah点m分s秒',
L : 'YYYY-MM-DD',
LL : 'YYYY年MMMD日',
LLL : 'YYYY年MMMD日LT',
@@ -8957,6 +9547,21 @@
lll : 'YYYY年MMMD日LT',
llll : 'YYYY年MMMD日ddddLT'
},
+ meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+ meridiemHour: function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === '凌晨' || meridiem === '早上' ||
+ meridiem === '上午') {
+ return hour;
+ } else if (meridiem === '下午' || meridiem === '晚上') {
+ return hour + 12;
+ } else {
+ // '中午'
+ return hour >= 11 ? hour : hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 600) {
@@ -8985,18 +9590,19 @@
},
nextWeek : function () {
var startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
+ startOfWeek = _moment__default().startOf('week');
prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
lastWeek : function () {
var startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
+ startOfWeek = _moment__default().startOf('week');
prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
sameElse : 'LL'
},
+ ordinalParse: /\d{1,2}(日|月|周)/,
ordinal : function (number, period) {
switch (period) {
case 'd':
@@ -9016,16 +9622,16 @@
future : '%s内',
past : '%s前',
s : '几秒',
- m : '1分钟',
- mm : '%d分钟',
- h : '1小时',
- hh : '%d小时',
- d : '1天',
- dd : '%d天',
- M : '1个月',
- MM : '%d个月',
- y : '1年',
- yy : '%d年'
+ m : '1 分钟',
+ mm : '%d 分钟',
+ h : '1 小时',
+ hh : '%d 小时',
+ d : '1 天',
+ dd : '%d 天',
+ M : '1 个月',
+ MM : '%d 个月',
+ y : '1 年',
+ yy : '%d 年'
},
week : {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
@@ -9033,22 +9639,20 @@
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
-}));
-// moment.js locale configuration
-// locale : traditional chinese (zh-tw)
-// author : Ben : https://github.com/ben-lin
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.defineLocale('zh-tw', {
+
+ //! moment.js locale configuration
+ //! locale : traditional chinese (zh-tw)
+ //! author : Ben : https://github.com/ben-lin
+
+ var zh_tw = _moment__default.defineLocale('zh-tw', {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
- LT : 'Ah點mm',
+ LT : 'Ah點mm分',
+ LTS : 'Ah點m分s秒',
L : 'YYYY年MMMD日',
LL : 'YYYY年MMMD日',
LLL : 'YYYY年MMMD日LT',
@@ -9058,6 +9662,19 @@
lll : 'YYYY年MMMD日LT',
llll : 'YYYY年MMMD日ddddLT'
},
+ meridiemParse: /早上|上午|中午|下午|晚上/,
+ meridiemHour : function (hour, meridiem) {
+ if (hour === 12) {
+ hour = 0;
+ }
+ if (meridiem === '早上' || meridiem === '上午') {
+ return hour;
+ } else if (meridiem === '中午') {
+ return hour >= 11 ? hour : hour + 12;
+ } else if (meridiem === '下午' || meridiem === '晚上') {
+ return hour + 12;
+ }
+ },
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 900) {
@@ -9080,6 +9697,7 @@
lastWeek : '[上]ddddLT',
sameElse : 'L'
},
+ ordinalParse: /\d{1,2}(日|月|週)/,
ordinal : function (number, period) {
switch (period) {
case 'd' :
@@ -9111,46 +9729,9 @@
yy : '%d年'
}
});
-}));
-
- moment.locale('en');
+ var moment_with_locales = _moment__default;
- /************************************
- Exposing Moment
- ************************************/
+ return moment_with_locales;
- function makeGlobal(shouldDeprecate) {
- /*global ender:false */
- if (typeof ender !== 'undefined') {
- return;
- }
- oldGlobalMoment = globalScope.moment;
- if (shouldDeprecate) {
- globalScope.moment = deprecate(
- 'Accessing Moment through the global scope is ' +
- 'deprecated, and will be removed in an upcoming ' +
- 'release.',
- moment);
- } else {
- globalScope.moment = moment;
- }
- }
-
- // CommonJS module is defined
- if (hasModule) {
- module.exports = moment;
- } else if (typeof define === 'function' && define.amd) {
- define('moment', function (require, exports, module) {
- if (module.config && module.config() && module.config().noGlobal === true) {
- // release the global variable
- globalScope.moment = oldGlobalMoment;
- }
-
- return moment;
- });
- makeGlobal(true);
- } else {
- makeGlobal();
- }
-}).call(this);
+})); \ No newline at end of file
diff --git a/lib/base.php b/lib/base.php
index fde67839560..299970e269c 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -835,7 +835,9 @@ class OC {
// Check if ownCloud is installed or in maintenance (update) mode
if (!$systemConfig->getValue('installed', false)) {
\OC::$server->getSession()->clear();
- $setupHelper = new OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults());
+ $setupHelper = new OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(),
+ \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(),
+ \OC::$server->getSecureRandom());
$controller = new OC\Core\Setup\Controller($setupHelper);
$controller->run($_POST);
exit();
diff --git a/lib/l10n/ar.js b/lib/l10n/ar.js
index 48fa1ef0f84..7b47710e6ea 100644
--- a/lib/l10n/ar.js
+++ b/lib/l10n/ar.js
@@ -26,9 +26,8 @@ OC.L10N.register(
"%s enter the database username." : "%s ادخل اسم المستخدم الخاص بقاعدة البيانات.",
"%s enter the database name." : "%s ادخل اسم فاعدة البيانات",
"%s you may not use dots in the database name" : "%s لا يسمح لك باستخدام نقطه (.) في اسم قاعدة البيانات",
- "MS SQL username and/or password not valid: %s" : "اسم المستخدم و/أو كلمة المرور لنظام MS SQL غير صحيح : %s",
- "You need to enter either an existing account or the administrator." : "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير.",
"MySQL/MariaDB username and/or password not valid" : "اسم مستخدم أو كلمة مرور MySQL/MariaDB غير صحيحين",
+ "You need to enter either an existing account or the administrator." : "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير.",
"DB Error: \"%s\"" : "خطأ في قواعد البيانات : \"%s\"",
"Offending command was: \"%s\"" : "الأمر المخالف كان : \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "مستخدم MySQL/MariaDB '%s'@'localhost' موجود مسبقا",
diff --git a/lib/l10n/ar.json b/lib/l10n/ar.json
index 16ba66ec65a..5dbb256d8de 100644
--- a/lib/l10n/ar.json
+++ b/lib/l10n/ar.json
@@ -24,9 +24,8 @@
"%s enter the database username." : "%s ادخل اسم المستخدم الخاص بقاعدة البيانات.",
"%s enter the database name." : "%s ادخل اسم فاعدة البيانات",
"%s you may not use dots in the database name" : "%s لا يسمح لك باستخدام نقطه (.) في اسم قاعدة البيانات",
- "MS SQL username and/or password not valid: %s" : "اسم المستخدم و/أو كلمة المرور لنظام MS SQL غير صحيح : %s",
- "You need to enter either an existing account or the administrator." : "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير.",
"MySQL/MariaDB username and/or password not valid" : "اسم مستخدم أو كلمة مرور MySQL/MariaDB غير صحيحين",
+ "You need to enter either an existing account or the administrator." : "انت بحاجة لكتابة اسم مستخدم موجود أو حساب المدير.",
"DB Error: \"%s\"" : "خطأ في قواعد البيانات : \"%s\"",
"Offending command was: \"%s\"" : "الأمر المخالف كان : \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "مستخدم MySQL/MariaDB '%s'@'localhost' موجود مسبقا",
diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js
index 65fc143fbe4..84f56543087 100644
--- a/lib/l10n/ast.js
+++ b/lib/l10n/ast.js
@@ -45,9 +45,8 @@ OC.L10N.register(
"%s enter the database username." : "%s introducir l'usuariu de la base de datos.",
"%s enter the database name." : "%s introducir nome de la base de datos.",
"%s you may not use dots in the database name" : "%s nun pues usar puntos nel nome de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Nome d'usuariu o contraseña MS SQL non válidos: %s",
- "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
"MySQL/MariaDB username and/or password not valid" : "Nome d'usuariu o contraseña MySQL/MariaDB non válidos",
+ "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
"DB Error: \"%s\"" : "Fallu BD: \"%s\"",
"Offending command was: \"%s\"" : "Comandu infractor: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "usuariu MySQL/MariaDB '%s'@'localhost' yá esiste.",
diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json
index 675451858e9..2cfbfa3c40c 100644
--- a/lib/l10n/ast.json
+++ b/lib/l10n/ast.json
@@ -43,9 +43,8 @@
"%s enter the database username." : "%s introducir l'usuariu de la base de datos.",
"%s enter the database name." : "%s introducir nome de la base de datos.",
"%s you may not use dots in the database name" : "%s nun pues usar puntos nel nome de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Nome d'usuariu o contraseña MS SQL non válidos: %s",
- "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
"MySQL/MariaDB username and/or password not valid" : "Nome d'usuariu o contraseña MySQL/MariaDB non válidos",
+ "You need to enter either an existing account or the administrator." : "Tienes d'inxertar una cuenta esistente o la del alministrador.",
"DB Error: \"%s\"" : "Fallu BD: \"%s\"",
"Offending command was: \"%s\"" : "Comandu infractor: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "usuariu MySQL/MariaDB '%s'@'localhost' yá esiste.",
diff --git a/lib/l10n/az.js b/lib/l10n/az.js
index fa7a457a1c2..36c1c342595 100644
--- a/lib/l10n/az.js
+++ b/lib/l10n/az.js
@@ -24,7 +24,6 @@ OC.L10N.register(
"Unknown user" : "Istifadəçi tanınmır ",
"%s enter the database username." : "Verilənlər bazası istifadəçi adını %s daxil et.",
"%s enter the database name." : "Verilənlər bazası adını %s daxil et.",
- "MS SQL username and/or password not valid: %s" : "MS SQL istifadəçi adı və/ya şifrəsi düzgün deyil : %s",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB istifadəçi adı və/ya şifrəsi düzgün deyil :",
"DB Error: \"%s\"" : "DB səhvi: \"%s\"",
"Drop this user from MySQL/MariaDB" : "Bu istifadəçini MySQL/MariaDB-dən sil",
diff --git a/lib/l10n/az.json b/lib/l10n/az.json
index 0b10e9b3794..ec86f64ae80 100644
--- a/lib/l10n/az.json
+++ b/lib/l10n/az.json
@@ -22,7 +22,6 @@
"Unknown user" : "Istifadəçi tanınmır ",
"%s enter the database username." : "Verilənlər bazası istifadəçi adını %s daxil et.",
"%s enter the database name." : "Verilənlər bazası adını %s daxil et.",
- "MS SQL username and/or password not valid: %s" : "MS SQL istifadəçi adı və/ya şifrəsi düzgün deyil : %s",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB istifadəçi adı və/ya şifrəsi düzgün deyil :",
"DB Error: \"%s\"" : "DB səhvi: \"%s\"",
"Drop this user from MySQL/MariaDB" : "Bu istifadəçini MySQL/MariaDB-dən sil",
diff --git a/lib/l10n/bg_BG.js b/lib/l10n/bg_BG.js
index fd78bc865c3..62ae863e33a 100644
--- a/lib/l10n/bg_BG.js
+++ b/lib/l10n/bg_BG.js
@@ -52,9 +52,8 @@ OC.L10N.register(
"%s enter the database username." : "%s въведи потребителско име за базата данни.",
"%s enter the database name." : "%s въведи име на базата данни.",
"%s you may not use dots in the database name" : "%s, не може да ползваш точки в името на базата данни.",
- "MS SQL username and/or password not valid: %s" : "Невалидно MS SQL потребителско име и/или парола: %s.",
- "You need to enter either an existing account or the administrator." : "Необходимо е да въведеш съществуващ профил или като администратор.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB потребителското име и/или паролата са невалидни.",
+ "You need to enter either an existing account or the administrator." : "Необходимо е да въведеш съществуващ профил или като администратор.",
"DB Error: \"%s\"" : "Грешка в базата данни: \"%s\".",
"Offending command was: \"%s\"" : "Проблемната команда беше: \"%s\".",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB потребител '%s'@'localhost' вече съществува.",
diff --git a/lib/l10n/bg_BG.json b/lib/l10n/bg_BG.json
index 51b5d562bbd..a68df436b81 100644
--- a/lib/l10n/bg_BG.json
+++ b/lib/l10n/bg_BG.json
@@ -50,9 +50,8 @@
"%s enter the database username." : "%s въведи потребителско име за базата данни.",
"%s enter the database name." : "%s въведи име на базата данни.",
"%s you may not use dots in the database name" : "%s, не може да ползваш точки в името на базата данни.",
- "MS SQL username and/or password not valid: %s" : "Невалидно MS SQL потребителско име и/или парола: %s.",
- "You need to enter either an existing account or the administrator." : "Необходимо е да въведеш съществуващ профил или като администратор.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB потребителското име и/или паролата са невалидни.",
+ "You need to enter either an existing account or the administrator." : "Необходимо е да въведеш съществуващ профил или като администратор.",
"DB Error: \"%s\"" : "Грешка в базата данни: \"%s\".",
"Offending command was: \"%s\"" : "Проблемната команда беше: \"%s\".",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB потребител '%s'@'localhost' вече съществува.",
diff --git a/lib/l10n/ca.js b/lib/l10n/ca.js
index d7c908fee30..cd61c04b0a1 100644
--- a/lib/l10n/ca.js
+++ b/lib/l10n/ca.js
@@ -44,9 +44,8 @@ OC.L10N.register(
"%s enter the database username." : "%s escriviu el nom d'usuari de la base de dades.",
"%s enter the database name." : "%s escriviu el nom de la base de dades.",
"%s you may not use dots in the database name" : "%s no podeu usar punts en el nom de la base de dades",
- "MS SQL username and/or password not valid: %s" : "Nom d'usuari i/o contrasenya MS SQL no vàlids: %s",
- "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
"MySQL/MariaDB username and/or password not valid" : "El nom d'usuari i/o la contrasenya de MySQL/MariaDB no són vàlids",
+ "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
"DB Error: \"%s\"" : "Error DB: \"%s\"",
"Offending command was: \"%s\"" : "L'ordre en conflicte és: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'usuari MySQL/MariaDB '%s'@'localhost' ja existeix.",
diff --git a/lib/l10n/ca.json b/lib/l10n/ca.json
index 0622ea4e2eb..8341138d23f 100644
--- a/lib/l10n/ca.json
+++ b/lib/l10n/ca.json
@@ -42,9 +42,8 @@
"%s enter the database username." : "%s escriviu el nom d'usuari de la base de dades.",
"%s enter the database name." : "%s escriviu el nom de la base de dades.",
"%s you may not use dots in the database name" : "%s no podeu usar punts en el nom de la base de dades",
- "MS SQL username and/or password not valid: %s" : "Nom d'usuari i/o contrasenya MS SQL no vàlids: %s",
- "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
"MySQL/MariaDB username and/or password not valid" : "El nom d'usuari i/o la contrasenya de MySQL/MariaDB no són vàlids",
+ "You need to enter either an existing account or the administrator." : "Heu d'escriure un compte existent o el d'administrador.",
"DB Error: \"%s\"" : "Error DB: \"%s\"",
"Offending command was: \"%s\"" : "L'ordre en conflicte és: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'usuari MySQL/MariaDB '%s'@'localhost' ja existeix.",
diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js
index da6cb13a00e..8c5f68e5e7e 100644
--- a/lib/l10n/cs_CZ.js
+++ b/lib/l10n/cs_CZ.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "Zadejte uživatelské jméno %s databáze.",
"%s enter the database name." : "Zadejte název databáze pro %s databáze.",
"%s you may not use dots in the database name" : "V názvu databáze %s nesmíte používat tečky.",
- "MS SQL username and/or password not valid: %s" : "Uživatelské jméno či heslo MSSQL není platné: %s",
- "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB uživatelské jméno a/nebo heslo je neplatné",
+ "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
"DB Error: \"%s\"" : "Chyba databáze: \"%s\"",
"Offending command was: \"%s\"" : "Příslušný příkaz byl: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB uživatel '%s'@'localhost' již existuje.",
diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json
index c493b357d35..6a4e3556402 100644
--- a/lib/l10n/cs_CZ.json
+++ b/lib/l10n/cs_CZ.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "Zadejte uživatelské jméno %s databáze.",
"%s enter the database name." : "Zadejte název databáze pro %s databáze.",
"%s you may not use dots in the database name" : "V názvu databáze %s nesmíte používat tečky.",
- "MS SQL username and/or password not valid: %s" : "Uživatelské jméno či heslo MSSQL není platné: %s",
- "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB uživatelské jméno a/nebo heslo je neplatné",
+ "You need to enter either an existing account or the administrator." : "Musíte zadat existující účet či správce.",
"DB Error: \"%s\"" : "Chyba databáze: \"%s\"",
"Offending command was: \"%s\"" : "Příslušný příkaz byl: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB uživatel '%s'@'localhost' již existuje.",
diff --git a/lib/l10n/cy_GB.js b/lib/l10n/cy_GB.js
index 79f51f98af8..316c4560a9e 100644
--- a/lib/l10n/cy_GB.js
+++ b/lib/l10n/cy_GB.js
@@ -17,7 +17,6 @@ OC.L10N.register(
"%s enter the database username." : "%s rhowch enw defnyddiwr y gronfa ddata.",
"%s enter the database name." : "%s rhowch enw'r gronfa ddata.",
"%s you may not use dots in the database name" : "%s does dim hawl defnyddio dot yn enw'r gronfa ddata",
- "MS SQL username and/or password not valid: %s" : "Enw a/neu gyfrinair MS SQL annilys: %s",
"You need to enter either an existing account or the administrator." : "Rhaid i chi naill ai gyflwyno cyfrif presennol neu'r gweinyddwr.",
"DB Error: \"%s\"" : "Gwall DB: \"%s\"",
"Offending command was: \"%s\"" : "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\"",
diff --git a/lib/l10n/cy_GB.json b/lib/l10n/cy_GB.json
index 8290a0ea0e4..495a348e385 100644
--- a/lib/l10n/cy_GB.json
+++ b/lib/l10n/cy_GB.json
@@ -15,7 +15,6 @@
"%s enter the database username." : "%s rhowch enw defnyddiwr y gronfa ddata.",
"%s enter the database name." : "%s rhowch enw'r gronfa ddata.",
"%s you may not use dots in the database name" : "%s does dim hawl defnyddio dot yn enw'r gronfa ddata",
- "MS SQL username and/or password not valid: %s" : "Enw a/neu gyfrinair MS SQL annilys: %s",
"You need to enter either an existing account or the administrator." : "Rhaid i chi naill ai gyflwyno cyfrif presennol neu'r gweinyddwr.",
"DB Error: \"%s\"" : "Gwall DB: \"%s\"",
"Offending command was: \"%s\"" : "Y gorchymyn wnaeth beri tramgwydd oedd: \"%s\"",
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index c086fd058ed..d7580be42e3 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s indtast database brugernavnet.",
"%s enter the database name." : "%s indtast database navnet.",
"%s you may not use dots in the database name" : "%s du må ikke bruge punktummer i databasenavnet.",
- "MS SQL username and/or password not valid: %s" : "MS SQL brugernavn og/eller adgangskode ikke er gyldigt: %s",
- "You need to enter either an existing account or the administrator." : "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.",
"MySQL/MariaDB username and/or password not valid" : "Ugyldigt MySQL/MariaDB brugernavn og/eller kodeord ",
+ "You need to enter either an existing account or the administrator." : "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.",
"DB Error: \"%s\"" : "Databasefejl: \"%s\"",
"Offending command was: \"%s\"" : "Fejlende kommando var: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB bruger '%s'@'localhost' eksistere allerede.",
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index 15e48886c46..59e5b0b0498 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s indtast database brugernavnet.",
"%s enter the database name." : "%s indtast database navnet.",
"%s you may not use dots in the database name" : "%s du må ikke bruge punktummer i databasenavnet.",
- "MS SQL username and/or password not valid: %s" : "MS SQL brugernavn og/eller adgangskode ikke er gyldigt: %s",
- "You need to enter either an existing account or the administrator." : "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.",
"MySQL/MariaDB username and/or password not valid" : "Ugyldigt MySQL/MariaDB brugernavn og/eller kodeord ",
+ "You need to enter either an existing account or the administrator." : "Du bliver nødt til at indtaste en eksisterende bruger eller en administrator.",
"DB Error: \"%s\"" : "Databasefejl: \"%s\"",
"Offending command was: \"%s\"" : "Fejlende kommando var: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB bruger '%s'@'localhost' eksistere allerede.",
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index c094d461ecd..a99213f8ac3 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s gib den Datenbank-Benutzernamen an.",
"%s enter the database name." : "%s gib den Datenbanknamen an.",
"%s you may not use dots in the database name" : "%s Der Datenbankname darf keine Punkte enthalten",
- "MS SQL username and/or password not valid: %s" : "MS SQL-Benutzername und/oder -Passwort ungültig: %s",
- "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-Benutzername und/oder -Passwort sind nicht gültig",
+ "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
"DB Error: \"%s\"" : "DB-Fehler: „%s“",
"Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB Benutzer '%s'@'localhost' existiert bereits.",
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index f8097ba0bf9..8cf5a7ebbd0 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s gib den Datenbank-Benutzernamen an.",
"%s enter the database name." : "%s gib den Datenbanknamen an.",
"%s you may not use dots in the database name" : "%s Der Datenbankname darf keine Punkte enthalten",
- "MS SQL username and/or password not valid: %s" : "MS SQL-Benutzername und/oder -Passwort ungültig: %s",
- "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-Benutzername und/oder -Passwort sind nicht gültig",
+ "You need to enter either an existing account or the administrator." : "Du musst entweder ein existierendes Benutzerkonto oder das Administratorenkonto angeben.",
"DB Error: \"%s\"" : "DB-Fehler: „%s“",
"Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB Benutzer '%s'@'localhost' existiert bereits.",
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index ec4fd632552..af8eb24550e 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s geben Sie den Datenbank-Benutzernamen an.",
"%s enter the database name." : "%s geben Sie den Datenbank-Namen an.",
"%s you may not use dots in the database name" : "%s Der Datenbank-Name darf keine Punkte enthalten",
- "MS SQL username and/or password not valid: %s" : "MS SQL-Benutzername und/oder -Passwort ungültig: %s",
- "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-Benutzername und/oder -Passwort sind nicht gültig",
+ "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.",
"DB Error: \"%s\"" : "DB-Fehler: „%s“",
"Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB Benutzer '%s'@'localhost' existiert bereits.",
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 44d5cab7ca3..2d4191141db 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s geben Sie den Datenbank-Benutzernamen an.",
"%s enter the database name." : "%s geben Sie den Datenbank-Namen an.",
"%s you may not use dots in the database name" : "%s Der Datenbank-Name darf keine Punkte enthalten",
- "MS SQL username and/or password not valid: %s" : "MS SQL-Benutzername und/oder -Passwort ungültig: %s",
- "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-Benutzername und/oder -Passwort sind nicht gültig",
+ "You need to enter either an existing account or the administrator." : "Sie müssen entweder ein existierendes Benutzerkonto oder das Administratoren-Konto angeben.",
"DB Error: \"%s\"" : "DB-Fehler: „%s“",
"Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB Benutzer '%s'@'localhost' existiert bereits.",
diff --git a/lib/l10n/el.js b/lib/l10n/el.js
index d687c1eb851..213869e7758 100644
--- a/lib/l10n/el.js
+++ b/lib/l10n/el.js
@@ -63,9 +63,8 @@ OC.L10N.register(
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
- "MS SQL username and/or password not valid: %s" : "Το όνομα χρήστη και/ή ο κωδικός της MS SQL δεν είναι έγκυρα: %s",
- "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
"MySQL/MariaDB username and/or password not valid" : "Μη έγκυρο όνομα χρήστη ή/και συνθηματικό της MySQL/MariaDB",
+ "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
"DB Error: \"%s\"" : "Σφάλμα Βάσης Δεδομένων: \"%s\"",
"Offending command was: \"%s\"" : "Η εντολη παραβατικοτητας ηταν: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Υπάρχει ήδη ο χρήστης '%s'@'localhost' της MySQL/MariaDB",
diff --git a/lib/l10n/el.json b/lib/l10n/el.json
index 05ca5aa4a2f..4b2527a396c 100644
--- a/lib/l10n/el.json
+++ b/lib/l10n/el.json
@@ -61,9 +61,8 @@
"%s enter the database username." : "%s εισάγετε το όνομα χρήστη της βάσης δεδομένων.",
"%s enter the database name." : "%s εισάγετε το όνομα της βάσης δεδομένων.",
"%s you may not use dots in the database name" : "%s μάλλον δεν χρησιμοποιείτε τελείες στο όνομα της βάσης δεδομένων",
- "MS SQL username and/or password not valid: %s" : "Το όνομα χρήστη και/ή ο κωδικός της MS SQL δεν είναι έγκυρα: %s",
- "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
"MySQL/MariaDB username and/or password not valid" : "Μη έγκυρο όνομα χρήστη ή/και συνθηματικό της MySQL/MariaDB",
+ "You need to enter either an existing account or the administrator." : "Χρειάζεται να εισάγετε είτε έναν υπάρχον λογαριασμό ή του διαχειριστή.",
"DB Error: \"%s\"" : "Σφάλμα Βάσης Δεδομένων: \"%s\"",
"Offending command was: \"%s\"" : "Η εντολη παραβατικοτητας ηταν: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Υπάρχει ήδη ο χρήστης '%s'@'localhost' της MySQL/MariaDB",
diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js
index f14cbbfdfea..e388b0d1172 100644
--- a/lib/l10n/en_GB.js
+++ b/lib/l10n/en_GB.js
@@ -63,9 +63,8 @@ OC.L10N.register(
"%s enter the database username." : "%s enter the database username.",
"%s enter the database name." : "%s enter the database name.",
"%s you may not use dots in the database name" : "%s you may not use dots in the database name",
- "MS SQL username and/or password not valid: %s" : "MS SQL username and/or password not valid: %s",
- "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB username and/or password not valid",
+ "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
"DB Error: \"%s\"" : "DB Error: \"%s\"",
"Offending command was: \"%s\"" : "Offending command was: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB user '%s'@'localhost' exists already.",
diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json
index d50562272d0..b15f5c22147 100644
--- a/lib/l10n/en_GB.json
+++ b/lib/l10n/en_GB.json
@@ -61,9 +61,8 @@
"%s enter the database username." : "%s enter the database username.",
"%s enter the database name." : "%s enter the database name.",
"%s you may not use dots in the database name" : "%s you may not use dots in the database name",
- "MS SQL username and/or password not valid: %s" : "MS SQL username and/or password not valid: %s",
- "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB username and/or password not valid",
+ "You need to enter either an existing account or the administrator." : "You need to enter either an existing account or the administrator.",
"DB Error: \"%s\"" : "DB Error: \"%s\"",
"Offending command was: \"%s\"" : "Offending command was: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB user '%s'@'localhost' exists already.",
diff --git a/lib/l10n/eo.js b/lib/l10n/eo.js
index b672c053740..429936513b6 100644
--- a/lib/l10n/eo.js
+++ b/lib/l10n/eo.js
@@ -37,7 +37,6 @@ OC.L10N.register(
"%s enter the database username." : "%s enigu la uzantonomon de la datumbazo.",
"%s enter the database name." : "%s enigu la nomon de la datumbazo.",
"%s you may not use dots in the database name" : "%s vi ne povas uzi punktojn en la nomo de la datumbazo",
- "MS SQL username and/or password not valid: %s" : "La uzantonomo de MS SQL aŭ la pasvorto ne validas: %s",
"MySQL/MariaDB username and/or password not valid" : "La MySQL/MariaDB-uzantonomo kajaŭ pasvorto ne validas.",
"DB Error: \"%s\"" : "Datumbaza eraro: “%s”",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "La MySQL/MariaDB-uzanto '%s'@'localhost' jam ekzistas.",
diff --git a/lib/l10n/eo.json b/lib/l10n/eo.json
index d3877595272..ede9a189486 100644
--- a/lib/l10n/eo.json
+++ b/lib/l10n/eo.json
@@ -35,7 +35,6 @@
"%s enter the database username." : "%s enigu la uzantonomon de la datumbazo.",
"%s enter the database name." : "%s enigu la nomon de la datumbazo.",
"%s you may not use dots in the database name" : "%s vi ne povas uzi punktojn en la nomo de la datumbazo",
- "MS SQL username and/or password not valid: %s" : "La uzantonomo de MS SQL aŭ la pasvorto ne validas: %s",
"MySQL/MariaDB username and/or password not valid" : "La MySQL/MariaDB-uzantonomo kajaŭ pasvorto ne validas.",
"DB Error: \"%s\"" : "Datumbaza eraro: “%s”",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "La MySQL/MariaDB-uzanto '%s'@'localhost' jam ekzistas.",
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 71f3a8aa8bf..620a8e9eff5 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s ingresar el usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
"%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Usuario y/o contraseña de MS SQL no válidos: %s",
- "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"MySQL/MariaDB username and/or password not valid" : "Nombre de usuario y/o contraseña de MySQL/MariaDB inválidos",
+ "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"DB Error: \"%s\"" : "Error BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando infractor: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "El usuario de MySQL/MariaDB '%s'@'localhost' ya existe.",
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 1259ff53b49..226b89768e7 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s ingresar el usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
"%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Usuario y/o contraseña de MS SQL no válidos: %s",
- "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"MySQL/MariaDB username and/or password not valid" : "Nombre de usuario y/o contraseña de MySQL/MariaDB inválidos",
+ "You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"DB Error: \"%s\"" : "Error BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando infractor: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "El usuario de MySQL/MariaDB '%s'@'localhost' ya existe.",
diff --git a/lib/l10n/es_AR.js b/lib/l10n/es_AR.js
index b662e05e823..ea372e9fdd6 100644
--- a/lib/l10n/es_AR.js
+++ b/lib/l10n/es_AR.js
@@ -35,7 +35,6 @@ OC.L10N.register(
"%s enter the database username." : "%s Entrá el usuario de la base de datos",
"%s enter the database name." : "%s Entrá el nombre de la base de datos.",
"%s you may not use dots in the database name" : "%s no podés usar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Nombre de usuario y contraseña de MS SQL no son válidas: %s",
"You need to enter either an existing account or the administrator." : "Tenés que ingresar una cuenta existente o el administrador.",
"DB Error: \"%s\"" : "Error DB: \"%s\"",
"Offending command was: \"%s\"" : "El comando no comprendido es: \"%s\"",
diff --git a/lib/l10n/es_AR.json b/lib/l10n/es_AR.json
index 65852ea6351..bb0ee769129 100644
--- a/lib/l10n/es_AR.json
+++ b/lib/l10n/es_AR.json
@@ -33,7 +33,6 @@
"%s enter the database username." : "%s Entrá el usuario de la base de datos",
"%s enter the database name." : "%s Entrá el nombre de la base de datos.",
"%s you may not use dots in the database name" : "%s no podés usar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Nombre de usuario y contraseña de MS SQL no son válidas: %s",
"You need to enter either an existing account or the administrator." : "Tenés que ingresar una cuenta existente o el administrador.",
"DB Error: \"%s\"" : "Error DB: \"%s\"",
"Offending command was: \"%s\"" : "El comando no comprendido es: \"%s\"",
diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js
index 13dcbad5488..bfc9fb50b94 100644
--- a/lib/l10n/es_MX.js
+++ b/lib/l10n/es_MX.js
@@ -41,7 +41,6 @@ OC.L10N.register(
"%s enter the database username." : "%s ingresar el usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
"%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Usuario y/o contraseña de MS SQL no válidos: %s",
"You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"DB Error: \"%s\"" : "Error BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando infractor: \"%s\"",
diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json
index 0ab3bd211e2..ac64ac35141 100644
--- a/lib/l10n/es_MX.json
+++ b/lib/l10n/es_MX.json
@@ -39,7 +39,6 @@
"%s enter the database username." : "%s ingresar el usuario de la base de datos.",
"%s enter the database name." : "%s ingresar el nombre de la base de datos",
"%s you may not use dots in the database name" : "%s puede utilizar puntos en el nombre de la base de datos",
- "MS SQL username and/or password not valid: %s" : "Usuario y/o contraseña de MS SQL no válidos: %s",
"You need to enter either an existing account or the administrator." : "Tiene que ingresar una cuenta existente o la del administrador.",
"DB Error: \"%s\"" : "Error BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando infractor: \"%s\"",
diff --git a/lib/l10n/et_EE.js b/lib/l10n/et_EE.js
index 0329ffd9319..7f224210f81 100644
--- a/lib/l10n/et_EE.js
+++ b/lib/l10n/et_EE.js
@@ -48,9 +48,8 @@ OC.L10N.register(
"%s enter the database username." : "%s sisesta andmebaasi kasutajatunnus.",
"%s enter the database name." : "%s sisesta andmebaasi nimi.",
"%s you may not use dots in the database name" : "%s punktide kasutamine andmebaasi nimes pole lubatud",
- "MS SQL username and/or password not valid: %s" : "MS SQL kasutajatunnus ja/või parool pole õiged: %s",
- "You need to enter either an existing account or the administrator." : "Sisesta kas juba olemasolev konto või administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB kasutajatunnus ja/või parool pole õiged",
+ "You need to enter either an existing account or the administrator." : "Sisesta kas juba olemasolev konto või administrator.",
"DB Error: \"%s\"" : "Andmebaasi viga: \"%s\"",
"Offending command was: \"%s\"" : "Tõrkuv käsk oli: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB kasutaja '%s'@'localhost' on juba olemas.",
diff --git a/lib/l10n/et_EE.json b/lib/l10n/et_EE.json
index f4aec4e1c50..a4692185d70 100644
--- a/lib/l10n/et_EE.json
+++ b/lib/l10n/et_EE.json
@@ -46,9 +46,8 @@
"%s enter the database username." : "%s sisesta andmebaasi kasutajatunnus.",
"%s enter the database name." : "%s sisesta andmebaasi nimi.",
"%s you may not use dots in the database name" : "%s punktide kasutamine andmebaasi nimes pole lubatud",
- "MS SQL username and/or password not valid: %s" : "MS SQL kasutajatunnus ja/või parool pole õiged: %s",
- "You need to enter either an existing account or the administrator." : "Sisesta kas juba olemasolev konto või administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB kasutajatunnus ja/või parool pole õiged",
+ "You need to enter either an existing account or the administrator." : "Sisesta kas juba olemasolev konto või administrator.",
"DB Error: \"%s\"" : "Andmebaasi viga: \"%s\"",
"Offending command was: \"%s\"" : "Tõrkuv käsk oli: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB kasutaja '%s'@'localhost' on juba olemas.",
diff --git a/lib/l10n/eu.js b/lib/l10n/eu.js
index b9093d1bf41..4a0ffb3b893 100644
--- a/lib/l10n/eu.js
+++ b/lib/l10n/eu.js
@@ -54,9 +54,8 @@ OC.L10N.register(
"%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
"%s enter the database name." : "%s sartu datu basearen izena.",
"%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
- "MS SQL username and/or password not valid: %s" : "MS SQL erabiltzaile izena edota pasahitza ez dira egokiak: %s",
- "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB erabiltzaile edota pasahitza ez dira egokiak",
+ "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
"DB Error: \"%s\"" : "DB errorea: \"%s\"",
"Offending command was: \"%s\"" : "Errorea komando honek sortu du: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB '%s'@'localhost' erabiltzailea dagoeneko existitzen da.",
diff --git a/lib/l10n/eu.json b/lib/l10n/eu.json
index b921d8dd28b..631bc569732 100644
--- a/lib/l10n/eu.json
+++ b/lib/l10n/eu.json
@@ -52,9 +52,8 @@
"%s enter the database username." : "%s sartu datu basearen erabiltzaile izena.",
"%s enter the database name." : "%s sartu datu basearen izena.",
"%s you may not use dots in the database name" : "%s ezin duzu punturik erabili datu basearen izenean.",
- "MS SQL username and/or password not valid: %s" : "MS SQL erabiltzaile izena edota pasahitza ez dira egokiak: %s",
- "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB erabiltzaile edota pasahitza ez dira egokiak",
+ "You need to enter either an existing account or the administrator." : "Existitzen den kontu bat edo administradorearena jarri behar duzu.",
"DB Error: \"%s\"" : "DB errorea: \"%s\"",
"Offending command was: \"%s\"" : "Errorea komando honek sortu du: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB '%s'@'localhost' erabiltzailea dagoeneko existitzen da.",
diff --git a/lib/l10n/fa.js b/lib/l10n/fa.js
index bdfa8e3d87c..10c5c9b78cc 100644
--- a/lib/l10n/fa.js
+++ b/lib/l10n/fa.js
@@ -22,7 +22,6 @@ OC.L10N.register(
"%s enter the database username." : "%s نام کاربری پایگاه داده را وارد نمایید.",
"%s enter the database name." : "%s نام پایگاه داده را وارد نمایید.",
"%s you may not use dots in the database name" : "%s شما نباید از نقطه در نام پایگاه داده استفاده نمایید.",
- "MS SQL username and/or password not valid: %s" : "نام کاربری و / یا رمزعبور MS SQL معتبر نیست: %s",
"You need to enter either an existing account or the administrator." : "شما نیاز به وارد کردن یک حساب کاربری موجود یا حساب مدیریتی دارید.",
"DB Error: \"%s\"" : "خطای پایگاه داده: \"%s\"",
"Offending command was: \"%s\"" : "دستور متخلف عبارت است از: \"%s\"",
diff --git a/lib/l10n/fa.json b/lib/l10n/fa.json
index 5b4aab4b595..ee6b7669341 100644
--- a/lib/l10n/fa.json
+++ b/lib/l10n/fa.json
@@ -20,7 +20,6 @@
"%s enter the database username." : "%s نام کاربری پایگاه داده را وارد نمایید.",
"%s enter the database name." : "%s نام پایگاه داده را وارد نمایید.",
"%s you may not use dots in the database name" : "%s شما نباید از نقطه در نام پایگاه داده استفاده نمایید.",
- "MS SQL username and/or password not valid: %s" : "نام کاربری و / یا رمزعبور MS SQL معتبر نیست: %s",
"You need to enter either an existing account or the administrator." : "شما نیاز به وارد کردن یک حساب کاربری موجود یا حساب مدیریتی دارید.",
"DB Error: \"%s\"" : "خطای پایگاه داده: \"%s\"",
"Offending command was: \"%s\"" : "دستور متخلف عبارت است از: \"%s\"",
diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js
index 5724595dbda..39083305ae9 100644
--- a/lib/l10n/fi_FI.js
+++ b/lib/l10n/fi_FI.js
@@ -63,7 +63,6 @@ OC.L10N.register(
"%s enter the database username." : "%s anna tietokannan käyttäjätunnus.",
"%s enter the database name." : "%s anna tietokannan nimi.",
"%s you may not use dots in the database name" : "%s et voi käyttää pisteitä tietokannan nimessä",
- "MS SQL username and/or password not valid: %s" : "MS SQL -käyttäjätunnus ja/tai -salasana on väärin: %s",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-käyttäjätunnus ja/tai salasana on virheellinen",
"DB Error: \"%s\"" : "Tietokantavirhe: \"%s\"",
"Offending command was: \"%s\"" : "Loukkaava komento oli: \"%s\"",
diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json
index 223429b7f88..a9bb243d1ba 100644
--- a/lib/l10n/fi_FI.json
+++ b/lib/l10n/fi_FI.json
@@ -61,7 +61,6 @@
"%s enter the database username." : "%s anna tietokannan käyttäjätunnus.",
"%s enter the database name." : "%s anna tietokannan nimi.",
"%s you may not use dots in the database name" : "%s et voi käyttää pisteitä tietokannan nimessä",
- "MS SQL username and/or password not valid: %s" : "MS SQL -käyttäjätunnus ja/tai -salasana on väärin: %s",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-käyttäjätunnus ja/tai salasana on virheellinen",
"DB Error: \"%s\"" : "Tietokantavirhe: \"%s\"",
"Offending command was: \"%s\"" : "Loukkaava komento oli: \"%s\"",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 5743b7ff283..6c5eeaf6201 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -65,9 +65,8 @@ OC.L10N.register(
"%s enter the database username." : "%s entrez le nom d'utilisateur de la base de données.",
"%s enter the database name." : "%s entrez le nom de la base de données.",
"%s you may not use dots in the database name" : "%s vous ne pouvez pas utiliser de points dans le nom de la base de données",
- "MS SQL username and/or password not valid: %s" : "Nom d'utilisateur et/ou le mot de passe MS SQL non valide : %s",
- "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
"MySQL/MariaDB username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe MySQL/MariaDB non valide",
+ "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
"DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"",
"Offending command was: \"%s\"" : "La requête en cause est : \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'utilisateur MySQL/MariaDB '%s'@'localhost' existe déjà.",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index fa2881ca6aa..83abadc866f 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -63,9 +63,8 @@
"%s enter the database username." : "%s entrez le nom d'utilisateur de la base de données.",
"%s enter the database name." : "%s entrez le nom de la base de données.",
"%s you may not use dots in the database name" : "%s vous ne pouvez pas utiliser de points dans le nom de la base de données",
- "MS SQL username and/or password not valid: %s" : "Nom d'utilisateur et/ou le mot de passe MS SQL non valide : %s",
- "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
"MySQL/MariaDB username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe MySQL/MariaDB non valide",
+ "You need to enter either an existing account or the administrator." : "Vous devez spécifier le nom d'un compte existant, ou celui de l'administrateur.",
"DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"",
"Offending command was: \"%s\"" : "La requête en cause est : \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'utilisateur MySQL/MariaDB '%s'@'localhost' existe déjà.",
diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js
index 7ba4fff42ff..db549cbb36a 100644
--- a/lib/l10n/gl.js
+++ b/lib/l10n/gl.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s introduza o nome de usuario da base de datos",
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
- "MS SQL username and/or password not valid: %s" : "Nome de usuario e/ou contrasinal de MS SQL incorrecto: %s",
- "You need to enter either an existing account or the administrator." : "Deberá introducir unha conta existente ou o administrador.",
"MySQL/MariaDB username and/or password not valid" : "O nome e/ou o contrasinal do usuario de MySQL/MariaDB non é correcto",
+ "You need to enter either an existing account or the administrator." : "Deberá introducir unha conta existente ou o administrador.",
"DB Error: \"%s\"" : "Produciuse un erro na base de datos: «%s»",
"Offending command was: \"%s\"" : "A orde infractora foi: «%s»",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Xa existe o usuario «%s»@«localhost» no MySQL/MariaDB.",
diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json
index 57c29347f33..9c0260ca2ac 100644
--- a/lib/l10n/gl.json
+++ b/lib/l10n/gl.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s introduza o nome de usuario da base de datos",
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
- "MS SQL username and/or password not valid: %s" : "Nome de usuario e/ou contrasinal de MS SQL incorrecto: %s",
- "You need to enter either an existing account or the administrator." : "Deberá introducir unha conta existente ou o administrador.",
"MySQL/MariaDB username and/or password not valid" : "O nome e/ou o contrasinal do usuario de MySQL/MariaDB non é correcto",
+ "You need to enter either an existing account or the administrator." : "Deberá introducir unha conta existente ou o administrador.",
"DB Error: \"%s\"" : "Produciuse un erro na base de datos: «%s»",
"Offending command was: \"%s\"" : "A orde infractora foi: «%s»",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Xa existe o usuario «%s»@«localhost» no MySQL/MariaDB.",
diff --git a/lib/l10n/hr.js b/lib/l10n/hr.js
index c1fb29d4169..eabef9e3a52 100644
--- a/lib/l10n/hr.js
+++ b/lib/l10n/hr.js
@@ -49,9 +49,8 @@ OC.L10N.register(
"%s enter the database username." : "%s unesite naziva korisnika baze podataka.",
"%s enter the database name." : "%s unesite naziv baze podataka",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
- "MS SQL username and/or password not valid: %s" : "MS SQL korisničko ime i/ili lozinka neispravni: %s",
- "You need to enter either an existing account or the administrator." : "Trebate unijeti neki postojeći račun ili administratora.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB korisničko ime i/ili lozinka neispravni",
+ "You need to enter either an existing account or the administrator." : "Trebate unijeti neki postojeći račun ili administratora.",
"DB Error: \"%s\"" : "DB pogreška: \"%s\"",
"Offending command was: \"%s\"" : "Neispravna naredba je bila: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB korisnik '%s'@'localhost' već postoji.",
diff --git a/lib/l10n/hr.json b/lib/l10n/hr.json
index 4e22f203bf5..cacf151453d 100644
--- a/lib/l10n/hr.json
+++ b/lib/l10n/hr.json
@@ -47,9 +47,8 @@
"%s enter the database username." : "%s unesite naziva korisnika baze podataka.",
"%s enter the database name." : "%s unesite naziv baze podataka",
"%s you may not use dots in the database name" : "%s ne smijete koristiti točke u nazivu baze podataka",
- "MS SQL username and/or password not valid: %s" : "MS SQL korisničko ime i/ili lozinka neispravni: %s",
- "You need to enter either an existing account or the administrator." : "Trebate unijeti neki postojeći račun ili administratora.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB korisničko ime i/ili lozinka neispravni",
+ "You need to enter either an existing account or the administrator." : "Trebate unijeti neki postojeći račun ili administratora.",
"DB Error: \"%s\"" : "DB pogreška: \"%s\"",
"Offending command was: \"%s\"" : "Neispravna naredba je bila: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB korisnik '%s'@'localhost' već postoji.",
diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js
index d8c67ec5cdf..c90d9737cae 100644
--- a/lib/l10n/hu_HU.js
+++ b/lib/l10n/hu_HU.js
@@ -43,9 +43,8 @@ OC.L10N.register(
"%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.",
"%s enter the database name." : "%s adja meg az adatbázis nevét.",
"%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot",
- "MS SQL username and/or password not valid: %s" : "Az MS SQL felhasználónév és/vagy jelszó érvénytelen: %s",
- "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
"MySQL/MariaDB username and/or password not valid" : "A MySQL/MariaDB felhasználónév és/vagy jelszó nem megfelelő",
+ "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
"DB Error: \"%s\"" : "Adatbázis hiba: \"%s\"",
"Offending command was: \"%s\"" : "A hibát ez a parancs okozta: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "A MySQL/MariaDB felhasználó '%s'@'localhost' már létezik.",
diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json
index 8f281ecb3fe..773a06297b3 100644
--- a/lib/l10n/hu_HU.json
+++ b/lib/l10n/hu_HU.json
@@ -41,9 +41,8 @@
"%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.",
"%s enter the database name." : "%s adja meg az adatbázis nevét.",
"%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot",
- "MS SQL username and/or password not valid: %s" : "Az MS SQL felhasználónév és/vagy jelszó érvénytelen: %s",
- "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
"MySQL/MariaDB username and/or password not valid" : "A MySQL/MariaDB felhasználónév és/vagy jelszó nem megfelelő",
+ "You need to enter either an existing account or the administrator." : "Vagy egy létező felhasználó vagy az adminisztrátor bejelentkezési nevét kell megadnia",
"DB Error: \"%s\"" : "Adatbázis hiba: \"%s\"",
"Offending command was: \"%s\"" : "A hibát ez a parancs okozta: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "A MySQL/MariaDB felhasználó '%s'@'localhost' már létezik.",
diff --git a/lib/l10n/id.js b/lib/l10n/id.js
index 14355271356..3643a6a6ef7 100644
--- a/lib/l10n/id.js
+++ b/lib/l10n/id.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s masukkan nama pengguna basis data.",
"%s enter the database name." : "%s masukkan nama basis data.",
"%s you may not use dots in the database name" : "%s anda tidak boleh menggunakan karakter titik pada nama basis data",
- "MS SQL username and/or password not valid: %s" : "Nama pengguna dan/atau sandi MySQL tidak sah: %s",
- "You need to enter either an existing account or the administrator." : "Anda harus memasukkan akun yang sudah ada atau administrator.",
"MySQL/MariaDB username and/or password not valid" : "Nama pengguna dan/atau sandi MySQL/MariaDB tidak sah",
+ "You need to enter either an existing account or the administrator." : "Anda harus memasukkan akun yang sudah ada atau administrator.",
"DB Error: \"%s\"" : "Kesalahan Basis Data: \"%s\"",
"Offending command was: \"%s\"" : "Perintah yang bermasalah: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "'%s'@'localhost' pengguna MySQL/MariaDB sudah ada.",
diff --git a/lib/l10n/id.json b/lib/l10n/id.json
index ac6429bce9a..18135d0e470 100644
--- a/lib/l10n/id.json
+++ b/lib/l10n/id.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s masukkan nama pengguna basis data.",
"%s enter the database name." : "%s masukkan nama basis data.",
"%s you may not use dots in the database name" : "%s anda tidak boleh menggunakan karakter titik pada nama basis data",
- "MS SQL username and/or password not valid: %s" : "Nama pengguna dan/atau sandi MySQL tidak sah: %s",
- "You need to enter either an existing account or the administrator." : "Anda harus memasukkan akun yang sudah ada atau administrator.",
"MySQL/MariaDB username and/or password not valid" : "Nama pengguna dan/atau sandi MySQL/MariaDB tidak sah",
+ "You need to enter either an existing account or the administrator." : "Anda harus memasukkan akun yang sudah ada atau administrator.",
"DB Error: \"%s\"" : "Kesalahan Basis Data: \"%s\"",
"Offending command was: \"%s\"" : "Perintah yang bermasalah: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "'%s'@'localhost' pengguna MySQL/MariaDB sudah ada.",
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index 7f7335a9341..7b86d4d30b0 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s digita il nome utente del database.",
"%s enter the database name." : "%s digita il nome del database.",
"%s you may not use dots in the database name" : "%s non dovresti utilizzare punti nel nome del database",
- "MS SQL username and/or password not valid: %s" : "Nome utente e/o password MS SQL non validi: %s",
- "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
"MySQL/MariaDB username and/or password not valid" : "Nome utente e/o password di MySQL/MariaDB non validi",
+ "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
"DB Error: \"%s\"" : "Errore DB: \"%s\"",
"Offending command was: \"%s\"" : "Il comando non consentito era: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'utente MySQL/MariaDB '%s'@'localhost' esiste già.",
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 14b8b05d98c..47d3dd8fbca 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s digita il nome utente del database.",
"%s enter the database name." : "%s digita il nome del database.",
"%s you may not use dots in the database name" : "%s non dovresti utilizzare punti nel nome del database",
- "MS SQL username and/or password not valid: %s" : "Nome utente e/o password MS SQL non validi: %s",
- "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
"MySQL/MariaDB username and/or password not valid" : "Nome utente e/o password di MySQL/MariaDB non validi",
+ "You need to enter either an existing account or the administrator." : "È necessario inserire un account esistente o l'amministratore.",
"DB Error: \"%s\"" : "Errore DB: \"%s\"",
"Offending command was: \"%s\"" : "Il comando non consentito era: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "L'utente MySQL/MariaDB '%s'@'localhost' esiste già.",
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index ca7558b7141..0e74416c8e7 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s のデータベースのユーザー名を入力してください。",
"%s enter the database name." : "%s のデータベース名を入力してください。",
"%s you may not use dots in the database name" : "%s ではデータベース名にドットを利用できないかもしれません。",
- "MS SQL username and/or password not valid: %s" : "MS SQL Serverのユーザー名/パスワードが正しくありません: %s",
- "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB のユーザー名及び/またはパスワードが無効",
+ "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
"DB Error: \"%s\"" : "DBエラー: \"%s\"",
"Offending command was: \"%s\"" : "違反コマンド: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB のユーザー '%s'@'localhost' はすでに存在します。",
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index b2020de8590..977342549dd 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s のデータベースのユーザー名を入力してください。",
"%s enter the database name." : "%s のデータベース名を入力してください。",
"%s you may not use dots in the database name" : "%s ではデータベース名にドットを利用できないかもしれません。",
- "MS SQL username and/or password not valid: %s" : "MS SQL Serverのユーザー名/パスワードが正しくありません: %s",
- "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB のユーザー名及び/またはパスワードが無効",
+ "You need to enter either an existing account or the administrator." : "既存のアカウントもしくは管理者のどちらかを入力する必要があります。",
"DB Error: \"%s\"" : "DBエラー: \"%s\"",
"Offending command was: \"%s\"" : "違反コマンド: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB のユーザー '%s'@'localhost' はすでに存在します。",
diff --git a/lib/l10n/ka_GE.js b/lib/l10n/ka_GE.js
index 62d1058d94e..7a97fd05c75 100644
--- a/lib/l10n/ka_GE.js
+++ b/lib/l10n/ka_GE.js
@@ -17,7 +17,6 @@ OC.L10N.register(
"%s enter the database username." : "%s შეიყვანეთ ბაზის იუზერნეიმი.",
"%s enter the database name." : "%s შეიყვანეთ ბაზის სახელი.",
"%s you may not use dots in the database name" : "%s არ მიუთითოთ წერტილი ბაზის სახელში",
- "MS SQL username and/or password not valid: %s" : "MS SQL მომხმარებელი და/ან პაროლი არ არის მართებული: %s",
"You need to enter either an existing account or the administrator." : "თქვენ უნდა შეიყვანოთ არსებული მომხმარებელის სახელი ან ადმინისტრატორი.",
"DB Error: \"%s\"" : "DB შეცდომა: \"%s\"",
"Offending command was: \"%s\"" : "Offending ბრძანება იყო: \"%s\"",
diff --git a/lib/l10n/ka_GE.json b/lib/l10n/ka_GE.json
index cc1aff1dd67..b19e37d7864 100644
--- a/lib/l10n/ka_GE.json
+++ b/lib/l10n/ka_GE.json
@@ -15,7 +15,6 @@
"%s enter the database username." : "%s შეიყვანეთ ბაზის იუზერნეიმი.",
"%s enter the database name." : "%s შეიყვანეთ ბაზის სახელი.",
"%s you may not use dots in the database name" : "%s არ მიუთითოთ წერტილი ბაზის სახელში",
- "MS SQL username and/or password not valid: %s" : "MS SQL მომხმარებელი და/ან პაროლი არ არის მართებული: %s",
"You need to enter either an existing account or the administrator." : "თქვენ უნდა შეიყვანოთ არსებული მომხმარებელის სახელი ან ადმინისტრატორი.",
"DB Error: \"%s\"" : "DB შეცდომა: \"%s\"",
"Offending command was: \"%s\"" : "Offending ბრძანება იყო: \"%s\"",
diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js
index e16b479b5ff..2ebb014894e 100644
--- a/lib/l10n/ko.js
+++ b/lib/l10n/ko.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s 데이터베이스 사용자 이름을 입력해 주십시오.",
"%s enter the database name." : "%s 데이터베이스 이름을 입력하십시오.",
"%s you may not use dots in the database name" : "%s 데이터베이스 이름에는 마침표를 사용할 수 없습니다",
- "MS SQL username and/or password not valid: %s" : "MS SQL 사용자 이름이나 암호가 잘못되었습니다: %s",
- "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 사용자 이름이나 암호가 올바르지 않습니다",
+ "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
"DB Error: \"%s\"" : "DB 오류: \"%s\"",
"Offending command was: \"%s\"" : "잘못된 명령: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB '%s'@'localhost' 사용자가 이미 존재합니다",
diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json
index 9919a2d96f5..c0d2b7df303 100644
--- a/lib/l10n/ko.json
+++ b/lib/l10n/ko.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s 데이터베이스 사용자 이름을 입력해 주십시오.",
"%s enter the database name." : "%s 데이터베이스 이름을 입력하십시오.",
"%s you may not use dots in the database name" : "%s 데이터베이스 이름에는 마침표를 사용할 수 없습니다",
- "MS SQL username and/or password not valid: %s" : "MS SQL 사용자 이름이나 암호가 잘못되었습니다: %s",
- "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 사용자 이름이나 암호가 올바르지 않습니다",
+ "You need to enter either an existing account or the administrator." : "기존 계정이나 administrator(관리자)를 입력해야 합니다.",
"DB Error: \"%s\"" : "DB 오류: \"%s\"",
"Offending command was: \"%s\"" : "잘못된 명령: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB '%s'@'localhost' 사용자가 이미 존재합니다",
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index f13097e6964..88e095c82b0 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -35,7 +35,6 @@ OC.L10N.register(
"%s enter the database username." : "%s įrašykite duombazės naudotojo vardą.",
"%s enter the database name." : "%s įrašykite duombazės pavadinimą.",
"%s you may not use dots in the database name" : "%s negalite naudoti taškų duombazės pavadinime",
- "MS SQL username and/or password not valid: %s" : "MS SQL naudotojo vardas ir/arba slaptažodis netinka: %s",
"You need to enter either an existing account or the administrator." : "Turite prisijungti su egzistuojančia paskyra arba su administratoriumi.",
"DB Error: \"%s\"" : "DB klaida: \"%s\"",
"Offending command was: \"%s\"" : "Vykdyta komanda buvo: \"%s\"",
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index 9561e9ac36e..4cbb88d433c 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -33,7 +33,6 @@
"%s enter the database username." : "%s įrašykite duombazės naudotojo vardą.",
"%s enter the database name." : "%s įrašykite duombazės pavadinimą.",
"%s you may not use dots in the database name" : "%s negalite naudoti taškų duombazės pavadinime",
- "MS SQL username and/or password not valid: %s" : "MS SQL naudotojo vardas ir/arba slaptažodis netinka: %s",
"You need to enter either an existing account or the administrator." : "Turite prisijungti su egzistuojančia paskyra arba su administratoriumi.",
"DB Error: \"%s\"" : "DB klaida: \"%s\"",
"Offending command was: \"%s\"" : "Vykdyta komanda buvo: \"%s\"",
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index 08994917388..bc5024042b4 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -20,7 +20,6 @@ OC.L10N.register(
"%s enter the database username." : "%s ievadiet datubāzes lietotājvārdu.",
"%s enter the database name." : "%s ievadiet datubāzes nosaukumu.",
"%s you may not use dots in the database name" : "%s datubāžu nosaukumos nedrīkst izmantot punktus",
- "MS SQL username and/or password not valid: %s" : "Nav derīga MySQL parole un/vai lietotājvārds — %s",
"You need to enter either an existing account or the administrator." : "Jums jāievada vai nu esošs vai administratora konts.",
"DB Error: \"%s\"" : "DB kļūda — “%s”",
"Offending command was: \"%s\"" : "Vainīgā komanda bija “%s”",
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index d72a99f7d96..2caeb13b8f1 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -18,7 +18,6 @@
"%s enter the database username." : "%s ievadiet datubāzes lietotājvārdu.",
"%s enter the database name." : "%s ievadiet datubāzes nosaukumu.",
"%s you may not use dots in the database name" : "%s datubāžu nosaukumos nedrīkst izmantot punktus",
- "MS SQL username and/or password not valid: %s" : "Nav derīga MySQL parole un/vai lietotājvārds — %s",
"You need to enter either an existing account or the administrator." : "Jums jāievada vai nu esošs vai administratora konts.",
"DB Error: \"%s\"" : "DB kļūda — “%s”",
"Offending command was: \"%s\"" : "Vainīgā komanda bija “%s”",
diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js
index 168fe4ad25c..ba4e26b22b7 100644
--- a/lib/l10n/nb_NO.js
+++ b/lib/l10n/nb_NO.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s legg inn brukernavn for databasen.",
"%s enter the database name." : "%s legg inn navnet på databasen.",
"%s you may not use dots in the database name" : "%s du kan ikke bruke punktum i databasenavnet",
- "MS SQL username and/or password not valid: %s" : "MS SQL-brukernavn og/eller passord ikke gyldig: %s",
- "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-brukernavn og/eller -passord ikke gyldig",
+ "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
"DB Error: \"%s\"" : "Databasefeil: \"%s\"",
"Offending command was: \"%s\"" : "Kommandoen som feilet: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB-bruker '%s'@'localhost' finnes allerede.",
diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json
index b72d709a022..a11f9dc87e5 100644
--- a/lib/l10n/nb_NO.json
+++ b/lib/l10n/nb_NO.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s legg inn brukernavn for databasen.",
"%s enter the database name." : "%s legg inn navnet på databasen.",
"%s you may not use dots in the database name" : "%s du kan ikke bruke punktum i databasenavnet",
- "MS SQL username and/or password not valid: %s" : "MS SQL-brukernavn og/eller passord ikke gyldig: %s",
- "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB-brukernavn og/eller -passord ikke gyldig",
+ "You need to enter either an existing account or the administrator." : "Du må legge inn enten en eksisterende konto eller administratoren.",
"DB Error: \"%s\"" : "Databasefeil: \"%s\"",
"Offending command was: \"%s\"" : "Kommandoen som feilet: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB-bruker '%s'@'localhost' finnes allerede.",
diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js
index b62443f9117..6c5aa7174d1 100644
--- a/lib/l10n/nl.js
+++ b/lib/l10n/nl.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s opgeven database gebruikersnaam.",
"%s enter the database name." : "%s opgeven databasenaam.",
"%s you may not use dots in the database name" : "%s er mogen geen puntjes in de databasenaam voorkomen",
- "MS SQL username and/or password not valid: %s" : "MS SQL gebruikersnaam en/of wachtwoord niet geldig: %s",
- "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op of het beheerdersaccount.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB gebruikersnaam en/of wachtwoord ongeldig",
+ "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op of het beheerdersaccount.",
"DB Error: \"%s\"" : "DB Fout: \"%s\"",
"Offending command was: \"%s\"" : "Onjuiste commande was: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB gebruiker '%s'@'localhost' bestaat al.",
diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json
index 26dd33f54fc..d903594307f 100644
--- a/lib/l10n/nl.json
+++ b/lib/l10n/nl.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s opgeven database gebruikersnaam.",
"%s enter the database name." : "%s opgeven databasenaam.",
"%s you may not use dots in the database name" : "%s er mogen geen puntjes in de databasenaam voorkomen",
- "MS SQL username and/or password not valid: %s" : "MS SQL gebruikersnaam en/of wachtwoord niet geldig: %s",
- "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op of het beheerdersaccount.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB gebruikersnaam en/of wachtwoord ongeldig",
+ "You need to enter either an existing account or the administrator." : "Geef of een bestaand account op of het beheerdersaccount.",
"DB Error: \"%s\"" : "DB Fout: \"%s\"",
"Offending command was: \"%s\"" : "Onjuiste commande was: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB gebruiker '%s'@'localhost' bestaat al.",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index 6d568685359..cf53425b5b2 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -54,9 +54,8 @@ OC.L10N.register(
"%s enter the database username." : "%s wpisz nazwę użytkownika do bazy",
"%s enter the database name." : "%s wpisz nazwę bazy.",
"%s you may not use dots in the database name" : "%s nie można używać kropki w nazwie bazy danych",
- "MS SQL username and/or password not valid: %s" : "Nazwa i/lub hasło serwera MS SQL jest niepoprawne: %s.",
- "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
"MySQL/MariaDB username and/or password not valid" : "Użytkownik i/lub hasło do MySQL/MariaDB są niepoprawne",
+ "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
"DB Error: \"%s\"" : "Błąd DB: \"%s\"",
"Offending command was: \"%s\"" : "Niepoprawna komenda: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Użytkownik '%s'@'localhost' MySQL/MariaDB już istnieje.",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index ec89fc3acbd..92bb3273814 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -52,9 +52,8 @@
"%s enter the database username." : "%s wpisz nazwę użytkownika do bazy",
"%s enter the database name." : "%s wpisz nazwę bazy.",
"%s you may not use dots in the database name" : "%s nie można używać kropki w nazwie bazy danych",
- "MS SQL username and/or password not valid: %s" : "Nazwa i/lub hasło serwera MS SQL jest niepoprawne: %s.",
- "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
"MySQL/MariaDB username and/or password not valid" : "Użytkownik i/lub hasło do MySQL/MariaDB są niepoprawne",
+ "You need to enter either an existing account or the administrator." : "Należy wprowadzić istniejące konto użytkownika lub administratora.",
"DB Error: \"%s\"" : "Błąd DB: \"%s\"",
"Offending command was: \"%s\"" : "Niepoprawna komenda: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Użytkownik '%s'@'localhost' MySQL/MariaDB już istnieje.",
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index e5940fb577e..dc7da9a13f9 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s insira o nome de usuário do banco de dados.",
"%s enter the database name." : "%s insira o nome do banco de dados.",
"%s you may not use dots in the database name" : "%s você não pode usar pontos no nome do banco de dados",
- "MS SQL username and/or password not valid: %s" : "Nome de usuário e/ou senha MS SQL inválido(s): %s",
- "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a do administrador.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB nome de usuário e/ou senha não é válida",
+ "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a do administrador.",
"DB Error: \"%s\"" : "Erro no BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando ofensivo era: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB usuário '%s'@'localhost' já existe.",
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index ba29f32e22d..4688e4412c0 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s insira o nome de usuário do banco de dados.",
"%s enter the database name." : "%s insira o nome do banco de dados.",
"%s you may not use dots in the database name" : "%s você não pode usar pontos no nome do banco de dados",
- "MS SQL username and/or password not valid: %s" : "Nome de usuário e/ou senha MS SQL inválido(s): %s",
- "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a do administrador.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB nome de usuário e/ou senha não é válida",
+ "You need to enter either an existing account or the administrator." : "Você precisa inserir uma conta existente ou a do administrador.",
"DB Error: \"%s\"" : "Erro no BD: \"%s\"",
"Offending command was: \"%s\"" : "Comando ofensivo era: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB usuário '%s'@'localhost' já existe.",
diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js
index 5c9f84ee0df..982223bf863 100644
--- a/lib/l10n/pt_PT.js
+++ b/lib/l10n/pt_PT.js
@@ -59,9 +59,8 @@ OC.L10N.register(
"%s enter the database username." : "%s introduza o nome de utilizador da base de dados",
"%s enter the database name." : "%s introduza o nome da base de dados",
"%s you may not use dots in the database name" : "%s não é permitido utilizar pontos (.) no nome da base de dados",
- "MS SQL username and/or password not valid: %s" : "Nome de utilizador/password do MySQL é inválido: %s",
- "You need to enter either an existing account or the administrator." : "Precisa de introduzir uma conta existente ou de administrador",
"MySQL/MariaDB username and/or password not valid" : "Nome de utilizador/password do MySQL/Maria DB inválida",
+ "You need to enter either an existing account or the administrator." : "Precisa de introduzir uma conta existente ou de administrador",
"DB Error: \"%s\"" : "Erro na BD: \"%s\"",
"Offending command was: \"%s\"" : "O comando gerador de erro foi: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "O utilizador '%s'@'localhost' do MySQL/MariaDB já existe.",
diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json
index cf78d6fa9ab..a8722023222 100644
--- a/lib/l10n/pt_PT.json
+++ b/lib/l10n/pt_PT.json
@@ -57,9 +57,8 @@
"%s enter the database username." : "%s introduza o nome de utilizador da base de dados",
"%s enter the database name." : "%s introduza o nome da base de dados",
"%s you may not use dots in the database name" : "%s não é permitido utilizar pontos (.) no nome da base de dados",
- "MS SQL username and/or password not valid: %s" : "Nome de utilizador/password do MySQL é inválido: %s",
- "You need to enter either an existing account or the administrator." : "Precisa de introduzir uma conta existente ou de administrador",
"MySQL/MariaDB username and/or password not valid" : "Nome de utilizador/password do MySQL/Maria DB inválida",
+ "You need to enter either an existing account or the administrator." : "Precisa de introduzir uma conta existente ou de administrador",
"DB Error: \"%s\"" : "Erro na BD: \"%s\"",
"Offending command was: \"%s\"" : "O comando gerador de erro foi: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "O utilizador '%s'@'localhost' do MySQL/MariaDB já existe.",
diff --git a/lib/l10n/ro.js b/lib/l10n/ro.js
index 24a42ef68c0..0668d655779 100644
--- a/lib/l10n/ro.js
+++ b/lib/l10n/ro.js
@@ -32,7 +32,6 @@ OC.L10N.register(
"Token expired. Please reload page." : "Token expirat. Te rugăm să reîncarci pagina.",
"Unknown user" : "Utilizator necunoscut",
"%s enter the database name." : "%s introduceți numele bazei de date",
- "MS SQL username and/or password not valid: %s" : "Nume utilizator și/sau parolă MS SQL greșită: %s",
"MySQL/MariaDB username and/or password not valid" : "Nume utilizator și/sau parolă MySQL/MariaDB greșită",
"DB Error: \"%s\"" : "Eroare Bază de Date: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Utilizatorul MySQL/MariaDB '%s'@'localhost' deja există.",
diff --git a/lib/l10n/ro.json b/lib/l10n/ro.json
index 23c946b93e3..3f276814926 100644
--- a/lib/l10n/ro.json
+++ b/lib/l10n/ro.json
@@ -30,7 +30,6 @@
"Token expired. Please reload page." : "Token expirat. Te rugăm să reîncarci pagina.",
"Unknown user" : "Utilizator necunoscut",
"%s enter the database name." : "%s introduceți numele bazei de date",
- "MS SQL username and/or password not valid: %s" : "Nume utilizator și/sau parolă MS SQL greșită: %s",
"MySQL/MariaDB username and/or password not valid" : "Nume utilizator și/sau parolă MySQL/MariaDB greșită",
"DB Error: \"%s\"" : "Eroare Bază de Date: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Utilizatorul MySQL/MariaDB '%s'@'localhost' deja există.",
diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js
index d245bec5b19..4d58e4aed2c 100644
--- a/lib/l10n/ru.js
+++ b/lib/l10n/ru.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s введите имя пользователя базы данных.",
"%s enter the database name." : "%s введите имя базы данных.",
"%s you may not use dots in the database name" : "%s Вы не можете использовать точки в имени базы данных",
- "MS SQL username and/or password not valid: %s" : "Неверное имя пользователя и/или пароль MS SQL: %s",
- "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
"MySQL/MariaDB username and/or password not valid" : "Неверное имя пользователя и/или пароль MySQL/MariaDB",
+ "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
"DB Error: \"%s\"" : "Ошибка БД: \"%s\"",
"Offending command was: \"%s\"" : "Вызываемая команда была: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Пользователь MySQL/MariaDB '%s'@'localhost' уже существует.",
diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json
index 511f43789f4..914cf2ac1da 100644
--- a/lib/l10n/ru.json
+++ b/lib/l10n/ru.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s введите имя пользователя базы данных.",
"%s enter the database name." : "%s введите имя базы данных.",
"%s you may not use dots in the database name" : "%s Вы не можете использовать точки в имени базы данных",
- "MS SQL username and/or password not valid: %s" : "Неверное имя пользователя и/или пароль MS SQL: %s",
- "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
"MySQL/MariaDB username and/or password not valid" : "Неверное имя пользователя и/или пароль MySQL/MariaDB",
+ "You need to enter either an existing account or the administrator." : "Вы должны войти или в существующий аккаунт или под администратором.",
"DB Error: \"%s\"" : "Ошибка БД: \"%s\"",
"Offending command was: \"%s\"" : "Вызываемая команда была: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Пользователь MySQL/MariaDB '%s'@'localhost' уже существует.",
diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js
index a8d53af8702..93db1d7aafd 100644
--- a/lib/l10n/sk_SK.js
+++ b/lib/l10n/sk_SK.js
@@ -58,9 +58,8 @@ OC.L10N.register(
"%s enter the database username." : "Zadajte používateľské meno %s databázy.",
"%s enter the database name." : "Zadajte názov databázy pre %s databázy.",
"%s you may not use dots in the database name" : "V názve databázy %s nemôžete používať bodky",
- "MS SQL username and/or password not valid: %s" : "Používateľské meno, alebo heslo MS SQL nie je platné: %s",
- "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
"MySQL/MariaDB username and/or password not valid" : "Používateľské meno a/alebo heslo pre MySQL/MariaDB databázu je neplatné",
+ "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
"DB Error: \"%s\"" : "Chyba DB: \"%s\"",
"Offending command was: \"%s\"" : "Podozrivý príkaz bol: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Používateľ '%s'@'localhost' už v MySQL/MariaDB existuje.",
diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json
index d223183f974..45e1bd738ce 100644
--- a/lib/l10n/sk_SK.json
+++ b/lib/l10n/sk_SK.json
@@ -56,9 +56,8 @@
"%s enter the database username." : "Zadajte používateľské meno %s databázy.",
"%s enter the database name." : "Zadajte názov databázy pre %s databázy.",
"%s you may not use dots in the database name" : "V názve databázy %s nemôžete používať bodky",
- "MS SQL username and/or password not valid: %s" : "Používateľské meno, alebo heslo MS SQL nie je platné: %s",
- "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
"MySQL/MariaDB username and/or password not valid" : "Používateľské meno a/alebo heslo pre MySQL/MariaDB databázu je neplatné",
+ "You need to enter either an existing account or the administrator." : "Musíte zadať jestvujúci účet alebo administrátora.",
"DB Error: \"%s\"" : "Chyba DB: \"%s\"",
"Offending command was: \"%s\"" : "Podozrivý príkaz bol: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Používateľ '%s'@'localhost' už v MySQL/MariaDB existuje.",
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index 4630fa87dee..64e16a2a6ba 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -60,9 +60,8 @@ OC.L10N.register(
"%s enter the database username." : "%s - vnos uporabniškega imena podatkovne zbirke.",
"%s enter the database name." : "%s - vnos imena podatkovne zbirke.",
"%s you may not use dots in the database name" : "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik.",
- "MS SQL username and/or password not valid: %s" : "Uporabniško ime ali geslo MS SQL ni veljavno: %s",
- "You need to enter either an existing account or the administrator." : "Prijaviti se je treba v obstoječi ali pa skrbniški račun.",
"MySQL/MariaDB username and/or password not valid" : "Uporabniško ime ali geslo za MySQL/MariaDB ni veljavno",
+ "You need to enter either an existing account or the administrator." : "Prijaviti se je treba v obstoječi ali pa skrbniški račun.",
"DB Error: \"%s\"" : "Napaka podatkovne zbirke: \"%s\"",
"Offending command was: \"%s\"" : "Napačni ukaz je: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Uporabnik podatkovne zbirke MySQL/MariaDB '%s'@'localhost' že obstaja.",
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index ca40bc3cb12..a7d519f495f 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -58,9 +58,8 @@
"%s enter the database username." : "%s - vnos uporabniškega imena podatkovne zbirke.",
"%s enter the database name." : "%s - vnos imena podatkovne zbirke.",
"%s you may not use dots in the database name" : "%s - v imenu podatkovne zbirke ni dovoljeno uporabljati pik.",
- "MS SQL username and/or password not valid: %s" : "Uporabniško ime ali geslo MS SQL ni veljavno: %s",
- "You need to enter either an existing account or the administrator." : "Prijaviti se je treba v obstoječi ali pa skrbniški račun.",
"MySQL/MariaDB username and/or password not valid" : "Uporabniško ime ali geslo za MySQL/MariaDB ni veljavno",
+ "You need to enter either an existing account or the administrator." : "Prijaviti se je treba v obstoječi ali pa skrbniški račun.",
"DB Error: \"%s\"" : "Napaka podatkovne zbirke: \"%s\"",
"Offending command was: \"%s\"" : "Napačni ukaz je: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Uporabnik podatkovne zbirke MySQL/MariaDB '%s'@'localhost' že obstaja.",
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index f4057220c03..422814a14c1 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -20,7 +20,6 @@ OC.L10N.register(
"%s enter the database username." : "% shkruani përdoruesin e database-it.",
"%s enter the database name." : "%s shkruani emrin e database-it.",
"%s you may not use dots in the database name" : "%s nuk mund të përdorni pikat tek emri i database-it",
- "MS SQL username and/or password not valid: %s" : "Përdoruesi dhe/apo kodi i MS SQL i pavlefshëm: %s",
"You need to enter either an existing account or the administrator." : "Duhet të përdorni një llogari ekzistuese ose llogarinë e administratorit.",
"DB Error: \"%s\"" : "Veprim i gabuar i DB-it: \"%s\"",
"Offending command was: \"%s\"" : "Komanda e gabuar ishte: \"%s\"",
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 6798d9cee77..ad3f12eb1a0 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -18,7 +18,6 @@
"%s enter the database username." : "% shkruani përdoruesin e database-it.",
"%s enter the database name." : "%s shkruani emrin e database-it.",
"%s you may not use dots in the database name" : "%s nuk mund të përdorni pikat tek emri i database-it",
- "MS SQL username and/or password not valid: %s" : "Përdoruesi dhe/apo kodi i MS SQL i pavlefshëm: %s",
"You need to enter either an existing account or the administrator." : "Duhet të përdorni një llogari ekzistuese ose llogarinë e administratorit.",
"DB Error: \"%s\"" : "Veprim i gabuar i DB-it: \"%s\"",
"Offending command was: \"%s\"" : "Komanda e gabuar ishte: \"%s\"",
diff --git a/lib/l10n/sr.js b/lib/l10n/sr.js
index cb36007723b..15dd58c232a 100644
--- a/lib/l10n/sr.js
+++ b/lib/l10n/sr.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s унеси корисничко име базе података.",
"%s enter the database name." : "%s унеси име базе података.",
"%s you may not use dots in the database name" : "%s не можете користити тачке у имену базе података",
- "MS SQL username and/or password not valid: %s" : "MS SQL корисничко име и/или лозинка нису исправни: %s",
- "You need to enter either an existing account or the administrator." : "Потребно је да унесете или постојећи налог или администраторски.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB корисничко име и/или лозинка нису исправни",
+ "You need to enter either an existing account or the administrator." : "Потребно је да унесете или постојећи налог или администраторски.",
"DB Error: \"%s\"" : "Грешка базе података: \"%s\"",
"Offending command was: \"%s\"" : "Неисправна команда је: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB корисник '%s'@'localhost' већ постоји.",
diff --git a/lib/l10n/sr.json b/lib/l10n/sr.json
index 2cc9f4de390..9170dcc796b 100644
--- a/lib/l10n/sr.json
+++ b/lib/l10n/sr.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s унеси корисничко име базе података.",
"%s enter the database name." : "%s унеси име базе података.",
"%s you may not use dots in the database name" : "%s не можете користити тачке у имену базе података",
- "MS SQL username and/or password not valid: %s" : "MS SQL корисничко име и/или лозинка нису исправни: %s",
- "You need to enter either an existing account or the administrator." : "Потребно је да унесете или постојећи налог или администраторски.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB корисничко име и/или лозинка нису исправни",
+ "You need to enter either an existing account or the administrator." : "Потребно је да унесете или постојећи налог или администраторски.",
"DB Error: \"%s\"" : "Грешка базе података: \"%s\"",
"Offending command was: \"%s\"" : "Неисправна команда је: „%s“",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB корисник '%s'@'localhost' већ постоји.",
diff --git a/lib/l10n/sv.js b/lib/l10n/sv.js
index 59122082c7d..3a6389af3f5 100644
--- a/lib/l10n/sv.js
+++ b/lib/l10n/sv.js
@@ -54,9 +54,8 @@ OC.L10N.register(
"%s enter the database username." : "%s ange databasanvändare.",
"%s enter the database name." : "%s ange databasnamn",
"%s you may not use dots in the database name" : "%s du får inte använda punkter i databasnamnet",
- "MS SQL username and/or password not valid: %s" : "MS SQL-användaren och/eller lösenordet var inte giltigt: %s",
- "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB användarnamn och/eller lösenord är felaktigt",
+ "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
"DB Error: \"%s\"" : "DB fel: \"%s\"",
"Offending command was: \"%s\"" : "Det felaktiga kommandot var: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB användare '%s'@'localhost' existerar redan.",
diff --git a/lib/l10n/sv.json b/lib/l10n/sv.json
index fcf8eb9b858..74539f5a932 100644
--- a/lib/l10n/sv.json
+++ b/lib/l10n/sv.json
@@ -52,9 +52,8 @@
"%s enter the database username." : "%s ange databasanvändare.",
"%s enter the database name." : "%s ange databasnamn",
"%s you may not use dots in the database name" : "%s du får inte använda punkter i databasnamnet",
- "MS SQL username and/or password not valid: %s" : "MS SQL-användaren och/eller lösenordet var inte giltigt: %s",
- "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB användarnamn och/eller lösenord är felaktigt",
+ "You need to enter either an existing account or the administrator." : "Du måste antingen ange ett befintligt konto eller administratör.",
"DB Error: \"%s\"" : "DB fel: \"%s\"",
"Offending command was: \"%s\"" : "Det felaktiga kommandot var: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB användare '%s'@'localhost' existerar redan.",
diff --git a/lib/l10n/th_TH.js b/lib/l10n/th_TH.js
index 816af4506bb..f6e9a13b09c 100644
--- a/lib/l10n/th_TH.js
+++ b/lib/l10n/th_TH.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s ใส่ชื่อผู้ใช้ฐานข้อมูล",
"%s enter the database name." : "%s ใส่ชื่อฐานข้อมูล",
"%s you may not use dots in the database name" : "%s บางที่คุณไม่ควรใช้จุดในชื่อฐานข้อมูล",
- "MS SQL username and/or password not valid: %s" : "ชื่อผู้ใช้หรือรหัสผ่าน MS SQLไม่ถูกต้อง: %s",
- "You need to enter either an existing account or the administrator." : "คุณจำเป็นต้องใส่ทั้งบัญชีที่มีอยู่หรือบัญชีผู้ดูแล",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB ชื่อผู้ใช้ และ/หรือ รหัสผ่านไม่ถูกต้อง",
+ "You need to enter either an existing account or the administrator." : "คุณจำเป็นต้องใส่ทั้งบัญชีที่มีอยู่หรือบัญชีผู้ดูแล",
"DB Error: \"%s\"" : "ข้อผิดพลาดในฐานข้อมูล: \"%s\"",
"Offending command was: \"%s\"" : "คำสั่งที่ทำผิดคือ: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB มีผู้ใช้งาน '%s'@'localhost' อยู่แล้ว",
diff --git a/lib/l10n/th_TH.json b/lib/l10n/th_TH.json
index eca70c531a2..66328f44471 100644
--- a/lib/l10n/th_TH.json
+++ b/lib/l10n/th_TH.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s ใส่ชื่อผู้ใช้ฐานข้อมูล",
"%s enter the database name." : "%s ใส่ชื่อฐานข้อมูล",
"%s you may not use dots in the database name" : "%s บางที่คุณไม่ควรใช้จุดในชื่อฐานข้อมูล",
- "MS SQL username and/or password not valid: %s" : "ชื่อผู้ใช้หรือรหัสผ่าน MS SQLไม่ถูกต้อง: %s",
- "You need to enter either an existing account or the administrator." : "คุณจำเป็นต้องใส่ทั้งบัญชีที่มีอยู่หรือบัญชีผู้ดูแล",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB ชื่อผู้ใช้ และ/หรือ รหัสผ่านไม่ถูกต้อง",
+ "You need to enter either an existing account or the administrator." : "คุณจำเป็นต้องใส่ทั้งบัญชีที่มีอยู่หรือบัญชีผู้ดูแล",
"DB Error: \"%s\"" : "ข้อผิดพลาดในฐานข้อมูล: \"%s\"",
"Offending command was: \"%s\"" : "คำสั่งที่ทำผิดคือ: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB มีผู้ใช้งาน '%s'@'localhost' อยู่แล้ว",
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 7f3a5096b0a..c23981fb818 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -66,9 +66,8 @@ OC.L10N.register(
"%s enter the database username." : "%s veritabanı kullanıcı adını girin.",
"%s enter the database name." : "%s veritabanı adını girin.",
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
- "MS SQL username and/or password not valid: %s" : "MS SQL kullanıcı adı ve/veya parolası geçersiz: %s",
- "You need to enter either an existing account or the administrator." : "Mevcut bit hesap ya da yönetici hesabını girmelisiniz.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB kullanıcı adı ve/veya parolası geçersiz",
+ "You need to enter either an existing account or the administrator." : "Mevcut bit hesap ya da yönetici hesabını girmelisiniz.",
"DB Error: \"%s\"" : "VT Hatası: \"%s\"",
"Offending command was: \"%s\"" : "Saldırgan komut: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB kullanıcı '%s'@'localhost' zaten mevcut.",
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index fe9556ffea5..b5dc4e85b96 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -64,9 +64,8 @@
"%s enter the database username." : "%s veritabanı kullanıcı adını girin.",
"%s enter the database name." : "%s veritabanı adını girin.",
"%s you may not use dots in the database name" : "%s veritabanı adında nokta kullanamayabilirsiniz",
- "MS SQL username and/or password not valid: %s" : "MS SQL kullanıcı adı ve/veya parolası geçersiz: %s",
- "You need to enter either an existing account or the administrator." : "Mevcut bit hesap ya da yönetici hesabını girmelisiniz.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB kullanıcı adı ve/veya parolası geçersiz",
+ "You need to enter either an existing account or the administrator." : "Mevcut bit hesap ya da yönetici hesabını girmelisiniz.",
"DB Error: \"%s\"" : "VT Hatası: \"%s\"",
"Offending command was: \"%s\"" : "Saldırgan komut: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB kullanıcı '%s'@'localhost' zaten mevcut.",
diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js
index 8ebc66be6dd..c01a045095f 100644
--- a/lib/l10n/uk.js
+++ b/lib/l10n/uk.js
@@ -60,9 +60,8 @@ OC.L10N.register(
"%s enter the database username." : "%s введіть ім'я користувача бази даних.",
"%s enter the database name." : "%s введіть назву бази даних.",
"%s you may not use dots in the database name" : "%s не можна використовувати крапки в назві бази даних",
- "MS SQL username and/or password not valid: %s" : "MS SQL ім'я користувача та/або пароль не дійсні: %s",
- "You need to enter either an existing account or the administrator." : "Вам потрібно ввести або існуючий обліковий запис або administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB ім'я користувача та/або пароль не дійсні",
+ "You need to enter either an existing account or the administrator." : "Вам потрібно ввести або існуючий обліковий запис або administrator.",
"DB Error: \"%s\"" : "Помилка БД: \"%s\"",
"Offending command was: \"%s\"" : "Команда, що викликала проблему: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Користувач MySQL/MariaDB '%s'@'localhost' вже існує.",
diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json
index a9f29cbfce2..d4accc5f93e 100644
--- a/lib/l10n/uk.json
+++ b/lib/l10n/uk.json
@@ -58,9 +58,8 @@
"%s enter the database username." : "%s введіть ім'я користувача бази даних.",
"%s enter the database name." : "%s введіть назву бази даних.",
"%s you may not use dots in the database name" : "%s не можна використовувати крапки в назві бази даних",
- "MS SQL username and/or password not valid: %s" : "MS SQL ім'я користувача та/або пароль не дійсні: %s",
- "You need to enter either an existing account or the administrator." : "Вам потрібно ввести або існуючий обліковий запис або administrator.",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB ім'я користувача та/або пароль не дійсні",
+ "You need to enter either an existing account or the administrator." : "Вам потрібно ввести або існуючий обліковий запис або administrator.",
"DB Error: \"%s\"" : "Помилка БД: \"%s\"",
"Offending command was: \"%s\"" : "Команда, що викликала проблему: \"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "Користувач MySQL/MariaDB '%s'@'localhost' вже існує.",
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index 2046655f20d..305c4f097b6 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -39,9 +39,8 @@ OC.L10N.register(
"%s enter the database username." : "%s 输入数据库用户名。",
"%s enter the database name." : "%s 输入数据库名称。",
"%s you may not use dots in the database name" : "%s 您不能在数据库名称中使用英文句号。",
- "MS SQL username and/or password not valid: %s" : "MS SQL 用户名和/或密码无效:%s",
- "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 数据库用户名和/或密码无效",
+ "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
"DB Error: \"%s\"" : "数据库错误:\"%s\"",
"Offending command was: \"%s\"" : "冲突命令为:\"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB 用户 '%s'@'localhost' 已存在。",
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index e96f07d198c..ff07f7840b3 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -37,9 +37,8 @@
"%s enter the database username." : "%s 输入数据库用户名。",
"%s enter the database name." : "%s 输入数据库名称。",
"%s you may not use dots in the database name" : "%s 您不能在数据库名称中使用英文句号。",
- "MS SQL username and/or password not valid: %s" : "MS SQL 用户名和/或密码无效:%s",
- "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 数据库用户名和/或密码无效",
+ "You need to enter either an existing account or the administrator." : "你需要输入一个数据库中已有的账户或管理员账户。",
"DB Error: \"%s\"" : "数据库错误:\"%s\"",
"Offending command was: \"%s\"" : "冲突命令为:\"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB 用户 '%s'@'localhost' 已存在。",
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index 1458f4637b8..acd5bde29f0 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -44,9 +44,8 @@ OC.L10N.register(
"%s enter the database username." : "%s 輸入資料庫使用者名稱。",
"%s enter the database name." : "%s 輸入資料庫名稱。",
"%s you may not use dots in the database name" : "%s 資料庫名稱不能包含小數點",
- "MS SQL username and/or password not valid: %s" : "MS SQL 使用者和/或密碼無效:%s",
- "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 使用者或密碼不正確",
+ "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
"DB Error: \"%s\"" : "資料庫錯誤:\"%s\"",
"Offending command was: \"%s\"" : "有問題的指令是:\"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB 使用者 '%s'@'localhost' 已經存在",
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index ce93965013f..6c7eb7b3f55 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -42,9 +42,8 @@
"%s enter the database username." : "%s 輸入資料庫使用者名稱。",
"%s enter the database name." : "%s 輸入資料庫名稱。",
"%s you may not use dots in the database name" : "%s 資料庫名稱不能包含小數點",
- "MS SQL username and/or password not valid: %s" : "MS SQL 使用者和/或密碼無效:%s",
- "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
"MySQL/MariaDB username and/or password not valid" : "MySQL/MariaDB 使用者或密碼不正確",
+ "You need to enter either an existing account or the administrator." : "您必須輸入一個現有的帳號或管理員帳號。",
"DB Error: \"%s\"" : "資料庫錯誤:\"%s\"",
"Offending command was: \"%s\"" : "有問題的指令是:\"%s\"",
"MySQL/MariaDB user '%s'@'localhost' exists already." : "MySQL/MariaDB 使用者 '%s'@'localhost' 已經存在",
diff --git a/lib/private/db.php b/lib/private/db.php
index 1e93eb1892e..a4a7b7d17d4 100644
--- a/lib/private/db.php
+++ b/lib/private/db.php
@@ -121,7 +121,7 @@ class OC_DB {
if (is_string($stmt)) {
// convert to an array with 'sql'
if (stripos($stmt, 'LIMIT') !== false) { //OFFSET requires LIMIT, so we only need to check for LIMIT
- // TODO try to convert LIMIT OFFSET notation to parameters, see fixLimitClauseForMSSQL
+ // TODO try to convert LIMIT OFFSET notation to parameters
$message = 'LIMIT and OFFSET are forbidden for portability reasons,'
. ' pass an array with \'limit\' and \'offset\' instead';
throw new \OC\DatabaseException($message);
diff --git a/lib/private/db/connectionfactory.php b/lib/private/db/connectionfactory.php
index 83a59cddd7f..b6c3396e147 100644
--- a/lib/private/db/connectionfactory.php
+++ b/lib/private/db/connectionfactory.php
@@ -39,12 +39,6 @@ class ConnectionFactory {
* \Doctrine\DBAL\DriverManager::getConnection().
*/
protected $defaultConnectionParams = array(
- 'mssql' => array(
- 'adapter' => '\OC\DB\AdapterSQLSrv',
- 'charset' => 'UTF8',
- 'driver' => 'pdo_sqlsrv',
- 'wrapperClass' => 'OC\DB\Connection',
- ),
'mysql' => array(
'adapter' => '\OC\DB\AdapterMySQL',
'charset' => 'UTF8',
diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php
index 6b9888d361b..aef485ed686 100644
--- a/lib/private/db/mdb2schemamanager.php
+++ b/lib/private/db/mdb2schemamanager.php
@@ -32,7 +32,6 @@ use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Platforms\OraclePlatform;
use Doctrine\DBAL\Platforms\PostgreSqlPlatform;
use Doctrine\DBAL\Platforms\SqlitePlatform;
-use Doctrine\DBAL\Platforms\SQLServerPlatform;
class MDB2SchemaManager {
/**
@@ -85,8 +84,6 @@ class MDB2SchemaManager {
return new OracleMigrator($this->conn, $random, $config);
} else if ($platform instanceof MySqlPlatform) {
return new MySQLMigrator($this->conn, $random, $config);
- } else if ($platform instanceof SQLServerPlatform) {
- return new MsSqlMigrator($this->conn, $random, $config);
} else if ($platform instanceof PostgreSqlPlatform) {
return new Migrator($this->conn, $random, $config);
} else {
diff --git a/lib/private/db/mssqlmigrator.php b/lib/private/db/mssqlmigrator.php
deleted file mode 100644
index bedb5bac6c4..00000000000
--- a/lib/private/db/mssqlmigrator.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @copyright Copyright (c) 2015, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-
-namespace OC\DB;
-
-use Doctrine\DBAL\Schema\Schema;
-
-class MsSqlMigrator extends Migrator {
-
- /**
- * @param \Doctrine\DBAL\Schema\Schema $targetSchema
- */
- public function migrate(Schema $targetSchema) {
- throw new MigrationException('',
- 'Database migration is required to continue operation. This feature is provided within the Enterprise Edition.');
- }
-
-}
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index cb3c05d2bca..1a6be73d5bb 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -1656,11 +1656,11 @@ class View {
}
// verify database - e.g. mysql only 3-byte chars
- if (preg_match('%^(?:
+ if (preg_match('%(?:
\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
-)*$%xs', $fileName)) {
+)%xs', $fileName)) {
throw new InvalidPathException($l10n->t('4-byte characters are not supported in file names'));
}
diff --git a/lib/private/setup.php b/lib/private/setup.php
index 50bf0dceafc..8f1ae389e45 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -39,6 +39,8 @@ use bantu\IniGetWrapper\IniGetWrapper;
use Exception;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\ILogger;
+use OCP\Security\ISecureRandom;
class Setup {
/** @var \OCP\IConfig */
@@ -49,6 +51,10 @@ class Setup {
protected $l10n;
/** @var \OC_Defaults */
protected $defaults;
+ /** @var ILogger */
+ protected $logger;
+ /** @var ISecureRandom */
+ protected $random;
/**
* @param IConfig $config
@@ -58,18 +64,22 @@ class Setup {
function __construct(IConfig $config,
IniGetWrapper $iniWrapper,
IL10N $l10n,
- \OC_Defaults $defaults) {
+ \OC_Defaults $defaults,
+ ILogger $logger,
+ ISecureRandom $random
+ ) {
$this->config = $config;
$this->iniWrapper = $iniWrapper;
$this->l10n = $l10n;
$this->defaults = $defaults;
+ $this->logger = $logger;
+ $this->random = $random;
}
static $dbSetupClasses = array(
'mysql' => '\OC\Setup\MySQL',
'pgsql' => '\OC\Setup\PostgreSQL',
'oci' => '\OC\Setup\OCI',
- 'mssql' => '\OC\Setup\MSSQL',
'sqlite' => '\OC\Setup\Sqlite',
'sqlite3' => '\OC\Setup\Sqlite',
);
@@ -79,7 +89,7 @@ class Setup {
* @param string $name
* @return bool
*/
- public function class_exists($name) {
+ protected function class_exists($name) {
return class_exists($name);
}
@@ -88,11 +98,20 @@ class Setup {
* @param string $name
* @return bool
*/
- public function is_callable($name) {
+ protected function is_callable($name) {
return is_callable($name);
}
/**
+ * Wrapper around \PDO::getAvailableDrivers
+ *
+ * @return array
+ */
+ protected function getAvailableDbDriversForPdo() {
+ return \PDO::getAvailableDrivers();
+ }
+
+ /**
* Get the available and supported databases of this instance
*
* @param bool $allowAllDatabases
@@ -107,8 +126,8 @@ class Setup {
'name' => 'SQLite'
),
'mysql' => array(
- 'type' => 'function',
- 'call' => 'mysql_connect',
+ 'type' => 'pdo',
+ 'call' => 'mysql',
'name' => 'MySQL/MariaDB'
),
'pgsql' => array(
@@ -120,11 +139,6 @@ class Setup {
'type' => 'function',
'call' => 'oci_connect',
'name' => 'Oracle'
- ),
- 'mssql' => array(
- 'type' => 'function',
- 'call' => 'sqlsrv_connect',
- 'name' => 'MS SQL'
)
);
if ($allowAllDatabases) {
@@ -142,10 +156,15 @@ class Setup {
foreach($configuredDatabases as $database) {
if(array_key_exists($database, $availableDatabases)) {
$working = false;
- if($availableDatabases[$database]['type'] === 'class') {
- $working = $this->class_exists($availableDatabases[$database]['call']);
- } elseif ($availableDatabases[$database]['type'] === 'function') {
- $working = $this->is_callable($availableDatabases[$database]['call']);
+ $type = $availableDatabases[$database]['type'];
+ $call = $availableDatabases[$database]['call'];
+
+ if($type === 'class') {
+ $working = $this->class_exists($call);
+ } elseif ($type === 'function') {
+ $working = $this->is_callable($call);
+ } elseif($type === 'pdo') {
+ $working = in_array($call, $this->getAvailableDbDriversForPdo(), TRUE);
}
if($working) {
$supportedDatabases[$database] = $availableDatabases[$database]['name'];
@@ -218,7 +237,6 @@ class Setup {
'hasMySQL' => isset($databases['mysql']),
'hasPostgreSQL' => isset($databases['pgsql']),
'hasOracle' => isset($databases['oci']),
- 'hasMSSQL' => isset($databases['mssql']),
'databases' => $databases,
'directory' => $dataDir,
'htaccessWorking' => $htAccessWorking,
@@ -256,7 +274,8 @@ class Setup {
$class = self::$dbSetupClasses[$dbType];
/** @var \OC\Setup\AbstractDatabase $dbSetup */
- $dbSetup = new $class($l, 'db_structure.xml');
+ $dbSetup = new $class($l, 'db_structure.xml', $this->config,
+ $this->logger, $this->random);
$error = array_merge($error, $dbSetup->validate($options));
// validate the data directory
@@ -291,9 +310,9 @@ class Setup {
}
//generate a random salt that is used to salt the local user passwords
- $salt = \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate(30);
+ $salt = $this->random->getLowStrengthGenerator()->generate(30);
// generate a secret
- $secret = \OC::$server->getSecureRandom()->getMediumStrengthGenerator()->generate(48);
+ $secret = $this->random->getMediumStrengthGenerator()->generate(48);
//write the config file
$this->config->setSystemValues([
@@ -358,7 +377,7 @@ class Setup {
//try to write logtimezone
if (date_default_timezone_get()) {
- \OC_Config::setValue('logtimezone', date_default_timezone_get());
+ $config->setSystemValue('logtimezone', date_default_timezone_get());
}
//and we are done
@@ -396,7 +415,9 @@ class Setup {
* @throws \OC\HintException If .htaccess does not include the current version
*/
public static function updateHtaccess() {
- $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults());
+ $setupHelper = new \OC\Setup(\OC::$server->getConfig(), \OC::$server->getIniWrapper(),
+ \OC::$server->getL10N('lib'), new \OC_Defaults(), \OC::$server->getLogger(),
+ \OC::$server->getSecureRandom());
if(!$setupHelper->isCurrentHtaccess()) {
throw new \OC\HintException('.htaccess file has the wrong version. Please upload the correct version. Maybe you forgot to replace it after updating?');
}
diff --git a/lib/private/setup/abstractdatabase.php b/lib/private/setup/abstractdatabase.php
index 13daf1782fc..1ec853c3b02 100644
--- a/lib/private/setup/abstractdatabase.php
+++ b/lib/private/setup/abstractdatabase.php
@@ -22,22 +22,39 @@
*/
namespace OC\Setup;
+use OCP\IConfig;
+use OCP\ILogger;
+use OCP\Security\ISecureRandom;
+
abstract class AbstractDatabase {
- /**
- * @var \OC_L10N
- */
+ /** @var \OC_L10N */
protected $trans;
+ /** @var string */
protected $dbDefinitionFile;
- protected $dbuser;
- protected $dbpassword;
- protected $dbname;
- protected $dbhost;
- protected $tableprefix;
+ /** @var string */
+ protected $dbUser;
+ /** @var string */
+ protected $dbPassword;
+ /** @var string */
+ protected $dbName;
+ /** @var string */
+ protected $dbHost;
+ /** @var string */
+ protected $tablePrefix;
+ /** @var IConfig */
+ protected $config;
+ /** @var ILogger */
+ protected $logger;
+ /** @var ISecureRandom */
+ protected $random;
- public function __construct($trans, $dbDefinitionFile) {
+ public function __construct($trans, $dbDefinitionFile, IConfig $config, ILogger $logger, ISecureRandom $random) {
$this->trans = $trans;
$this->dbDefinitionFile = $dbDefinitionFile;
+ $this->config = $config;
+ $this->logger = $logger;
+ $this->random = $random;
}
public function validate($config) {
@@ -61,17 +78,17 @@ abstract class AbstractDatabase {
$dbHost = !empty($config['dbhost']) ? $config['dbhost'] : 'localhost';
$dbTablePrefix = isset($config['dbtableprefix']) ? $config['dbtableprefix'] : 'oc_';
- \OC_Config::setValues([
+ $this->config->setSystemValues([
'dbname' => $dbName,
'dbhost' => $dbHost,
'dbtableprefix' => $dbTablePrefix,
]);
- $this->dbuser = $dbUser;
- $this->dbpassword = $dbPass;
- $this->dbname = $dbName;
- $this->dbhost = $dbHost;
- $this->tableprefix = $dbTablePrefix;
+ $this->dbUser = $dbUser;
+ $this->dbPassword = $dbPass;
+ $this->dbName = $dbName;
+ $this->dbHost = $dbHost;
+ $this->tablePrefix = $dbTablePrefix;
}
abstract public function setupDatabase($userName);
diff --git a/lib/private/setup/mssql.php b/lib/private/setup/mssql.php
deleted file mode 100644
index 0ae02d6cbcc..00000000000
--- a/lib/private/setup/mssql.php
+++ /dev/null
@@ -1,203 +0,0 @@
-<?php
-/**
- * @author Bart Visscher <bartv@thisnet.nl>
- * @author Joas Schilling <nickvergessen@owncloud.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @copyright Copyright (c) 2015, ownCloud, Inc.
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License, version 3,
- * along with this program. If not, see <http://www.gnu.org/licenses/>
- *
- */
-namespace OC\Setup;
-
-class MSSQL extends AbstractDatabase {
- public $dbprettyname = 'MS SQL Server';
-
- public function setupDatabase($username) {
- //check if the database user has admin right
- $masterConnectionInfo = array( "Database" => "master", "UID" => $this->dbuser, "PWD" => $this->dbpassword);
-
- $masterConnection = @sqlsrv_connect($this->dbhost, $masterConnectionInfo);
- if(!$masterConnection) {
- $entry = '';
- if( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- }
- throw new \OC\DatabaseSetupException($this->trans->t('MS SQL username and/or password not valid: %s', array($entry)),
- $this->trans->t('You need to enter either an existing account or the administrator.'));
- }
-
- \OC_Config::setValues([
- 'dbuser' => $this->dbuser,
- 'dbpassword' => $this->dbpassword,
- ]);
-
- $this->createDBLogin($masterConnection);
-
- $this->createDatabase($masterConnection);
-
- $this->createDBUser($masterConnection);
-
- sqlsrv_close($masterConnection);
-
- $this->createDatabaseStructure();
- }
-
- private function createDBLogin($connection) {
- $query = "SELECT * FROM master.sys.server_principals WHERE name = '".$this->dbuser."';";
- $result = sqlsrv_query($connection, $query);
- if ($result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- $row = sqlsrv_fetch_array($result);
-
- if ($row === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- if ($row == null) {
- $query = "CREATE LOGIN [".$this->dbuser."] WITH PASSWORD = '".$this->dbpassword."';";
- $result = sqlsrv_query($connection, $query);
- if (!$result or $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- }
- }
- }
- }
- }
-
- private function createDBUser($connection) {
- $query = "SELECT * FROM [".$this->dbname."].sys.database_principals WHERE name = '".$this->dbuser."';";
- $result = sqlsrv_query($connection, $query);
- if ($result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- $row = sqlsrv_fetch_array($result);
-
- if ($row === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- if ($row == null) {
- $query = "USE [".$this->dbname."]; CREATE USER [".$this->dbuser."] FOR LOGIN [".$this->dbuser."];";
- $result = sqlsrv_query($connection, $query);
- if (!$result || $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry = 'DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- }
- }
-
- $query = "USE [".$this->dbname."]; EXEC sp_addrolemember 'db_owner', '".$this->dbuser."';";
- $result = sqlsrv_query($connection, $query);
- if (!$result || $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- }
- }
- }
- }
-
- private function createDatabase($connection) {
- $query = "CREATE DATABASE [".$this->dbname."];";
- $result = sqlsrv_query($connection, $query);
- if (!$result || $result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- }
- }
-
- private function createDatabaseStructure() {
- $connectionInfo = array( "Database" => $this->dbname, "UID" => $this->dbuser, "PWD" => $this->dbpassword);
-
- $connection = @sqlsrv_connect($this->dbhost, $connectionInfo);
-
- //fill the database if needed
- $query = "SELECT * FROM INFORMATION_SCHEMA.TABLES"
- ." WHERE TABLE_SCHEMA = '".$this->dbname."'"
- ." AND TABLE_NAME = '".$this->tableprefix."users'";
- $result = sqlsrv_query($connection, $query);
- if ($result === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- $row = sqlsrv_fetch_array($result);
-
- if ($row === false) {
- if ( ($errors = sqlsrv_errors() ) != null) {
- $entry='DB Error: "'.print_r(sqlsrv_errors()).'"<br />';
- } else {
- $entry = '';
- }
- $entry.='Offending command was: '.$query.'<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- } else {
- if ($row == null) {
- \OC_DB::createDbFromStructure($this->dbDefinitionFile);
- }
- }
- }
-
- sqlsrv_close($connection);
- }
-}
diff --git a/lib/private/setup/mysql.php b/lib/private/setup/mysql.php
index c01ff724b80..5597592f21e 100644
--- a/lib/private/setup/mysql.php
+++ b/lib/private/setup/mysql.php
@@ -23,110 +23,139 @@
*/
namespace OC\Setup;
+use OC\DB\ConnectionFactory;
+use OCP\IDBConnection;
+
class MySQL extends AbstractDatabase {
public $dbprettyname = 'MySQL/MariaDB';
public function setupDatabase($username) {
//check if the database user has admin right
- $connection = @mysql_connect($this->dbhost, $this->dbuser, $this->dbpassword);
- if(!$connection) {
- throw new \OC\DatabaseSetupException($this->trans->t('MySQL/MariaDB username and/or password not valid'),
- $this->trans->t('You need to enter either an existing account or the administrator.'));
- }
- //user already specified in config
- $oldUser=\OC_Config::getValue('dbuser', false);
-
- //we don't have a dbuser specified in config
- if($this->dbuser!=$oldUser) {
- //add prefix to the admin username to prevent collisions
- $adminUser=substr('oc_'.$username, 0, 16);
-
- $i = 1;
- while(true) {
- //this should be enough to check for admin rights in mysql
- $query="SELECT user FROM mysql.user WHERE user='$adminUser'";
-
- $result = mysql_query($query, $connection);
+ $connection = $this->connect();
- //current dbuser has admin rights
- if($result) {
- //new dbuser does not exist
- if(mysql_num_rows($result) === 0) {
- //use the admin login data for the new database user
- $this->dbuser=$adminUser;
-
- //create a random password so we don't need to store the admin password in the config file
- $this->dbpassword=\OC_Util::generateRandomBytes(30);
-
- $this->createDBUser($connection);
-
- break;
- } else {
- //repeat with different username
- $length=strlen((string)$i);
- $adminUser=substr('oc_'.$username, 0, 16 - $length).$i;
- $i++;
- }
- } else {
- break;
- }
- };
-
- \OC_Config::setValues([
- 'dbuser' => $this->dbuser,
- 'dbpassword' => $this->dbpassword,
- ]);
- }
+ $this->createSpecificUser($username, $connection);
//create the database
$this->createDatabase($connection);
//fill the database if needed
- $query='select count(*) from information_schema.tables'
- ." where table_schema='".$this->dbname."' AND table_name = '".$this->tableprefix."users';";
- $result = mysql_query($query, $connection);
- if($result) {
- $row=mysql_fetch_row($result);
- }
+ $query='select count(*) from information_schema.tables where table_schema=? AND table_name = ?';
+ $result = $connection->executeQuery($query, [$this->dbName, $this->tablePrefix.'users']);
+ $row = $result->fetch();
if(!$result or $row[0]==0) {
\OC_DB::createDbFromStructure($this->dbDefinitionFile);
}
- mysql_close($connection);
}
+ /**
+ * @param \OC\DB\Connection $connection
+ */
private function createDatabase($connection) {
- $name = $this->dbname;
- $user = $this->dbuser;
- //we cant use OC_BD functions here because we need to connect as the administrative user.
- $query = "CREATE DATABASE IF NOT EXISTS `$name` CHARACTER SET utf8 COLLATE utf8_bin;";
- $result = mysql_query($query, $connection);
- if(!$result) {
- $entry = $this->trans->t('DB Error: "%s"', array(mysql_error($connection))) . '<br />';
- $entry .= $this->trans->t('Offending command was: "%s"', array($query)) . '<br />';
- \OCP\Util::writeLog('setup.mssql', $entry, \OCP\Util::WARN);
- }
- $query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";
+ try{
+ $name = $this->dbName;
+ $user = $this->dbUser;
+ //we cant use OC_BD functions here because we need to connect as the administrative user.
+ $query = "CREATE DATABASE IF NOT EXISTS `$name` CHARACTER SET utf8 COLLATE utf8_bin;";
+ $connection->executeUpdate($query);
- //this query will fail if there aren't the right permissions, ignore the error
- mysql_query($query, $connection);
+ //this query will fail if there aren't the right permissions, ignore the error
+ $query="GRANT ALL PRIVILEGES ON `$name` . * TO '$user'";
+ $connection->executeUpdate($query);
+ } catch (\Exception $ex) {
+ $this->logger->error('Database creation failed: {error}', [
+ 'app' => 'mysql.setup',
+ 'error' => $ex->getMessage()
+ ]);
+ }
}
+ /**
+ * @param IDbConnection $connection
+ * @throws \OC\DatabaseSetupException
+ */
private function createDBUser($connection) {
- $name = $this->dbuser;
- $password = $this->dbpassword;
+ $name = $this->dbUser;
+ $password = $this->dbPassword;
// we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one,
// the anonymous user would take precedence when there is one.
$query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'";
- $result = mysql_query($query, $connection);
- if (!$result) {
- throw new \OC\DatabaseSetupException($this->trans->t("MySQL/MariaDB user '%s'@'localhost' exists already.", array($name)),
- $this->trans->t("Drop this user from MySQL/MariaDB", array($name)));
- }
+ $connection->executeUpdate($query);
$query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'";
- $result = mysql_query($query, $connection);
- if (!$result) {
- throw new \OC\DatabaseSetupException($this->trans->t("MySQL/MariaDB user '%s'@'%%' already exists", array($name)),
- $this->trans->t("Drop this user from MySQL/MariaDB."));
+ $connection->executeUpdate($query);
+ }
+
+ /**
+ * @return \OC\DB\Connection
+ * @throws \OC\DatabaseSetupException
+ */
+ private function connect() {
+ $type = 'mysql';
+ $connectionParams = array(
+ 'host' => $this->dbHost,
+ 'user' => $this->dbUser,
+ 'password' => $this->dbPassword,
+ 'tablePrefix' => $this->tablePrefix,
+ );
+ $cf = new ConnectionFactory();
+ return $cf->getConnection($type, $connectionParams);
+ }
+
+ /**
+ * @param $username
+ * @param IDBConnection $connection
+ * @return array
+ */
+ private function createSpecificUser($username, $connection) {
+ try {
+ //user already specified in config
+ $oldUser = $this->config->getSystemValue('dbuser', false);
+
+ //we don't have a dbuser specified in config
+ if ($this->dbUser !== $oldUser) {
+ //add prefix to the admin username to prevent collisions
+ $adminUser = substr('oc_' . $username, 0, 16);
+
+ $i = 1;
+ while (true) {
+ //this should be enough to check for admin rights in mysql
+ $query = 'SELECT user FROM mysql.user WHERE user=?';
+ $result = $connection->executeQuery($query, [$adminUser]);
+
+ //current dbuser has admin rights
+ if ($result) {
+ $data = $result->fetchAll();
+ //new dbuser does not exist
+ if (count($data) === 0) {
+ //use the admin login data for the new database user
+ $this->dbUser = $adminUser;
+
+ //create a random password so we don't need to store the admin password in the config file
+ $this->dbPassword = $this->random->getMediumStrengthGenerator()->generate(30);
+
+ $this->createDBUser($connection);
+
+ break;
+ } else {
+ //repeat with different username
+ $length = strlen((string)$i);
+ $adminUser = substr('oc_' . $username, 0, 16 - $length) . $i;
+ $i++;
+ }
+ } else {
+ break;
+ }
+ };
+ }
+ } catch (\Exception $ex) {
+ $this->logger->error('Specific user creation failed: {error}', [
+ 'app' => 'mysql.setup',
+ 'error' => $ex->getMessage()
+ ]);
}
+
+ $this->config->setSystemValues([
+ 'dbuser' => $this->dbUser,
+ 'dbpassword' => $this->dbPassword,
+ ]);
}
}
diff --git a/lib/private/setup/oci.php b/lib/private/setup/oci.php
index d46d5529da0..1e1eb1ff54e 100644
--- a/lib/private/setup/oci.php
+++ b/lib/private/setup/oci.php
@@ -38,10 +38,10 @@ class OCI extends AbstractDatabase {
$this->dbtablespace = 'USERS';
}
// allow empty hostname for oracle
- $this->dbhost = $config['dbhost'];
+ $this->dbHost = $config['dbhost'];
\OC_Config::setValues([
- 'dbhost' => $this->dbhost,
+ 'dbhost' => $this->dbHost,
'dbtablespace' => $this->dbtablespace,
]);
}
@@ -58,8 +58,8 @@ class OCI extends AbstractDatabase {
}
public function setupDatabase($username) {
- $e_host = addslashes($this->dbhost);
- $e_dbname = addslashes($this->dbname);
+ $e_host = addslashes($this->dbHost);
+ $e_dbname = addslashes($this->dbName);
//check if the database user has admin right
if ($e_host == '') {
$easy_connect_string = $e_dbname; // use dbname as easy connect name
@@ -67,7 +67,7 @@ class OCI extends AbstractDatabase {
$easy_connect_string = '//'.$e_host.'/'.$e_dbname;
}
\OCP\Util::writeLog('setup oracle', 'connect string: ' . $easy_connect_string, \OCP\Util::DEBUG);
- $connection = @oci_connect($this->dbuser, $this->dbpassword, $easy_connect_string);
+ $connection = @oci_connect($this->dbUser, $this->dbPassword, $easy_connect_string);
if(!$connection) {
$errorMessage = $this->getLastError();
if ($errorMessage) {
@@ -103,23 +103,23 @@ class OCI extends AbstractDatabase {
//use the admin login data for the new database user
//add prefix to the oracle user name to prevent collisions
- $this->dbuser='oc_'.$username;
+ $this->dbUser='oc_'.$username;
//create a new password so we don't need to store the admin config in the config file
- $this->dbpassword=\OC_Util::generateRandomBytes(30);
+ $this->dbPassword=\OC_Util::generateRandomBytes(30);
//oracle passwords are treated as identifiers:
// must start with alphanumeric char
// needs to be shortened to 30 bytes, as the two " needed to escape the identifier count towards the identifier length.
- $this->dbpassword=substr($this->dbpassword, 0, 30);
+ $this->dbPassword=substr($this->dbPassword, 0, 30);
$this->createDBUser($connection);
}
}
\OC_Config::setValues([
- 'dbuser' => $this->dbuser,
- 'dbname' => $this->dbname,
- 'dbpassword' => $this->dbpassword,
+ 'dbuser' => $this->dbUser,
+ 'dbname' => $this->dbName,
+ 'dbpassword' => $this->dbPassword,
]);
//create the database not necessary, oracle implies user = schema
@@ -131,26 +131,26 @@ class OCI extends AbstractDatabase {
oci_close($connection);
// connect to the oracle database (schema=$this->dbuser) an check if the schema needs to be filled
- $this->dbuser = \OC_Config::getValue('dbuser');
+ $this->dbUser = \OC_Config::getValue('dbuser');
//$this->dbname = \OC_Config::getValue('dbname');
- $this->dbpassword = \OC_Config::getValue('dbpassword');
+ $this->dbPassword = \OC_Config::getValue('dbpassword');
- $e_host = addslashes($this->dbhost);
- $e_dbname = addslashes($this->dbname);
+ $e_host = addslashes($this->dbHost);
+ $e_dbname = addslashes($this->dbName);
if ($e_host == '') {
$easy_connect_string = $e_dbname; // use dbname as easy connect name
} else {
$easy_connect_string = '//'.$e_host.'/'.$e_dbname;
}
- $connection = @oci_connect($this->dbuser, $this->dbpassword, $easy_connect_string);
+ $connection = @oci_connect($this->dbUser, $this->dbPassword, $easy_connect_string);
if(!$connection) {
throw new \OC\DatabaseSetupException($this->trans->t('Oracle username and/or password not valid'),
$this->trans->t('You need to enter either an existing account or the administrator.'));
}
$query = "SELECT count(*) FROM user_tables WHERE table_name = :un";
$stmt = oci_parse($connection, $query);
- $un = $this->tableprefix.'users';
+ $un = $this->tablePrefix.'users';
oci_bind_by_name($stmt, ':un', $un);
if (!$stmt) {
$entry = $this->trans->t('DB Error: "%s"', array($this->getLastError($connection))) . '<br />';
@@ -171,8 +171,8 @@ class OCI extends AbstractDatabase {
* @param resource $connection
*/
private function createDBUser($connection) {
- $name = $this->dbuser;
- $password = $this->dbpassword;
+ $name = $this->dbUser;
+ $password = $this->dbPassword;
$query = "SELECT * FROM all_users WHERE USERNAME = :un";
$stmt = oci_parse($connection, $query);
if (!$stmt) {
diff --git a/lib/private/setup/postgresql.php b/lib/private/setup/postgresql.php
index c8fd3b98fe4..319b6676ef8 100644
--- a/lib/private/setup/postgresql.php
+++ b/lib/private/setup/postgresql.php
@@ -27,9 +27,9 @@ class PostgreSQL extends AbstractDatabase {
public $dbprettyname = 'PostgreSQL';
public function setupDatabase($username) {
- $e_host = addslashes($this->dbhost);
- $e_user = addslashes($this->dbuser);
- $e_password = addslashes($this->dbpassword);
+ $e_host = addslashes($this->dbHost);
+ $e_user = addslashes($this->dbUser);
+ $e_password = addslashes($this->dbPassword);
// Fix database with port connection
if(strpos($e_host, ':')) {
@@ -43,7 +43,7 @@ class PostgreSQL extends AbstractDatabase {
$connection = @pg_connect($connection_string);
if(!$connection) {
// Try if we can connect to the DB with the specified name
- $e_dbname = addslashes($this->dbname);
+ $e_dbname = addslashes($this->dbName);
$connection_string = "host='$e_host' dbname='$e_dbname' user='$e_user' port='$port' password='$e_password'";
$connection = @pg_connect($connection_string);
@@ -51,7 +51,7 @@ class PostgreSQL extends AbstractDatabase {
throw new \OC\DatabaseSetupException($this->trans->t('PostgreSQL username and/or password not valid'),
$this->trans->t('You need to enter either an existing account or the administrator.'));
}
- $e_user = pg_escape_string($this->dbuser);
+ $e_user = pg_escape_string($this->dbUser);
//check for roles creation rights in postgresql
$query="SELECT 1 FROM pg_roles WHERE rolcreaterole=TRUE AND rolname='$e_user'";
$result = pg_query($connection, $query);
@@ -59,16 +59,16 @@ class PostgreSQL extends AbstractDatabase {
//use the admin login data for the new database user
//add prefix to the postgresql user name to prevent collisions
- $this->dbuser='oc_'.$username;
+ $this->dbUser='oc_'.$username;
//create a new password so we don't need to store the admin config in the config file
- $this->dbpassword=\OC_Util::generateRandomBytes(30);
+ $this->dbPassword=\OC_Util::generateRandomBytes(30);
$this->createDBUser($connection);
}
\OC_Config::setValues([
- 'dbuser' => $this->dbuser,
- 'dbpassword' => $this->dbpassword,
+ 'dbuser' => $this->dbUser,
+ 'dbpassword' => $this->dbPassword,
]);
//create the database
@@ -78,13 +78,13 @@ class PostgreSQL extends AbstractDatabase {
pg_close($connection);
// connect to the ownCloud database (dbname=$this->dbname) and check if it needs to be filled
- $this->dbuser = \OC_Config::getValue('dbuser');
- $this->dbpassword = \OC_Config::getValue('dbpassword');
+ $this->dbUser = \OC_Config::getValue('dbuser');
+ $this->dbPassword = \OC_Config::getValue('dbpassword');
- $e_host = addslashes($this->dbhost);
- $e_dbname = addslashes($this->dbname);
- $e_user = addslashes($this->dbuser);
- $e_password = addslashes($this->dbpassword);
+ $e_host = addslashes($this->dbHost);
+ $e_dbname = addslashes($this->dbName);
+ $e_user = addslashes($this->dbUser);
+ $e_password = addslashes($this->dbPassword);
// Fix database with port connection
if(strpos($e_host, ':')) {
@@ -99,7 +99,7 @@ class PostgreSQL extends AbstractDatabase {
throw new \OC\DatabaseSetupException($this->trans->t('PostgreSQL username and/or password not valid'),
$this->trans->t('You need to enter either an existing account or the administrator.'));
}
- $query = "select count(*) FROM pg_class WHERE relname='".$this->tableprefix."users' limit 1";
+ $query = "select count(*) FROM pg_class WHERE relname='".$this->tablePrefix."users' limit 1";
$result = pg_query($connection, $query);
if($result) {
$row = pg_fetch_row($result);
@@ -111,8 +111,8 @@ class PostgreSQL extends AbstractDatabase {
private function createDatabase($connection) {
//we cant use OC_BD functions here because we need to connect as the administrative user.
- $e_name = pg_escape_string($this->dbname);
- $e_user = pg_escape_string($this->dbuser);
+ $e_name = pg_escape_string($this->dbName);
+ $e_user = pg_escape_string($this->dbUser);
$query = "select datname from pg_database where datname = '$e_name'";
$result = pg_query($connection, $query);
if(!$result) {
@@ -137,8 +137,8 @@ class PostgreSQL extends AbstractDatabase {
}
private function createDBUser($connection) {
- $e_name = pg_escape_string($this->dbuser);
- $e_password = pg_escape_string($this->dbpassword);
+ $e_name = pg_escape_string($this->dbUser);
+ $e_password = pg_escape_string($this->dbPassword);
$query = "select * from pg_roles where rolname='$e_name';";
$result = pg_query($connection, $query);
if(!$result) {
diff --git a/lib/private/util.php b/lib/private/util.php
index 39d64952dc6..1b22e03ca6f 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -567,7 +567,8 @@ class OC_Util {
}
$webServerRestart = false;
- $setup = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'), new \OC_Defaults());
+ $setup = new \OC\Setup($config, \OC::$server->getIniWrapper(), \OC::$server->getL10N('lib'),
+ new \OC_Defaults(), \OC::$server->getLogger(), \OC::$server->getSecureRandom());
$availableDatabases = $setup->getSupportedDatabases();
if (empty($availableDatabases)) {
$errors[] = array(
diff --git a/settings/admin.php b/settings/admin.php
index 260e462db58..8410a6671ef 100644
--- a/settings/admin.php
+++ b/settings/admin.php
@@ -46,7 +46,10 @@ $entriesRemaining = count($entries) > $numEntriesToLoad;
$entries = array_slice($entries, 0, $numEntriesToLoad);
$logFilePath = OC_Log_Owncloud::getLogFilePath();
$doesLogFileExist = file_exists($logFilePath);
-$logFileSize = filesize($logFilePath);
+$logFileSize = 0;
+if($doesLogFileExist) {
+ $logFileSize = filesize($logFilePath);
+}
$config = \OC::$server->getConfig();
$appConfig = \OC::$server->getAppConfig();
$request = \OC::$server->getRequest();
diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js
index 947436001a8..b128436b82b 100644
--- a/settings/l10n/gl.js
+++ b/settings/l10n/gl.js
@@ -31,7 +31,9 @@ OC.L10N.register(
"Unable to change password" : "Non é posíbel cambiar o contrasinal",
"Enabled" : "Activado",
"Not enabled" : "Non activado",
- "Federated Cloud Sharing" : "Compartición de nube federada",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións a través da tenda de aplicacións ou da nube federada compartida",
+ "Federated Cloud Sharing" : "Nube federada compartida",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está utilizando unha versión obsoleta %s (%s). Actualice o seu sistema operativo, caso contrario características como %s non funcionarán de xeito fiábel.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu un problema revise os ficheiros de rexistro (Erro: %s)",
"Migration Completed" : "Completouse a migración",
"Group already exists." : "Xa existe o grupo.",
diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json
index dbe24dc7df8..44f769a64cb 100644
--- a/settings/l10n/gl.json
+++ b/settings/l10n/gl.json
@@ -29,7 +29,9 @@
"Unable to change password" : "Non é posíbel cambiar o contrasinal",
"Enabled" : "Activado",
"Not enabled" : "Non activado",
- "Federated Cloud Sharing" : "Compartición de nube federada",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e actualizando aplicacións a través da tenda de aplicacións ou da nube federada compartida",
+ "Federated Cloud Sharing" : "Nube federada compartida",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está utilizando unha versión obsoleta %s (%s). Actualice o seu sistema operativo, caso contrario características como %s non funcionarán de xeito fiábel.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu un problema revise os ficheiros de rexistro (Erro: %s)",
"Migration Completed" : "Completouse a migración",
"Group already exists." : "Xa existe o grupo.",
diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js
index 2d76cb44f6c..42d901f1b37 100644
--- a/settings/l10n/pt_BR.js
+++ b/settings/l10n/pt_BR.js
@@ -31,7 +31,9 @@ OC.L10N.register(
"Unable to change password" : "Impossível modificar senha",
"Enabled" : "Habilitado",
"Not enabled" : "Desabilitado",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via app store ou Núvem Compartilhada Federada",
"Federated Cloud Sharing" : "Compartilhamento de Nuvem Conglomerada",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando um desatualizado %s versão (%s). Por favor, atualize seu sistema operacional ou recursos como %s não vai funcionar de forma confiável.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu um problema enquanto verificava seus arquivos de log (Erro: %s)",
"Migration Completed" : "Migração Concluida",
"Group already exists." : "O Grupo já existe.",
diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json
index f9df769ac35..3274851cfa5 100644
--- a/settings/l10n/pt_BR.json
+++ b/settings/l10n/pt_BR.json
@@ -29,7 +29,9 @@
"Unable to change password" : "Impossível modificar senha",
"Enabled" : "Habilitado",
"Not enabled" : "Desabilitado",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via app store ou Núvem Compartilhada Federada",
"Federated Cloud Sharing" : "Compartilhamento de Nuvem Conglomerada",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando um desatualizado %s versão (%s). Por favor, atualize seu sistema operacional ou recursos como %s não vai funcionar de forma confiável.",
"A problem occurred, please check your log files (Error: %s)" : "Ocorreu um problema enquanto verificava seus arquivos de log (Erro: %s)",
"Migration Completed" : "Migração Concluida",
"Group already exists." : "O Grupo já existe.",
diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js
index 2ceba16a84b..0966a3ac11b 100644
--- a/settings/l10n/th_TH.js
+++ b/settings/l10n/th_TH.js
@@ -31,7 +31,9 @@ OC.L10N.register(
"Unable to change password" : "ไม่สามารถเปลี่ยนรหัสผ่าน",
"Enabled" : "เปิดการใช้งาน",
"Not enabled" : "ใช้งานไม่ได้",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "กำลังติดตั้งและอัพเดทแอพพลิเคชันผ่าแอพสโตร์หรือคลาวด์ในเครือ",
"Federated Cloud Sharing" : "สหพันธ์การแชร์คลาวด์",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL รุ่น %s เป็นรุ่นเก่า (%s)โปรดอัพเดทระบบปฏิบัติการหรือคุณสมบัติเป็น %s เพื่อการทำงานที่มีประสิทธิภาพ",
"A problem occurred, please check your log files (Error: %s)" : "มีปัญหาเกิดขึ้นโปรดตรวจสอบบันทึกไฟล์ของคุณ (ข้อผิดพลาด: %s)",
"Migration Completed" : "การโยกย้ายเสร็จสมบูรณ์",
"Group already exists." : "มีกลุ่มนี้อยู่แล้ว",
@@ -197,6 +199,7 @@ OC.L10N.register(
"licensed" : "ได้รับใบอนุญาต",
"Documentation:" : "เอกสาร:",
"User documentation" : "เอกสารสำหรับผู้ใช้",
+ "Admin documentation" : "เอกสารผู้ดูแลระบบ",
"Show description …" : "แสดงรายละเอียด ...",
"Hide description …" : "ซ่อนรายละเอียด ...",
"This app cannot be installed because the following dependencies are not fulfilled:" : "ไม่สามารถติดตั้งแอพฯนี้เพราะไม่มีตัวอ้างอิงต่อไปนี้:",
diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json
index c0fbabfc5b7..78d04cf3f61 100644
--- a/settings/l10n/th_TH.json
+++ b/settings/l10n/th_TH.json
@@ -29,7 +29,9 @@
"Unable to change password" : "ไม่สามารถเปลี่ยนรหัสผ่าน",
"Enabled" : "เปิดการใช้งาน",
"Not enabled" : "ใช้งานไม่ได้",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "กำลังติดตั้งและอัพเดทแอพพลิเคชันผ่าแอพสโตร์หรือคลาวด์ในเครือ",
"Federated Cloud Sharing" : "สหพันธ์การแชร์คลาวด์",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL รุ่น %s เป็นรุ่นเก่า (%s)โปรดอัพเดทระบบปฏิบัติการหรือคุณสมบัติเป็น %s เพื่อการทำงานที่มีประสิทธิภาพ",
"A problem occurred, please check your log files (Error: %s)" : "มีปัญหาเกิดขึ้นโปรดตรวจสอบบันทึกไฟล์ของคุณ (ข้อผิดพลาด: %s)",
"Migration Completed" : "การโยกย้ายเสร็จสมบูรณ์",
"Group already exists." : "มีกลุ่มนี้อยู่แล้ว",
@@ -195,6 +197,7 @@
"licensed" : "ได้รับใบอนุญาต",
"Documentation:" : "เอกสาร:",
"User documentation" : "เอกสารสำหรับผู้ใช้",
+ "Admin documentation" : "เอกสารผู้ดูแลระบบ",
"Show description …" : "แสดงรายละเอียด ...",
"Hide description …" : "ซ่อนรายละเอียด ...",
"This app cannot be installed because the following dependencies are not fulfilled:" : "ไม่สามารถติดตั้งแอพฯนี้เพราะไม่มีตัวอ้างอิงต่อไปนี้:",
diff --git a/tests/lib/appframework/utility/SimpleContainerTest.php b/tests/lib/appframework/utility/SimpleContainerTest.php
index 09857808b9f..7ff579a85fc 100644
--- a/tests/lib/appframework/utility/SimpleContainerTest.php
+++ b/tests/lib/appframework/utility/SimpleContainerTest.php
@@ -136,8 +136,7 @@ class SimpleContainerTest extends \Test\TestCase {
}
- public function tesOverrideService() {
- $this->container->registerParameter('test', 'abc');
+ public function testOverrideService() {
$this->container->registerService(
'Test\AppFramework\Utility\IInterfaceConstructor', function ($c) {
return $c->query('Test\AppFramework\Utility\ClassSimpleConstructor');
@@ -147,10 +146,9 @@ class SimpleContainerTest extends \Test\TestCase {
return $c->query('Test\AppFramework\Utility\ClassEmptyConstructor');
});
$object = $this->container->query(
- 'Test\AppFramework\Utility\ClassInterfaceConstructor'
+ 'Test\AppFramework\Utility\IInterfaceConstructor'
);
$this->assertTrue($object instanceof ClassEmptyConstructor);
- $this->assertEquals('abc', $object->test);
}
public function testRegisterAliasParamter() {
diff --git a/tests/lib/db/mdb2schemamanager.php b/tests/lib/db/mdb2schemamanager.php
index e20f4c421b8..8ce6febf3ac 100644
--- a/tests/lib/db/mdb2schemamanager.php
+++ b/tests/lib/db/mdb2schemamanager.php
@@ -10,7 +10,6 @@
namespace Test\DB;
use Doctrine\DBAL\Platforms\OraclePlatform;
-use Doctrine\DBAL\Platforms\SQLServerPlatform;
class MDB2SchemaManager extends \Test\TestCase {
@@ -30,9 +29,6 @@ class MDB2SchemaManager extends \Test\TestCase {
if ($connection->getDatabasePlatform() instanceof OraclePlatform) {
$this->markTestSkipped('Adding auto increment columns in Oracle is not supported.');
}
- if ($connection->getDatabasePlatform() instanceof SQLServerPlatform) {
- $this->markTestSkipped('DB migration tests are not supported on MSSQL');
- }
$manager = new \OC\DB\MDB2SchemaManager($connection);
diff --git a/tests/lib/db/migrator.php b/tests/lib/db/migrator.php
index 6bde68c2d20..4d558909743 100644
--- a/tests/lib/db/migrator.php
+++ b/tests/lib/db/migrator.php
@@ -11,9 +11,9 @@ namespace Test\DB;
use \Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Platforms\OraclePlatform;
-use Doctrine\DBAL\Platforms\SQLServerPlatform;
use \Doctrine\DBAL\Schema\Schema;
use \Doctrine\DBAL\Schema\SchemaConfig;
+use OCP\IConfig;
class Migrator extends \Test\TestCase {
/**
@@ -31,6 +31,7 @@ class Migrator extends \Test\TestCase {
**/
private $config;
+ /** @var string */
private $tableName;
protected function setUp() {
@@ -41,9 +42,6 @@ class Migrator extends \Test\TestCase {
if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) {
$this->markTestSkipped('DB migration tests are not supported on OCI');
}
- if ($this->connection->getDatabasePlatform() instanceof SQLServerPlatform) {
- $this->markTestSkipped('DB migration tests are not supported on MSSQL');
- }
$this->manager = new \OC\DB\MDB2SchemaManager($this->connection);
$this->tableName = strtolower($this->getUniqueID($this->config->getSystemValue('dbtableprefix', 'oc_') . 'test_'));
}
diff --git a/tests/lib/dbschema.php b/tests/lib/dbschema.php
index cfaebec079e..97307664b6a 100644
--- a/tests/lib/dbschema.php
+++ b/tests/lib/dbschema.php
@@ -47,9 +47,6 @@ class Test_DBSchema extends \Test\TestCase {
*/
public function testSchema() {
$platform = \OC_DB::getConnection()->getDatabasePlatform();
- if ($platform instanceof \Doctrine\DBAL\Platforms\SQLServerPlatform) {
- $this->markTestSkipped("Test not relevant on MSSQL");
- }
$this->doTestSchemaCreating();
$this->doTestSchemaChanging();
$this->doTestSchemaDumping();
diff --git a/tests/lib/files/pathverificationtest.php b/tests/lib/files/pathverificationtest.php
index b59aceba7b1..13fccd310f3 100644
--- a/tests/lib/files/pathverificationtest.php
+++ b/tests/lib/files/pathverificationtest.php
@@ -83,6 +83,10 @@ class PathVerification extends \Test\TestCase {
return [
// this is the monkey emoji - http://en.wikipedia.org/w/index.php?title=%F0%9F%90%B5&redirect=no
['🐵'],
+ ['🐵.txt'],
+ ['txt.💩'],
+ ['💩🐵.txt'],
+ ['💩🐵'],
];
}
diff --git a/tests/lib/setup.php b/tests/lib/setup.php
index 79ca0c0be90..72c84520056 100644
--- a/tests/lib/setup.php
+++ b/tests/lib/setup.php
@@ -20,6 +20,10 @@ class Test_OC_Setup extends \Test\TestCase {
private $defaults;
/** @var \OC\Setup | PHPUnit_Framework_MockObject_MockObject */
protected $setupClass;
+ /** @var \OCP\ILogger | PHPUnit_Framework_MockObject_MockObject */
+ protected $logger;
+ /** @var \OCP\Security\ISecureRandom | PHPUnit_Framework_MockObject_MockObject */
+ protected $random;
protected function setUp() {
parent::setUp();
@@ -28,9 +32,11 @@ class Test_OC_Setup extends \Test\TestCase {
$this->iniWrapper = $this->getMock('\bantu\IniGetWrapper\IniGetWrapper');
$this->l10n = $this->getMock('\OCP\IL10N');
$this->defaults = $this->getMock('\OC_Defaults');
+ $this->logger = $this->getMock('\OCP\ILogger');
+ $this->random = $this->getMock('\OCP\Security\ISecureRandom');
$this->setupClass = $this->getMock('\OC\Setup',
- ['class_exists', 'is_callable'],
- [$this->config, $this->iniWrapper, $this->l10n, $this->defaults]);
+ ['class_exists', 'is_callable', 'getAvailableDbDriversForPdo'],
+ [$this->config, $this->iniWrapper, $this->l10n, $this->defaults, $this->logger, $this->random]);
}
public function testGetSupportedDatabasesWithOneWorking() {
@@ -45,9 +51,13 @@ class Test_OC_Setup extends \Test\TestCase {
->method('class_exists')
->will($this->returnValue(true));
$this->setupClass
- ->expects($this->exactly(2))
+ ->expects($this->once())
->method('is_callable')
->will($this->returnValue(false));
+ $this->setupClass
+ ->expects($this->once())
+ ->method('getAvailableDbDriversForPdo')
+ ->will($this->returnValue([]));
$result = $this->setupClass->getSupportedDatabases();
$expectedResult = array(
'sqlite' => 'SQLite'
@@ -68,36 +78,43 @@ class Test_OC_Setup extends \Test\TestCase {
->method('class_exists')
->will($this->returnValue(false));
$this->setupClass
- ->expects($this->exactly(3))
+ ->expects($this->exactly(2))
->method('is_callable')
->will($this->returnValue(false));
+ $this->setupClass
+ ->expects($this->once())
+ ->method('getAvailableDbDriversForPdo')
+ ->will($this->returnValue([]));
$result = $this->setupClass->getSupportedDatabases();
$this->assertSame(array(), $result);
}
- public function testGetSupportedDatabasesWitAllWorking() {
+ public function testGetSupportedDatabasesWithAllWorking() {
$this->config
->expects($this->once())
->method('getSystemValue')
->will($this->returnValue(
- array('sqlite', 'mysql', 'pgsql', 'oci', 'mssql')
+ array('sqlite', 'mysql', 'pgsql', 'oci')
));
$this->setupClass
->expects($this->once())
->method('class_exists')
->will($this->returnValue(true));
$this->setupClass
- ->expects($this->exactly(4))
+ ->expects($this->exactly(2))
->method('is_callable')
->will($this->returnValue(true));
+ $this->setupClass
+ ->expects($this->once())
+ ->method('getAvailableDbDriversForPdo')
+ ->will($this->returnValue(['mysql']));
$result = $this->setupClass->getSupportedDatabases();
$expectedResult = array(
'sqlite' => 'SQLite',
'mysql' => 'MySQL/MariaDB',
'pgsql' => 'PostgreSQL',
- 'oci' => 'Oracle',
- 'mssql' => 'MS SQL'
+ 'oci' => 'Oracle'
);
$this->assertSame($expectedResult, $result);
}