Um abzubrechen die Nachricht anklicken oder Escape drücken.",
- "copySuccess": {
- "_": "%d Zeilen kopiert",
- "1": "1 Zeile kopiert"
- },
- "pageLength": {
- "-1": "Zeige alle Zeilen",
- "_": "Zeige %d Zeilen"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/du.json b/assets/javascripts/jquery.dataTables/locales/du.json
deleted file mode 100644
index 5b959766..00000000
--- a/assets/javascripts/jquery.dataTables/locales/du.json
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Dutch translation
- * @name Dutch
- * @anchor Dutch
- * @author Erwin Kerk and ashwin
- */
-
-{
- "sProcessing": "Bezig...",
- "sLengthMenu": "_MENU_ resultaten weergeven",
- "sZeroRecords": "Geen resultaten gevonden",
- "sInfo": "_START_ tot _END_ van _TOTAL_ resultaten",
- "sInfoEmpty": "Geen resultaten om weer te geven",
- "sInfoFiltered": " (gefilterd uit _MAX_ resultaten)",
- "sInfoPostFix": "",
- "sSearch": "Zoeken:",
- "sEmptyTable": "Geen resultaten aanwezig in de tabel",
- "sInfoThousands": ".",
- "sLoadingRecords": "Een moment geduld aub - bezig met laden...",
- "oPaginate": {
- "sFirst": "Eerste",
- "sLast": "Laatste",
- "sNext": "Volgende",
- "sPrevious": "Vorige"
- },
- "oAria": {
- "sSortAscending": ": activeer om kolom oplopend te sorteren",
- "sSortDescending": ": activeer om kolom aflopend te sorteren"
- }
-}
diff --git a/assets/javascripts/jquery.dataTables/locales/el.json b/assets/javascripts/jquery.dataTables/locales/el.json
deleted file mode 100644
index 80136283..00000000
--- a/assets/javascripts/jquery.dataTables/locales/el.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "sDecimal": ",",
- "sEmptyTable": "Δεν υπάρχουν δεδομένα στον πίνακα",
- "sInfo": "Εμφανίζονται _START_ έως _END_ από _TOTAL_ εγγραφές",
- "sInfoEmpty": "Εμφανίζονται 0 έως 0 από 0 εγγραφές",
- "sInfoFiltered": "(φιλτραρισμένες από _MAX_ συνολικά εγγραφές)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Δείξε _MENU_ εγγραφές",
- "sLoadingRecords": "Φόρτωση...",
- "sProcessing": "Επεξεργασία...",
- "sSearch": "Αναζήτηση:",
- "sSearchPlaceholder": "Αναζήτηση",
- "sThousands": ".",
- "sUrl": "",
- "sZeroRecords": "Δεν βρέθηκαν εγγραφές που να ταιριάζουν",
- "oPaginate": {
- "sFirst": "Πρώτη",
- "sPrevious": "Προηγούμενη",
- "sNext": "Επόμενη",
- "sLast": "Τελευταία"
- },
- "oAria": {
- "sSortAscending": ": ενεργοποιήστε για αύξουσα ταξινόμηση της στήλης",
- "sSortDescending": ": ενεργοποιήστε για φθίνουσα ταξινόμηση της στήλης"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/en.json b/assets/javascripts/jquery.dataTables/locales/en.json
deleted file mode 100644
index ddc11ae4..00000000
--- a/assets/javascripts/jquery.dataTables/locales/en.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "No data available in table",
- "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
- "sInfoEmpty": "Showing 0 to 0 of 0 entries",
- "sInfoFiltered": "(filtered from _MAX_ total entries)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Show _MENU_ entries",
- "sLoadingRecords": "Loading...",
- "sProcessing": "Processing...",
- "sSearch": "Search:",
- "sZeroRecords": "No matching records found",
- "oPaginate": {
- "sFirst": "First",
- "sLast": "Last",
- "sNext": "Next",
- "sPrevious": "Previous"
- },
- "oAria": {
- "sSortAscending": ": activate to sort column ascending",
- "sSortDescending": ": activate to sort column descending"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/eo.json b/assets/javascripts/jquery.dataTables/locales/eo.json
deleted file mode 100644
index 0f0b4c15..00000000
--- a/assets/javascripts/jquery.dataTables/locales/eo.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Neniuj datumoj en tabelo",
- "sInfo": "Montras _START_ ĝis _END_ el _TOTAL_ vicoj",
- "sInfoEmpty": "Montras 0 ĝis 0 el 0 vicoj",
- "sInfoFiltered": "(filtrita el entute _MAX_ vicoj)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Montri _MENU_ vicojn",
- "sLoadingRecords": "Ŝarĝas ...",
- "sProcessing": "Pretigas ...",
- "sSearch": "Serĉi:",
- "sZeroRecords": "Neniuj rezultoj trovitaj",
- "oPaginate": {
- "sFirst": "Unua",
- "sLast": "Lasta",
- "sNext": "Venonta",
- "sPrevious": "Antaŭa"
- },
- "oAria": {
- "sSortAscending": ": aktivigi por filtri kolumnon kreskante",
- "sSortDescending": ": aktivigi por filtri kolumnon malkreskante"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/es.json b/assets/javascripts/jquery.dataTables/locales/es.json
deleted file mode 100644
index 162fa558..00000000
--- a/assets/javascripts/jquery.dataTables/locales/es.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "sProcessing": "Procesando...",
- "sLengthMenu": "Mostrar _MENU_ registros",
- "sZeroRecords": "No se encontraron resultados",
- "sEmptyTable": "Ningún dato disponible en esta tabla =(",
- "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
- "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
- "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
- "sInfoPostFix": "",
- "sSearch": "Buscar:",
- "sUrl": "",
- "sInfoThousands": ",",
- "sLoadingRecords": "Cargando...",
- "oPaginate": {
- "sFirst": "Primero",
- "sLast": "Último",
- "sNext": "Siguiente",
- "sPrevious": "Anterior"
- },
- "oAria": {
- "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
- "sSortDescending": ": Activar para ordenar la columna de manera descendente"
- },
- "buttons": {
- "copy": "Copiar",
- "colvis": "Visibilidad"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/et.json b/assets/javascripts/jquery.dataTables/locales/et.json
deleted file mode 100644
index 6dc2a12e..00000000
--- a/assets/javascripts/jquery.dataTables/locales/et.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "sProcessing": "Palun oodake, koostan kuvamiseks nimekirja!",
- "sLengthMenu": "Näita kirjeid _MENU_ kaupa",
- "sZeroRecords": "Otsitavat vastet ei leitud.",
- "sInfo": "Kuvatud: _TOTAL_ kirjet (_START_-_END_)",
- "sInfoEmpty": "Otsinguvasteid ei leitud",
- "sInfoFiltered": " - filteeritud _MAX_ kirje seast.",
- "sInfoPostFix": "Kõik kuvatud kirjed põhinevad reaalsetel tulemustel.",
- "sSearch": "Otsi kõikide tulemuste seast:",
- "oPaginate": {
- "sFirst": "Algus",
- "sPrevious": "Eelmine",
- "sNext": "Järgmine",
- "sLast": "Viimane"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/eu.json b/assets/javascripts/jquery.dataTables/locales/eu.json
deleted file mode 100644
index 19ceadb4..00000000
--- a/assets/javascripts/jquery.dataTables/locales/eu.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sProcessing": "Prozesatzen...",
- "sLengthMenu": "Erakutsi _MENU_ erregistro",
- "sZeroRecords": "Ez da emaitzarik aurkitu",
- "sEmptyTable": "Taula hontan ez dago inongo datu erabilgarririk",
- "sInfo": "_START_ -etik _END_ -erako erregistroak erakusten, guztira _TOTAL_ erregistro",
- "sInfoEmpty": "0tik 0rako erregistroak erakusten, guztira 0 erregistro",
- "sInfoFiltered": "(guztira _MAX_ erregistro iragazten)",
- "sInfoPostFix": "",
- "sSearch": "Aurkitu:",
- "sUrl": "",
- "sInfoThousands": ",",
- "sLoadingRecords": "Abiarazten...",
- "oPaginate": {
- "sFirst": "Lehena",
- "sLast": "Azkena",
- "sNext": "Hurrengoa",
- "sPrevious": "Aurrekoa"
- },
- "oAria": {
- "sSortAscending": ": Zutabea goranzko eran ordenatzeko aktibatu ",
- "sSortDescending": ": Zutabea beheranzko eran ordenatzeko aktibatu"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/fa.json b/assets/javascripts/jquery.dataTables/locales/fa.json
deleted file mode 100644
index 5c1b4254..00000000
--- a/assets/javascripts/jquery.dataTables/locales/fa.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "هیچ دادهای در جدول وجود ندارد",
- "sInfo": "نمایش _START_ تا _END_ از _TOTAL_ ردیف",
- "sInfoEmpty": "نمایش 0 تا 0 از 0 ردیف",
- "sInfoFiltered": "(فیلتر شده از _MAX_ ردیف)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "نمایش _MENU_ ردیف",
- "sLoadingRecords": "در حال بارگزاری...",
- "sProcessing": "در حال پردازش...",
- "sSearch": "جستجو:",
- "sZeroRecords": "رکوردی با این مشخصات پیدا نشد",
- "oPaginate": {
- "sFirst": "برگهی نخست",
- "sLast": "برگهی آخر",
- "sNext": "بعدی",
- "sPrevious": "قبلی"
- },
- "oAria": {
- "sSortAscending": ": فعال سازی نمایش به صورت صعودی",
- "sSortDescending": ": فعال سازی نمایش به صورت نزولی"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/fi.json b/assets/javascripts/jquery.dataTables/locales/fi.json
deleted file mode 100644
index e2819226..00000000
--- a/assets/javascripts/jquery.dataTables/locales/fi.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "sEmptyTable": "Ei näytettäviä tuloksia.",
- "sInfo": "Näytetään rivit _START_ - _END_ (yhteensä _TOTAL_ )",
- "sInfoEmpty": "Näytetään 0 - 0 (yhteensä 0)",
- "sInfoFiltered": "(suodatettu _MAX_ tuloksen joukosta)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Näytä kerralla _MENU_ riviä",
- "sLoadingRecords": "Ladataan...",
- "sProcessing": "Hetkinen...",
- "sSearch": "Etsi:",
- "sZeroRecords": "Tietoja ei löytynyt",
- "oPaginate": {
- "sFirst": "Ensimmäinen",
- "sLast": "Viimeinen",
- "sNext": "Seuraava",
- "sPrevious": "Edellinen"
- },
- "oAria": {
- "sSortAscending": ": lajittele sarake nousevasti",
- "sSortDescending": ": lajittele sarake laskevasti"
- },
- "select": {
- "rows": {
- "_": "Valittuna %d riviä",
- "0": "Klikkaa riviä valitaksesi sen",
- "1": "Valittuna vain yksi rivi"
- }
- },
- "buttons": {
- "copy": "Kopioi",
- "copySuccess": {
- "1": "Yksi rivi kopioitu leikepöydälle",
- "_": "%d riviä kopioitu leikepöydälle"
- },
- "copyTitle": "Kopioi leikepöydälle",
- "copyKeys": "Paina ctrl tai \u2318 + C kopioidaksesi taulukon arvot leikepöydälle.
Peruuttaaksesi klikkaa tähän tai Esc."
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/fr.json b/assets/javascripts/jquery.dataTables/locales/fr.json
deleted file mode 100644
index f3b6b14b..00000000
--- a/assets/javascripts/jquery.dataTables/locales/fr.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "sEmptyTable": "Aucune donnée disponible dans le tableau",
- "sInfo": "Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments",
- "sInfoEmpty": "Affichage de l'élément 0 à 0 sur 0 élément",
- "sInfoFiltered": "(filtré à partir de _MAX_ éléments au total)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Afficher _MENU_ éléments",
- "sLoadingRecords": "Chargement...",
- "sProcessing": "Traitement...",
- "sSearch": "Rechercher :",
- "sZeroRecords": "Aucun élément correspondant trouvé",
- "oPaginate": {
- "sFirst": "Premier",
- "sLast": "Dernier",
- "sNext": "Suivant",
- "sPrevious": "Précédent"
- },
- "oAria": {
- "sSortAscending": ": activer pour trier la colonne par ordre croissant",
- "sSortDescending": ": activer pour trier la colonne par ordre décroissant"
- },
- "select": {
- "rows": {
- "_": "%d lignes sélectionnées",
- "0": "Aucune ligne sélectionnée",
- "1": "1 ligne sélectionnée"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ga.json b/assets/javascripts/jquery.dataTables/locales/ga.json
deleted file mode 100644
index 9067fbac..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ga.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "Próiseáil...",
- "sLengthMenu": "Taispeáin iontrálacha _MENU_",
- "sZeroRecords": "Gan aon taifead meaitseáil aimsithe",
- "sInfo": "_START_ Showing a _END_ na n-iontrálacha _TOTAL_",
- "sInfoEmpty": "Showing 0-0 na n-iontrálacha 0",
- "sInfoFiltered": "(scagtha ó _MAX_ iontrálacha iomlán)",
- "sInfoPostFix": "",
- "sSearch": "Cuardaigh:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "An Chéad",
- "sPrevious": "Roimhe Seo",
- "sNext": "Ar Aghaidh",
- "sLast": "Last"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/gl.json b/assets/javascripts/jquery.dataTables/locales/gl.json
deleted file mode 100644
index 5f409837..00000000
--- a/assets/javascripts/jquery.dataTables/locales/gl.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sProcessing": "Procesando...",
- "sLengthMenu": "Mostrar _MENU_ rexistros",
- "sZeroRecords": "Non se atoparon resultados",
- "sEmptyTable": "Ningún dato dispoñible nesta táboa",
- "sInfo": "Mostrando rexistros do _START_ ao _END_ dun total de _TOTAL_ rexistros",
- "sInfoEmpty": "Mostrando rexistros do 0 ao 0 dun total de 0 rexistros",
- "sInfoFiltered": "(filtrado dun total de _MAX_ rexistros)",
- "sInfoPostFix": "",
- "sSearch": "Buscar:",
- "sUrl": "",
- "sInfoThousands": ",",
- "sLoadingRecords": "Cargando...",
- "oPaginate": {
- "sFirst": "Primeiro",
- "sLast": "Último",
- "sNext": "Seguinte",
- "sPrevious": "Anterior"
- },
- "oAria": {
- "sSortAscending": ": Activar para ordenar a columna de maneira ascendente",
- "sSortDescending": ": Activar para ordenar a columna de maneira descendente"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/gu.json b/assets/javascripts/jquery.dataTables/locales/gu.json
deleted file mode 100644
index cadb8d10..00000000
--- a/assets/javascripts/jquery.dataTables/locales/gu.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "કોષ્ટકમાં કોઈ ડેટા ઉપલબ્ધ નથી",
- "sInfo": "કુલ_પ્રવેશો_અંત_પ્રારંભ_દર્શાવે_છે",
- "sInfoEmpty": "0 પ્રવેશો 0 0 બતાવી રહ્યું છે",
- "sInfoFiltered": "(_MAX_ કુલ પ્રવેશો માંથી ફિલ્ટર)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "બતાવો _MENU_ પ્રવેશો",
- "sLoadingRecords": "લોડ કરી રહ્યું છે ...",
- "sProcessing": "પ્રક્રિયા ...",
- "sSearch": "શોધો:",
- "sZeroRecords": "કોઈ મેળ ખાતા રેકોર્ડ મળી",
- "oPaginate": {
- "sFirst": "પ્રથમ",
- "sLast": "અંતિમ",
- "sNext": "આગામી",
- "sPrevious": "ગત"
- },
- "oAria": {
- "sSortAscending": ": સ્તંભ ચડતા ક્રમમાં ગોઠવવા માટે સક્રિય",
- "sSortDescending": ": કૉલમ ઉતરતા ક્રમમાં ગોઠવવા માટે સક્રિય"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/he.json b/assets/javascripts/jquery.dataTables/locales/he.json
deleted file mode 100644
index e016485e..00000000
--- a/assets/javascripts/jquery.dataTables/locales/he.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "processing": "מעבד...",
- "lengthMenu": "הצג _MENU_ פריטים",
- "zeroRecords": "לא נמצאו רשומות מתאימות",
- "emptyTable": "לא נמצאו רשומות מתאימות",
- "info": "_START_ עד _END_ מתוך _TOTAL_ רשומות" ,
- "infoEmpty": "0 עד 0 מתוך 0 רשומות",
- "infoFiltered": "(מסונן מסך _MAX_ רשומות)",
- "infoPostFix": "",
- "search": "חפש:",
- "url": "",
- "paginate": {
- "first": "ראשון",
- "previous": "קודם",
- "next": "הבא",
- "last": "אחרון"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/hi.json b/assets/javascripts/jquery.dataTables/locales/hi.json
deleted file mode 100644
index 74914dfc..00000000
--- a/assets/javascripts/jquery.dataTables/locales/hi.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "प्रगति पे हैं ...",
- "sLengthMenu": " _MENU_ प्रविष्टियां दिखाएं ",
- "sZeroRecords": "रिकॉर्ड्स का मेल नहीं मिला",
- "sInfo": "_START_ to _END_ of _TOTAL_ प्रविष्टियां दिखा रहे हैं",
- "sInfoEmpty": "0 में से 0 से 0 प्रविष्टियां दिखा रहे हैं",
- "sInfoFiltered": "(_MAX_ कुल प्रविष्टियों में से छठा हुआ)",
- "sInfoPostFix": "",
- "sSearch": "खोजें:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "प्रथम",
- "sPrevious": "पिछला",
- "sNext": "अगला",
- "sLast": "अंतिम"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/hu.json b/assets/javascripts/jquery.dataTables/locales/hu.json
deleted file mode 100644
index d0e48a10..00000000
--- a/assets/javascripts/jquery.dataTables/locales/hu.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "sEmptyTable": "Nincs rendelkezésre álló adat",
- "sInfo": "Találatok: _START_ - _END_ Összesen: _TOTAL_",
- "sInfoEmpty": "Nulla találat",
- "sInfoFiltered": "(_MAX_ összes rekord közül szűrve)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLengthMenu": "_MENU_ találat oldalanként",
- "sLoadingRecords": "Betöltés...",
- "sProcessing": "Feldolgozás...",
- "sSearch": "Keresés:",
- "sZeroRecords": "Nincs a keresésnek megfelelő találat",
- "oPaginate": {
- "sFirst": "Első",
- "sPrevious": "Előző",
- "sNext": "Következő",
- "sLast": "Utolsó"
- },
- "oAria": {
- "sSortAscending": ": aktiválja a növekvő rendezéshez",
- "sSortDescending": ": aktiválja a csökkenő rendezéshez"
- },
- "select": {
- "rows": {
- "_": "%d sor kiválasztva",
- "0": "",
- "1": "1 sor kiválasztva"
- }
- },
- "buttons": {
- "print": "Nyomtatás",
- "colvis": "Oszlopok",
- "copy": "Másolás",
- "copyTitle": "Vágólapra másolás",
- "copySuccess": {
- "_": "%d sor másolva",
- "1": "1 sor másolva"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/hy.json b/assets/javascripts/jquery.dataTables/locales/hy.json
deleted file mode 100644
index 8887f606..00000000
--- a/assets/javascripts/jquery.dataTables/locales/hy.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Տվյալները բացակայում են",
- "sProcessing": "Կատարվում է...",
- "sInfoThousands": ",",
- "sLengthMenu": "Ցուցադրել _MENU_ արդյունքներ մեկ էջում",
- "sLoadingRecords": "Բեռնվում է ...",
- "sZeroRecords": "Հարցմանը համապատասխանող արդյունքներ չկան",
- "sInfo": "Ցուցադրված են _START_-ից _END_ արդյունքները ընդհանուր _TOTAL_-ից",
- "sInfoEmpty": "Արդյունքներ գտնված չեն",
- "sInfoFiltered": "(ֆիլտրվել է ընդհանուր _MAX_ արդյունքներից)",
- "sInfoPostFix": "",
- "sSearch": "Փնտրել",
- "oPaginate": {
- "sFirst": "Առաջին էջ",
- "sPrevious": "Նախորդ էջ",
- "sNext": "Հաջորդ էջ",
- "sLast": "Վերջին էջ"
- },
- "oAria": {
- "sSortAscending": ": ակտիվացրեք աճման կարգով դասավորելու համար",
- "sSortDescending": ": ակտիվացրեք նվազման կարգով դասավորելու համար"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/id.json b/assets/javascripts/jquery.dataTables/locales/id.json
deleted file mode 100644
index d483e042..00000000
--- a/assets/javascripts/jquery.dataTables/locales/id.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "sEmptyTable": "Tidak ada data yang tersedia pada tabel ini",
- "sProcessing": "Sedang memproses...",
- "sLengthMenu": "Tampilkan _MENU_ entri",
- "sZeroRecords": "Tidak ditemukan data yang sesuai",
- "sInfo": "Menampilkan _START_ sampai _END_ dari _TOTAL_ entri",
- "sInfoEmpty": "Menampilkan 0 sampai 0 dari 0 entri",
- "sInfoFiltered": "(disaring dari _MAX_ entri keseluruhan)",
- "sInfoPostFix": "",
- "sSearch": "Cari:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Pertama",
- "sPrevious": "Sebelumnya",
- "sNext": "Selanjutnya",
- "sLast": "Terakhir"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/is.json b/assets/javascripts/jquery.dataTables/locales/is.json
deleted file mode 100644
index 09b40fff..00000000
--- a/assets/javascripts/jquery.dataTables/locales/is.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Engin gögn eru í þessari töflu",
- "sInfo": "Sýni _START_ til _END_ af _TOTAL_ færslum",
- "sInfoEmpty": "Sýni 0 til 0 af 0 færslum",
- "sInfoFiltered": "(síað út frá _MAX_ færslum)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Sýna _MENU_ færslur",
- "sLoadingRecords": "Hleð...",
- "sProcessing": "Úrvinnsla...",
- "sSearch": "Leita:",
- "sZeroRecords": "Engar færslur fundust",
- "oPaginate": {
- "sFirst": "Fyrsta",
- "sLast": "Síðasta",
- "sNext": "Næsta",
- "sPrevious": "Fyrri"
- },
- "oAria": {
- "sSortAscending": ": virkja til að raða dálki í hækkandi röð",
- "sSortDescending": ": virkja til að raða dálki lækkandi í röð"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/it.json b/assets/javascripts/jquery.dataTables/locales/it.json
deleted file mode 100644
index d3640e78..00000000
--- a/assets/javascripts/jquery.dataTables/locales/it.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Nessun dato presente nella tabella",
- "sInfo": "Vista da _START_ a _END_ di _TOTAL_ elementi",
- "sInfoEmpty": "Vista da 0 a 0 di 0 elementi",
- "sInfoFiltered": "(filtrati da _MAX_ elementi totali)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Visualizza _MENU_ elementi",
- "sLoadingRecords": "Caricamento...",
- "sProcessing": "Elaborazione...",
- "sSearch": "Cerca:",
- "sZeroRecords": "La ricerca non ha portato alcun risultato.",
- "oPaginate": {
- "sFirst": "Inizio",
- "sPrevious": "Precedente",
- "sNext": "Successivo",
- "sLast": "Fine"
- },
- "oAria": {
- "sSortAscending": ": attiva per ordinare la colonna in ordine crescente",
- "sSortDescending": ": attiva per ordinare la colonna in ordine decrescente"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ja.json b/assets/javascripts/jquery.dataTables/locales/ja.json
deleted file mode 100644
index 76feabe1..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ja.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "テーブルにデータがありません",
- "sInfo": " _TOTAL_ 件中 _START_ から _END_ まで表示",
- "sInfoEmpty": " 0 件中 0 から 0 まで表示",
- "sInfoFiltered": "(全 _MAX_ 件より抽出)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "_MENU_ 件表示",
- "sLoadingRecords": "読み込み中...",
- "sProcessing": "処理中...",
- "sSearch": "検索:",
- "sZeroRecords": "一致するレコードがありません",
- "oPaginate": {
- "sFirst": "先頭",
- "sLast": "最終",
- "sNext": "次",
- "sPrevious": "前"
- },
- "oAria": {
- "sSortAscending": ": 列を昇順に並べ替えるにはアクティブにする",
- "sSortDescending": ": 列を降順に並べ替えるにはアクティブにする"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ka.json b/assets/javascripts/jquery.dataTables/locales/ka.json
deleted file mode 100644
index df80f1bb..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ka.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "ცხრილში არ არის მონაცემები",
- "sInfo": "ნაჩვენებია ჩანაწერები _START_–დან _END_–მდე, _TOTAL_ ჩანაწერიდან",
- "sInfoEmpty": "ნაჩვენებია ჩანაწერები 0–დან 0–მდე, 0 ჩანაწერიდან",
- "sInfoFiltered": "(გაფილტრული შედეგი _MAX_ ჩანაწერიდან)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "აჩვენე _MENU_ ჩანაწერი",
- "sLoadingRecords": "იტვირთება...",
- "sProcessing": "მუშავდება...",
- "sSearch": "ძიება:",
- "sZeroRecords": "არაფერი მოიძებნა",
- "oPaginate": {
- "sFirst": "პირველი",
- "sLast": "ბოლო",
- "sNext": "შემდეგი",
- "sPrevious": "წინა"
- },
- "oAria": {
- "sSortAscending": ": სვეტის დალაგება ზრდის მიხედვით",
- "sSortDescending": ": სვეტის დალაგება კლების მიხედვით"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/kk.json b/assets/javascripts/jquery.dataTables/locales/kk.json
deleted file mode 100644
index 806bac86..00000000
--- a/assets/javascripts/jquery.dataTables/locales/kk.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "processing": "Күте тұрыңыз...",
- "search": "Іздеу:",
- "lengthMenu": "Жазбалар _MENU_ көрсету",
- "info": "_TOTAL_ жазбалары бойынша _START_ бастап _END_ дейінгі жазбалар",
- "infoEmpty": "0 жазбалары бойынша 0 бастап 0 дейінгі жазбалар",
- "infoFiltered": "(_MAX_ жазбасынан сұрыпталды)",
- "infoPostFix": "",
- "loadingRecords": "Жазбалар жүктемесі...",
- "zeroRecords": "Жазбалар жоқ",
- "emptyTable": "Кестеде деректер жоқ",
- "paginate": {
- "first": "Бірінші",
- "previous": "Алдыңғысы",
- "next": "Келесі",
- "last": "Соңғы"
- },
- "aria": {
- "sortAscending": ": өсімі бойынша бағанды сұрыптау үшін активациялау",
- "sortDescending": ": кемуі бойынша бағанды сұрыптау үшін активациялау"
- }
-}
diff --git a/assets/javascripts/jquery.dataTables/locales/km.json b/assets/javascripts/jquery.dataTables/locales/km.json
deleted file mode 100644
index 9216fec6..00000000
--- a/assets/javascripts/jquery.dataTables/locales/km.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "មិនមានទិន្នន័យក្នុងតារាងនេះទេ",
- "sInfo": "បង្ហាញជួរទី _START_ ដល់ទី _END_ ក្នុងចំណោម _TOTAL_ ជួរ",
- "sInfoEmpty": "បង្ហាញជួរទី 0 ដល់ទី 0 ក្នុងចំណោម 0 ជួរ",
- "sInfoFiltered": "(បានចម្រាញ់ចេញពីទិន្នន័យសរុប _MAX_ ជួរ)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "បង្ហាញ _MENU_ ជួរ",
- "sLoadingRecords": "កំពុងផ្ទុក...",
- "sProcessing": "កំពុងដំណើរការ...",
- "sSearch": "ស្វែងរក:",
- "sZeroRecords": "មិនមានទិន្នន័យត្រូវតាមលក្ខខណ្ឌស្វែងរកទេ",
- "oPaginate": {
- "sFirst": "ដំបូងគេ",
- "sLast": "ចុងក្រោយ",
- "sNext": "បន្ទាប់",
- "sPrevious": "ក្រោយ"
- },
- "oAria": {
- "sSortAscending": ": ចុចដើម្បីរៀបជួរឈរនេះតាមលំដាប់ឡើង",
- "sSortDescending": ": ចុចដើម្បីរៀបជួរឈរនេះតាមលំដាប់ចុះ"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ko.json b/assets/javascripts/jquery.dataTables/locales/ko.json
deleted file mode 100644
index b9b23721..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ko.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "데이터가 없습니다",
- "sInfo": "_START_ - _END_ / _TOTAL_",
- "sInfoEmpty": "0 - 0 / 0",
- "sInfoFiltered": "(총 _MAX_ 개)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "페이지당 줄수 _MENU_",
- "sLoadingRecords": "읽는중...",
- "sProcessing": "처리중...",
- "sSearch": "검색:",
- "sZeroRecords": "검색 결과가 없습니다",
- "oPaginate": {
- "sFirst": "처음",
- "sLast": "마지막",
- "sNext": "다음",
- "sPrevious": "이전"
- },
- "oAria": {
- "sSortAscending": ": 오름차순 정렬",
- "sSortDescending": ": 내림차순 정렬"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ky.json b/assets/javascripts/jquery.dataTables/locales/ky.json
deleted file mode 100644
index 9a42f635..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ky.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Таблицада эч кандай берилиш жок",
- "sInfo": "Жалпы _TOTAL_ саптын ичинен _START_-саптан _END_-сапка чейинкилер",
- "sInfoEmpty": "Жалпы 0 саптын ичинен 0-саптан 0-сапка чейинкилер",
- "sInfoFiltered": "(жалпы _MAX_ саптан фильтрленди)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLengthMenu": "_MENU_ саптан көрсөт",
- "sLoadingRecords": "Жүктөлүүдө...",
- "sProcessing": "Иштеп жатат...",
- "sSearch": "Издөө:",
- "sZeroRecords": "Туура келген бир да сап жок",
- "oPaginate": {
- "sFirst": "Биринчи",
- "sLast": "Акыркы",
- "sNext": "Кийинки",
- "sPrevious": "Мурунку"
- },
- "oAria": {
- "sSortAscending": ": иретте",
- "sSortDescending": ": тескери иретте"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/lo.json b/assets/javascripts/jquery.dataTables/locales/lo.json
deleted file mode 100644
index f7c2666d..00000000
--- a/assets/javascripts/jquery.dataTables/locales/lo.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "ບໍ່ພົບຂໍ້ມູນໃນຕາຕະລາງ",
- "sInfo": "ສະແດງ _START_ ເຖິງ _END_ ຈາກ _TOTAL_ ແຖວ",
- "sInfoEmpty": "ສະແດງ 0 ເຖິງ 0 ຈາກ 0 ແຖວ",
- "sInfoFiltered": "(ກັ່ນຕອງຂໍ້ມູນ _MAX_ ທຸກແຖວ)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "ສະແດງ _MENU_ ແຖວ",
- "sLoadingRecords": "ກຳລັງໂຫຼດຂໍ້ມູນ...",
- "sProcessing": "ກຳລັງດຳເນີນການ...",
- "sSearch": "ຄົ້ນຫາ: ",
- "sZeroRecords": "ບໍ່ພົບຂໍ້ມູນ",
- "oPaginate": {
- "sFirst": "ໜ້າທຳອິດ",
- "sPrevious": "ກ່ອນໜ້ານີ້",
- "sNext": "ໜ້າຕໍ່ໄປ",
- "sLast": "ໜ້າສຸດທ້າຍ"
- },
- "oAria": {
- "sSortAscending": ": ເປີດໃຊ້ການຈັດລຽງຂໍ້ມູນແຕ່ນ້ອຍຫາໃຫຍ່",
- "sSortDescending": ": ເປີດໃຊ້ການຈັດລຽງຂໍ້ມູນແຕ່ໃຫຍ່ຫານ້ອຍ"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/lt.json b/assets/javascripts/jquery.dataTables/locales/lt.json
deleted file mode 100644
index b3cd4fe9..00000000
--- a/assets/javascripts/jquery.dataTables/locales/lt.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "sEmptyTable": "Lentelėje nėra duomenų",
- "sInfo": "Rodomi įrašai nuo _START_ iki _END_ iš _TOTAL_ įrašų",
- "sInfoEmpty": "Rodomi įrašai nuo 0 iki 0 iš 0",
- "sInfoFiltered": "(atrinkta iš _MAX_ įrašų)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLengthMenu": "Rodyti _MENU_ įrašus",
- "sLoadingRecords": "Įkeliama...",
- "sProcessing": "Apdorojama...",
- "sSearch": "Ieškoti:",
- "sThousands": " ",
- "sUrl": "",
- "sZeroRecords": "Įrašų nerasta",
-
- "oPaginate": {
- "sFirst": "Pirmas",
- "sPrevious": "Ankstesnis",
- "sNext": "Tolimesnis",
- "sLast": "Paskutinis"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/lv.json b/assets/javascripts/jquery.dataTables/locales/lv.json
deleted file mode 100644
index d3911758..00000000
--- a/assets/javascripts/jquery.dataTables/locales/lv.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "processing": "Uzgaidiet ...",
- "search": "Meklēt:",
- "lengthMenu": "Rādīt _MENU_ ierakstus",
- "info": "Parādīti _START_ līdz _END_ no _TOTAL_ ierakstiem",
- "infoEmpty": "Nav ierakstu",
- "infoFiltered": "(atlasīts no pavisam _MAX_ ierakstiem)",
- "infoPostFix": "",
- "loadingRecords": "Notiek ielāde ...",
- "zeroRecords": "Nav atrasti vaicājumam atbilstoši ieraksti",
- "emptyTable": "Tabulā nav datu",
- "paginate": {
- "first": "Pirmā",
- "previous": "Iepriekšējā",
- "next": "Nākošā",
- "last": "Pēdējā"
- },
- "aria": {
- "sortAscending": ": aktivizēt kolonnu, lai kārtotu augoši",
- "sortDescending": ": aktivizēt kolonnu, lai kārtotu dilstoši"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/mk.json b/assets/javascripts/jquery.dataTables/locales/mk.json
deleted file mode 100644
index e93c34a3..00000000
--- a/assets/javascripts/jquery.dataTables/locales/mk.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "sProcessing": "Процесирање...",
- "sLengthMenu": "Прикажи _MENU_ записи",
- "sZeroRecords": "Не се пронајдени записи",
- "sEmptyTable": "Нема податоци во табелата",
- "sLoadingRecords": "Вчитување...",
- "sInfo": "Прикажани _START_ до _END_ од _TOTAL_ записи",
- "sInfoEmpty": "Прикажани 0 до 0 од 0 записи",
- "sInfoFiltered": "(филтрирано од вкупно _MAX_ записи)",
- "sInfoPostFix": "",
- "sSearch": "Барај",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Почетна",
- "sPrevious": "Претходна",
- "sNext": "Следна",
- "sLast": "Последна"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/mn.json b/assets/javascripts/jquery.dataTables/locales/mn.json
deleted file mode 100644
index 93f50dc0..00000000
--- a/assets/javascripts/jquery.dataTables/locales/mn.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Хүснэгт хоосон байна",
- "sInfo": "Нийт _TOTAL_ бичлэгээс _START_ - _END_ харуулж байна",
- "sInfoEmpty": "Тохирох үр дүн алга",
- "sInfoFiltered": "(нийт _MAX_ бичлэгээс шүүв)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Дэлгэцэд _MENU_ бичлэг харуулна",
- "sLoadingRecords": "Ачааллаж байна...",
- "sProcessing": "Боловсруулж байна...",
- "sSearch": "Хайлт:",
- "sZeroRecords": "Тохирох бичлэг олдсонгүй",
- "oPaginate": {
- "sFirst": "Эхнийх",
- "sLast": "Сүүлийнх",
- "sNext": "Өмнөх",
- "sPrevious": "Дараах"
- },
- "oAria": {
- "sSortAscending": ": цагаан толгойн дарааллаар эрэмбэлэх",
- "sSortDescending": ": цагаан толгойн эсрэг дарааллаар эрэмбэлэх"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ms.json b/assets/javascripts/jquery.dataTables/locales/ms.json
deleted file mode 100644
index 2a24974b..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ms.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Tiada data",
- "sInfo": "Paparan dari _START_ hingga _END_ dari _TOTAL_ rekod",
- "sInfoEmpty": "Paparan 0 hingga 0 dari 0 rekod",
- "sInfoFiltered": "(Ditapis dari jumlah _MAX_ rekod)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Papar _MENU_ rekod",
- "sLoadingRecords": "Diproses...",
- "sProcessing": "Sedang diproses...",
- "sSearch": "Carian:",
- "sZeroRecords": "Tiada padanan rekod yang dijumpai.",
- "oPaginate": {
- "sFirst": "Pertama",
- "sPrevious": "Sebelum",
- "sNext": "Kemudian",
- "sLast": "Akhir"
- },
- "oAria": {
- "sSortAscending": ": diaktifkan kepada susunan lajur menaik",
- "sSortDescending": ": diaktifkan kepada susunan lajur menurun"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/nb.json b/assets/javascripts/jquery.dataTables/locales/nb.json
deleted file mode 100644
index 841acdb2..00000000
--- a/assets/javascripts/jquery.dataTables/locales/nb.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "sEmptyTable": "Ingen data tilgjengelig i tabellen",
- "sInfo": "Viser _START_ til _END_ av _TOTAL_ linjer",
- "sInfoEmpty": "Viser 0 til 0 av 0 linjer",
- "sInfoFiltered": "(filtrert fra _MAX_ totalt antall linjer)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLoadingRecords": "Laster...",
- "sLengthMenu": "Vis _MENU_ linjer",
- "sLoadingRecords": "Laster...",
- "sProcessing": "Laster...",
- "sSearch": "Søk:",
- "sUrl": "",
- "sZeroRecords": "Ingen linjer matcher søket",
- "oPaginate": {
- "sFirst": "Første",
- "sPrevious": "Forrige",
- "sNext": "Neste",
- "sLast": "Siste"
- },
- "oAria": {
- "sSortAscending": ": aktiver for å sortere kolonnen stigende",
- "sSortDescending": ": aktiver for å sortere kolonnen synkende"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ne.json b/assets/javascripts/jquery.dataTables/locales/ne.json
deleted file mode 100644
index b240ff4f..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ne.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sEmptyTable": "टेबलमा डाटा उपलब्ध भएन",
- "sInfo": "_TOTAL_ रेकर्ड मध्य _START_ देखि _END_ रेकर्ड देखाउंदै",
- "sInfoEmpty": "0 मध्य 0 देखि 0 रेकर्ड देखाउंदै",
- "sInfoFiltered": "(_MAX_ कुल रेकर्डबाट छनौट गरिएको)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": " _MENU_ रेकर्ड देखाउने ",
- "sLoadingRecords": "लोड हुँदैछ...",
- "sProcessing": "प्रगति हुदैंछ ...",
- "sSearch": "खोजी:",
- "sUrl": "",
- "sZeroRecords": "कुनै मिल्ने रेकर्ड फेला परेन",
- "oPaginate": {
- "sFirst": "प्रथम",
- "sPrevious": "पछिल्लो",
- "sNext": "अघिल्लो",
- "sLast": "अन्तिम"
- },
- "oAria": {
- "sSortAscending": ": अगाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने",
- "sSortDescending": ": पछाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/nj.json b/assets/javascripts/jquery.dataTables/locales/nj.json
deleted file mode 100644
index 723e5a91..00000000
--- a/assets/javascripts/jquery.dataTables/locales/nj.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sProcessing": "Bezig...",
- "sLengthMenu": "_MENU_ resultaten weergeven",
- "sZeroRecords": "Geen resultaten gevonden",
- "sInfo": "_START_ tot _END_ van _TOTAL_ resultaten",
- "sInfoEmpty": "Geen resultaten om weer te geven",
- "sInfoFiltered": " (gefilterd uit _MAX_ resultaten)",
- "sInfoPostFix": "",
- "sSearch": "Zoeken:",
- "sEmptyTable": "Geen resultaten aanwezig in de tabel",
- "sInfoThousands": ".",
- "sLoadingRecords": "Een moment geduld aub - bezig met laden...",
- "oPaginate": {
- "sFirst": "Eerste",
- "sLast": "Laatste",
- "sNext": "Volgende",
- "sPrevious": "Vorige"
- },
- "oAria": {
- "sSortAscending": ": activeer om kolom oplopend te sorteren",
- "sSortDescending": ": activeer om kolom aflopend te sorteren"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/nn.json b/assets/javascripts/jquery.dataTables/locales/nn.json
deleted file mode 100644
index 5112f0e1..00000000
--- a/assets/javascripts/jquery.dataTables/locales/nn.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "sEmptyTable": "Inga data tilgjengeleg i tabellen",
- "sInfo": "Syner _START_ til _END_ av _TOTAL_ linjer",
- "sInfoEmpty": "Syner 0 til 0 av 0 linjer",
- "sInfoFiltered": "(filtrert frå _MAX_ totalt antal linjer)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLoadingRecords": "Lastar...",
- "sLengthMenu": "Syn _MENU_ linjer",
- "sLoadingRecords": "Lastar...",
- "sProcessing": "Lastar...",
- "sSearch": "Søk:",
- "sUrl": "",
- "sZeroRecords": "Inga linjer treff på søket",
- "oPaginate": {
- "sFirst": "Fyrste",
- "sPrevious": "Forrige",
- "sNext": "Neste",
- "sLast": "Siste"
- },
- "oAria": {
- "sSortAscending": ": aktiver for å sortere kolonna stigande",
- "sSortDescending": ": aktiver for å sortere kolonna synkande"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/no.json b/assets/javascripts/jquery.dataTables/locales/no.json
deleted file mode 100644
index 77299067..00000000
--- a/assets/javascripts/jquery.dataTables/locales/no.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sEmptyTable": "Inga data tilgjengeleg i tabellen",
- "sInfo": "Syner _START_ til _END_ av _TOTAL_ linjer",
- "sInfoEmpty": "Syner 0 til 0 av 0 linjer",
- "sInfoFiltered": "(filtrert frå _MAX_ totalt antal linjer)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLoadingRecords": "Lastar...",
- "sLengthMenu": "Syn _MENU_ linjer",
- "sProcessing": "Lastar...",
- "sSearch": "Søk:",
- "sUrl": "",
- "sZeroRecords": "Inga linjer treff på søket",
- "oPaginate": {
- "sFirst": "Fyrste",
- "sPrevious": "Forrige",
- "sNext": "Neste",
- "sLast": "Siste"
- },
- "oAria": {
- "sSortAscending": ": aktiver for å sortere kolonna stigande",
- "sSortDescending": ": aktiver for å sortere kolonna synkande"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/pl.json b/assets/javascripts/jquery.dataTables/locales/pl.json
deleted file mode 100644
index 117374d5..00000000
--- a/assets/javascripts/jquery.dataTables/locales/pl.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "processing": "Przetwarzanie...",
- "search": "Szukaj:",
- "lengthMenu": "Pokaż _MENU_ pozycji",
- "info": "Pozycje od _START_ do _END_ z _TOTAL_ łącznie",
- "infoEmpty": "Pozycji 0 z 0 dostępnych",
- "infoFiltered": "(filtrowanie spośród _MAX_ dostępnych pozycji)",
- "infoPostFix": "",
- "loadingRecords": "Wczytywanie...",
- "zeroRecords": "Nie znaleziono pasujących pozycji",
- "emptyTable": "Brak danych",
- "paginate": {
- "first": "Pierwsza",
- "previous": "Poprzednia",
- "next": "Następna",
- "last": "Ostatnia"
- },
- "aria": {
- "sortAscending": ": aktywuj, by posortować kolumnę rosnąco",
- "sortDescending": ": aktywuj, by posortować kolumnę malejąco"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ps.json b/assets/javascripts/jquery.dataTables/locales/ps.json
deleted file mode 100644
index d3635543..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ps.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "جدول خالي دی",
- "sInfo": "د _START_ څخه تر _END_ پوري، له ټولو _TOTAL_ څخه",
- "sInfoEmpty": "د 0 څخه تر 0 پوري، له ټولو 0 څخه",
- "sInfoFiltered": "(لټول سوي له ټولو _MAX_ څخه)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "_MENU_ کتاره وښايه",
- "sLoadingRecords": "منتظر اوسئ...",
- "sProcessing": "منتظر اوسئ...",
- "sSearch": "لټون:",
- "sZeroRecords": "د لټون مطابق معلومات و نه موندل سول",
- "oPaginate": {
- "sFirst": "لومړۍ",
- "sLast": "وروستۍ",
- "sNext": "بله",
- "sPrevious": "شاته"
- },
- "oAria": {
- "sSortAscending": ": په صعودي ډول مرتبول",
- "sSortDescending": ": په نزولي ډول مرتبول"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/pt-BR.json b/assets/javascripts/jquery.dataTables/locales/pt-BR.json
deleted file mode 100644
index 595e4d0c..00000000
--- a/assets/javascripts/jquery.dataTables/locales/pt-BR.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "sEmptyTable": "Nenhum registro encontrado",
- "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros",
- "sInfoEmpty": "Mostrando 0 até 0 de 0 registros",
- "sInfoFiltered": "(Filtrados de _MAX_ registros)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "_MENU_ resultados por página",
- "sLoadingRecords": "Carregando...",
- "sProcessing": "Processando...",
- "sZeroRecords": "Nenhum registro encontrado",
- "sSearch": "Pesquisar",
- "oPaginate": {
- "sNext": "Próximo",
- "sPrevious": "Anterior",
- "sFirst": "Primeiro",
- "sLast": "Último"
- },
- "oAria": {
- "sSortAscending": ": Ordenar colunas de forma ascendente",
- "sSortDescending": ": Ordenar colunas de forma descendente"
- },
- "select": {
- "rows": {
- "_": "Selecionado %d linhas",
- "0": "Nenhuma linha selecionada",
- "1": "Selecionado 1 linha"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/pt.json b/assets/javascripts/jquery.dataTables/locales/pt.json
deleted file mode 100644
index 74649e89..00000000
--- a/assets/javascripts/jquery.dataTables/locales/pt.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "sEmptyTable": "Não foi encontrado nenhum registo",
- "sProcessing": "A carregar...",
- "sLengthMenu": "Mostrar _MENU_ registos",
- "sZeroRecords": "Não foram encontrados resultados",
- "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registos",
- "sInfoEmpty": "Mostrando de 0 até 0 de 0 registos",
- "sInfoFiltered": "(filtrado de _MAX_ registos no total)",
- "sInfoPostFix": "",
- "sSearch": "Procurar:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Primeiro",
- "sPrevious": "Anterior",
- "sNext": "Seguinte",
- "sLast": "Último"
- },
- "oAria": {
- "sSortAscending": ": Ordenar colunas de forma ascendente",
- "sSortDescending": ": Ordenar colunas de forma descendente"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ro.json b/assets/javascripts/jquery.dataTables/locales/ro.json
deleted file mode 100644
index 88728da7..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ro.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "Procesează...",
- "sLengthMenu": "Afișează _MENU_ înregistrări pe pagină",
- "sZeroRecords": "Nu am găsit nimic - ne pare rău",
- "sInfo": "Afișate de la _START_ la _END_ din _TOTAL_ înregistrări",
- "sInfoEmpty": "Afișate de la 0 la 0 din 0 înregistrări",
- "sInfoFiltered": "(filtrate dintr-un total de _MAX_ înregistrări)",
- "sInfoPostFix": "",
- "sSearch": "Caută:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Prima",
- "sPrevious": "Precedenta",
- "sNext": "Următoarea",
- "sLast": "Ultima"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ru.json b/assets/javascripts/jquery.dataTables/locales/ru.json
deleted file mode 100644
index d2c6ce9f..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ru.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "processing": "Подождите...",
- "search": "Поиск:",
- "lengthMenu": "Показать _MENU_ записей",
- "info": "Записи с _START_ до _END_ из _TOTAL_ записей",
- "infoEmpty": "Записи с 0 до 0 из 0 записей",
- "infoFiltered": "(отфильтровано из _MAX_ записей)",
- "infoPostFix": "",
- "loadingRecords": "Загрузка записей...",
- "zeroRecords": "Записи отсутствуют.",
- "emptyTable": "В таблице отсутствуют данные",
- "paginate": {
- "first": "Первая",
- "previous": "Предыдущая",
- "next": "Следующая",
- "last": "Последняя"
- },
- "aria": {
- "sortAscending": ": активировать для сортировки столбца по возрастанию",
- "sortDescending": ": активировать для сортировки столбца по убыванию"
- },
- "select": {
- "rows": {
- "_": "Выбрано записей: %d",
- "0": "Кликните по записи для выбора",
- "1": "Выбрана одна запись"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/si.json b/assets/javascripts/jquery.dataTables/locales/si.json
deleted file mode 100644
index 645a2978..00000000
--- a/assets/javascripts/jquery.dataTables/locales/si.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "වගුවේ දත්ත කිසිවක් නොමැත",
- "sInfo": "_TOTAL_ න් _START_ සිට _END_ දක්වා",
- "sInfoEmpty": "0 න් 0 සිට 0 දක්වා",
- "sInfoFiltered": "(_MAX_ න් තෝරාගත් )",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "_MENU_ ක් පෙන්වන්න",
- "sLoadingRecords": "පූරණය වෙමින් පවතී...",
- "sProcessing": "සැකසෙමින් පවතී...",
- "sSearch": "සොයන්න :",
- "sZeroRecords": "ගැලපෙන වාර්තා නොමැත.",
- "oPaginate": {
- "sFirst": "පළමු",
- "sLast": "අන්තිම",
- "sNext": "ඊළග",
- "sPrevious": "පසුගිය"
- },
- "oAria": {
- "sSortAscending": ": තීරුව ආරෝහනව තෝරන්න",
- "sSortDescending": ": තීරුව අවරෝහනව තෝරන්න"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sk.json b/assets/javascripts/jquery.dataTables/locales/sk.json
deleted file mode 100644
index 57d80d94..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sk.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Nie sú k dispozícii žiadne dáta",
- "sInfo": "Záznamy _START_ až _END_ z celkom _TOTAL_",
- "sInfoEmpty": "Záznamy 0 až 0 z celkom 0 ",
- "sInfoFiltered": "(vyfiltrované spomedzi _MAX_ záznamov)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Zobraz _MENU_ záznamov",
- "sLoadingRecords": "Načítavam...",
- "sProcessing": "Spracúvam...",
- "sSearch": "Hľadať:",
- "sZeroRecords": "Nenašli sa žiadne vyhovujúce záznamy",
- "oPaginate": {
- "sFirst": "Prvá",
- "sLast": "Posledná",
- "sNext": "Nasledujúca",
- "sPrevious": "Predchádzajúca"
- },
- "oAria": {
- "sSortAscending": ": aktivujte na zoradenie stĺpca vzostupne",
- "sSortDescending": ": aktivujte na zoradenie stĺpca zostupne"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sl.json b/assets/javascripts/jquery.dataTables/locales/sl.json
deleted file mode 100644
index b47689aa..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sl.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Nobenih podatkov ni na voljo",
- "sInfo": "Prikazujem _START_ do _END_ od _TOTAL_ zapisov",
- "sInfoEmpty": "Prikazujem 0 do 0 od 0 zapisov",
- "sInfoFiltered": "(filtrirano od _MAX_ vseh zapisov)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Prikaži _MENU_ zapisov",
- "sLoadingRecords": "Nalagam...",
- "sProcessing": "Obdelujem...",
- "sSearch": "Išči:",
- "sZeroRecords": "Nobeden zapis ne ustreza",
- "oPaginate": {
- "sFirst": "Prvi",
- "sLast": "Zadnji",
- "sNext": "Nasl.",
- "sPrevious": "Pred."
- },
- "oAria": {
- "sSortAscending": ": vključite za naraščujoči sort",
- "sSortDescending": ": vključite za padajoči sort"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sq.json b/assets/javascripts/jquery.dataTables/locales/sq.json
deleted file mode 100644
index 5ebea4ea..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sq.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Nuk ka asnjë të dhënë në tabele",
- "sInfo": "Duke treguar _START_ deri _END_ prej _TOTAL_ reshtave",
- "sInfoEmpty": "Duke treguar 0 deri 0 prej 0 reshtave",
- "sInfoFiltered": "(të filtruara nga gjithësej _MAX_ reshtave)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Shiko _MENU_ reshta",
- "sLoadingRecords": "Duke punuar...",
- "sProcessing": "Duke procesuar...",
- "sSearch": "Kërkoni:",
- "sZeroRecords": "Asnjë e dhënë nuk u gjet",
- "oPaginate": {
- "sFirst": "E para",
- "sLast": "E Fundit",
- "sNext": "Tjetra",
- "sPrevious": "E Kaluara"
- },
- "oAria": {
- "sSortAscending": ": aktivizo për të sortuar kolumnin me vlera në ngritje",
- "sSortDescending": ": aktivizo për të sortuar kolumnin me vlera në zbritje"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sr.json b/assets/javascripts/jquery.dataTables/locales/sr.json
deleted file mode 100644
index 66da9152..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sr.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Нема података у табели",
- "sInfo": "Приказ _START_ до _END_ од укупно _TOTAL_ записа",
- "sInfoEmpty": "Приказ 0 до 0 од укупно 0 записа",
- "sInfoFiltered": "(филтрирано од укупно _MAX_ записа)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Прикажи _MENU_ записа",
- "sLoadingRecords": "Учитавање...",
- "sProcessing": "Обрада...",
- "sSearch": "Претрага:",
- "sZeroRecords": "Нису пронађени одговарајући записи",
- "oPaginate": {
- "sFirst": "Почетна",
- "sLast": "Последња",
- "sNext": "Следећа",
- "sPrevious": "Предходна"
- },
- "oAria": {
- "sSortAscending": ": активирајте да сортирате колону узлазно",
- "sSortDescending": ": активирајте да сортирате колону силазно"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sv.json b/assets/javascripts/jquery.dataTables/locales/sv.json
deleted file mode 100644
index a51a9cb8..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sv.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Tabellen innehåller ingen data",
- "sInfo": "Visar _START_ till _END_ av totalt _TOTAL_ rader",
- "sInfoEmpty": "Visar 0 till 0 av totalt 0 rader",
- "sInfoFiltered": "(filtrerade från totalt _MAX_ rader)",
- "sInfoPostFix": "",
- "sInfoThousands": " ",
- "sLengthMenu": "Visa _MENU_ rader",
- "sLoadingRecords": "Laddar...",
- "sProcessing": "Bearbetar...",
- "sSearch": "Sök:",
- "sZeroRecords": "Hittade inga matchande resultat",
- "oPaginate": {
- "sFirst": "Första",
- "sLast": "Sista",
- "sNext": "Nästa",
- "sPrevious": "Föregående"
- },
- "oAria": {
- "sSortAscending": ": aktivera för att sortera kolumnen i stigande ordning",
- "sSortDescending": ": aktivera för att sortera kolumnen i fallande ordning"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/sw.json b/assets/javascripts/jquery.dataTables/locales/sw.json
deleted file mode 100644
index 1435c912..00000000
--- a/assets/javascripts/jquery.dataTables/locales/sw.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "Hakuna data iliyo patikana",
- "sInfo": "Inaonyesha _START_ mpaka _END_ ya matokeo _TOTAL_",
- "sInfoEmpty": "Inaonyesha 0 hadi 0 ya matokeo 0",
- "sInfoFiltered": "(uschujo kutoka matokeo idadi _MAX_)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "Onyesha _MENU_ matokeo",
- "sLoadingRecords": "Inapakia...",
- "sProcessing": "Processing...",
- "sSearch": "Tafuta:",
- "sZeroRecords": "Rekodi vinavyolingana haziku patikana",
- "oPaginate": {
- "sFirst": "Mwanzo",
- "sLast": "Mwisho",
- "sNext": "Ijayo",
- "sPrevious": "Kabla"
- },
- "oAria": {
- "sSortAscending": ": seti kulainisha sanjari kwa mtindo wa upandaji",
- "sSortDescending": ": seti kulainisha sanjari kwa mtindo wa mteremko"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ta.json b/assets/javascripts/jquery.dataTables/locales/ta.json
deleted file mode 100644
index 40f5aa68..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ta.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "அட்டவணையில் தரவு கிடைக்கவில்லை",
- "sInfo": "உள்ளீடுகளை் _START_ முதல _END_ உள்ள _TOTAL_ காட்டும்",
- "sInfoEmpty": "0 உள்ளீடுகளை 0 0 காட்டும்",
- "sInfoFiltered": "(_MAX_ மொத்த உள்ளீடுகளை இருந்து வடிகட்டி)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "_MENU_ காண்பி",
- "sLoadingRecords": "ஏற்றுகிறது ...",
- "sProcessing": "செயலாக்க ...",
- "sSearch": "தேடல்:",
- "sZeroRecords": "பொருத்தமான பதிவுகள் இல்லை",
- "oPaginate": {
- "sFirst": "முதல்",
- "sLast": "இறுதி",
- "sNext": "அடுத்து",
- "sPrevious": "முந்தைய"
- },
- "oAria": {
- "sSortAscending": ": நிரலை ஏறுவரிசையில் வரிசைப்படுத்த செயல்படுத்த",
- "sSortDescending": ": நிரலை இறங்கு வரிசைப்படுத்த செயல்படுத்த"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/te.json b/assets/javascripts/jquery.dataTables/locales/te.json
deleted file mode 100644
index 2dde8e9a..00000000
--- a/assets/javascripts/jquery.dataTables/locales/te.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "పట్టికలో డేటా లేదు.",
- "sInfo": "మొత్తం _TOTAL_ ఎంట్రీలులో _START_ నుండి _END_ వరకు చూపిస్తున్నాం",
- "sInfoEmpty": "చూపిస్తున్నాం 0 నుండి 0 వరకు 0 ఎంట్రీలు లో",
- "sInfoFiltered": "( _MAX_ ఎంట్రీలులో నుండి వడపోయాబడినవి)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": " _MENU_ ఎంట్రీలు చూపించు",
- "sLoadingRecords": "లోడ్ అవుతుంది ...",
- "sProcessing": "ప్రాసెస్ చేయబడుతుంది...",
- "sSearch": "వెతుకు:",
- "sZeroRecords": "మ్యాచింగ్ రికార్డులు లేవు",
- "oPaginate": {
- "sFirst": "మొదటి",
- "sLast": "చివరి",
- "sNext": "తర్వాత",
- "sPrevious": "మునుపటి"
- },
- "oAria": {
- "sSortAscending": ": నిలువరుసను ఆరోహణ క్రమం అమర్చండి",
- "sSortDescending": ": నిలువరుసను అవరోహణ క్రమం అమర్చండి"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/th.json b/assets/javascripts/jquery.dataTables/locales/th.json
deleted file mode 100644
index 60e88807..00000000
--- a/assets/javascripts/jquery.dataTables/locales/th.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "sEmptyTable": "ไม่มีข้อมูลในตาราง",
- "sInfo": "แสดง _START_ ถึง _END_ จาก _TOTAL_ แถว",
- "sInfoEmpty": "แสดง 0 ถึง 0 จาก 0 แถว",
- "sInfoFiltered": "(กรองข้อมูล _MAX_ ทุกแถว)",
- "sInfoPostFix": "",
- "sInfoThousands": ",",
- "sLengthMenu": "แสดง _MENU_ แถว",
- "sLoadingRecords": "กำลังโหลดข้อมูล...",
- "sProcessing": "กำลังดำเนินการ...",
- "sSearch": "ค้นหา: ",
- "sZeroRecords": "ไม่พบข้อมูล",
- "oPaginate": {
- "sFirst": "หน้าแรก",
- "sPrevious": "ก่อนหน้า",
- "sNext": "ถัดไป",
- "sLast": "หน้าสุดท้าย"
- },
- "oAria": {
- "sSortAscending": ": เปิดใช้งานการเรียงข้อมูลจากน้อยไปมาก",
- "sSortDescending": ": เปิดใช้งานการเรียงข้อมูลจากมากไปน้อย"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/to.json b/assets/javascripts/jquery.dataTables/locales/to.json
deleted file mode 100644
index 88728da7..00000000
--- a/assets/javascripts/jquery.dataTables/locales/to.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "Procesează...",
- "sLengthMenu": "Afișează _MENU_ înregistrări pe pagină",
- "sZeroRecords": "Nu am găsit nimic - ne pare rău",
- "sInfo": "Afișate de la _START_ la _END_ din _TOTAL_ înregistrări",
- "sInfoEmpty": "Afișate de la 0 la 0 din 0 înregistrări",
- "sInfoFiltered": "(filtrate dintr-un total de _MAX_ înregistrări)",
- "sInfoPostFix": "",
- "sSearch": "Caută:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Prima",
- "sPrevious": "Precedenta",
- "sNext": "Următoarea",
- "sLast": "Ultima"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/tr.json b/assets/javascripts/jquery.dataTables/locales/tr.json
deleted file mode 100644
index 14481941..00000000
--- a/assets/javascripts/jquery.dataTables/locales/tr.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "sDecimal": ",",
- "sEmptyTable": "Tabloda herhangi bir veri mevcut değil",
- "sInfo": "_TOTAL_ kayıttan _START_ - _END_ arasındaki kayıtlar gösteriliyor",
- "sInfoEmpty": "Kayıt yok",
- "sInfoFiltered": "(_MAX_ kayıt içerisinden bulunan)",
- "sInfoPostFix": "",
- "sInfoThousands": ".",
- "sLengthMenu": "Sayfada _MENU_ kayıt göster",
- "sLoadingRecords": "Yükleniyor...",
- "sProcessing": "İşleniyor...",
- "sSearch": "Ara:",
- "sZeroRecords": "Eşleşen kayıt bulunamadı",
- "oPaginate": {
- "sFirst": "İlk",
- "sLast": "Son",
- "sNext": "Sonraki",
- "sPrevious": "Önceki"
- },
- "oAria": {
- "sSortAscending": ": artan sütun sıralamasını aktifleştir",
- "sSortDescending": ": azalan sütun sıralamasını aktifleştir"
- },
- "select": {
- "rows": {
- "_": "%d kayıt seçildi",
- "0": "",
- "1": "1 kayıt seçildi"
- }
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/uk.json b/assets/javascripts/jquery.dataTables/locales/uk.json
deleted file mode 100644
index b5b1d07a..00000000
--- a/assets/javascripts/jquery.dataTables/locales/uk.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "sProcessing": "Зачекайте...",
- "sLengthMenu": "Показати _MENU_ записів",
- "sZeroRecords": "Записи відсутні.",
- "sInfo": "Записи з _START_ по _END_ із _TOTAL_ записів",
- "sInfoEmpty": "Записи з 0 по 0 із 0 записів",
- "sInfoFiltered": "(відфільтровано з _MAX_ записів)",
- "sInfoPostFix": "",
- "sSearch": "Пошук:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Перша",
- "sPrevious": "Попередня",
- "sNext": "Наступна",
- "sLast": "Остання"
- },
- "oAria": {
- "sSortAscending": ": активувати для сортування стовпців за зростанням",
- "sSortDescending": ": активувати для сортування стовпців за спаданням"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/ur.json b/assets/javascripts/jquery.dataTables/locales/ur.json
deleted file mode 100644
index 0c5a15d9..00000000
--- a/assets/javascripts/jquery.dataTables/locales/ur.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "ہے جاري عملدرامد...",
- "sLengthMenu": "دکہائين شقيں کي (_MENU_) فہرست",
- "sZeroRecords": "ملے نہيں مفروضات جلتے ملتے کوئ",
- "sInfo": "فہرست کي تک _END_ سے _START_ سے ميں _TOTAL_ فہرست پوري ہے نظر پيش",
- "sInfoEmpty": "فہرست کي تک 0 سے 0 سے ميں 0 قل ہے نظر پيشّ",
- "sInfoFiltered": "(فہرست ہوئ چھني سے ميں _MAX_ قل)",
- "sInfoPostFix": "",
- "sSearch": "کرو تلاش:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "پہلا",
- "sPrevious": "پچہلا",
- "sNext": "اگلا",
- "sLast": "آخري"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/uz.json b/assets/javascripts/jquery.dataTables/locales/uz.json
deleted file mode 100644
index 9458af80..00000000
--- a/assets/javascripts/jquery.dataTables/locales/uz.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "sEmptyTable": "Ma'lumot yo'q",
- "sInfo": "Umumiy _TOTAL_ yozuvlarlardan _START_ dan _END_ gachasi ko'rsatilmoqda",
- "sInfoEmpty": "Umumiy 0 yozuvlardan 0 dan 0 gachasi ko'rsatilmoqda",
- "sInfoFiltered": "(_MAX_ yozuvlardan filtrlandi)",
- "sInfoPostFix": "",
- "sLengthMenu": "_MENU_ ta yozuvlarni ko'rsat",
- "sLoadingRecords": "Yozuvlar yuklanmoqda...",
- "sProcessing": "Ishlayapman...",
- "sSearch": "Izlash:",
- "sZeroRecords": "Ma'lumot yo'q.",
- "oPaginate": {
- "sFirst": "Birinchi",
- "sPrevious": "Avvalgi",
- "sNext": "Keyingi",
- "sLast": "Son'ggi"
- },
- "oAria": {
- "sSortAscending": ": to'g'ri tartiblash",
- "sSortDescending": ": teskari tartiblash"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/vi.json b/assets/javascripts/jquery.dataTables/locales/vi.json
deleted file mode 100644
index 020a8e30..00000000
--- a/assets/javascripts/jquery.dataTables/locales/vi.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "sProcessing": "Đang xử lý...",
- "sLengthMenu": "Xem _MENU_ mục",
- "sZeroRecords": "Không tìm thấy dòng nào phù hợp",
- "sInfo": "Đang xem _START_ đến _END_ trong tổng số _TOTAL_ mục",
- "sInfoEmpty": "Đang xem 0 đến 0 trong tổng số 0 mục",
- "sInfoFiltered": "(được lọc từ _MAX_ mục)",
- "sInfoPostFix": "",
- "sSearch": "Tìm:",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "Đầu",
- "sPrevious": "Trước",
- "sNext": "Tiếp",
- "sLast": "Cuối"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/jquery.dataTables/locales/zh-TW.json b/assets/javascripts/jquery.dataTables/locales/zh-TW.json
deleted file mode 100644
index 64f66c71..00000000
--- a/assets/javascripts/jquery.dataTables/locales/zh-TW.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sProcessing": "處理中...",
- "sLengthMenu": "顯示 _MENU_ 筆結果",
- "sZeroRecords": "沒有符合的結果",
- "sInfo": "顯示第 _START_ 到 _END_ 項結果,共 _TOTAL_ 項",
- "sInfoEmpty": "顯示第 0 到 0 項結果,共 0 項",
- "sInfoFiltered": "(從 _MAX_ 項結果中過濾)",
- "sInfoPostFix": "",
- "sSearch": "搜尋:",
- "sUrl": "",
- "sEmptyTable": "表單中沒有數據",
- "sLoadingRecords": "載入中...",
- "sInfoThousands": ",",
- "oPaginate": {
- "sFirst": "第一頁",
- "sPrevious": "上一頁",
- "sNext": "下一頁",
- "sLast": "最後一頁"
- },
- "oAria": {
- "sSortAscending": ": 升冪排列",
- "sSortDescending": ": 降冪排列"
- }
-}
diff --git a/assets/javascripts/jquery.dataTables/locales/zh.json b/assets/javascripts/jquery.dataTables/locales/zh.json
deleted file mode 100644
index 9620025d..00000000
--- a/assets/javascripts/jquery.dataTables/locales/zh.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "sProcessing": "处理中...",
- "sLengthMenu": "显示 _MENU_ 项结果",
- "sZeroRecords": "没有匹配结果",
- "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
- "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
- "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
- "sInfoPostFix": "",
- "sSearch": "搜索:",
- "sUrl": "",
- "sEmptyTable": "表中数据为空",
- "sLoadingRecords": "载入中...",
- "sInfoThousands": ",",
- "oPaginate": {
- "sFirst": "首页",
- "sPrevious": "上页",
- "sNext": "下页",
- "sLast": "末页"
- },
- "oAria": {
- "sSortAscending": ": 以升序排列此列",
- "sSortDescending": ": 以降序排列此列"
- }
-}
\ No newline at end of file
diff --git a/assets/javascripts/plupload/bower.json b/assets/javascripts/plupload/bower.json
deleted file mode 100644
index 53d84372..00000000
--- a/assets/javascripts/plupload/bower.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "plupload",
- "license": "AGPLv3",
- "authors": [
- "Davit Barbakadze "
- ],
- "homepage": "http://plupload.com",
- "repository": {
- "type": "git",
- "url": "https://github.com/moxiecode/plupload.git"
- },
- "main": "./js/plupload.full.min.js",
- "ignore": [
- "tests/",
- "src/",
- "build/",
- "examples/",
- "Jakefile.js",
- "package.json",
- "bower.json",
- "composer.json",
- "README.md",
- ".*"
- ]
-}
diff --git a/assets/javascripts/plupload/js/Moxie.swf b/assets/javascripts/plupload/js/Moxie.swf
deleted file mode 100644
index ca29775a..00000000
Binary files a/assets/javascripts/plupload/js/Moxie.swf and /dev/null differ
diff --git a/assets/javascripts/plupload/js/Moxie.xap b/assets/javascripts/plupload/js/Moxie.xap
deleted file mode 100644
index 70ef069d..00000000
Binary files a/assets/javascripts/plupload/js/Moxie.xap and /dev/null differ
diff --git a/assets/javascripts/plupload/js/i18n/ar.js b/assets/javascripts/plupload/js/i18n/ar.js
deleted file mode 100644
index 0d9fd7e2..00000000
--- a/assets/javascripts/plupload/js/i18n/ar.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Arabic (ar)
-plupload.addI18n({"%d files queued":"%d الملفات في قائمة الانتظار","%s already present in the queue.":"%s الملف موجود بالفعل في قائمة الانتظار","%s specified, but cannot be found.":"","Add Files":"أضف ملفات","Add files to the upload queue and click the start button.":"أضف ملفات إلى القائمة إنتظار التحميل ثم أضغط على زر البداية","b":"بايت","Close":"أغلاق","Drag files here.":"سحب الملف هنا","Duplicate file error.":"خطاء في تكرار الملف","Error: File too large:":" خطاء : حجم الملف كبير :","Error: Invalid file extension:":"خطاء : أمتداد الملف غير صالح :","File count error.":"خطاء في عد الملفات","File extension error.":"خطأ في أمتداد الملف","File size error.":"خطأ في حجم الملف","File: %s":"ملف: %s","File: %s, size: %d, max file size: %d":"ملف: %s, أقصى حجم للملف: %d, حجم: %d","Filename":"أسم الملف","gb":"جيجابايت","HTTP Error.":"خطأ في برتوكول نقل الملفات","Image format either wrong or not supported.":"صيغة الصورة أما خطاء أو غير مدعومه","Init error.":"خطأ في تهيئة","kb":"كيلوبايت","List":"","mb":"ميجابايت","N/A":"لا شي","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"الذاكرة المتوفره أنتهت لمدة التشغيل","Select files":"أختر الملفات","Size":"الحجم","Start Upload":"أبدا التحميل","Status":"الحالة","Stop Upload":"أيقاف التحميل","tb":"تيرابايت","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"العناصر المقبوله لتحميل هي %d ملف في هذا الوقت. الملفات الاضافية أزيلة.","Upload URL might be wrong or doesn't exist.":"عنوان التحميل ربما يكون خاطئ أو غير متوفر","Uploaded %d/%d files":"تحميل %d/%d ملف","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/az.js b/assets/javascripts/plupload/js/i18n/az.js
deleted file mode 100644
index b5059171..00000000
--- a/assets/javascripts/plupload/js/i18n/az.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Azerbaijani (az)
-plupload.addI18n({"%d files queued":"Növbədə %d fayl var","%s already present in the queue.":"%s artıq növbədə var.","%s specified, but cannot be found.":"","Add Files":"Fayl əlavə et","Add files to the upload queue and click the start button.":"Faylları əlavə edin və yüklə düyməsinə klikləyin.","b":"b","Close":"Bağla","Drag files here.":"Faylları bura çəkin.","Duplicate file error.":"Bu fayl artıq növbədə var.","Error: File too large:":"Xəta:Fayl həcmi çox böyükdür.","Error: Invalid file extension:":"Xəta: Yanlış fayl uzantısı:","File count error.":"Fayl sayı çox böyükdür.","File extension error.":"Fayl uzantısı xətası.","File size error.":"Fayl həcmi xətası.","File: %s":"Fayl: %s","File: %s, size: %d, max file size: %d":"Fayl: %s, həcm: %d, max fayl həcmi: %d","Filename":"Faylın adı","gb":"gb","HTTP Error.":"HTTP xətası.","Image format either wrong or not supported.":"Şəklin formatı uyğun deyil və ya dəstəklənmir.","Init error.":"Init error.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Faylları seçin","Size":"Həcm","Start Upload":"Yüklə","Status":"Status","Stop Upload":"Yükləməni saxla","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"Yükləmə ünvanı səhvdir və ya mövcud deyil","Uploaded %d/%d files":"%d/%d fayl yüklənib","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/bg.js b/assets/javascripts/plupload/js/i18n/bg.js
deleted file mode 100644
index 3d0bb042..00000000
--- a/assets/javascripts/plupload/js/i18n/bg.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Bulgarian (bg)
-plupload.addI18n({"%d files queued":"%d файла в опашката","%s already present in the queue.":"%s вече го има в опашката.","%s specified, but cannot be found.":"","Add Files":"Добавете файлове","Add files to the upload queue and click the start button.":"Добавете файлове в опашката за качване, и щракнете бутона старт.","b":"b","Close":"Затвори","Drag files here.":"Довлечете файловете тук.","Duplicate file error.":"Грешка: файла е вече качен на сървъра.","Error: File too large:":"Грешка: Файла е твърде голям:","Error: Invalid file extension:":"Грешка: Невалидно разширение на файл:","File count error.":"Грешка в броя на файловете.","File extension error.":"Грешка: разширение на файла.","File size error.":"Грешка: размер на файла.","File: %s":"Файл: %s","File: %s, size: %d, max file size: %d":"Файл: %s, размер: %d, максимален размер: %d","Filename":"Име на файла","gb":"gb","HTTP Error.":"Грешка: HTTP .","Image format either wrong or not supported.":"Формата на изображението или е объркан, или не се поддържа.","Init error.":"Грешка: инициализиране.","kb":"kb","List":"","mb":"mb","N/A":"не приложимо","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Недостатъчна свободна памет.","Select files":"Изберете файлове","Size":"Размер","Start Upload":"Започнете качването","Status":"Статус","Stop Upload":"Спрете качването","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Елемента за качване приема само %d файл(а) наведнъж. Допълнителните файлове бяха отстранени.","Upload URL might be wrong or doesn't exist.":"URL за качване може да е грешен или да не съществува.","Uploaded %d/%d files":"Качени %d/%d файла","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/bs.js b/assets/javascripts/plupload/js/i18n/bs.js
deleted file mode 100644
index e5c65ddb..00000000
--- a/assets/javascripts/plupload/js/i18n/bs.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Bosnian (bs)
-plupload.addI18n({"%d files queued":"%d datoteka čeka","%s already present in the queue.":"%s se već nalazi u redu.","%s specified, but cannot be found.":"","Add Files":"Dodaj datoteke","Add files to the upload queue and click the start button.":"Dodajte datoteke u red i kliknite na dugme za pokretanje.","b":"b","Close":"Zatvori","Drag files here.":"Dovucite datoteke ovdje.","Duplicate file error.":"Dupla datoteka.","Error: File too large:":"Greška! Datoteka je prevelika:","Error: Invalid file extension:":"Greška! Neispravan ekstenzija datoteke:","File count error.":"Greška u brojanju datoeka.","File extension error.":"Greška u ekstenziji datoteke.","File size error.":"Greška u veličini datoteke.","File: %s":"Datoteka: %s","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Filename":"Naziv datoteke","gb":"gb","HTTP Error.":"HTTP greška.","Image format either wrong or not supported.":"Format slike je neispravan ili nije podržan.","Init error.":"Inicijalizacijska greška.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Nema više dostupne memorije.","Select files":"Odaberite datoteke","Size":"Veličina","Start Upload":"Započni dodavanje","Status":"Status","Stop Upload":"Prekini dodavanje","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Dodavanje trenutno dozvoljava samo %d datoteka istovremeno. Dodatne datoteke su uklonjene.","Upload URL might be wrong or doesn't exist.":"URL za dodavanje je neispravan ili ne postoji.","Uploaded %d/%d files":"Dodano %d/%d datoteka","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ca.js b/assets/javascripts/plupload/js/i18n/ca.js
deleted file mode 100644
index a44cbae8..00000000
--- a/assets/javascripts/plupload/js/i18n/ca.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Catalan (ca)
-plupload.addI18n({"%d files queued":"%d fitxers en cua","%s already present in the queue.":"%s ja existeix a la cua.","%s specified, but cannot be found.":"%s especificat, però no es pot trobar.","Add Files":"Afegir fitxers","Add files to the upload queue and click the start button.":"Afegeixi els fitxers a la cua de pujada i cliqui el botó Iniciar","b":"b","Close":"Tancar","Drag files here.":"Arrossegui fitxers aquí","Duplicate file error.":"Error per duplicitat de fitxer.","Error: File too large:":"Error: Fitxer massa gran:","Error: Invalid file extension:":"Error: Extensió de fitxer no vàlida:","File count error.":"Error en el recompte de fitxers","File extension error.":"Error en l´extensió del fitxer.","File size error.":"Error en la mida del fitxer.","File: %s":"Fitxer: %s","File: %s, size: %d, max file size: %d":"Fitxer: %s, mida: %d, mida màxima de fitxer: %d","Filename":"Nom de fitxer","gb":"Gb","HTTP Error.":"Error HTTP.","Image format either wrong or not supported.":"Format d'imatge incorrecte o no suportat.","Init error.":"Error d´inicialització.","kb":"Kb","List":"Llistat","mb":"Mb","N/A":"N/D","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resolució de la imatge massa gran! El pujador %s suporta mides d'imatge fins a %wx%hpx.","Runtime ran out of available memory.":"L'execució ha arribat al límit de memòria.","Select files":"Seleccionar fitxers","Size":"Tamany","Start Upload":"Començar pujada","Status":"Estat","Stop Upload":"Parar pujada","tb":"Tb","Thumbnails":"Miniatures","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"La càrrega d'elements tan sols accepta %d fitxer(s) alhora. Els fitxers sobrants seran descartats.","Upload URL might be wrong or doesn't exist.":"La URL de càrrega no és correcte o bé no existeix.","Uploaded %d/%d files":"Pujats %d/%d fitxers","You must specify either browse_button or drop_element.":"Has d'especificar o bé el botó de selecció de fitxers `browse_button` o bé l'àrea per arrosegar els fitxers `drop_element`."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/cs.js b/assets/javascripts/plupload/js/i18n/cs.js
deleted file mode 100644
index 13179ba8..00000000
--- a/assets/javascripts/plupload/js/i18n/cs.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Czech (cs)
-plupload.addI18n({"%d files queued":"%d souborů ve frontě","%s already present in the queue.":"%s je již zařazen ve frontě.","%s specified, but cannot be found.":"%s bylo specifikováno, ale nebylo nalezeno.","Add Files":"Přidat soubory","Add files to the upload queue and click the start button.":"Přidejte soubory do fronty a pak spusťte nahrávání.","b":"b","Close":"Zavřít","Drag files here.":"Sem přetáhněte soubory.","Duplicate file error.":"Chyba - duplikovaný soubor.","Error: File too large:":"Chyba: Soubor je příliš veliký:","Error: Invalid file extension:":"Chyba: Neplatná koncovka souboru:","File count error.":"Chyba v počtu souborů.","File extension error.":"Chyba přípony souboru.","File size error.":"Chyba velikosti souboru.","File: %s":"Soubor: %s","File: %s, size: %d, max file size: %d":"Soubor: %s, velikost: %d, maximální velikost souboru: %d","Filename":"Název souboru","gb":"gb","HTTP Error.":"Chyba HTTP.","Image format either wrong or not supported.":"Špatný, nebo nepodporovaný formát obrázku.","Init error.":"Chyba inicializace.","kb":"kb","List":"Seznam","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Rozlišení je mimo rozmezí! %s runtime podporuje obrázky pouze do %wx%hpx.","Runtime ran out of available memory.":"Běh skriptu přesáhl dostupnou paměť.","Select files":"Vyberte soubory","Size":"Velikost","Start Upload":"Spustit nahrávání","Status":"Stav","Stop Upload":"Zastavit nahrávání","tb":"tb","Thumbnails":"Náhledy","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload akceptuje pouze %d soubor(ů) najednou. Další soubory byly odstraněny.","Upload URL might be wrong or doesn't exist.":"URL uploadu je možná špatně, nebo neexistuje.","Uploaded %d/%d files":"Nahráno %d/%d souborů","You must specify either browse_button or drop_element.":"Musíte specifikovat browse_button či drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/cy.js b/assets/javascripts/plupload/js/i18n/cy.js
deleted file mode 100644
index 0fe09efb..00000000
--- a/assets/javascripts/plupload/js/i18n/cy.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Welsh (cy)
-plupload.addI18n({"%d files queued":"%d ffeil mewn ciw","%s already present in the queue.":"%s yn y ciw yn barod.","%s specified, but cannot be found.":"","Add Files":"Ychwanegu Ffeiliau","Add files to the upload queue and click the start button.":"Ychwanegwch ffeiliau i'r ciw lanlwytho a chlicio'r botwm dechrau.","b":"b","Close":"Cau","Drag files here.":"Llusgwch ffeiliau yma.","Duplicate file error.":"Gwall ffeil ddyblyg.","Error: File too large:":"Gwall: Ffeil yn rhy fawr:","Error: Invalid file extension:":"Gwall: estyniad ffeil annilys:","File count error.":"Gwall cyfri ffeiliau.","File extension error.":"Gwall estyniad ffeil.","File size error.":"Gwall maint ffeil.","File: %s":"Ffeil: %s","File: %s, size: %d, max file size: %d":"Ffeil: %s, maint: %d, maint mwyaf ffeil: %d","Filename":"Enw'r ffeil","gb":"gb","HTTP Error.":"Gwall HTTP.","Image format either wrong or not supported.":"Fformat delwedd yn anghywir neu heb ei gynnal.","Init error.":"Gwall cych.","kb":"kb","List":"","mb":"mb","N/A":"Dd/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Allan o gof.","Select files":"Dewis ffeiliau","Size":"Maint","Start Upload":"Dechrau Lanlwytho","Status":"Statws","Stop Upload":"Atal Lanlwytho","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Mae'r elfen lanlwytho yn derbyn %d ffeil ar y tro. Caiff ffeiliau ychwanegol eu tynnu.","Upload URL might be wrong or doesn't exist.":"URL y lanlwythiad ynb anghywir neu ddim yn bodoli.","Uploaded %d/%d files":"Lanlwythwyd %d/%d ffeil","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/da.js b/assets/javascripts/plupload/js/i18n/da.js
deleted file mode 100644
index 1451c921..00000000
--- a/assets/javascripts/plupload/js/i18n/da.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Danish (da)
-plupload.addI18n({"%d files queued":"%d filer i kø","%s already present in the queue.":"%s findes allerede i køen.","%s specified, but cannot be found.":"","Add Files":"Tilføj filer","Add files to the upload queue and click the start button.":"Tilføj filer til køen og klik Start upload knappen.","b":"b","Close":"Luk","Drag files here.":"Træk filer her.","Duplicate file error.":"Filen findes allerede.","Error: File too large:":"Fejl: Filen er for stor:","Error: Invalid file extension:":"Fejl: Ugyldigt fil format:","File count error.":"Fil antal fejl.","File extension error.":"Fil format fejl.","File size error.":"Filstørrelse fejl.","File: %s":"Fil: %s","File: %s, size: %d, max file size: %d":"Fil: %s, størrelse: %d, maks. filstørrelse: %d","Filename":"Filnavn","gb":"gb","HTTP Error.":"HTTP fejl.","Image format either wrong or not supported.":"Billede format er enten forkert eller ikke understøttet.","Init error.":"Opstarts fejl.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime mangler tilgængelige hukommelse.","Select files":"Vælg filer","Size":"Størrelse","Start Upload":"Start upload","Status":"Status","Stop Upload":"Stop upload","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload accepterer kun %d fil(er) af gangen. Ekstra filer blev skippet.","Upload URL might be wrong or doesn't exist.":"Upload URL kan være forkert eller ikke eksisterende.","Uploaded %d/%d files":"Uploaded %d/%d filer","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/de.js b/assets/javascripts/plupload/js/i18n/de.js
deleted file mode 100644
index 5470c305..00000000
--- a/assets/javascripts/plupload/js/i18n/de.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// German (de)
-plupload.addI18n({"%d files queued":"%d Dateien in der Warteschlange","%s already present in the queue.":"%s ist bereits in der Warteschlange","%s specified, but cannot be found.":"","Add Files":"Dateien hinzufügen","Add files to the upload queue and click the start button.":"Dateien hinzufügen und auf 'Hochladen' klicken.","b":"B","Close":"Schließen","Drag files here.":"Dateien auf diese Fläche bewegen.","Duplicate file error.":"Datei bereits hochgeladen","Error: File too large:":"Fehler: Datei zu groß:","Error: Invalid file extension:":"Fehler: Ungültige Dateiendung:","File count error.":"Fehlerhafte Dateianzahl.","File extension error.":"Fehler bei Dateiendung","File size error.":"Fehler bei Dateigröße","File: %s":"Datei: %s","File: %s, size: %d, max file size: %d":"Datei: %s, Größe: %d, maximale Dateigröße: %d","Filename":"Dateiname","gb":"GB","HTTP Error.":"HTTP-Fehler","Image format either wrong or not supported.":"Bildformat falsch oder nicht unterstützt.","Init error.":"Initialisierungsfehler","kb":"KB","List":"Liste","mb":"MB","N/A":"Nicht verfügbar","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Nicht genügend Speicher verfügbar.","Select files":"Dateien auswählen","Size":"Größe","Start Upload":"Hochladen beginnen","Status":"Status","Stop Upload":"Hochladen abbrechen","tb":"TB","Thumbnails":"Vorschaubilder","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Pro Durchgang können nur %d Datei(en) akzeptiert werden. Überzählige Dateien wurden ignoriert.","Upload URL might be wrong or doesn't exist.":"Upload-URL ist falsch oder existiert nicht.","Uploaded %d/%d files":"%d/%d Dateien wurden hochgeladen","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/el.js b/assets/javascripts/plupload/js/i18n/el.js
deleted file mode 100644
index d63999a2..00000000
--- a/assets/javascripts/plupload/js/i18n/el.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Greek (el)
-plupload.addI18n({"%d files queued":"%d αρχεία στην ουρά","%s already present in the queue.":"Το «%s» βρίσκεται ήδη στην ουρά.","%s specified, but cannot be found.":"","Add Files":"Προσθέστε Αρχεία","Add files to the upload queue and click the start button.":"Προσθέστε αρχεία στην ουρά μεταφόρτωσης και πατήστε το κουμπί εκκίνησης.","b":"b","Close":"Κλείσιμο","Drag files here.":"Σύρετε αρχεία εδώ","Duplicate file error.":"Το αρχείο έχει ξαναπροστεθεί.","Error: File too large:":"Σφάλμα: Πολύ μεγάλο αρχείο:","Error: Invalid file extension:":"Σφάλμα: Μη έγκυρος τύπος αρχείου:","File count error.":"Σφάλμα με τον αριθμό αρχείων.","File extension error.":"Σφάλμα με τον τύπο αρχείου.","File size error.":"Σφάλμα με το μέγεθος του αρχείου.","File: %s":"Αρχείο: %s","File: %s, size: %d, max file size: %d":"Αρχείο: %s, μέγεθος: %d, μέγιστο μέγεθος αρχείου: %d","Filename":"Όνομα Αρχείου","gb":"gb","HTTP Error.":"Σφάλμα HTTP.","Image format either wrong or not supported.":"Ο τύπος εικόνας είναι λάθος ή δεν υποστηρίζεται.","Init error.":"Σφάλμα αρχικοποίησης.","kb":"kb","List":"Λίστα","mb":"mb","N/A":"Δεν ισχύει","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Δεν υπάρχει αρκετή διαθέσιμη μνήμη.","Select files":"Επιλέξτε Αρχεία","Size":"Μέγεθος","Start Upload":"Εκκίνηση Μεταφόρτωσης","Status":"Κατάσταση","Stop Upload":"Ακύρωση Μεταφόρτωσης","tb":"tb","Thumbnails":"Μικρογραφίες","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Μπορείτε να μεταφορτώσετε μεχρι και %d αρχείο/α κάθε φορά. Τα επιπλέον αρχεία αφαιρέθηκαν.","Upload URL might be wrong or doesn't exist.":"Το URL μεταφόρτωσης είναι λάθος ή δεν υπάρχει.","Uploaded %d/%d files":"Μεταφορτώθηκαν %d/%d αρχεία","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/en.js b/assets/javascripts/plupload/js/i18n/en.js
deleted file mode 100644
index bd7e737e..00000000
--- a/assets/javascripts/plupload/js/i18n/en.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// English (en)
-plupload.addI18n({"%d files queued":"%d files queued","%s already present in the queue.":"%s already present in the queue.","%s specified, but cannot be found.":"%s specified, but cannot be found.","Add Files":"Add Files","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.","b":"b","Close":"Close","Drag files here.":"Drag files here.","Duplicate file error.":"Duplicate file error.","Error: File too large:":"Error: File too large:","Error: Invalid file extension:":"Error: Invalid file extension:","File count error.":"File count error.","File extension error.":"File extension error.","File size error.":"File size error.","File: %s":"File: %s","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d","Filename":"Filename","gb":"gb","HTTP Error.":"HTTP Error.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Init error.":"Init error.","kb":"kb","List":"List","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Select files","Size":"Size","Start Upload":"Start Upload","Status":"Status","Stop Upload":"Stop Upload","tb":"tb","Thumbnails":"Thumbnails","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","Uploaded %d/%d files":"Uploaded %d/%d files","You must specify either browse_button or drop_element.":"You must specify either browse_button or drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/es.js b/assets/javascripts/plupload/js/i18n/es.js
deleted file mode 100644
index baa8ecfb..00000000
--- a/assets/javascripts/plupload/js/i18n/es.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Spanish (es)
-plupload.addI18n({"%d files queued":"%d archivos en cola.","%s already present in the queue.":"%s ya se encuentra en la lista.","%s specified, but cannot be found.":"%s especificado, pero no se puede encontrar","Add Files":"Agregar archivos","Add files to the upload queue and click the start button.":"Agregue archivos a la lista de subida y pulse clic en el botón de Iniciar carga","b":"B","Close":"Cerrar","Drag files here.":"Arrastre archivos aquí","Duplicate file error.":"Error, archivo duplicado","Error: File too large:":"Error: archivo demasiado grande:","Error: Invalid file extension:":"Error: Extensión de archivo inválida:","File count error.":"Error en contador de archivos.","File extension error.":"Error de extensión de archivo.","File size error.":"Error de tamaño de archivo.","File: %s":"Archivo: %s","File: %s, size: %d, max file size: %d":"Archivo: %s, tamaño: %d, tamaño máximo de archivo: %d","Filename":"Nombre de archivo","gb":"GB","HTTP Error.":"Error de HTTP.","Image format either wrong or not supported.":"Formato de imagen no soportada.","Init error.":"Error de inicialización.","kb":"KB","List":"Lista","mb":"MB","N/A":"No disponible","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resolución fuera de límites! El tiempo de ejecución %s sólo admite imágenes hasta %wx%hpx","Runtime ran out of available memory.":"No hay memoria disponible.","Select files":"Elija archivos","Size":"Tamaño","Start Upload":"Iniciar carga","Status":"Estado","Stop Upload":"Detener Subida.","tb":"TB","Thumbnails":"Miniaturas","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Se aceptan sólo %d archivo(s) al tiempo. Más, no se tienen en cuenta.","Upload URL might be wrong or doesn't exist.":"URL de carga inexistente.","Uploaded %d/%d files":"Subidos %d/%d archivos","You must specify either browse_button or drop_element.":"Debe especificar el browse_button o el drop_element"});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/et.js b/assets/javascripts/plupload/js/i18n/et.js
deleted file mode 100644
index adfcb704..00000000
--- a/assets/javascripts/plupload/js/i18n/et.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Estonian (et)
-plupload.addI18n({"%d files queued":"Järjekorras on %d faili","%s already present in the queue.":"","%s specified, but cannot be found.":"","Add Files":"Add Files","Add files to the upload queue and click the start button.":"Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.","b":"","Close":"Sulge","Drag files here.":"Lohista failid siia.","Duplicate file error.":"","Error: File too large:":"Error: File too large:","Error: Invalid file extension:":"Error: Invalid file extension:","File count error.":"Failide arvu viga.","File extension error.":"Faililaiendi viga.","File size error.":"Failisuuruse viga.","File: %s":"Fail: %s","File: %s, size: %d, max file size: %d":"","Filename":"Failinimi","gb":"","HTTP Error.":"HTTP ühenduse viga.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Init error.":"Lähtestamise viga.","kb":"","List":"","mb":"","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Vali faile","Size":"Suurus","Start Upload":"Start Upload","Status":"Olek","Stop Upload":"Stop Upload","tb":"","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.","Upload URL might be wrong or doesn't exist.":"Üleslaadimise URL võib olla vale või seda pole.","Uploaded %d/%d files":"Üles laaditud %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/fa.js b/assets/javascripts/plupload/js/i18n/fa.js
deleted file mode 100644
index a02c8d62..00000000
--- a/assets/javascripts/plupload/js/i18n/fa.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Persian (fa)
-plupload.addI18n({"%d files queued":"%d فایل در صف","%s already present in the queue.":"%s در لیست آپلود وجود دارد.","%s specified, but cannot be found.":"","Add Files":"افزودن فایل","Add files to the upload queue and click the start button.":"اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.","b":"بایت","Close":"بستن","Drag files here.":"بکشید فایل ها رو به اینجا","Duplicate file error.":"خطای فایل تکراری","Error: File too large:":"Error: File too large:","Error: Invalid file extension:":"Error: Invalid file extension:","File count error.":"خطای تعداد فایل","File extension error.":"خطا پیشوند فایل","File size error.":"خطای سایز فایل","File: %s":" فایل ها : %s","File: %s, size: %d, max file size: %d":"فایل: %s, اندازه: %d, محدودیت اندازه فایل: %d","Filename":"نام فایل","gb":"گیگابایت","HTTP Error.":"HTTP خطای","Image format either wrong or not supported.":"Image format either wrong or not supported.","Init error.":"خطا در استارت اسکریپت","kb":"کیلوبایت","List":"","mb":"مگابایت","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"انتخاب فایل","Size":"سایز","Start Upload":"شروع انتقال","Status":"وضعیت","Stop Upload":"توقف انتقال","tb":"ترابایت","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","Uploaded %d/%d files":"منتقل شد %d/%d از فایلها","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/fi.js b/assets/javascripts/plupload/js/i18n/fi.js
deleted file mode 100644
index ef334df4..00000000
--- a/assets/javascripts/plupload/js/i18n/fi.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Finnish (fi)
-plupload.addI18n({"%d files queued":"%d tiedostoa jonossa","%s already present in the queue.":"%s on jo jonossa.","%s specified, but cannot be found.":"","Add Files":"Lisää tiedostoja","Add files to the upload queue and click the start button.":"Lisää tiedostoja lähetysjonoon ja klikkaa aloita-nappia.","b":"B","Close":"Sulje","Drag files here.":"Raahaa tiedostot tähän.","Duplicate file error.":"Tuplatiedostovirhe.","Error: File too large:":"Virhe: Liian suuri tiedosto:","Error: Invalid file extension:":"Virhe: Virheellinen tiedostopääte:","File count error.":"Tiedostolaskentavirhe.","File extension error.":"Tiedostopäätevirhe.","File size error.":"Tiedostokokovirhe.","File: %s":"Tiedosto: %s","File: %s, size: %d, max file size: %d":"Tiedosto: %s, koko: %d, suurin sallittu tiedostokoko: %d","Filename":"Tiedostonimi","gb":"GB","HTTP Error.":"HTTP-virhe.","Image format either wrong or not supported.":"Kuvaformaatti on joko väärä tai ei tuettu.","Init error.":"Init virhe.","kb":"kB","List":"","mb":"MB","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Toiminnon käytettävissä oleva muisti loppui kesken.","Select files":"Valitse tiedostoja","Size":"Koko","Start Upload":"Aloita lähetys","Status":"Tila","Stop Upload":"Pysäytä lähetys","tb":"TB","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Vain %d tiedosto(a) voidaan lähettää kerralla. Ylimääräiset tiedostot ohitettiin.","Upload URL might be wrong or doesn't exist.":"Lähetyksen URL-osoite saattaa olla väärä tai sitä ei ole olemassa.","Uploaded %d/%d files":"Lähetetty %d/%d tiedostoa","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/fr.js b/assets/javascripts/plupload/js/i18n/fr.js
deleted file mode 100644
index 86afde7c..00000000
--- a/assets/javascripts/plupload/js/i18n/fr.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// French (fr)
-plupload.addI18n({"%d files queued":"%d fichiers en attente","%s already present in the queue.":"%s déjà présent dans la file d'attente.","%s specified, but cannot be found.":"%s spécifié, mais ne peut pas être trouvé.","Add Files":"Ajouter des fichiers","Add files to the upload queue and click the start button.":"Ajoutez des fichiers à la file d'attente de téléchargement et appuyez sur le bouton 'Démarrer l'envoi'","b":"o","Close":"Fermer","Drag files here.":"Déposez les fichiers ici.","Duplicate file error.":"Erreur: Fichier déjà sélectionné.","Error: File too large:":"Erreur: Fichier trop volumineux:","Error: Invalid file extension:":"Erreur: Extension de fichier non valide:","File count error.":"Erreur: Nombre de fichiers.","File extension error.":"Erreur d'extension de fichier","File size error.":"Erreur de taille de fichier.","File: %s":"Fichier: %s","File: %s, size: %d, max file size: %d":"Fichier: %s, taille: %d, taille max. d'un fichier: %d","Filename":"Nom du fichier","gb":"Go","HTTP Error.":"Erreur HTTP.","Image format either wrong or not supported.":"Le format d'image est soit erroné soit pas géré.","Init error.":"Erreur d'initialisation.","kb":"Ko","List":"Liste","mb":"Mo","N/A":"Non applicable","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Résolution sur les frontières ! L'exécution de %s supporte seulement les images de %wx%hpx","Runtime ran out of available memory.":"Le traitement a manqué de mémoire disponible.","Select files":"Sélectionnez les fichiers","Size":"Taille","Start Upload":"Démarrer l'envoi","Status":"État","Stop Upload":"Arrêter l'envoi.","tb":"To","Thumbnails":"Miniatures","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Que %d fichier(s) peuvent être envoyé(s) à la fois. Les fichiers supplémentaires ont été ignorés.","Upload URL might be wrong or doesn't exist.":"L'URL d'envoi est soit erronée soit n'existe pas.","Uploaded %d/%d files":"%d fichiers sur %d ont été envoyés","You must specify either browse_button or drop_element.":"Vous devez spécifier browse_button ou drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/he.js b/assets/javascripts/plupload/js/i18n/he.js
deleted file mode 100644
index 744ff7a3..00000000
--- a/assets/javascripts/plupload/js/i18n/he.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Hebrew (he)
-plupload.addI18n({"%d files queued":"%d קבצים נותרו","%s already present in the queue.":"%sקובץ נמצא כבר ברשימת הקבצים.","%s specified, but cannot be found.":"%s צויין, אך לא נמצא.","Add Files":"הוסף קבצים","Add files to the upload queue and click the start button.":"הוסף קבצים לרשימה ולחץ על כפתור שליחה להתחלת פעולות העלאה","b":"B","Close":"סגור","Drag files here.":"גרור קבצים לכאן","Duplicate file error.":"קובץ כפול","Error: File too large:":"שגיאה: קובץ חורג מהגודל המותר:","Error: Invalid file extension:":"שגיאה: סוג קובץ לא נתמך:","File count error.":"שגיאת מספר קבצים","File extension error.":"קובץ זה לא נתמך","File size error.":"גודל קובץ חורג מהמותר","File: %s":"קובץ: %s","File: %s, size: %d, max file size: %d":"קובץ: %s, גודל: %d, גודל מקסימלי: %d","Filename":"שם קובץ","gb":"GB","HTTP Error.":"שגיאת פרוטוקול","Image format either wrong or not supported.":"תמונה פגומה או סוג תמונה לא נתמך","Init error.":"שגיאת איתחול","kb":"KB","List":"רשימה","mb":"MB","N/A":"שגיאה","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"הרזולוציה גבוהה מדי! %s הפלטפורמה תומכת בתמונות עד גודל px.","Runtime ran out of available memory.":"שגיאת מחסור בזיכרון","Select files":"בחר קבצים","Size":"גודל","Start Upload":"שליחה","Status":"אחוז","Stop Upload":"בטל העלאה","tb":"tb","Thumbnails":"תמונות ממוזערות","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"אלמנטי ההעלאה מקבלים רק %d קובץ(ים) בפעם אחת. קבצים נוספים הוסרו.","Upload URL might be wrong or doesn't exist.":"כתובת URL שגויה או לא קיימת.","Uploaded %d/%d files":"מעלה: %d/%d","You must specify either browse_button or drop_element.":"יש לציין או browse_button או drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/hr.js b/assets/javascripts/plupload/js/i18n/hr.js
deleted file mode 100644
index 4896cd00..00000000
--- a/assets/javascripts/plupload/js/i18n/hr.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Croatian (hr)
-plupload.addI18n({"%d files queued":"%d datoteka na čekanju.","%s already present in the queue.":"%s je već prisutan u listi čekanja.","%s specified, but cannot be found.":"","Add Files":"Dodaj datoteke","Add files to the upload queue and click the start button.":"Dodajte datoteke u listu i kliknite Upload.","b":"b","Close":"Zatvori","Drag files here.":"Dovucite datoteke ovdje","Duplicate file error.":"Pogreška dvostruke datoteke.","Error: File too large:":"Pogreška: Datoteka je prevelika:","Error: Invalid file extension:":"Pogreška: Nevažeći nastavak datoteke:","File count error.":"Pogreška u broju datoteka.","File extension error.":"Pogreška u nastavku datoteke.","File size error.":"Greška veličine datoteke.","File: %s":"Datoteka: %s","File: %s, size: %d, max file size: %d":"Datoteka: %s, veličina: %d, maksimalna veličina: %d","Filename":"Ime datoteke","gb":"gb","HTTP Error.":"HTTP greška.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Init error.":"Greška inicijalizacije.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime aplikaciji je ponestalo memorije.","Select files":"Odaberite datoteke:","Size":"Veličina","Start Upload":"Pokreni upload.","Status":"Status","Stop Upload":"Zaustavi upload.","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","Uploaded %d/%d files":"Uploadano %d/%d datoteka","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/hu.js b/assets/javascripts/plupload/js/i18n/hu.js
deleted file mode 100644
index bc9c2aac..00000000
--- a/assets/javascripts/plupload/js/i18n/hu.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Hungarian (hu)
-plupload.addI18n({"%d files queued":"%d fájl sorbaállítva","%s already present in the queue.":"%s már szerepel a listában.","%s specified, but cannot be found.":"","Add Files":"Fájlok hozzáadása","Add files to the upload queue and click the start button.":"A fájlok feltöltési sorhoz való hozzáadása után az Indítás gombra kell kattintani.","b":"b","Close":"Bezárás","Drag files here.":"Ide lehet húzni a fájlokat.","Duplicate file error.":"Duplikáltfájl-hiba.","Error: File too large:":"Hiba: a fájl túl nagy:","Error: Invalid file extension:":"Hiba: érvénytelen fájlkiterjesztés:","File count error.":"A fájlok számával kapcsolatos hiba.","File extension error.":"Hibás fájlkiterjesztés.","File size error.":"Hibás fájlméret.","File: %s":"Fájl: %s","File: %s, size: %d, max file size: %d":"Fájl: %s, méret: %d, legnagyobb fájlméret: %d","Filename":"Fájlnév","gb":"GB","HTTP Error.":"HTTP-hiba.","Image format either wrong or not supported.":"Rossz vagy nem támogatott képformátum.","Init error.":"Init hiba.","kb":"kB","List":"","mb":"MB","N/A":"Nem elérhető","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Futásidőben elfogyott a rendelkezésre álló memória.","Select files":"Fájlok kiválasztása","Size":"Méret","Start Upload":"Feltöltés indítása","Status":"Állapot","Stop Upload":"Feltöltés leállítása","tb":"TB","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"A feltöltés egyszerre csak %d fájlt fogad el, a többi fájl nem lesz feltöltve.","Upload URL might be wrong or doesn't exist.":"A feltöltő URL hibás vagy nem létezik.","Uploaded %d/%d files":"Feltöltött fájlok: %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/hy.js b/assets/javascripts/plupload/js/i18n/hy.js
deleted file mode 100644
index 64e60fcd..00000000
--- a/assets/javascripts/plupload/js/i18n/hy.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Armenian (hy)
-plupload.addI18n({"%d files queued":"ցուցակում կա %d ֆայլ","%s already present in the queue.":"%s ֆայլը արդեն ավելացված է ցուցակում.","%s specified, but cannot be found.":"","Add Files":"Ավելացնել ֆայլեր","Add files to the upload queue and click the start button.":"Ավելացրեք ֆայլեր ցուցակում և սեղմեք \"Վերբեռնել\"։","b":"բ","Close":"Փակել","Drag files here.":"Տեղափոխեք ֆայլերը այստեղ","Duplicate file error.":"Ֆայլի կրկնման սխալ","Error: File too large:":"Սխալ։ Ֆայլի չափը մեծ է։","Error: Invalid file extension:":"Սխալ։ Ֆայլի ընդլայնումը սխալ է։","File count error.":"Ֆայլերի քանակի սխալ","File extension error.":"Ֆայլի ընդլայնման սխալ","File size error.":"Ֆայլի չափի սխալ","File: %s":"Ֆայլ: %s","File: %s, size: %d, max file size: %d":"Ֆայլ: %s, չափ: %d, ֆայլի մաքսիմում չափ: %d","Filename":"Ֆայլի անուն","gb":"գբ","HTTP Error.":"HTTP սխալ","Image format either wrong or not supported.":"Նկարի ֆորմատը սխալ է կամ չի ընդունվում։","Init error.":"Ստեղծման սխալ","kb":"կբ","List":"","mb":"մբ","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Օպերատիվ հիշողության անբավարարուտյուն.","Select files":"Ընտրեք ֆայլերը","Size":"Չափ","Start Upload":"Վերբեռնել","Status":"Կարգավիճակ","Stop Upload":"Կանգնեցնել","tb":"տբ","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Վերբեռնիչը միանգամից ըդունում է միայն %d ֆայլ(եր). Ավելորդ ֆայլերը հեռացվել են.","Upload URL might be wrong or doesn't exist.":"Ավեցաված URL-ը սխալ է կամ գոյություն չունի։","Uploaded %d/%d files":"Վերբեռնվել են %d/%d ֆայլերը","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/id.js b/assets/javascripts/plupload/js/i18n/id.js
deleted file mode 100644
index 496c1129..00000000
--- a/assets/javascripts/plupload/js/i18n/id.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Indonesian (id)
-plupload.addI18n({"%d files queued":"%d file dalam antrian","%s already present in the queue.":"%s sudah ada dalam daftar antrian","%s specified, but cannot be found.":"","Add Files":"Tambah File","Add files to the upload queue and click the start button.":"Tambahkan file kedalam antrian upload dan klik tombol Mulai","b":"b","Close":"Tutup","Drag files here.":"Tarik file kesini","Duplicate file error.":"Terjadi duplikasi file","Error: File too large:":"Kesalahan: File terlalu besar","Error: Invalid file extension:":"Kesalahan: Ekstensi file tidak dikenal","File count error.":"Kesalahan pada jumlah file","File extension error.":"Kesalahan pada ekstensi file","File size error.":"Kesalahan pada ukuran file","File: %s":"File: %s","File: %s, size: %d, max file size: %d":"File: %s, ukuran: %d, maksimum ukuran file: %d","Filename":"Nama File","gb":"gb","HTTP Error.":"HTTP Bermasalah","Image format either wrong or not supported.":"Kesalahan pada jenis gambar atau jenis file tidak didukung","Init error.":"Kesalahan pada Init","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Tidak cukup memori","Select files":"Pilih file","Size":"Ukuran","Start Upload":"Mulai Upload","Status":"Status","Stop Upload":"Hentikan Upload","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Tempat untuk upload hanya menerima %d file(s) dalam setiap upload. File lainnya tidak akan disertakan","Upload URL might be wrong or doesn't exist.":"Alamat URL untuk upload tidak benar atau tidak ada","Uploaded %d/%d files":"File terupload %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/it.js b/assets/javascripts/plupload/js/i18n/it.js
deleted file mode 100644
index 3af82ed3..00000000
--- a/assets/javascripts/plupload/js/i18n/it.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Italian (it)
-plupload.addI18n({"%d files queued":"%d file in coda","%s already present in the queue.":"%s già presente nella coda.","%s specified, but cannot be found.":"%s specificato, ma non è stato possibile trovarlo.","Add Files":"Aggiungi file","Add files to the upload queue and click the start button.":"Aggiungi i file alla coda di caricamento e clicca il pulsante di avvio.","b":"byte","Close":"Chiudi","Drag files here.":"Trascina i files qui.","Duplicate file error.":"Errore file duplicato.","Error: File too large:":"Errore: File troppo grande:","Error: Invalid file extension:":"Errore: Estensione file non valida:","File count error.":"File count error.","File extension error.":"Errore estensione file.","File size error.":"Errore dimensione file.","File: %s":"File: %s","File: %s, size: %d, max file size: %d":"File: %s, dimensione: %d, dimensione max file: %d","Filename":"Nome file","gb":"gb","HTTP Error.":"Errore HTTP.","Image format either wrong or not supported.":"Formato immagine errato o non supportato.","Init error.":"Errore inizializzazione.","kb":"kb","List":"Lista","mb":"mb","N/A":"N/D","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Risoluzione oltre i limiti! %s runtime supporta immagini fino a %wx%hpx.","Runtime ran out of available memory.":"Runtime ha esaurito la memoria disponibile.","Select files":"Seleziona i files","Size":"Dimensione","Start Upload":"Inizia Upload","Status":"Stato","Stop Upload":"Ferma Upload","tb":"tb","Thumbnails":"Anteprime","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"URL di Upload errata o non esistente","Uploaded %d/%d files":"Caricati %d/%d file","You must specify either browse_button or drop_element.":"Devi indicare almeno uno tra browse_button o drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ja.js b/assets/javascripts/plupload/js/i18n/ja.js
deleted file mode 100644
index ddff3bd6..00000000
--- a/assets/javascripts/plupload/js/i18n/ja.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Japanese (ja)
-plupload.addI18n({"%d files queued":"%d ファイルが追加されました","%s already present in the queue.":"%s 既にキューに存在しています","%s specified, but cannot be found.":"指定された %s は見つかりません。","Add Files":"ファイルを追加","Add files to the upload queue and click the start button.":"ファイルをアップロードキューに追加してスタートボタンをクリックしてください","b":"B","Close":"閉じる","Drag files here.":"ここにファイルをドラッグ","Duplicate file error.":"重複ファイルエラー","Error: File too large:":"エラー: ファイルが大きすぎます:","Error: Invalid file extension:":"エラー: ファイルの拡張子が無効です:","File count error.":"ファイル数エラー","File extension error.":"ファイル拡張子エラー","File size error.":"ファイルサイズエラー","File: %s":"ファイル: %s","File: %s, size: %d, max file size: %d":"ファイル: %s, サイズ: %d, 最大ファイルサイズ: %d","Filename":"ファイル名","gb":"GB","HTTP Error.":"HTTP エラー","Image format either wrong or not supported.":"画像形式が間違っているかサポートされていません","Init error.":"イニシャライズエラー","kb":"KB","List":"リスト","mb":"MB","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"解像度がしきい値を超えています! ランタイム %s は縦 %h px 横 %w px までをサポートします","Runtime ran out of available memory.":"ランタイムが使用するメモリが不足しました","Select files":"ファイル選択","Size":"サイズ","Start Upload":"アップロード開始","Status":"ステータス","Stop Upload":"アップロード停止","tb":"TB","Thumbnails":"サムネイル","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"アップロード可能なファイル数は %d です 余分なファイルは削除されました","Upload URL might be wrong or doesn't exist.":"アップロード先の URL が存在しません","Uploaded %d/%d files":"アップロード中 %d/%d ファイル","You must specify either browse_button or drop_element.":"ブラウザのボタンで または ファイルをドロップするか いずれかの方法で指定する必要があります。"});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ka.js b/assets/javascripts/plupload/js/i18n/ka.js
deleted file mode 100644
index e5a35e2c..00000000
--- a/assets/javascripts/plupload/js/i18n/ka.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Georgian (ka)
-plupload.addI18n({"%d files queued":"რიგშია %d ფაილი","%s already present in the queue.":"%s უკვე დამატებულია.","%s specified, but cannot be found.":"%s მითითებულია, მაგრამ ვერ მოიძებნა.","Add Files":"დაამატეთ ფაილები","Add files to the upload queue and click the start button.":"დაამატეთ ფაილები და დააჭირეთ ღილაკს - ატვირთვა.","b":"ბ","Close":"დავხუროთ","Drag files here.":"ჩააგდეთ ფაილები აქ.","Duplicate file error.":"ესეთი ფაილი უკვე დამატებულია.","Error: File too large:":"შეცდომა: ფაილი ზედმეტად დიდია.","Error: Invalid file extension:":"შეცდომა: ფაილს აქვს არასწორი გაფართოება.","File count error.":"აღმოჩენილია ზედმეტი ფაილები.","File extension error.":"ფაილის ფორმატი დაშვებული არ არის.","File size error.":"ფაილის ზომა დაშვებულზე დიდია.","File: %s":"ფაილი: %s","File: %s, size: %d, max file size: %d":"ფაილი: %s, ზომა: %d, მაქსიმალური დაშვებული ზომა: %d","Filename":"ფაილის სახელი","gb":"გბ","HTTP Error.":"HTTP შეცდომა.","Image format either wrong or not supported.":"ფაილის ფორმატი არ არის მხარდაჭერილი ან არასწორია.","Init error.":"ინიციალიზაციის შეცდომა.","kb":"კბ","List":"","mb":"მბ","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"სურათის გარჩევადობა აღემატება %s გარემოს მიერ მხარდაჭერილ მქსიმუმებს - %wx%hpx.","Runtime ran out of available memory.":"ხელმისაწვდომი მეხსიერება გადაივსო.","Select files":"ფაილების მონიშვნა","Size":"ზომა","Start Upload":"ატვირთვა","Status":"სტატუსი","Stop Upload":"ატვირთვის შეჩერება","tb":"ტბ","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"ერთდროულად დაშვებულია მხოლოდ %d ფაილის დამატება.","Upload URL might be wrong or doesn't exist.":"ატვირთვის მისამართი არასწორია ან არ არსებობს.","Uploaded %d/%d files":"ატვირთულია %d/%d ფაილი","You must specify either browse_button or drop_element.":"თქვენ უნდა მიუთითოთ browse_button ან drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/kk.js b/assets/javascripts/plupload/js/i18n/kk.js
deleted file mode 100644
index 513586d0..00000000
--- a/assets/javascripts/plupload/js/i18n/kk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Kazakh (kk)
-plupload.addI18n({"%d files queued":"%d файл кезекке қойылды","%s already present in the queue.":"%s файлы кезекте бұрыннан бар.","%s specified, but cannot be found.":"","Add Files":"Файл қосу","Add files to the upload queue and click the start button.":"Жүктеу кезегіне файлдар қосып, Бастау кнопкасын басыңыз.","b":"б","Close":"Жабу","Drag files here.":"Файлдарды мына жерге тастаңыз.","Duplicate file error.":"Файл қайталамасының қатесі.","Error: File too large:":"Қате: Файл мөлшері тым үлкен:","Error: Invalid file extension:":"Қате: Файл кеңейтілуі қате:","File count error.":"Файл санының қатесі.","File extension error.":"Файл кеңейтілуінің қатесі.","File size error.":"Файл өлшемінің қатесі.","File: %s":"Файл: %s","File: %s, size: %d, max file size: %d":"Файл: %s, өлшемі: %d, макс. файл өлшемі: %d","Filename":"Файл аты","gb":"гб","HTTP Error.":"HTTP қатесі.","Image format either wrong or not supported.":"Сурет форматы қате немесе оның қолдауы жоқ.","Init error.":"Инициализация қатесі.","kb":"кб","List":"","mb":"мб","N/A":"Қ/Ж","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Орындау кезінде жады жетпей қалды.","Select files":"Файлдар таңдаңыз","Size":"Өлшемі","Start Upload":"Жүктеуді бастау","Status":"Күйі","Stop Upload":"Жүктеуді тоқтату","tb":"тб","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Жүктеу элементі бір кезде %d файл ғана жүктей алады. Артық файлдар жүктелмейді.","Upload URL might be wrong or doesn't exist.":"Жүктеуді қабылдаушы URL қате не мүлдем көрсетілмеген.","Uploaded %d/%d files":"Жүктелген: %d/%d файл","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/km.js b/assets/javascripts/plupload/js/i18n/km.js
deleted file mode 100644
index 641727e7..00000000
--- a/assets/javascripts/plupload/js/i18n/km.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Khmer (km)
-plupload.addI18n({"%d files queued":"បានដាក់ឯកសារ %d បន្តគ្នា","%s already present in the queue.":"មាន %s នៅក្នុងជួរលំដាប់ហើយ។","%s specified, but cannot be found.":"","Add Files":"បន្ថែមឯកសារ","Add files to the upload queue and click the start button.":"បន្ថែមឯកសារទៅក្នុងជួរលំដាប់ផ្ទុកឡើង ហើយចុចប៊ូតុងចាប់ផ្ដើម។","b":"b","Close":"បិទ","Drag files here.":"អូសឯកសារមកទីនេះ។","Duplicate file error.":"កំហុសឯកសារស្ទួនគ្នា។","Error: File too large:":"កំហុស៖ ឯកសារធំពេក៖","Error: Invalid file extension:":"កំហុស៖ កន្ទុយឯកសារមិនត្រឹមត្រូវ៖","File count error.":"កំហុសការរាប់ឯកសារ។","File extension error.":"កំហុសកន្ទុយឯកសារ។","File size error.":"កំហុសទំហំឯកសារ។","File: %s":"ឯកសារ៖ %s","File: %s, size: %d, max file size: %d":"ឯកសារ៖ %s, size: %d, ទំហំឯកសារអតិបរមា៖ %d","Filename":"ឈ្មោះឯកសារ","gb":"gb","HTTP Error.":"កំហុស HTTP ។","Image format either wrong or not supported.":"ទ្រង់ទ្រាយរូបភាពអាចខុស ឬក៏មិនស្គាល់តែម្ដង។","Init error.":"កំហុស Init។","kb":"kb","List":"","mb":"mb","N/A":"គ្មាន","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"ពេលដំណើរការអស់អង្គចងចាំទំនេរហើយ។","Select files":"ជ្រើសឯកសារ","Size":"ទំហំ","Start Upload":"ចាប់ផ្ដើមផ្ទុកឡើង","Status":"ស្ថានភាព","Stop Upload":"បញ្ឈប់ការផ្ទុកឡើង","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"ការផ្ទុកឡើងទទួលឯកសារបានតែ %d ប៉ុណ្ណោះក្នុងពេលតែមួយ។ ឯកសារផ្សេងទៀតនឹងត្រូវដកចេញ។","Upload URL might be wrong or doesn't exist.":"URL ផ្ទុកឡើងអាចខុស ឬក៏គ្មាន។","Uploaded %d/%d files":"បានផ្ទុកឡើងឯកសារ %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ko.js b/assets/javascripts/plupload/js/i18n/ko.js
deleted file mode 100644
index 7946c65d..00000000
--- a/assets/javascripts/plupload/js/i18n/ko.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Korean (ko)
-plupload.addI18n({"%d files queued":"%d 파일이 추가됨","%s already present in the queue.":"%s 파일이 이미 대기열에 존재합니다.","%s specified, but cannot be found.":"%s 가 지정됐지만, 찾을 수 없습니다.","Add Files":"파일 추가","Add files to the upload queue and click the start button.":"파일을 업로드 큐에 추가한 후 시작 버튼을 클릭하십시오.","b":"b","Close":"닫기","Drag files here.":"이곳에 파일을 드래그 하세요.","Duplicate file error.":"파일 중복 오류.","Error: File too large:":"오류: 파일 크기가 너무 큽니다.","Error: Invalid file extension:":"오류: 허용되지 않은 확장자입니다.","File count error.":"파일 갯수 오류.","File extension error.":"파일 확장자 오류.","File size error.":"파일 크기 오류.","File: %s":"파일: %s","File: %s, size: %d, max file size: %d":"파일: %s, 크기: %d, 최대 파일 크기: %d","Filename":"파일명","gb":"gb","HTTP Error.":"HTTP 오류.","Image format either wrong or not supported.":"지원되지 않는 이미지 형식입니다.","Init error.":"초기화 오류.","kb":"kb","List":"목록","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"해상도 지원 범위를 초과했습니다! %s 런타임은 %wx%hpx 이상의 이미지를 지원합니다.","Runtime ran out of available memory.":"런타임 메모리가 부족합니다.","Select files":"파일 선택","Size":"크기","Start Upload":"업로드 시작","Status":"상태","Stop Upload":"업로드 중지","tb":"tb","Thumbnails":"미리보기","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"업로드 가능한 파일의 수는 %d 입니다. 불필요한 파일은 삭제되었습니다.","Upload URL might be wrong or doesn't exist.":"업로드할 URL이 존재하지 않습니다.","Uploaded %d/%d files":"%d / %d 파일 업로드 완료","You must specify either browse_button or drop_element.":"browse_button 이나 drop_element 둘 중 하나를 지정해 주세요."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ku_IQ.js b/assets/javascripts/plupload/js/i18n/ku_IQ.js
deleted file mode 100644
index 8b31c772..00000000
--- a/assets/javascripts/plupload/js/i18n/ku_IQ.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Kurdish (Iraq) (ku_IQ)
-plupload.addI18n({"%d files queued":"پەڕگە ڕیزکران %d","%s already present in the queue.":".ئامادەیی هەیە لە ڕیز %s","%s specified, but cannot be found.":"","Add Files":"زیادکردنی پەڕگەکان","Add files to the upload queue and click the start button.":".زیادکردنی پەڕگەکان بۆ ڕیزی بارکردن و کرتەکردن لە دوگمەی دەستپێکردن","b":"بایت","Close":"داخستن","Drag files here.":".پەڕگەکان ڕاکێشە بۆ ئێرە","Duplicate file error.":".هەڵەی پەڕگەی دوبارە","Error: File too large:":":هەڵە: پەڕگەکە زۆر گەورەیە","Error: Invalid file extension:":":هەڵە: پاشگری پەڕگەی نادروست","File count error.":".هەڵەی ژماردنی پەڕگە","File extension error.":".هەڵەی پاشگری پەڕگە","File size error.":".هەڵەی قەبارەی پەڕگە","File: %s":"%s :پەڕگە","File: %s, size: %d, max file size: %d":"پەڕگە: %s، قەبارە: %d، گەورەترین قەبارەی پەڕگە: %d","Filename":"ناوی پەڕگە","gb":"گێگابایت","HTTP Error.":".HTTP هەڵەی","Image format either wrong or not supported.":".شێوازی وێنە هەڵەیە یان پاڵپشتی ناکرێت","Init error.":".هەڵەی ئامادەکردن","kb":"کیلۆبایت","List":"","mb":"مێگابایت","N/A":"بەردەست نییە","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"هەڵەی دەرچوون لە بیرگەی بەردەست.","Select files":"دیاریکردنی پەڕگەکان","Size":"قەبارە","Start Upload":"دەستپێکردنی بارکردن","Status":"ڕەوش","Stop Upload":"وەستانی بارکردن","tb":"تێرابایت","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"بەشی بارکردن تەنها %d پەڕگە(کان) وەردەگرێت لەیەک کاتدا. پەڕگە زیادەکان .جیادەکرێنەوە","Upload URL might be wrong or doesn't exist.":".بەستەری بارکراو نادروستە یان بەردەست نییە","Uploaded %d/%d files":"پەڕگە بارکران %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/lt.js b/assets/javascripts/plupload/js/i18n/lt.js
deleted file mode 100644
index 552cc953..00000000
--- a/assets/javascripts/plupload/js/i18n/lt.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Lithuanian (lt)
-plupload.addI18n({"%d files queued":"%d bylų eilėje","%s already present in the queue.":"%s jau yra eilėje.","%s specified, but cannot be found.":"","Add Files":"Pridėti bylas","Add files to the upload queue and click the start button.":"Pridėkite bylas į įkėlimo eilę ir paspauskite starto mygtuką.","b":"b","Close":"Uždaryti","Drag files here.":"Padėti bylas čia.","Duplicate file error.":"Pasikartojanti byla.","Error: File too large:":"Klaida: Byla per didelė:","Error: Invalid file extension:":"Klaida: Netinkamas bylos plėtinys:","File count error.":"Netinkamas bylų kiekis.","File extension error.":"Netinkamas pletinys.","File size error.":"Netinkamas bylos dydis.","File: %s":"Byla: %s","File: %s, size: %d, max file size: %d":"Byla: %s, dydis: %d, galimas dydis: %d","Filename":"Bylos pavadinimas","gb":"gb","HTTP Error.":"HTTP klaida.","Image format either wrong or not supported.":"Paveiksliuko formatas klaidingas arba nebepalaikomas.","Init error.":"Įkrovimo klaida.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Išeikvota darbinė atmintis.","Select files":"Žymėti bylas","Size":"Dydis","Start Upload":"Pradėti įkėlimą","Status":"Statusas","Stop Upload":"Stabdyti įkėlimą","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Vienu metu galima įkelti tik %d bylas(ų). Papildomos bylos buvo pašalintos.","Upload URL might be wrong or doesn't exist.":"Klaidinga arba neegzistuojanti įkėlimo nuoroda.","Uploaded %d/%d files":"Įkelta bylų: %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/lv.js b/assets/javascripts/plupload/js/i18n/lv.js
deleted file mode 100644
index 15d3e51d..00000000
--- a/assets/javascripts/plupload/js/i18n/lv.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Latvian (lv)
-plupload.addI18n({"%d files queued":"%d faili pievienoti rindai","%s already present in the queue.":"%s jau ir atrodams rindā.","%s specified, but cannot be found.":"%s norādīts, bet nevar tikt atrasts.","Add Files":"Pievienot failus","Add files to the upload queue and click the start button.":"Pievienojiet failus rindai un klikšķiniet uz pogas \"Sākt augšupielādi\".","b":"baiti","Close":"Aizvērt","Drag files here.":"Ievelciet failus šeit","Duplicate file error.":"Atkārtota faila kļūda","Error: File too large:":"Kļūda: Fails pārāk liels:","Error: Invalid file extension:":"Kļūda: Nepareizs faila paplašinājums:","File count error.":"Failu skaita kļūda","File extension error.":"Faila paplašinājuma kļūda.","File size error.":"Faila izmēra kļūda.","File: %s":"Fails: %s","File: %s, size: %d, max file size: %d":"Fails: %s, izmērs: %d, max faila izmērs: %d","Filename":"Faila nosaukums","gb":"gigabaiti","HTTP Error.":"HTTP kļūda.","Image format either wrong or not supported.":"Attēla formāts ir nepareizs vai arī netiek atbalstīts.","Init error.":"Inicializācijas kļūda.","kb":"kilobaiti","List":"Saraksts","mb":"megabaiti","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Izšķirtspēja ārpus robežām! %s atbalsta attēlus tikai līdz %wx%hpx","Runtime ran out of available memory.":"Pietrūkst izmantojamās atmiņas.","Select files":"Izvēlieties failus","Size":"Izmērs","Start Upload":"Sākt augšupielādi","Status":"Statuss","Stop Upload":"Apturēt augšupielādi","tb":"terabaiti","Thumbnails":"Ikonas","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Iespējams ielādēt tikai %d failus vienā reizē. Atlikušie faili netika pievienoti","Upload URL might be wrong or doesn't exist.":"Augšupielādes saite neeksistē vai ir nepareiza.","Uploaded %d/%d files":"Augšupielādēti %d/%d faili","You must specify either browse_button or drop_element.":"Jums ir jānorāda vainu browse_button vai drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ms.js b/assets/javascripts/plupload/js/i18n/ms.js
deleted file mode 100644
index 7675c22d..00000000
--- a/assets/javascripts/plupload/js/i18n/ms.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Malay (ms)
-plupload.addI18n({"%d files queued":"%d fail dalam barisan","%s already present in the queue.":"%s telah ada dalam barisan.","%s specified, but cannot be found.":"","Add Files":"Tambah Fail","Add files to the upload queue and click the start button.":"Tambah fail ke dalam giliran muat naik dan klik butang Muat Naik.","b":"b","Close":"Tutup","Drag files here.":"Seret fail ke sini.","Duplicate file error.":"Ralat menggandakan fail.","Error: File too large:":"Ralat: Fail terlalu bersar:","Error: Invalid file extension:":"Ralat: Sambungan fail tidak sah:","File count error.":"Ralat bilangan fail.","File extension error.":"Ralat sambungan fail.","File size error.":"Ralat saiz fail.","File: %s":"Fail: %s","File: %s, size: %d, max file size: %d":"Fail: %s, saiz: %d, saiz maks fail: %d","Filename":"Nama fail","gb":"gb","HTTP Error.":"Ralat HTTP.","Image format either wrong or not supported.":"Format imej sama ada salah atau tidak disokong.","Init error.":"Ralat perlaksanaan.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Ruang ingatan masa larian tidak mencukupi.","Select files":"Pilih fail","Size":"saiz","Start Upload":"Muat Naik","Status":"Status","Stop Upload":"Berhenti Muat naik","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Element muat naik hanya menerima %d fail(-fail) pada satu masa. Fail tambahan telah digugurkan.","Upload URL might be wrong or doesn't exist.":"URL muat naik mungkin salah atau tidak wujud.","Uploaded %d/%d files":"%d/%d telah dimuat naik","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/nl.js b/assets/javascripts/plupload/js/i18n/nl.js
deleted file mode 100644
index 95bd4a52..00000000
--- a/assets/javascripts/plupload/js/i18n/nl.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Dutch (nl)
-plupload.addI18n({"%d files queued":"%d bestand(en) in de wachtrij","%s already present in the queue.":"%s is al aan de wachtrij toegevoegd.","%s specified, but cannot be found.":"","Add Files":"Bestand(en) toevoegen","Add files to the upload queue and click the start button.":"Voeg bestanden toe aan de wachtrij en druk op 'Start'.","b":"b","Close":"Sluiten","Drag files here.":"Sleep bestanden hierheen.","Duplicate file error.":"Bestand bestaat al.","Error: File too large:":"Error: Bestand te groot:","Error: Invalid file extension:":"Error: Ongeldige bestandsextensie:","File count error.":"Teveel bestand(en) error.","File extension error.":"Ongeldig bestandsextensie.","File size error.":"Bestandsgrootte error.","File: %s":"Bestand: %s","File: %s, size: %d, max file size: %d":"Bestand: %s, grootte: %d, maximale bestandsgrootte: %d","Filename":"Bestandsnaam","gb":"gb","HTTP Error.":"HTTP Error.","Image format either wrong or not supported.":"bestandsextensie is verkeerd of niet ondersteund.","Init error.":"Initialisatie error.","kb":"kb","List":"","mb":"mb","N/A":"Niet beschikbaar","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Het maximum bruikbare geheugen is overschreden.","Select files":"Selecteer bestand(en):","Size":"Grootte","Start Upload":"Start Upload","Status":"Status","Stop Upload":"Stop Upload","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload accepteert alleen %d bestand(en) tegelijk. Extra bestanden zijn verwijderd.","Upload URL might be wrong or doesn't exist.":"Upload URL is verkeerd of bestaat niet.","Uploaded %d/%d files":"%d/%d bestanden ge-upload","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/pl.js b/assets/javascripts/plupload/js/i18n/pl.js
deleted file mode 100644
index b140e164..00000000
--- a/assets/javascripts/plupload/js/i18n/pl.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Polish (pl)
-plupload.addI18n({"%d files queued":"%d plików w kolejce.","%s already present in the queue.":"%s już występuje w kolejce.","%s specified, but cannot be found.":"%s określony ale nie można znaleźć.","Add Files":"Dodaj pliki","Add files to the upload queue and click the start button.":"Dodaj pliki i kliknij 'Rozpocznij transfer'.","b":"b","Close":"Zamknij","Drag files here.":"Przeciągnij tu pliki","Duplicate file error.":"Błąd: duplikacja pliku.","Error: File too large:":"Błąd: Plik za duży:","Error: Invalid file extension:":"Błąd: Nieprawidłowe rozszerzenie pliku:","File count error.":"Błąd liczenia pliku.","File extension error.":"Nie obsługiwany format pliku.","File size error.":"Plik jest zbyt duży.","File: %s":"Plik: %s","File: %s, size: %d, max file size: %d":"Plik: %s, rozmiar: %d, maksymalny rozmiar pliku: %d","Filename":"Nazwa pliku","gb":"gb","HTTP Error.":"Błąd HTTP.","Image format either wrong or not supported.":"Format zdjęcia jest zły lub nieobsługiwany","Init error.":"Błąd inicjalizacji.","kb":"kb","List":"Lista","mb":"mb","N/A":"Nie dostępne","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Za duża rozdzielczość! %s maksymalna rozdzielczość to: %wx%hpx.","Runtime ran out of available memory.":"Wyczerpano pamięć RAM.","Select files":"Wybierz pliki:","Size":"Rozmiar","Start Upload":"Wyślij","Status":"Status","Stop Upload":"Przerwij transfer.","tb":"tb","Thumbnails":"Miniatury","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Można jednocześnie dodać %d plików. Dodatkowe pliki zostały usunięte.","Upload URL might be wrong or doesn't exist.":"Adres URL może być nieprawidłowy lub może nie istnieć","Uploaded %d/%d files":"Wysłano %d/%d plików","You must specify either browse_button or drop_element.":"Musisz określić browse_button albo drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/pt.js b/assets/javascripts/plupload/js/i18n/pt.js
deleted file mode 100644
index a4c9cee6..00000000
--- a/assets/javascripts/plupload/js/i18n/pt.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Portuguese (pt)
-plupload.addI18n({"%d files queued":"%d ficheiros em fila","%s already present in the queue.":"%s já se encontra em fila.","%s specified, but cannot be found.":"%s definido mas não foi encontrado.","Add Files":"Adicionar ficheiros","Add files to the upload queue and click the start button.":"Adicione ficheiros à fila e clique no botão iniciar.","b":"b","Close":"Fechar","Drag files here.":"Largar ficheiros aqui.","Duplicate file error.":"Erro: ficheiro duplicado.","Error: File too large:":"Erro: Ficheiro demasiado grande:","Error: Invalid file extension:":"Erro: Extensão de ficheiro inválida:","File count error.":"Erro: contagem de ficheiros.","File extension error.":"Error de extensão do ficheiro.","File size error.":"Tamanho do ficheiro errado.","File: %s":"Ficheiro: %s","File: %s, size: %d, max file size: %d":"Ficheiro: %s, tamanho: %d, tamanho máximo do ficheiro: %d","Filename":"Nome do ficheiro","gb":"gb","HTTP Error.":"Erro HTTP.","Image format either wrong or not supported.":"Formato da imagem errado ou não é suportado.","Init error.":"Erro ao iniciar.","kb":"kb","List":"Lista","mb":"mb","N/A":"N/D","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resolução excede os limites! %s suporta imagens até %wx%hpx.","Runtime ran out of available memory.":"A execução esgotou a memória disponível.","Select files":"Seleccione ficheiros","Size":"Tamanho","Start Upload":"Começar envio","Status":"Estado","Stop Upload":"Parar envio","tb":"tb","Thumbnails":"Miniaturas","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Só é possível enviar %d ficheiro(s) de cada vez. Os restantes ficheiros foram excluídos.","Upload URL might be wrong or doesn't exist.":"O URL para carregar os ficheiros pode estar errado ou não existir.","Uploaded %d/%d files":"Carregados %d/%d ficheiros","You must specify either browse_button or drop_element.":"Deve especificar ou o botão de navegação browse_button ou o elemento de recolha drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/pt_BR.js b/assets/javascripts/plupload/js/i18n/pt_BR.js
deleted file mode 100644
index 8f7e3669..00000000
--- a/assets/javascripts/plupload/js/i18n/pt_BR.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Portuguese (Brazil) (pt_BR)
-plupload.addI18n({"%d files queued":"%d arquivo(s)","%s already present in the queue.":"%s já presentes na fila.","%s specified, but cannot be found.":"Método de envio %s especificado, mas não pôde ser encontrado.","Add Files":"Adicionar arquivo(s)","Add files to the upload queue and click the start button.":"Adicione os arquivos à fila e clique no botão \"Iniciar o envio\".","b":"Bytes","Close":"Fechar","Drag files here.":"Arraste os arquivos pra cá","Duplicate file error.":"Erro: Arquivo duplicado.","Error: File too large:":"Erro: Arquivo muito grande:","Error: Invalid file extension:":"Erro: Extensão de arquivo inválida:","File count error.":"Erro na contagem dos arquivos","File extension error.":"Tipo de arquivo não permitido.","File size error.":"Tamanho de arquivo não permitido.","File: %s":"Arquivo: %s","File: %s, size: %d, max file size: %d":"Arquivo: %s, Tamanho: %d , Tamanho Máximo do Arquivo: %d","Filename":"Nome do arquivo","gb":"GB","HTTP Error.":"Erro HTTP.","Image format either wrong or not supported.":"Imagem em formato desconhecido ou não permitido.","Init error.":"Erro ao iniciar.","kb":"KB","List":"Listagem","mb":"MB","N/A":"N/D","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resolução fora de tamanho. O método de envio %s suporta imagens com no máximo %wx%hpx.","Runtime ran out of available memory.":"Método de envio ficou sem mem\\u00f3ria.","Select files":"Selecione os arquivos","Size":"Tamanho","Start Upload":"Iniciar o envio","Status":"Status","Stop Upload":"Parar o envio","tb":"TB","Thumbnails":"Miniaturas","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Só são aceitos %d arquivos por vez. O que passou disso foi descartado.","Upload URL might be wrong or doesn't exist.":"URL de envio incorreta ou inexistente","Uploaded %d/%d files":"%d\\/%d arquivo(s) enviados(s)","You must specify either browse_button or drop_element.":"Você deve especificar o botão para escolher(browse_button) os arquivos ou o elemento para arrastar(drop_element)."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ro.js b/assets/javascripts/plupload/js/i18n/ro.js
deleted file mode 100644
index 63e7ff9c..00000000
--- a/assets/javascripts/plupload/js/i18n/ro.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Romanian (ro)
-plupload.addI18n({"%d files queued":"%d fișiere listate","%s already present in the queue.":"%s există deja în lista de așteptare.","%s specified, but cannot be found.":"","Add Files":"Adaugă fișiere","Add files to the upload queue and click the start button.":"Adaugă fișiere în lista apoi apasă butonul \"Începe încărcarea\".","b":"b","Close":"Închide","Drag files here.":"Trage aici fișierele.","Duplicate file error.":"Eroare duplicat fișier.","Error: File too large:":"Eroare: Fișierul este prea mare:","Error: Invalid file extension:":"Eroare: Extensia fișierului este invalidă:","File count error.":"Eroare numărare fișiere.","File extension error.":"Eroare extensie fișier.","File size error.":"Eroare dimensiune fișier.","File: %s":"Fișier: %s","File: %s, size: %d, max file size: %d":"Fișier: %s, mărime: %d, mărime maximă: %d","Filename":"Nume fișier","gb":"gb","HTTP Error.":"Eroare HTTP","Image format either wrong or not supported.":"Formatul de imagine ori este greșit ori nu este suportat.","Init error.":"Eroare inițializare.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Selectează fișierele","Size":"Mărime","Start Upload":"Începe încărcarea","Status":"Stare","Stop Upload":"Oprește încărcarea","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","Uploaded %d/%d files":"Fișiere încărcate %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/ru.js b/assets/javascripts/plupload/js/i18n/ru.js
deleted file mode 100644
index 817139e3..00000000
--- a/assets/javascripts/plupload/js/i18n/ru.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Russian (ru)
-plupload.addI18n({"%d files queued":"В очереди %d файл(ов)","%s already present in the queue.":"%s уже присутствует в очереди.","%s specified, but cannot be found.":"%s существует, но не может быть найден.","Add Files":"Добавьте файлы","Add files to the upload queue and click the start button.":"Добавьте файлы в очередь и нажмите кнопку \"Загрузить файлы\".","b":"б","Close":"Закрыть","Drag files here.":"Перетащите файлы сюда.","Duplicate file error.":"Такой файл уже присутствует в очереди.","Error: File too large:":"Ошибка: Файл слишком большой:","Error: Invalid file extension:":"Ошибка: У файла неправильное расширение:","File count error.":"Слишком много файлов.","File extension error.":"Неправильное расширение файла.","File size error.":"Неправильный размер файла.","File: %s":"Файл: %s","File: %s, size: %d, max file size: %d":"Файл: %s, размер: %d, макс. размер файла: %d","Filename":"Имя файла","gb":"гб","HTTP Error.":"Ошибка HTTP.","Image format either wrong or not supported.":"Формат картинки неправильный или он не поддерживается.","Init error.":"Ошибка инициализации.","kb":"кб","List":"Список","mb":"мб","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Слишком большое разрешение! %s поддерживаются изображения с размером не более %wx%hpx","Runtime ran out of available memory.":"Рабочая среда превысила лимит достуной памяти.","Select files":"Выберите файлы","Size":"Размер","Start Upload":"Начать загрузку","Status":"Статус","Stop Upload":"Остановить Загрузку","tb":"тб","Thumbnails":"Миниатюра","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Загрузочный элемент за раз принимает только %d файл(ов). Лишние файлы были отброшены.","Upload URL might be wrong or doesn't exist.":"Адрес заргузки неправильный или он не существует.","Uploaded %d/%d files":"Загружено %d/%d файлов","You must specify either browse_button or drop_element.":"Вы должны указать browse_button или drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/sk.js b/assets/javascripts/plupload/js/i18n/sk.js
deleted file mode 100644
index 780d61b5..00000000
--- a/assets/javascripts/plupload/js/i18n/sk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Slovak (sk)
-plupload.addI18n({"%d files queued":"%d súborov pridaných do zoznamu","%s already present in the queue.":"%s sa už nachádza v zozname.","%s specified, but cannot be found.":"","Add Files":"Pridať súbory","Add files to the upload queue and click the start button.":"Pridajte súbory do zoznamu a potom spustite nahrávanie.","b":"b","Close":"Zatvoriť","Drag files here.":"Sem pretiahnite súbory.","Duplicate file error.":"Duplicitný súbor.","Error: File too large:":"Chyba: Súbor je príliš veľký:","Error: Invalid file extension:":"Error: Nesprávny typ súboru:","File count error.":"Nesprávny počet súborov.","File extension error.":"Chybný typ súboru.","File size error.":"Súbor je príliš veľký.","File: %s":"Súbor: %s","File: %s, size: %d, max file size: %d":"Súbor: %s, veľkosť: %d, max. veľkosť súboru: %d","Filename":"Názov súboru","gb":"gb","HTTP Error.":"HTTP Chyba.","Image format either wrong or not supported.":"Formát obrázku je nesprávny alebo nie je podporovaný.","Init error.":"Chyba inicializácie.","kb":"kb","List":"","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Vyberte súbory","Size":"Veľkosť","Start Upload":"Spustiť nahrávanie","Status":"Stav","Stop Upload":"Zastaviť nahrávanie","tb":"tb","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"URL pre nahratie nie je správna alebo neexistuje.","Uploaded %d/%d files":"Nahraných %d/%d súborov","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/sl.js b/assets/javascripts/plupload/js/i18n/sl.js
deleted file mode 100644
index 784dd511..00000000
--- a/assets/javascripts/plupload/js/i18n/sl.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Slovenian (sl)
-plupload.addI18n({"%d files queued":"%d datotek na seznamu","%s already present in the queue.":"%s je že na seznamu.","%s specified, but cannot be found.":"","Add Files":"Dodaj datoteke","Add files to the upload queue and click the start button.":"Dodaj datoteke na seznam in klikni na gumb začni","b":"b","Close":"Zapri","Drag files here.":"Potegni datoteke sem.","Duplicate file error.":"Datoteka je že na seznamu.","Error: File too large:":"Napaka: datoteka je prevelika:","Error: Invalid file extension:":"Napaka: napačen tip datoteke:","File count error.":"Napačno število datotek.","File extension error.":"Napačen tip datoteke.","File size error.":"Datoteka je prevelika.","File: %s":"Datoteka: %s","File: %s, size: %d, max file size: %d":"Datoteka: %s, velikost: %d, največja dovoljena velikost: %d","Filename":"Ime datoteke","gb":"gb","HTTP Error.":"Neznana HTTP napaka.","Image format either wrong or not supported.":"Format slike je napačen ali ni podrpt.","Init error.":"Napaka pri inicializaciji.","kb":"kb","List":"Seznam","mb":"mb","N/A":"Ni na voljo","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Zmanjkalo je pomnilnika.","Select files":"Izberi datoteke","Size":"Velikost","Start Upload":"Začni prenos","Status":"Status","Stop Upload":"Ustavi prenos","tb":"tb","Thumbnails":"Sličice","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Nalagalnik sprejme samo %d datotek na enkrat. Višek datotek je odstranjen iz seznama.","Upload URL might be wrong or doesn't exist.":"URL za nalaganje je napačen ali ne obstaja.","Uploaded %d/%d files":"Naloženo %d/%d datotek","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/sq.js b/assets/javascripts/plupload/js/i18n/sq.js
deleted file mode 100644
index 57177f46..00000000
--- a/assets/javascripts/plupload/js/i18n/sq.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Albanian (sq)
-plupload.addI18n({"%d files queued":"Dosja %d e vendosur në rradhë","%s already present in the queue.":"%s tashmë ekziston në list.","%s specified, but cannot be found.":"","Add Files":"Shtoni dosjet","Add files to the upload queue and click the start button.":"Mbas ngarkimit të dosjeve sipas rradhës duhet të klikoni butonin Start.","b":"B","Close":"Mbyll","Drag files here.":"Këtu mund të tërhiqni dosjet","Duplicate file error.":"Gabim i dublikimit të dosjes.","Error: File too large:":"Gabim: dosja është shumë e madhe:","Error: Invalid file extension:":"Gabim: përhapja e llojit të dosjes është e pavlefshme:","File count error.":"Gabim në lidhje me numrin e dosjeve.","File extension error.":"Gabim i zgjerimit të dosjes.","File size error.":"Gabim i madhësisë së dosjes.","File: %s":"Dosje: %s","File: %s, size: %d, max file size: %d":"Dosje: %s, madhësia: %d, madhësia maximale e dosjes: %d","Filename":"Emri i dosjes","gb":"GB","HTTP Error.":"HTTP Gabim.","Image format either wrong or not supported.":"Formati i fotove është i keq ose nuk është i pranueshëm.","Init error.":"Init gabim.","kb":"KB","List":"","mb":"MB","N/A":"Nuk është në dispozicion","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Memoria që ishte në dispozicion ka mbaruar.","Select files":"Zhgjidhni dosjet","Size":"Madhësia","Start Upload":"Nisja e ngarkimit","Status":"Statusi","Stop Upload":"Ndalimi i ngarkimit","tb":"TB","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Ngarkimi pranon njëherësh vetëm %d dosje, dosjet e tjera nuk do të jenë të ngarkuara.","Upload URL might be wrong or doesn't exist.":"Ngarkimi i URL-s është i gabuar ose nuk ekziston.","Uploaded %d/%d files":"Dosjet e ngarkuara: %d/%d","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/sr.js b/assets/javascripts/plupload/js/i18n/sr.js
deleted file mode 100644
index 7ffbb0e6..00000000
--- a/assets/javascripts/plupload/js/i18n/sr.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Serbian (sr)
-plupload.addI18n({"%d files queued":"%d files queued","%s already present in the queue.":"","%s specified, but cannot be found.":"","Add Files":"Dodaj fajlove","Add files to the upload queue and click the start button.":"Dodajte fajlove u listu i kliknite na dugme Start.","b":"","Close":"Close","Drag files here.":"Prevucite fajlove ovde.","Duplicate file error.":"","Error: File too large:":"Error: File too large:","Error: Invalid file extension:":"Error: Invalid file extension:","File count error.":"File count error.","File extension error.":"File extension error.","File size error.":"File size error.","File: %s":"File: %s","File: %s, size: %d, max file size: %d":"","Filename":"Naziv fajla","gb":"","HTTP Error.":"HTTP Error.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Init error.":"Init error.","kb":"","List":"","mb":"","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"Runtime ran out of available memory.","Select files":"Izaberite fajlove","Size":"Veličina","Start Upload":"Počni upload","Status":"Status","Stop Upload":"Stop Upload","tb":"","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","Uploaded %d/%d files":"Snimljeno %d/%d fajlova","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/sv.js b/assets/javascripts/plupload/js/i18n/sv.js
deleted file mode 100644
index 22e4438b..00000000
--- a/assets/javascripts/plupload/js/i18n/sv.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Swedish (sv)
-plupload.addI18n({"%d files queued":"%d filer i kö","%s already present in the queue.":"%s är redan tillagd.","%s specified, but cannot be found.":"%s specificerad, men hittades inte.","Add Files":"Lägg till","Add files to the upload queue and click the start button.":"Lägg till filer till kön och tryck på start.","b":"b","Close":"Stäng","Drag files here.":"Dra filer hit","Duplicate file error.":"Problem med dubbla filer.","Error: File too large:":"Fel: Filen är för stor:","Error: Invalid file extension:":"Fel: Ej godkänd filändelse.","File count error.":"Räknefel.","File extension error.":"Problem med filändelse.","File size error.":"Problem med filstorlek.","File: %s":"Fil: %s","File: %s, size: %d, max file size: %d":"Fil: %s, storlek: %d, max storlek: %d","Filename":"Filnamn","gb":"gb","HTTP Error.":"HTTP problem.","Image format either wrong or not supported.":"Bildformatet är fel eller så finns inte stöd för det.","Init error.":"Problem vid initialisering.","kb":"kb","List":"Lista","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Upplösning utanför gränserna! %s bara bilder upp till %wx%hpx stöds.","Runtime ran out of available memory.":"Slut på minne.","Select files":"Välj filer","Size":"Storlek","Start Upload":"Starta","Status":"Status","Stop Upload":"Avbryt","tb":"tb","Thumbnails":"Miniatyrer","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Det går bara lägga till %d filer åt gången, allt utöver detta togs bort.","Upload URL might be wrong or doesn't exist.":"URL:en va fel eller existerar inte.","Uploaded %d/%d files":"Laddade upp %d/%d filer","You must specify either browse_button or drop_element.":"Du behöver specificera browse_button eller drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/th_TH.js b/assets/javascripts/plupload/js/i18n/th_TH.js
deleted file mode 100644
index a5b57e76..00000000
--- a/assets/javascripts/plupload/js/i18n/th_TH.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Thai (Thailand) (th_TH)
-plupload.addI18n({"%d files queued":"%d ไฟล์ที่อยู่ในคิว","%s already present in the queue.":"%s อยู่ในคิวแล้ว","%s specified, but cannot be found.":"","Add Files":"เพิ่มไฟล์","Add files to the upload queue and click the start button.":"เพิ่มไฟล์ไปยังคิวอัพโหลดและคลิกที่ปุ่มเริ่ม","b":"ไบต์","Close":"ปิด","Drag files here.":"ลากไฟล์มาที่นี่","Duplicate file error.":"ไฟล์ที่ซ้ำกันเกิดข้อผิดพลาด","Error: File too large:":"ข้อผิดพลาด: ไฟล์ใหญ่เกินไป:","Error: Invalid file extension:":"ข้อผิดพลาด: นามสกุลไฟล์ไม่ถูกต้อง:","File count error.":"การนับไฟล์เกิดข้อผิดพลาด","File extension error.":"นามสกุลไฟล์เกิดข้อผิดพลาด","File size error.":"ขนาดไฟล์เกิดข้อผิดพลาด","File: %s":"ไฟล์: %s","File: %s, size: %d, max file size: %d":"ไฟล์: %s, ขนาด: %d, ขนาดไฟล์สูงสุด: %d","Filename":"ชื่อไฟล์","gb":"กิกะไบต์","HTTP Error.":"HTTP เกิดข้อผิดพลาด","Image format either wrong or not supported.":"รูปแบบรูปภาพทั้งสองผิดหรือไม่รองรับ","Init error.":"Init เกิดข้อผิดพลาด","kb":"กิโลไบต์","List":"","mb":"เมกะไบต์","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"","Runtime ran out of available memory.":"รันไทม์วิ่งออกมาจากหน่วยความจำ","Select files":"เลือกไฟล์","Size":"ขนาด","Start Upload":"เริ่มอัพโหลด","Status":"สถานะ","Stop Upload":"หยุดอัพโหลด","tb":"เทราไบต์","Thumbnails":"","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"การอัพโหลดจะยอมรับเฉพาะ %d ไฟล์(s) ในช่วงเวลาเดียวกัน เมื่อไฟล์พิเศษถูกปลดออก","Upload URL might be wrong or doesn't exist.":"URL ของการอัพโหลดอาจจะผิดหรือไม่มีอยู่","Uploaded %d/%d files":"อัพโหลดแล้ว %d/%d ไฟล์","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/tr.js b/assets/javascripts/plupload/js/i18n/tr.js
deleted file mode 100644
index 5ac0f153..00000000
--- a/assets/javascripts/plupload/js/i18n/tr.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Turkish (tr)
-plupload.addI18n({"%d files queued":"Kuyrukta %d dosya var.","%s already present in the queue.":"%s kuyrukta zaten mevcut.","%s specified, but cannot be found.":"%s tanımlandı fakat bulunamadı.","Add Files":"Dosya ekle","Add files to the upload queue and click the start button.":"Dosyaları kuyruğa ekleyin ve başlatma butonuna tıklayın.","b":"bayt","Close":"Kapat","Drag files here.":"Dosyaları buraya bırakın.","Duplicate file error.":"Yinelenen dosya hatası.","Error: File too large:":"Hata: Dosya çok büyük:","Error: Invalid file extension:":"Hata: Geçersiz dosya uzantısı:","File count error.":"Dosya sayım hatası.","File extension error.":"Dosya uzantısı hatası.","File size error.":"Dosya boyutu hatası.","File: %s":"Dosya: %s","File: %s, size: %d, max file size: %d":"Dosya: %s, boyut: %d, maksimum dosya boyutu: %d","Filename":"Dosya adı","gb":"gb","HTTP Error.":"HTTP hatası.","Image format either wrong or not supported.":"Resim formatı yanlış ya da desteklenmiyor.","Init error.":"Başlangıç hatası.","kb":"kb","List":"Liste","mb":"mb","N/A":"-","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Çözünürlük sınırların dışındadır! %s modu en fazla %wx%hpx desteklemektedir.","Runtime ran out of available memory.":"İşlem için yeterli bellek yok.","Select files":"Dosyaları seç","Size":"Boyut","Start Upload":"Yüklemeyi başlat","Status":"Durum","Stop Upload":"Yüklemeyi durdur","tb":"tb","Thumbnails":"Önizlemeler","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Yükleme elemanı aynı anda %d dosya kabul eder. Ekstra dosyalar işleme konulmaz.","Upload URL might be wrong or doesn't exist.":"URL yok ya da hatalı olabilir.","Uploaded %d/%d files":"%d/%d dosya yüklendi","You must specify either browse_button or drop_element.":"browse_button veya drop_element değişkenlerini belirlemelisiniz."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/uk_UA.js b/assets/javascripts/plupload/js/i18n/uk_UA.js
deleted file mode 100644
index 8e7eb3cc..00000000
--- a/assets/javascripts/plupload/js/i18n/uk_UA.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Ukrainian (Ukraine) (uk_UA)
-plupload.addI18n({"%d files queued":"В черзі %d файл(ів)","%s already present in the queue.":"%s вже присутній у черзі.","%s specified, but cannot be found.":"%s вказано, але не може бути знайдено.","Add Files":"Додати файли","Add files to the upload queue and click the start button.":"Додайте файли в чергу та натисніть кнопку \"Завантажити файли\".","b":"б","Close":"Закрити","Drag files here.":"Перетягніть файли сюди.","Duplicate file error.":"Такий файл вже присутній в черзі.","Error: File too large:":"Помилка: Файл занадто великий:","Error: Invalid file extension:":"Помилка: У файлу неправильне розширення:","File count error.":"Занадто багато файлів.","File extension error.":"Неправильне розширення файлу.","File size error.":"Неправильний розмір файлу.","File: %s":"Файл: %s","File: %s, size: %d, max file size: %d":"Файл: %s, розмір: %d, макс. розмір файлу: %d","Filename":"Назва файлу","gb":"гб","HTTP Error.":"Помилка HTTP.","Image format either wrong or not supported.":"Формат картинки не правильний або не підтримується.","Init error.":"Помилка ініціалізації.","kb":"кб","List":"Список","mb":"мб","N/A":"Н/Д","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Роздільна здатність поза межами! Робоче середовище %s підтримує зображення лише до %wx%hpx.","Runtime ran out of available memory.":"Робоче середовище перевищило ліміт доступної пам'яті.","Select files":"Оберіть файли","Size":"Розмір","Start Upload":"Почати завантаження","Status":"Статус","Stop Upload":"Зупинити завантаження","tb":"тб","Thumbnails":"Мініатюри","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Завантажувальний елемент приймає лише %d файл(ів) одночасно. Зайві файли було відкинуто.","Upload URL might be wrong or doesn't exist.":"Адреса завантаження неправильна або не існує.","Uploaded %d/%d files":"Завантажено %d/%d файлів","You must specify either browse_button or drop_element.":"Ви маєте вказати або browse_button, або drop_element."});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/vi.js b/assets/javascripts/plupload/js/i18n/vi.js
deleted file mode 100644
index a74d0416..00000000
--- a/assets/javascripts/plupload/js/i18n/vi.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Vietnamese (vi)
-plupload.addI18n({"%d files queued":"%d tập tin trong danh sách chờ","%s already present in the queue.":"%s đã có trong danh sách chờ tải lên","%s specified, but cannot be found.":"%s đã chỉ định nhưng không thể tìm thấy.","Add Files":"Thêm tập tin","Add files to the upload queue and click the start button.":"Thêm tập tin để tải lên và bấm vào nút bắt đầu","b":"B","Close":"Đóng","Drag files here.":"Thả tập tin vào đây","Duplicate file error.":"Tập tin đã tồn tại","Error: File too large:":"Lỗi: Dung lượng tập tin quá lớn:","Error: Invalid file extension:":"Lỗi: Định dạng tập tin không xác định:","File count error.":"Lỗi đếm tập tin","File extension error.":"Lỗi định dạng tập tin","File size error.":"Lỗi dung lượng tập tin","File: %s":"Tập tin: %s","File: %s, size: %d, max file size: %d":"Tập tin: %s, dung lượng %d, dung lượng tối đa: %d","Filename":"Tên tập tin","gb":"GB","HTTP Error.":"Lỗi HTTP","Image format either wrong or not supported.":"Định dạng hình ảnh không đúng hoặc không được hỗ trợ.","Init error.":"Lỗi khởi tạo","kb":"KB","List":"Danh sách","mb":"MB","N/A":"Chưa có thông tin","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Độ phân giải quá lớn! %s chỉ hỗ trợ kích thước tối đa %wx%hpx.","Runtime ran out of available memory.":"Thời gian chạy vượt quá giới hạn bộ nhớ cho phép.","Select files":"Chọn tập tin","Size":"Dung lượng","Start Upload":"Bắt đầu","Status":"Trạng thái","Stop Upload":"Dừng","tb":"TB","Thumbnails":"Ảnh thu nhỏ","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Chỉ có thể tải lên (%d) tập tin cùng một lúc. Những tập tin còn lại đã bị huỷ bỏ.","Upload URL might be wrong or doesn't exist.":"Đường dẫn URL tải lên không đúng hoặc không tồn tại.","Uploaded %d/%d files":"Đã tải lên %d/%d tập tin","You must specify either browse_button or drop_element.":""});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/zh_CN.js b/assets/javascripts/plupload/js/i18n/zh_CN.js
deleted file mode 100644
index c498908a..00000000
--- a/assets/javascripts/plupload/js/i18n/zh_CN.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Chinese (China) (zh_CN)
-plupload.addI18n({"%d files queued":"%d 个文件加入到队列","%s already present in the queue.":"%s 已经在当前队列里。","%s specified, but cannot be found.":"%s 已指定,但是没有找到。","Add Files":"增加文件","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。","b":"b","Close":"关闭","Drag files here.":"把文件拖到这里。","Duplicate file error.":"重复文件错误。","Error: File too large:":"错误: 文件太大:","Error: Invalid file extension:":"错误:无效的文件扩展名:","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。","File size error.":"文件大小错误。","File: %s":"文件: %s","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d","Filename":"文件名","gb":"gb","HTTP Error.":"HTTP 错误。","Image format either wrong or not supported.":"图片格式错误或者不支持。","Init error.":"初始化错误。","kb":"kb","List":"列表","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"超限。%s 支持最大 %wx%hpx 的图片。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","Select files":"选择文件","Size":"大小","Start Upload":"开始上传","Status":"状态","Stop Upload":"停止上传","tb":"tb","Thumbnails":"缩略图","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。","Uploaded %d/%d files":"已上传 %d/%d 个文件","You must specify either browse_button or drop_element.":"您必须指定 browse_button 或者 drop_element。"});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/i18n/zh_TW.js b/assets/javascripts/plupload/js/i18n/zh_TW.js
deleted file mode 100644
index cd7ddad7..00000000
--- a/assets/javascripts/plupload/js/i18n/zh_TW.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Chinese (Taiwan) (zh_TW)
-plupload.addI18n({"%d files queued":"%d 個檔案加入到序列","%s already present in the queue.":"%s 已經存在目前的檔案序列。","%s specified, but cannot be found.":"找不到已選擇的 %s。","Add Files":"增加檔案","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。","b":"b","Close":"關閉","Drag files here.":"把檔案拖曳到這裡。","Duplicate file error.":"錯誤:檔案重複。","Error: File too large:":"錯誤: 檔案大小太大:","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。","File size error.":"錯誤:檔案大小超過限制。","File: %s":"檔案: %s","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 檔案大小上限: %d","Filename":"檔案名稱","gb":"gb","HTTP Error.":"HTTP 錯誤。","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。","Init error.":"初始化錯誤。","kb":"kb","List":"清單","mb":"mb","N/A":"N/A","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"圖片解析度超出範圍! %s 最高只支援到 %wx%hpx。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","Select files":"選擇檔案","Size":"大小","Start Upload":"開始上傳","Status":"狀態","Stop Upload":"停止上傳","tb":"tb","Thumbnails":"縮圖","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。","Uploaded %d/%d files":"已上傳 %d/%d 個文件","You must specify either browse_button or drop_element.":"您必須指定 browse_button 或 drop_element。"});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js b/assets/javascripts/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js
deleted file mode 100644
index 9b8db0bc..00000000
--- a/assets/javascripts/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js
+++ /dev/null
@@ -1,1350 +0,0 @@
-/**
- * jquery.ui.plupload.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Depends:
- * jquery.ui.core.js
- * jquery.ui.widget.js
- * jquery.ui.button.js
- * jquery.ui.progressbar.js
- *
- * Optionally:
- * jquery.ui.sortable.js
- */
-
- /* global jQuery:true */
-
-/**
-jQuery UI based implementation of the Plupload API - multi-runtime file uploading API.
-
-To use the widget you must include _jQuery_ and _jQuery UI_ bundle (including `ui.core`, `ui.widget`, `ui.button`,
-`ui.progressbar` and `ui.sortable`).
-
-In general the widget is designed the way that you do not usually need to do anything to it after you instantiate it.
-But! You still can intervenue, to some extent, in case you need to. Although, due to the fact that widget is based on
-_jQuery UI_ widget factory, there are some specifics. See examples below for more details.
-
-@example
-
-
-
Your browser doesn't have Flash, Silverlight or HTML5 support.
-
-
-
-
-@example
- // Invoking methods:
- $('#uploader').plupload(options);
-
- // Display welcome message in the notification area
- $('#uploader').plupload('notify', 'info', "This might be obvious, but you need to click 'Add Files' to add some files.");
-
-@example
- // Subscribing to the events...
- // ... on initialization:
- $('#uploader').plupload({
- ...
- viewchanged: function(event, args) {
- // stuff ...
- }
- });
- // ... or after initialization
- $('#uploader').on("viewchanged", function(event, args) {
- // stuff ...
- });
-
-@class UI.Plupload
-@constructor
-@param {Object} settings For detailed information about each option check documentation.
- @param {String} settings.url URL of the server-side upload handler.
- @param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled.
- @param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message.
- @param {Object} [settings.filters={}] Set of file type filters.
- @param {Array} [settings.filters.mime_types=[]] List of file types to accept, each one defined by title and list of extensions. `e.g. {title : "Image files", extensions : "jpg,jpeg,gif,png"}`. Dispatches `plupload.FILE_EXTENSION_ERROR`
- @param {String|Number} [settings.filters.max_file_size=0] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
- @param {Boolean} [settings.filters.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
- @param {Number} [settings.filters.max_file_count=0] Limit the number of files that can reside in the queue at the same time (default is 0 - no limit).
- @param {String} [settings.flash_swf_url] URL of the Flash swf.
- @param {Object} [settings.headers] Custom headers to send with the upload. Hash of name/value pairs.
- @param {Number|String} [settings.max_file_size] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
- @param {Number} [settings.max_retries=0] How many times to retry the chunk or file, before triggering Error event.
- @param {Boolean} [settings.multipart=true] Whether to send file and additional parameters as Multipart formated message.
- @param {Object} [settings.multipart_params] Hash of key/value pairs to send with every file upload.
- @param {Boolean} [settings.multi_selection=true] Enable ability to select multiple files at once in file dialog.
- @param {Boolean} [settings.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
- @param {String|Object} [settings.required_features] Either comma-separated list or hash of required features that chosen runtime should absolutely possess.
- @param {Object} [settings.resize] Enable resizng of images on client-side. Applies to `image/jpeg` and `image/png` only. `e.g. {width : 200, height : 200, quality : 90, crop: true}`
- @param {Number} [settings.resize.width] If image is bigger, it will be resized.
- @param {Number} [settings.resize.height] If image is bigger, it will be resized.
- @param {Number} [settings.resize.quality=90] Compression quality for jpegs (1-100).
- @param {Boolean} [settings.resize.crop=false] Whether to crop images to exact dimensions. By default they will be resized proportionally.
- @param {String} [settings.runtimes="html5,flash,silverlight,html4"] Comma separated list of runtimes, that Plupload will try in turn, moving to the next if previous fails.
- @param {String} [settings.silverlight_xap_url] URL of the Silverlight xap.
- @param {Boolean} [settings.unique_names=false] If true will generate unique filenames for uploaded files.
-
- @param {Boolean} [settings.autostart=false] Whether to auto start uploading right after file selection.
- @param {Boolean} [settings.dragdrop=true] Enable ability to add file to the queue by drag'n'dropping them from the desktop.
- @param {Boolean} [settings.rename=false] Enable ability to rename files in the queue.
- @param {Boolean} [settings.sortable=false] Enable ability to sort files in the queue, changing their uploading priority.
- @param {Object} [settings.buttons] Control the visibility of functional buttons.
- @param {Boolean} [settings.buttons.browse=true] Display browse button.
- @param {Boolean} [settings.buttons.start=true] Display start button.
- @param {Boolean} [settings.buttons.stop=true] Display stop button.
- @param {Object} [settings.views] Control various views of the file queue.
- @param {Boolean} [settings.views.list=true] Enable list view.
- @param {Boolean} [settings.views.thumbs=false] Enable thumbs view.
- @param {String} [settings.views.default='list'] Default view.
- @param {Boolean} [settings.views.remember=true] Whether to remember the current view (requires jQuery Cookie plugin).
- @param {Boolean} [settings.multiple_queues=true] Re-activate the widget after each upload procedure.
-*/
-;(function(window, document, plupload, $) {
-
-/**
-Dispatched when the widget is initialized and ready.
-
-@event ready
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-*/
-
-/**
-Dispatched when file dialog is closed.
-
-@event selected
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Array} files Array of selected files represented by plupload.File objects
-*/
-
-/**
-Dispatched when file dialog is closed.
-
-@event removed
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Array} files Array of removed files represented by plupload.File objects
-*/
-
-/**
-Dispatched when upload is started.
-
-@event started
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-*/
-
-/**
-Dispatched when upload is stopped.
-
-@event stopped
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-*/
-
-/**
-Dispatched during the upload process.
-
-@event progress
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File that is being uploaded (includes loaded and percent properties among others).
- @param {Number} size Total file size in bytes.
- @param {Number} loaded Number of bytes uploaded of the files total size.
- @param {Number} percent Number of percentage uploaded of the file.
-*/
-
-/**
-Dispatched when file is uploaded.
-
-@event uploaded
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File that was uploaded.
- @param {Enum} status Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.
-*/
-
-/**
-Dispatched when upload of the whole queue is complete.
-
-@event complete
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Array} files Array of uploaded files represented by plupload.File objects
-*/
-
-/**
-Dispatched when the view is changed, e.g. from `list` to `thumbs` or vice versa.
-
-@event viewchanged
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {String} type Current view type.
-*/
-
-/**
-Dispatched when error of some kind is detected.
-
-@event error
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {String} error Error message.
-@param {plupload.File} file File that was uploaded.
- @param {Enum} status Status constant matching the plupload states QUEUED, UPLOADING, FAILED, DONE.
-*/
-
-var uploaders = {};
-
-function _(str) {
- return plupload.translate(str) || str;
-}
-
-function renderUI(obj) {
- obj.id = obj.attr('id');
-
- obj.html(
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
' + _("Select files") + '
' +
- '
' + _("Add files to the upload queue and click the start button.") + '
")}var a={};s.widget("ui.plupload",{widgetEventPrefix:"",contents_bak:"",options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",filters:{},buttons:{browse:!0,start:!0,stop:!0},views:{list:!0,thumbs:!1,active:"list",remember:!0},thumb_width:100,thumb_height:60,multiple_queues:!0,dragdrop:!0,autostart:!1,sortable:!1,rename:!1},FILE_COUNT_ERROR:-9001,_create:function(){var t=this.element.attr("id");t||(t=i.guid(),this.element.attr("id",t)),this.id=t,this.contents_bak=this.element.html(),o(this.element),this.container=s(".plupload_container",this.element).attr("id",t+"_container"),this.content=s(".plupload_content",this.element),s.fn.resizable&&this.container.resizable({handles:"s",minHeight:300}),this.filelist=s(".plupload_filelist_content",this.container).attr({id:t+"_filelist",unselectable:"on"}),this.browse_button=s(".plupload_add",this.container).attr("id",t+"_browse"),this.start_button=s(".plupload_start",this.container).attr("id",t+"_start"),this.stop_button=s(".plupload_stop",this.container).attr("id",t+"_stop"),this.thumbs_switcher=s("#"+t+"_view_thumbs"),this.list_switcher=s("#"+t+"_view_list"),s.ui.button&&(this.browse_button.button({icons:{primary:"ui-icon-circle-plus"},disabled:!0}),this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:!0}),this.stop_button.button({icons:{primary:"ui-icon-circle-close"}}),this.list_switcher.button({text:!1,icons:{secondary:"ui-icon-grip-dotted-horizontal"}}),this.thumbs_switcher.button({text:!1,icons:{secondary:"ui-icon-image"}})),this.progressbar=s(".plupload_progress_container",this.container),s.ui.progressbar&&this.progressbar.progressbar(),this.counter=s(".plupload_count",this.element).attr({id:t+"_count",name:t+"_count"}),this._initUploader()},_initUploader:function(){var t,e=this,o=this.id,r={container:o+"_buttons",browse_button:o+"_browse",required_features:{},filters:{}};s(".plupload_buttons",this.element).attr("id",o+"_buttons"),e.options.dragdrop&&(this.filelist.parent().attr("id",this.id+"_dropbox"),r.drop_element=this.id+"_dropbox"),this.filelist.on("click",function(t){s(t.target).hasClass("plupload_action_icon")&&(e.removeFile(s(t.target).closest(".plupload_file").attr("id")),t.preventDefault())}),e.options.views.thumbs&&(r.required_features.display_media=!0),e.options.max_file_count&&(r.filters.max_file_count=e.options.max_file_count),t=this.uploader=a[o]=new i.Uploader(s.extend(this.options,r)),this.options=t.getOption(),i.addFileFilter("max_file_count",function(t,i,s){t<=this.files.length-(this.total.uploaded+this.total.failed)?(e.browse_button.button("disable"),this.disableBrowse(),this.trigger("Error",{code:e.FILE_COUNT_ERROR,message:n("File count error."),file:i}),s(!1)):s(!0)}),t.bind("Error",function(t,s){var o,a="";switch(o=""+s.message+"",s.code){case i.FILE_EXTENSION_ERROR:a=i.sprintf(n("File: %s"),s.file.name);break;case i.FILE_SIZE_ERROR:a=i.sprintf(n("File: %s, size: %d, max file size: %d"),s.file.name,i.formatSize(s.file.size),i.formatSize(i.parseSize(t.getOption("filters").max_file_size)));break;case i.FILE_DUPLICATE_ERROR:a=i.sprintf(n("%s already present in the queue."),s.file.name);break;case e.FILE_COUNT_ERROR:a=i.sprintf(n("Upload element accepts only %d file(s) at a time. Extra files were stripped."),t.getOption("filters").max_file_count||0);break;case i.IMAGE_FORMAT_ERROR:a=n("Image format either wrong or not supported.");break;case i.IMAGE_MEMORY_ERROR:a=n("Runtime ran out of available memory.");break;case i.HTTP_ERROR:a=n("Upload URL might be wrong or doesn't exist.")}o+=" "+a+"",e._trigger("error",null,{up:t,error:s}),s.code===i.INIT_ERROR?setTimeout(function(){e.destroy()},1):e.notify("error",o)}),t.bind("PostInit",function(t){e.options.buttons.browse?e.browse_button.button("enable"):(e.browse_button.button("disable").hide(),t.disableBrowse(!0)),e.options.buttons.start||e.start_button.button("disable").hide(),e.options.buttons.stop||e.stop_button.button("disable").hide(),!e.options.unique_names&&e.options.rename&&e._enableRenaming(),e.options.dragdrop&&t.features.dragdrop&&e.filelist.parent().addClass("plupload_dropbox"),e._enableViewSwitcher(),e.start_button.click(function(t){s(this).button("option","disabled")||e.start(),t.preventDefault()}),e.stop_button.click(function(t){e.stop(),t.preventDefault()}),e._trigger("ready",null,{up:t})}),t.init(),t.bind("FileFiltered",function(t,i){e._addFiles(i)}),t.bind("FilesAdded",function(t,i){e._trigger("selected",null,{up:t,files:i}),e.options.sortable&&s.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e.options.autostart&&setTimeout(function(){e.start()},10)}),t.bind("FilesRemoved",function(t,i){s.ui.sortable&&e.options.sortable&&s("tbody",e.filelist).sortable("destroy"),s.each(i,function(t,e){s("#"+e.id).toggle("highlight",function(){s(this).remove()})}),t.files.length&&e.options.sortable&&s.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e._trigger("removed",null,{up:t,files:i})}),t.bind("QueueChanged",function(){e._handleState()}),t.bind("StateChanged",function(t){e._handleState(),i.STARTED===t.state?e._trigger("started",null,{up:this.uploader}):i.STOPPED===t.state&&e._trigger("stopped",null,{up:this.uploader})}),t.bind("UploadFile",function(t,i){e._handleFileStatus(i)}),t.bind("FileUploaded",function(t,i,s){e._handleFileStatus(i),e._trigger("uploaded",null,{up:t,file:i,result:s})}),t.bind("UploadProgress",function(t,i){e._handleFileStatus(i),e._updateTotalProgress(),e._trigger("progress",null,{up:t,file:i})}),t.bind("UploadComplete",function(t,i){e._addFormFields(),e._trigger("complete",null,{up:t,files:i})})},_setOption:function(t,e){var i=this;"buttons"==t&&"object"==typeof e&&(e=s.extend(i.options.buttons,e),e.browse?(i.browse_button.button("enable").show(),i.uploader.disableBrowse(!1)):(i.browse_button.button("disable").hide(),i.uploader.disableBrowse(!0)),e.start?i.start_button.button("enable").show():i.start_button.button("disable").hide(),e.stop?i.start_button.button("enable").show():i.stop_button.button("disable").hide()),i.uploader.setOption(t,e)},start:function(){this.uploader.start()},stop:function(){this.uploader.stop()},enable:function(){this.browse_button.button("enable"),this.uploader.disableBrowse(!1)},disable:function(){this.browse_button.button("disable"),this.uploader.disableBrowse(!0)},getFile:function(t){var e;return e="number"==typeof t?this.uploader.files[t]:this.uploader.getFile(t)},getFiles:function(){return this.uploader.files},removeFile:function(t){"string"===i.typeOf(t)&&(t=this.getFile(t)),this.uploader.removeFile(t)},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},notify:function(t,e){var i=s('
]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})},destroy:function(){this.getRuntime().getShim().removeInstance(this.uid)}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/plupload.dev.js b/assets/javascripts/plupload/js/plupload.dev.js
deleted file mode 100644
index 6e799956..00000000
--- a/assets/javascripts/plupload/js/plupload.dev.js
+++ /dev/null
@@ -1,4388 +0,0 @@
-/**
- * Plupload - multi-runtime File Uploader
- * v3.1.2
- *
- * Copyright 2018, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2018-02-20
- */
-;(function (global, factory) {
- var extract = function() {
- var ctx = {};
- factory.apply(ctx, arguments);
- return ctx.plupload;
- };
-
- if (typeof define === "function" && define.amd) {
- define("plupload", ['./moxie'], extract);
- } else if (typeof module === "object" && module.exports) {
- module.exports = extract(require('./moxie'));
- } else {
- global.plupload = extract(global.moxie);
- }
-}(this || window, function(moxie) {
-/**
- * Compiled inline version. (Library mode)
- */
-
-/*jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true */
-/*globals $code */
-
-(function(exports, undefined) {
- "use strict";
-
- var modules = {};
-
- function require(ids, callback) {
- var module, defs = [];
-
- for (var i = 0; i < ids.length; ++i) {
- module = modules[ids[i]] || resolve(ids[i]);
- if (!module) {
- throw 'module definition dependecy not found: ' + ids[i];
- }
-
- defs.push(module);
- }
-
- callback.apply(null, defs);
- }
-
- function define(id, dependencies, definition) {
- if (typeof id !== 'string') {
- throw 'invalid module definition, module id must be defined and be a string';
- }
-
- if (dependencies === undefined) {
- throw 'invalid module definition, dependencies must be specified';
- }
-
- if (definition === undefined) {
- throw 'invalid module definition, definition function must be specified';
- }
-
- require(dependencies, function() {
- modules[id] = definition.apply(null, arguments);
- });
- }
-
- function defined(id) {
- return !!modules[id];
- }
-
- function resolve(id) {
- var target = exports;
- var fragments = id.split(/[.\/]/);
-
- for (var fi = 0; fi < fragments.length; ++fi) {
- if (!target[fragments[fi]]) {
- return;
- }
-
- target = target[fragments[fi]];
- }
-
- return target;
- }
-
- function expose(ids) {
- for (var i = 0; i < ids.length; i++) {
- var target = exports;
- var id = ids[i];
- var fragments = id.split(/[.\/]/);
-
- for (var fi = 0; fi < fragments.length - 1; ++fi) {
- if (target[fragments[fi]] === undefined) {
- target[fragments[fi]] = {};
- }
-
- target = target[fragments[fi]];
- }
-
- target[fragments[fragments.length - 1]] = modules[id];
- }
- }
-
-// Included from: src/plupload.js
-
-/**
- * plupload.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-/**
-Namespace for all Plupload related classes, methods and properties.
-
-@class plupload
-@public
-@static
-*/
-define('plupload', [], function() {
-
- var o = moxie;
- var u = o.core.utils;
-
- // redifine event dispatcher for Flash/Silverlight runtimes
- u.Env.global_event_dispatcher = 'plupload.EventTarget.instance.dispatchEvent';
-
-
- return {
- /**
- * Plupload version will be replaced on build.
- *
- * @property VERSION
- * @static
- * @final
- */
- VERSION: '3.1.2',
-
- /**
- * The state of the queue before it has started and after it has finished
- *
- * @property STOPPED
- * @static
- * @final
- */
- STOPPED: 1,
-
- /**
- * Upload process is running
- *
- * @property STARTED
- * @static
- * @final
- */
- STARTED: 2,
-
- /**
- File is queued for upload
-
- @property QUEUED
- @static
- @final
- */
- QUEUED: 1,
-
- /**
- File is being uploaded
-
- @property UPLOADING
- @static
- @final
- */
- UPLOADING: 2,
-
- /**
- File has failed to be uploaded
-
- @property FAILED
- @static
- @final
- */
- FAILED: 4,
-
- /**
- File has been uploaded successfully
-
- @property DONE
- @static
- @final
- */
- DONE: 5,
-
- // Error constants used by the Error event
-
- /**
- * Generic error for example if an exception is thrown inside Silverlight.
- *
- * @property GENERIC_ERROR
- * @static
- * @final
- */
- GENERIC_ERROR: -100,
-
- /**
- * HTTP transport error. For example if the server produces a HTTP status other than 200.
- *
- * @property HTTP_ERROR
- * @static
- * @final
- */
- HTTP_ERROR: -200,
-
- /**
- * Generic I/O error. For example if it wasn't possible to open the file stream on local machine.
- *
- * @property IO_ERROR
- * @static
- * @final
- */
- IO_ERROR: -300,
-
- /**
- * @property SECURITY_ERROR
- * @static
- * @final
- */
- SECURITY_ERROR: -400,
-
- /**
- * Initialization error. Will be triggered if no runtime was initialized.
- *
- * @property INIT_ERROR
- * @static
- * @final
- */
- INIT_ERROR: -500,
-
- /**
- * File size error. If the user selects a file that is too large it will be blocked and an error of this type will be triggered.
- *
- * @property FILE_SIZE_ERROR
- * @static
- * @final
- */
- FILE_SIZE_ERROR: -600,
-
- /**
- * File extension error. If the user selects a file that isn't valid according to the filters setting.
- *
- * @property FILE_EXTENSION_ERROR
- * @static
- * @final
- */
- FILE_EXTENSION_ERROR: -601,
-
- /**
- * Duplicate file error. If prevent_duplicates is set to true and user selects the same file again.
- *
- * @property FILE_DUPLICATE_ERROR
- * @static
- * @final
- */
- FILE_DUPLICATE_ERROR: -602,
-
- /**
- * Runtime will try to detect if image is proper one. Otherwise will throw this error.
- *
- * @property IMAGE_FORMAT_ERROR
- * @static
- * @final
- */
- IMAGE_FORMAT_ERROR: -700,
-
- /**
- * While working on files runtime may run out of memory and will throw this error.
- *
- * @since 2.1.2
- * @property MEMORY_ERROR
- * @static
- * @final
- */
- MEMORY_ERROR: -701,
-
- /**
- * Each runtime has an upper limit on a dimension of the image it can handle. If bigger, will throw this error.
- *
- * @property IMAGE_DIMENSIONS_ERROR
- * @static
- * @final
- */
- IMAGE_DIMENSIONS_ERROR: -702,
-
-
- /**
- Invalid option error. Will be thrown if user tries to alter the option that cannot be changed without
- uploader reinitialisation.
-
- @property OPTION_ERROR
- @static
- @final
- */
- OPTION_ERROR: -800,
-
- /**
- * Expose whole moxie (#1469).
- *
- * @property moxie
- * @type Object
- * @final
- */
- moxie: o,
-
- /**
- * In some cases sniffing is the only way around :(
- */
- ua: u.Env,
-
- /**
- * Gets the true type of the built-in object (better version of typeof).
- * @credits Angus Croll (http://javascriptweblog.wordpress.com/)
- *
- * @method typeOf
- * @static
- * @param {Object} o Object to check.
- * @return {String} Object [[Class]]
- */
- typeOf: u.Basic.typeOf,
-
- clone: u.Basic.clone,
-
- inherit: u.Basic.inherit,
-
-
- /**
- * Extends the specified object with another object.
- *
- * @method extend
- * @static
- * @param {Object} target Object to extend.
- * @param {Object..} obj Multiple objects to extend with.
- * @return {Object} Same as target, the extended object.
- */
- extend: u.Basic.extend,
-
-
- extendImmutable: u.Basic.extendImmutable,
-
- /**
- Extends the specified object with another object(s), but only if the property exists in the target.
-
- @method extendIf
- @static
- @param {Object} target Object to extend.
- @param {Object} [obj]* Multiple objects to extend with.
- @return {Object} Same as target, the extended object.
- */
- extendIf: u.Basic.extendIf,
-
- /**
- Recieve an array of functions (usually async) to call in sequence, each function
- receives a callback as first argument that it should call, when it completes. Finally,
- after everything is complete, main callback is called. Passing truthy value to the
- callback as a first argument will interrupt the sequence and invoke main callback
- immediately.
-
- @method inSeries
- @static
- @param {Array} queue Array of functions to call in sequence
- @param {Function} cb Main callback that is called in the end, or in case of error
- */
- inSeries: u.Basic.inSeries,
-
- /**
- Recieve an array of functions (usually async) to call in parallel, each function
- receives a callback as first argument that it should call, when it completes. After
- everything is complete, main callback is called. Passing truthy value to the
- callback as a first argument will interrupt the process and invoke main callback
- immediately.
-
- @method inParallel
- @static
- @param {Array} queue Array of functions to call in sequence
- @param {Function} cb Main callback that is called in the end, or in case of erro
- */
- inParallel: u.Basic.inParallel,
-
- /**
- * Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers.
- * The only way a user would be able to get the same ID is if the two persons at the same exact millisecond manages
- * to get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique.
- * It's more probable for the earth to be hit with an asteriod. You can also if you want to be 100% sure set the plupload.guidPrefix property
- * to an user unique key.
- *
- * @method guid
- * @static
- * @return {String} Virtually unique id.
- */
- guid: u.Basic.guid,
-
- /**
- * Get array of DOM Elements by their ids.
- *
- * @method get
- * @param {String} id Identifier of the DOM Element
- * @return {Array}
- */
- getAll: function get(ids) {
- var els = [],
- el;
-
- if (u.Basic.typeOf(ids) !== 'array') {
- ids = [ids];
- }
-
- var i = ids.length;
- while (i--) {
- el = u.Dom.get(ids[i]);
- if (el) {
- els.push(el);
- }
- }
-
- return els.length ? els : null;
- },
-
- /**
- Get DOM element by id
-
- @method get
- @param {String} id Identifier of the DOM Element
- @return {Node}
- */
- get: u.Dom.get,
-
- /**
- * Executes the callback function for each item in array/object. If you return false in the
- * callback it will break the loop.
- *
- * @method each
- * @static
- * @param {Object} obj Object to iterate.
- * @param {function} callback Callback function to execute for each item.
- */
- each: u.Basic.each,
-
- /**
- * Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.
- *
- * @method getPos
- * @static
- * @param {Element} node HTML element or element id to get x, y position from.
- * @param {Element} root Optional root element to stop calculations at.
- * @return {object} Absolute position of the specified element object with x, y fields.
- */
- getPos: u.Dom.getPos,
-
- /**
- * Returns the size of the specified node in pixels.
- *
- * @method getSize
- * @static
- * @param {Node} node Node to get the size of.
- * @return {Object} Object with a w and h property.
- */
- getSize: u.Dom.getSize,
-
- /**
- * Encodes the specified string.
- *
- * @method xmlEncode
- * @static
- * @param {String} s String to encode.
- * @return {String} Encoded string.
- */
- xmlEncode: function(str) {
- var xmlEncodeChars = {
- '<': 'lt',
- '>': 'gt',
- '&': 'amp',
- '"': 'quot',
- '\'': '#39'
- },
- xmlEncodeRegExp = /[<>&\"\']/g;
-
- return str ? ('' + str).replace(xmlEncodeRegExp, function(chr) {
- return xmlEncodeChars[chr] ? '&' + xmlEncodeChars[chr] + ';' : chr;
- }) : str;
- },
-
- /**
- * Forces anything into an array.
- *
- * @method toArray
- * @static
- * @param {Object} obj Object with length field.
- * @return {Array} Array object containing all items.
- */
- toArray: u.Basic.toArray,
-
- /**
- * Find an element in array and return its index if present, otherwise return -1.
- *
- * @method inArray
- * @static
- * @param {mixed} needle Element to find
- * @param {Array} array
- * @return {Int} Index of the element, or -1 if not found
- */
- inArray: u.Basic.inArray,
-
- /**
- * Extends the language pack object with new items.
- *
- * @method addI18n
- * @static
- * @param {Object} pack Language pack items to add.
- * @return {Object} Extended language pack object.
- */
- addI18n: o.core.I18n.addI18n,
-
- /**
- * Translates the specified string by checking for the english string in the language pack lookup.
- *
- * @method translate
- * @static
- * @param {String} str String to look for.
- * @return {String} Translated string or the input string if it wasn't found.
- */
- translate: o.core.I18n.translate,
-
- /**
- * Pseudo sprintf implementation - simple way to replace tokens with specified values.
- *
- * @param {String} str String with tokens
- * @return {String} String with replaced tokens
- */
- sprintf: u.Basic.sprintf,
-
- /**
- * Checks if object is empty.
- *
- * @method isEmptyObj
- * @static
- * @param {Object} obj Object to check.
- * @return {Boolean}
- */
- isEmptyObj: u.Basic.isEmptyObj,
-
- /**
- * Checks if specified DOM element has specified class.
- *
- * @method hasClass
- * @static
- * @param {Object} obj DOM element like object to add handler to.
- * @param {String} name Class name
- */
- hasClass: u.Dom.hasClass,
-
- /**
- * Adds specified className to specified DOM element.
- *
- * @method addClass
- * @static
- * @param {Object} obj DOM element like object to add handler to.
- * @param {String} name Class name
- */
- addClass: u.Dom.addClass,
-
- /**
- * Removes specified className from specified DOM element.
- *
- * @method removeClass
- * @static
- * @param {Object} obj DOM element like object to add handler to.
- * @param {String} name Class name
- */
- removeClass: u.Dom.removeClass,
-
- /**
- * Returns a given computed style of a DOM element.
- *
- * @method getStyle
- * @static
- * @param {Object} obj DOM element like object.
- * @param {String} name Style you want to get from the DOM element
- */
- getStyle: u.Dom.getStyle,
-
- /**
- * Adds an event handler to the specified object and store reference to the handler
- * in objects internal Plupload registry (@see removeEvent).
- *
- * @method addEvent
- * @static
- * @param {Object} obj DOM element like object to add handler to.
- * @param {String} name Name to add event listener to.
- * @param {Function} callback Function to call when event occurs.
- * @param {String} (optional) key that might be used to add specifity to the event record.
- */
- addEvent: u.Events.addEvent,
-
- /**
- * Remove event handler from the specified object. If third argument (callback)
- * is not specified remove all events with the specified name.
- *
- * @method removeEvent
- * @static
- * @param {Object} obj DOM element to remove event listener(s) from.
- * @param {String} name Name of event listener to remove.
- * @param {Function|String} (optional) might be a callback or unique key to match.
- */
- removeEvent: u.Events.removeEvent,
-
- /**
- * Remove all kind of events from the specified object
- *
- * @method removeAllEvents
- * @static
- * @param {Object} obj DOM element to remove event listeners from.
- * @param {String} (optional) unique key to match, when removing events.
- */
- removeAllEvents: u.Events.removeAllEvents,
-
- /**
- * Cleans the specified name from national characters (diacritics). The result will be a name with only a-z, 0-9 and _.
- *
- * @method cleanName
- * @static
- * @param {String} s String to clean up.
- * @return {String} Cleaned string.
- */
- cleanName: function(name) {
- var i, lookup;
-
- // Replace diacritics
- lookup = [
- /[\300-\306]/g, 'A', /[\340-\346]/g, 'a',
- /\307/g, 'C', /\347/g, 'c',
- /[\310-\313]/g, 'E', /[\350-\353]/g, 'e',
- /[\314-\317]/g, 'I', /[\354-\357]/g, 'i',
- /\321/g, 'N', /\361/g, 'n',
- /[\322-\330]/g, 'O', /[\362-\370]/g, 'o',
- /[\331-\334]/g, 'U', /[\371-\374]/g, 'u'
- ];
-
- for (i = 0; i < lookup.length; i += 2) {
- name = name.replace(lookup[i], lookup[i + 1]);
- }
-
- // Replace whitespace
- name = name.replace(/\s+/g, '_');
-
- // Remove anything else
- name = name.replace(/[^a-z0-9_\-\.]+/gi, '');
-
- return name;
- },
-
- /**
- * Builds a full url out of a base URL and an object with items to append as query string items.
- *
- * @method buildUrl
- * @static
- * @param {String} url Base URL to append query string items to.
- * @param {Object} items Name/value object to serialize as a querystring.
- * @return {String} String with url + serialized query string items.
- */
- buildUrl: function(url, items) {
- var query = '';
-
- u.Basic.each(items, function(value, name) {
- query += (query ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);
- });
-
- if (query) {
- url += (url.indexOf('?') > 0 ? '&' : '?') + query;
- }
-
- return url;
- },
-
- /**
- * Formats the specified number as a size string for example 1024 becomes 1 KB.
- *
- * @method formatSize
- * @static
- * @param {Number} size Size to format as string.
- * @return {String} Formatted size string.
- */
- formatSize: function(size) {
- var self = this;
-
- function round(num, precision) {
- return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision);
- }
-
- size = parseInt(size, 10);
- if (isNaN(size)) {
- return self.translate('N/A');
- }
-
- var boundary = Math.pow(1024, 4);
-
- // TB
- if (size > boundary) {
- return round(size / boundary, 1) + " " + self.translate('tb');
- }
-
- // GB
- if (size > (boundary /= 1024)) {
- return round(size / boundary, 1) + " " + self.translate('gb');
- }
-
- // MB
- if (size > (boundary /= 1024)) {
- return round(size / boundary, 1) + " " + self.translate('mb');
- }
-
- // KB
- if (size > 1024) {
- return Math.round(size / 1024) + " " + self.translate('kb');
- }
-
- return size + " " + self.translate('b');
- },
-
- /**
- * @private
- */
- mimes2extList: moxie.core.utils.Mime.mimes2extList,
-
- /**
- Resolve url - among other things will turn relative url to absolute
-
- @method resolveUrl
- @static
- @param {String|Object} url Either absolute or relative, or a result of parseUrl call
- @return {String} Resolved, absolute url
- */
- resolveUrl: u.Url.resolveUrl,
-
- /**
- * Parses the specified size string into a byte value. For example 10kb becomes 10240.
- *
- * @method parseSize
- * @static
- * @param {String|Number} size String to parse or number to just pass through.
- * @return {Number} Size in bytes.
- */
- parseSize: u.Basic.parseSizeStr,
-
- delay: u.Basic.delay,
-
-
- /**
- Parent object for all event dispatching components and objects
-
- @class plupload.EventTarget
- @private
- @constructor
- */
- EventTarget: moxie.core.EventTarget,
-
- /**
- Common set of methods and properties for every runtime instance
-
- @class plupload.Runtime
- @private
-
- @param {Object} options
- @param {String} type Sanitized name of the runtime
- @param {Object} [caps] Set of capabilities that differentiate specified runtime
- @param {Object} [modeCaps] Set of capabilities that do require specific operational mode
- @param {String} [preferredMode='browser'] Preferred operational mode to choose if no required capabilities were requested
- */
- Runtime: moxie.runtime.Runtime,
-
- /**
- Provides a convenient way to create cross-browser file-picker. Generates file selection dialog on click,
- converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory
- with _FileReader_ or uploaded to a server through _XMLHttpRequest_.
-
- @class plupload.FileInput
- @private
- @constructor
- @extends EventTarget
- @uses RuntimeClient
- @param {Object|String|DOMElement} options If options is string or node, argument is considered as _browse\_button_.
- @param {String|DOMElement} options.browse_button DOM Element to turn into file picker.
- @param {Array} [options.accept] Array of mime types to accept. By default accepts all.
- @param {String} [options.file='file'] Name of the file field (not the filename).
- @param {Boolean} [options.multiple=false] Enable selection of multiple files.
- @param {Boolean} [options.directory=false] Turn file input into the folder input (cannot be both at the same time).
- @param {String|DOMElement} [options.container] DOM Element to use as a container for file-picker. Defaults to parentNode
- for _browse\_button_.
- @param {Object|String} [options.required_caps] Set of required capabilities, that chosen runtime must support.
- */
- FileInput: moxie.file.FileInput,
-
- /**
- Utility for preloading o.Blob/o.File objects in memory. By design closely follows [W3C FileReader](http://www.w3.org/TR/FileAPI/#dfn-filereader)
- interface. Where possible uses native FileReader, where - not falls back to shims.
-
- @class plupload.FileReader
- @private
- @constructor
- @extends EventTarget
- @uses RuntimeClient
- */
- FileReader: moxie.file.FileReader
- };
-
-});
-
-// Included from: src/core/Collection.js
-
-/**
- * Collection.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-Helper collection class - in a way a mix of object and array
-
-@contsructor
-@class plupload.core.Collection
-@private
-*/
-define('plupload/core/Collection', [
- 'plupload'
-], function(Basic) {
-
- var Collection = function() {
- var _registry = {};
- var _length = 0;
- var _last;
-
-
- plupload.extend(this, {
-
- count: function() {
- return _length;
- },
-
- hasKey: function(key) {
- return _registry.hasOwnProperty(key)
- },
-
-
- get: function(key) {
- return _registry[key];
- },
-
-
- first: function() {
- for (var key in _registry) {
- return _registry[key];
- }
- },
-
-
- last: function() {
- return _last;
- },
-
-
- toObject: function() {
- return _registry;
- },
-
-
- add: function(key, obj) {
- var self = this;
-
- if (typeof(key) === 'object' && !obj) {
- return plupload.each(key, function(obj, key) {
- self.add(key, obj);
- });
- }
-
- if (_registry.hasOwnProperty(key)) {
- return self.update.apply(self, arguments);
- }
-
- _registry[key] = _last = obj;
- _length++;
- },
-
-
- remove: function(key) {
- if (this.hasKey(key)) {
- var last = _registry[key];
-
- delete _registry[key];
- _length--;
-
- // renew ref to the last added item if necessary
- if (_last === last) {
- _last = findLast();
- }
- }
- },
-
-
- extract: function(key) {
- var item = this.get(key);
- this.remove(key);
- return item;
- },
-
-
- shift: function() {
- var self = this,
- first, key;
-
- for (key in _registry) {
- first = _registry[key];
- self.remove(key);
- return first;
- }
- },
-
-
- update: function(key, obj) {
- _registry[key] = obj;
- },
-
-
- each: function(cb) {
- plupload.each(_registry, cb);
- },
-
-
- combineWith: function() {
- var newCol = new Collection();
-
- newCol.add(_registry);
-
- plupload.each(arguments, function(col) {
- if (col instanceof Collection) {
- newCol.add(col.toObject());
- }
- });
- return newCol;
- },
-
-
- clear: function() {
- _registry = {};
- _last = null;
- _length = 0;
- }
- });
-
-
- function findLast() {
- var key;
- for (key in _registry) {}
- return _registry[key];
- }
-
- };
-
- return Collection;
-});
-
-// Included from: src/core/ArrCollection.js
-
-/**
- * ArrCollection.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-@contsructor
-@class plupload.core.ArrCollection
-@private
-*/
-define('plupload/core/ArrCollection', [
- 'plupload'
-], function(plupload) {
-
- var ArrCollection = function() {
- var _registry = [];
-
- plupload.extend(this, {
-
- count: function() {
- return _registry.length;
- },
-
- hasKey: function(key) {
- return this.getIdx(key) > -1;
- },
-
-
- get: function(key) {
- var idx = this.getIdx(key);
- return idx > -1 ? _registry[idx] : null;
- },
-
- getIdx: function(key) {
- for (var i = 0, length = _registry.length; i < length; i++) {
- if (_registry[i].uid === key) {
- return i;
- }
- }
- return -1;
- },
-
- getByIdx: function(idx) {
- return _registry[idx]
- },
-
- first: function() {
- return _registry[0];
- },
-
- last: function() {
- return _registry[_registry.length - 1];
- },
-
- add: function(obj) {
- obj = arguments[1] || obj; // make it compatible with Collection.add()
-
- var idx = this.getIdx(obj.uid);
- if (idx > -1) {
- _registry[idx] = obj;
- return idx;
- }
-
- _registry.push(obj);
- return _registry.length - 1;
- },
-
- remove: function(key) {
- return !!this.extract(key);
- },
-
- splice: function(start, length) {
- start = plupload.typeOf(start) === 'undefinded' ? 0 : Math.max(start, 0);
- length = plupload.typeOf(length) !== 'undefinded' && start + length < _registry.length ? length : _registry.length - start;
-
- return _registry.splice(start, length);
- },
-
- extract: function(key) {
- var idx = this.getIdx(key);
- if (idx > -1) {
- return _registry.splice(idx, 1);
- }
- return null;
- },
-
- shift: function() {
- return _registry.shift();
- },
-
- update: function(key, obj) {
- var idx = this.getIdx(key);
- if (idx > -1) {
- _registry[idx] = obj;
- return true;
- }
- return false;
- },
-
- each: function(cb) {
- plupload.each(_registry, cb);
- },
-
- combineWith: function() {
- return Array.prototype.concat.apply(this.toArray(), arguments);
- },
-
- sort: function(cb) {
- _registry.sort(cb || function(a, b) {
- return a.priority - b.priority;
- });
- },
-
- clear: function() {
- _registry = [];
- },
-
- toObject: function() {
- var obj = {};
- for (var i = 0, length = _registry.length; i < length; i++) {
- obj[_registry[i].uid] = _registry[i];
- }
- return obj;
- },
-
- toArray: function() {
- return Array.prototype.slice.call(_registry);
- }
- });
- };
-
- return ArrCollection;
-});
-
-// Included from: src/core/Optionable.js
-
-/**
- * Optionable.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-@contsructor
-@class plupload.core.Optionable
-@private
-@since 3.0
-*/
-define('plupload/core/Optionable', [
- 'plupload'
-], function(plupload) {
- var EventTarget = moxie.core.EventTarget;
-
- var dispatches = [
- /**
- * Dispatched when option is being changed.
- *
- * @event OptionChanged
- * @param {Object} event
- * @param {String} name Name of the option being changed
- * @param {Mixed} value
- * @param {Mixed} oldValue
- */
- 'OptionChanged'
- ];
-
- return (function(Parent) {
-
- /**
- * @class Optionable
- * @constructor
- * @extends EventTarget
- */
- function Optionable() {
- Parent.apply(this, arguments);
-
- this._options = {};
- }
-
- plupload.inherit(Optionable, Parent);
-
- plupload.extend(Optionable.prototype, {
- /**
- * Set the value for the specified option(s).
- *
- * @method setOption
- * @since 2.1
- * @param {String|Object} option Name of the option to change or the set of key/value pairs
- * @param {Mixed} [value] Value for the option (is ignored, if first argument is object)
- * @param {Boolean} [mustBeDefined] if truthy, any option that is not in defaults will be ignored
- */
- setOption: function(option, value, mustBeDefined) {
- var self = this;
- var oldValue;
-
- if (typeof(option) === 'object') {
- mustBeDefined = value;
- plupload.each(option, function(value, option) {
- self.setOption(option, value, mustBeDefined);
- });
- return;
- }
-
- if (mustBeDefined && !self._options.hasOwnProperty(option)) {
- return;
- }
-
- oldValue = plupload.clone(self._options[option]);
-
- //! basically if an option is of type object extend it rather than replace
- if (plupload.typeOf(value) === 'object' && plupload.typeOf(self._options[option]) === 'object') {
- // having some options as objects was a bad idea, prefixes is the way
- plupload.extend(self._options[option], value);
- } else {
- self._options[option] = value;
- }
-
- self.trigger('OptionChanged', option, value, oldValue);
- },
-
- /**
- * Get the value for the specified option or the whole configuration, if not specified.
- *
- * @method getOption
- * @since 2.1
- * @param {String} [option] Name of the option to get
- * @return {Mixed} Value for the option or the whole set
- */
- getOption: function(option) {
- if (!option) {
- return this._options;
- }
-
- var value = this._options[option];
- if (plupload.inArray(plupload.typeOf(value), ['array', 'object']) > -1) {
- return plupload.extendImmutable({}, value);
- } else {
- return value;
- }
- },
-
-
- /**
- * Set many options as once.
- *
- * @method setOptions
- * @param {Object} options
- * @param {Boolean} [mustBeDefined] if truthy, any option that is not in defaults will be ignored
- */
- setOptions: function(options, mustBeDefined) {
- if (typeof(options) !== 'object') {
- return;
- }
- this.setOption(options, mustBeDefined);
- },
-
-
- /**
- Gets all options.
-
- @method getOptions
- @return {Object}
- */
- getOptions: function() {
- return this.getOption();
- }
- });
-
- return Optionable;
-
- }(EventTarget));
-
-});
-
-// Included from: src/core/Queueable.js
-
-/**
- * Queueable.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.se.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-Every queue item must have properties, implement methods and fire events defined in this class
-
-@contsructor
-@class plupload.core.Queueable
-@private
-@decorator
-@extends EventTarget
-*/
-define('plupload/core/Queueable', [
- 'plupload',
- 'plupload/core/Optionable'
-], function(plupload, Optionable) {
-
- var dispatches = [
- /**
- * Dispatched every time the state of queue changes
- *
- * @event statechanged
- * @param {Object} event
- * @param {Number} state New state
- * @param {Number} prevState Previous state
- */
- 'statechanged',
-
-
- /**
- * Dispatched when the item is put on pending list
- *
- * @event queued
- * @param {Object} event
- */
- 'queued',
-
-
- /**
- * Dispatched as soon as activity starts
- *
- * @event started
- * @param {Object} event
- */
- 'started',
-
-
- 'paused',
-
-
- 'resumed',
-
-
- 'stopped',
-
-
- /**
- * Dispatched as the activity progresses
- *
- * @event
- * @param {Object} event
- * @param {Number} event.percent
- * @param {Number} [event.processed]
- * @param {Number} [event.total]
- */
- 'progress',
-
-
- 'failed',
-
-
- 'done',
-
-
- 'processed',
-
- 'destroy'
- ];
-
-
- return (function(Parent) {
-
- function Queueable() {
- Parent.apply(this, arguments);
-
- /**
- Unique identifier
- @property uid
- @type {String}
- */
- this.uid = plupload.guid();
-
- this.state = Queueable.IDLE;
-
- this.processed = 0;
-
- this.total = 0;
-
- this.percent = 0;
-
- this.retries = 0;
-
- /**
- * Can be 0-Infinity - item with higher priority will have well... higher priority
- * @property [priority=0]
- * @type {Number}
- */
- this.priority = 0;
-
- this.startedTimestamp = 0;
-
- /**
- * Set when item becomes Queueable.DONE or Queueable.FAILED.
- * Used to calculate proper processedPerSec for the queue stats.
- * @property processedTimestamp
- * @type {Number}
- */
- this.processedTimestamp = 0;
-
- if (MXI_DEBUG) {
- this.bind('StateChanged', function(e, state, oldState) {
- var self = this;
-
- var stateToString = function(code) {
- switch (code) {
- case Queueable.IDLE:
- return 'IDLE';
-
- case Queueable.PROCESSING:
- return 'PROCESSING';
-
- case Queueable.PAUSED:
- return 'PAUSED';
-
- case Queueable.RESUMED:
- return 'RESUMED';
-
- case Queueable.DONE:
- return 'DONE';
-
- case Queueable.FAILED:
- return 'FAILED';
-
- case Queueable.DESTROYED:
- return 'DESTROYED';
- }
- };
-
- var indent = function() {
- switch (self.ctorName) {
- case 'File':
- return "\t".repeat(2);
-
- case 'QueueUpload':
- case 'QueueResize':
- return "\t";
-
- case 'FileUploader':
- return "\t".repeat(3);
-
- case 'ChunkUploader':
- return "\t".repeat(4);
-
- default:
- return "\t";
- }
- };
-
- plupload.ua.log("StateChanged:" + indent() + self.ctorName + '::' + self.uid + ' (' + stateToString(oldState) + ' to ' + stateToString(state) + ')');
- }, 999);
- }
- }
-
- Queueable.IDLE = 1;
- Queueable.PROCESSING = 2;
- Queueable.PAUSED = 6;
- Queueable.RESUMED = 7;
- Queueable.DONE = 5;
- Queueable.FAILED = 4;
- Queueable.DESTROYED = 8;
-
- plupload.inherit(Queueable, Parent);
-
- plupload.extend(Queueable.prototype, {
-
- start: function() {
- var prevState = this.state;
-
- if (this.state === Queueable.PROCESSING) {
- return false;
- }
-
- if (!this.startedTimestamp) {
- this.startedTimestamp = +new Date();
- }
-
- this.state = Queueable.PROCESSING;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('started');
-
- return true;
- },
-
-
- pause: function() {
- var prevState = this.state;
-
- if (plupload.inArray(this.state, [Queueable.IDLE, Queueable.RESUMED, Queueable.PROCESSING]) === -1) {
- return false;
- }
-
- this.processed = this.percent = 0; // by default reset all progress
- this.loaded = this.processed; // for backward compatibility
-
- this.state = Queueable.PAUSED;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('paused');
- return true;
- },
-
-
- resume: function() {
- var prevState = this.state;
-
- if (this.state !== Queueable.PAUSED && this.state !== Queueable.RESUMED) {
- return false;
- }
-
- this.state = Queueable.RESUMED;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('resumed');
- return true;
- },
-
-
- stop: function() {
- var prevState = this.state;
-
- if (this.state === Queueable.IDLE) {
- return false;
- }
-
- this.processed = this.percent = 0;
- this.loaded = this.processed; // for backward compatibility
-
- this.startedTimestamp = 0;
-
- this.state = Queueable.IDLE;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('stopped');
- return true;
- },
-
-
- done: function(result) {
- var prevState = this.state;
-
- if (this.state === Queueable.DONE) {
- return false;
- }
-
- this.processed = this.total;
- this.loaded = this.processed; // for backward compatibility
- this.percent = 100;
-
- this.processedTimestamp = +new Date();
-
- this.state = Queueable.DONE;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('done', result);
- this.trigger('processed');
- return true;
- },
-
-
- failed: function(result) {
- var prevState = this.state;
-
- if (this.state === Queueable.FAILED) {
- return false;
- }
-
- this.processed = this.percent = 0; // reset the progress
- this.loaded = this.processed; // for backward compatibility
-
- this.processedTimestamp = +new Date();
-
- this.state = Queueable.FAILED;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('failed', result);
- this.trigger('processed');
- return true;
- },
-
-
- progress: function(processed, total) {
- if (total) {
- this.total = total; // is this even required?
- }
-
- this.processed = Math.min(processed, this.total);
- this.loaded = this.processed; // for backward compatibility
- this.percent = Math.ceil(this.processed / this.total * 100);
-
- this.trigger({
- type: 'progress',
- loaded: this.processed,
- total: this.total
- });
- },
-
-
- destroy: function() {
- var prevState = this.state;
-
- if (this.state === Queueable.DESTROYED) {
- return false; // already destroyed
- }
-
- this.state = Queueable.DESTROYED;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('destroy');
- this.unbindAll();
- return true;
- }
-
- });
-
- return Queueable;
-
- }(Optionable));
-});
-
-// Included from: src/core/Stats.js
-
-/**
-@class plupload.core.Stats
-@constructor
-@private
-*/
-define('plupload/core/Stats', [], function() {
-
- return function() {
- var self = this;
-
- /**
- * Total queue file size.
- *
- * @property size
- * @deprecated use total
- * @type Number
- */
- self.size = 0;
-
- /**
- * Total size of the queue in units.
- *
- * @property total
- * @since 3.0
- * @type Number
- */
- self.total = 0;
-
- /**
- * Total bytes uploaded.
- *
- * @property loaded
- * @type Number
- */
- self.loaded = 0;
-
-
- /**
- * Number of files uploaded successfully.
- *
- * @property uploaded
- * @deprecated use done
- * @type Number
- */
- self.uploaded = 0;
-
- /**
- * Number of items processed successfully.
- *
- * @property done
- * @since 3.0
- * @type Number
- */
- self.done = 0;
-
- /**
- * Number of failed items.
- *
- * @property failed
- * @type Number
- */
- self.failed = 0;
-
- /**
- * Number of items yet to be processed.
- *
- * @property queued
- * @type Number
- */
- self.queued = 0;
-
- /**
- * Number of items currently paused.
- *
- * @property paused
- * @type Number
- */
- self.paused = 0;
-
- /**
- * Number of items being processed.
- *
- * @property processing
- * @type Number
- */
- self.processing = 0;
-
-
- /**
- * Number of items being paused.
- *
- * @property paused
- * @type Number
- */
- self.paused = 0;
-
- /**
- * Percent of processed units.
- *
- * @property percent
- * @type Number
- */
- self.percent = 0;
-
- /**
- * Bytes processed per second.
- *
- * @property bytesPerSec
- * @deprecated use processedPerSec
- * @type Number
- */
- self.bytesPerSec = 0;
-
- /**
- * Units processed per second.
- *
- * @property processedPerSec
- * @since 3.0
- * @type Number
- */
- self.processedPerSec = 0;
-
- /**
- * Resets the progress to its initial values.
- *
- * @method reset
- */
- self.reset = function() {
- self.size = // deprecated
- self.total =
- self.loaded = // deprecated
- self.processed =
- self.uploaded = // deprecated
- self.done =
- self.failed =
- self.queued =
- self.processing =
- self.paused =
- self.percent =
- self.bytesPerSec = // deprecated
- self.processedPerSec = 0;
- };
- };
-});
-
-// Included from: src/core/Queue.js
-
-/**
- * Queue.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-@contsructor
-@class plupload.core.Queue
-@private
-*/
-define('plupload/core/Queue', [
- 'plupload',
- 'plupload/core/ArrCollection',
- 'plupload/core/Queueable',
- 'plupload/core/Stats'
-], function(plupload, ArrCollection, Queueable, Stats) {
-
- var dispatches = [
- /**
- * Dispatched as soon as activity starts
- *
- * @event started
- * @param {Object} event
- */
- 'Started',
-
-
- /**
- * Dispatched as activity progresses
- *
- * @event progress
- * @param {Object} event
- * @param {Number} processed
- * @param {Number} total
- * @param {plupload.core.Stats} stats
- */
- 'Progress',
-
- /**
- * Dispatched when activity is paused
- *
- * @event paused
- * @param {Object} event
- */
- 'Paused',
-
- /**
- * Dispatched when there's no more items in processing
- *
- * @event done
- * @param {Object} event
- */
- 'Done',
-
- /**
- * Dispatched as soon as activity ends
- *
- * @event stopped
- * @param {Object} event
- */
- 'Stopped',
-
- /**
- * Dispatched when queue is destroyed
- *
- * @event destroy
- * @param {Object} event
- */
- 'Destroy'
- ];
-
- /**
- * @class Queue
- * @constructor
- * @extends EventTarget
- */
- return (function(Parent) {
- plupload.inherit(Queue, Parent);
-
-
- function Queue(options) {
- Parent.apply(this, arguments);
-
- /**
- @property _queue
- @type {Collection}
- @private
- */
- this._queue = new ArrCollection();
-
-
- /**
- @property stats
- @type {Stats}
- @readOnly
- */
- this.stats = new Stats();
-
-
- this._options = plupload.extend({}, this._options, {
- max_slots: 1,
- max_retries: 0,
- auto_start: false,
- finish_active: false
- }, options);
- }
-
- plupload.extend(Queue.prototype, {
-
- /**
- * Returns number of items in the queue
- *
- * @method count
- * @returns {Number}
- */
- count: function() {
- return this._queue.count();
- },
-
- /**
- * Start the queue
- *
- * @method start
- */
- start: function() {
- if (!Queue.parent.start.call(this)) {
- return false;
- }
- return processNext.call(this);
- },
-
-
- pause: function() {
- if (!Queue.parent.pause.call(this)) {
- return false;
- }
-
- this.forEachItem(function(item) {
- item.pause();
- });
- },
-
- /**
- * Stop the queue. If `finish_active=true` the queue will wait until active items are done, before
- * stopping.
- *
- * @method stop
- */
- stop: function() {
- if (!Queue.parent.stop.call(this) || this.getOption('finish_active')) {
- return false;
- }
-
- if (this.isActive()) {
- this.forEachItem(function(item) {
- item.stop();
- });
- }
- },
-
-
- forEachItem: function(cb) {
- this._queue.each(cb);
- },
-
-
- getItem: function(uid) {
- return this._queue.get(uid);
- },
-
-
- /**
- * Add instance of Queueable to the queue. If `auto_start=true` queue will start as well.
- *
- * @method addItem
- * @param {Queueable} item
- */
- addItem: function(item) {
- var self = this;
-
- item.bind('Started', function() {
- if (self.calcStats()) {
- plupload.delay.call(self, processNext);
- }
- });
-
- item.bind('Resumed',function() {
- self.start();
- });
-
- item.bind('Paused', function() {
- if (self.calcStats()) {
- plupload.delay.call(self, function() {
- if (!processNext.call(self) && !self.stats.processing) {
- self.pause();
- }
- });
- }
- });
-
- item.bind('Processed Stopped', function() {
- if (self.calcStats()) {
- plupload.delay.call(self, function() {
- if (!processNext.call(self) && !this.isStopped() && !this.isActive()) {
- self.stop();
- }
- });
- }
- });
-
- item.bind('Progress', function() {
- if (self.calcStats()) {
- self.trigger('Progress', self.stats.processed, self.stats.total, self.stats);
- }
- });
-
- item.bind('Failed', function() {
- if (self.getOption('max_retries') && this.retries < self.getOption('max_retries')) {
- this.stop();
- this.retries++;
- }
- });
-
- this._queue.add(item.uid, item);
- this.calcStats();
- item.trigger('Queued');
-
- if (self.getOption('auto_start') || self.state === Queueable.PAUSED) {
- plupload.delay.call(this, this.start);
- }
- },
-
-
- /**
- * Extracts item from the queue by its uid and returns it.
- *
- * @method extractItem
- * @param {String} uid
- * @return {Queueable} Item that was removed
- */
- extractItem: function(uid) {
- var item = this._queue.get(uid);
- if (item) {
- this.stopItem(item.uid);
- this._queue.remove(uid);
- this.calcStats();
- }
- return item;
- },
-
- /**
- * Removes item from the queue and destroys it
- *
- * @method removeItem
- * @param {String} uid
- * @returns {Boolean} Result of the operation
- */
- removeItem: function(uid) {
- var item = this.extractItem(uid);
- if (item) {
- item.destroy();
- return true;
- }
- return false;
- },
-
-
- stopItem: function(uid) {
- var item = this._queue.get(uid);
- if (item) {
- return item.stop();
- } else {
- return false;
- }
- },
-
-
- pauseItem: function(uid) {
- var item = this._queue.get(uid);
- if (item) {
- return item.pause();
- } else {
- return false;
- }
- },
-
-
- resumeItem: function(uid) {
- var item = this._queue.get(uid);
- if (item) {
- plupload.delay.call(this, function() {
- this.start(); // start() will know if it needs to restart the queue
- });
- return item.resume();
- } else {
- return false;
- }
- },
-
-
- splice: function(start, length) {
- return this._queue.splice(start, length);
- },
-
-
- isActive: function() {
- return this.stats && (this.stats.processing || this.stats.paused);
- },
-
- isStopped: function() {
- return this.state === Queueable.IDLE || this.state === Queueable.DESTROYED;
- },
-
-
- countSpareSlots: function() {
- return Math.max(this.getOption('max_slots') - this.stats.processing, 0);
- },
-
-
- toArray: function() {
- return this._queue.toArray();
- },
-
-
- clear: function() {
- var self = this;
-
- if (self.state !== Queueable.IDLE) {
- // stop the active queue first
- self.bindOnce('Stopped', function() {
- self.clear();
- });
- return self.stop();
- } else {
- self._queue.clear();
- self.stats.reset();
- }
- },
-
-
- calcStats: function() {
- var self = this;
- var stats = self.stats;
- var processed = 0;
- var processedDuringThisSession = 0;
-
- if (!stats) {
- return false; // maybe queue is destroyed
- }
-
- stats.reset();
-
- self.forEachItem(function(item) {
- switch (item.state) {
- case Queueable.DONE:
- stats.done++;
- stats.uploaded = stats.done; // for backward compatibility
- break;
-
- case Queueable.FAILED:
- stats.failed++;
- break;
-
- case Queueable.PROCESSING:
- stats.processing++;
- break;
-
- case Queueable.PAUSED:
- stats.paused++;
- break;
-
- default:
- stats.queued++;
- }
-
- processed += item.processed;
-
- if (!item.processedTimestamp || item.processedTimestamp > self.startedTimestamp) {
- processedDuringThisSession += processed;
- }
-
- stats.processedPerSec = Math.ceil(processedDuringThisSession / ((+new Date() - self.startedTimestamp || 1) / 1000.0));
-
- stats.processed = processed;
- stats.total += item.total;
- if (stats.total) {
- stats.percent = Math.ceil(stats.processed / stats.total * 100);
- }
- });
-
- // enable properties inherited from Queueable
-
- /* TODO: this is good but it currently conflicts with deprecated total property in Uploader
- self.processed = stats.processed;
- self.total = stats.total;
- */
- self.percent = stats.percent;
-
- // for backward compatibility
- stats.loaded = stats.processed;
- stats.size = stats.total;
- stats.bytesPerSec = stats.processedPerSec;
-
- return true;
- },
-
-
- destroy: function() {
- var self = this;
-
- if (self.state === Queueable.DESTROYED) {
- return false; // already destroyed
- }
-
- if (self.state !== Queueable.IDLE) {
- // stop the active queue first
- self.bindOnce('Stopped', function() {
- plupload.delay.call(self, self.destroy);
- });
- return self.stop();
- } else {
- self.clear();
- Queue.parent.destroy.call(this);
- self._queue = self.stats = null;
- }
- return true;
- }
- });
-
-
- /**
- * Returns another Queueable.IDLE or Queueable.RESUMED item, or null.
- */
- function getNextIdleItem() {
- var nextItem;
- this.forEachItem(function(item) {
- if (item.state === Queueable.IDLE || item.state === Queueable.RESUMED) {
- nextItem = item;
- return false;
- }
- });
- return nextItem ? nextItem : null;
- }
-
-
- function processNext() {
- var item;
-
- if (this.state !== Queueable.PROCESSING && this.state !== Queueable.PAUSED) {
- return false;
- }
-
- if (this.stats.processing < this.getOption('max_slots')) {
- item = getNextIdleItem.call(this);
- if (item) {
- if (item.trigger('beforestart')) {
- item.setOptions(this.getOptions());
- return item.start();
- } else {
- item.pause();
- // we need to call it sync, otherwise another thread may pick up the same file, while it is processed in beforestart handler
- processNext.call(this);
- }
- }
- }
- return false;
- }
-
- return Queue;
-
- }(Queueable));
-});
-
-// Included from: src/QueueUpload.js
-
-/**
- * QueueUpload.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
- @class plupload.QueueUpload
- @extends plupload.core.Queue
- @constructor
- @private
- @final
- @since 3.0
- @param {Object} options
- */
-define('plupload/QueueUpload', [
- 'plupload',
- 'plupload/core/Queue'
-], function(plupload, Queue) {
-
- return (function(Parent) {
- plupload.inherit(QueueUpload, Parent);
-
- function QueueUpload(options) {
-
- Queue.call(this, {
- max_slots: 1,
- max_retries: 0,
- auto_start: false,
- finish_active: false,
- url: false,
- chunk_size: 0,
- multipart: true,
- http_method: 'POST',
- params: {},
- headers: false,
- file_data_name: 'file',
- send_file_name: true,
- stop_on_fail: true
- });
-
- this.setOption = function(option, value) {
- if (typeof(option) !== 'object') {
- if (option == 'max_upload_slots') {
- option = 'max_slots';
- }
- }
- QueueUpload.prototype.setOption.call(this, option, value, true);
- };
-
- this.setOptions(options);
- }
-
- return QueueUpload;
- }(Queue));
-});
-
-// Included from: src/QueueResize.js
-
-/**
- * QueueResize.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
- @class plupload.QueueResize
- @extends plupload.core.Queue
- @constructor
- @private
- @final
- @since 3.0
- @param {Object} options
-*/
-define('plupload/QueueResize', [
- 'plupload',
- 'plupload/core/Queue'
-], function(plupload, Queue) {
-
- return (function(Parent) {
- plupload.inherit(QueueResize, Parent);
-
- function QueueResize(options) {
-
- Queue.call(this, {
- max_slots: 1,
- max_retries: 0,
- auto_start: false,
- finish_active: false,
- resize: {}
- });
-
- this.setOption = function(option, value) {
- if (typeof(option) !== 'object') {
- if (option == 'max_resize_slots') {
- option = 'max_slots';
- }
- }
- QueueResize.prototype.setOption.call(this, option, value, true);
- };
-
-
- this.setOptions(options);
- }
-
-
- return QueueResize;
- }(Queue));
-});
-
-// Included from: src/ChunkUploader.js
-
-/**
- * ChunkUploader.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-/**
- * @class plupload.ChunkUploader
- * @extends plupload.core.Queueable
- * @constructor
- * @private
- * @final
- * @constructor
- */
-define('plupload/ChunkUploader', [
- 'plupload',
- 'plupload/core/Collection',
- 'plupload/core/Queueable'
-], function(plupload, Collection, Queueable) {
- var XMLHttpRequest = moxie.xhr.XMLHttpRequest;
- var FormData = moxie.xhr.FormData;
-
- function ChunkUploader(blob) {
- var _xhr;
-
- Queueable.call(this);
-
- this._options = {
- file_data_name: 'file',
- headers: false,
- http_method: 'POST',
- multipart: true,
- params: {},
- send_file_name: true,
- url: false
- };
-
- plupload.extend(this, {
-
- start: function() {
- var self = this;
- var url;
- var formData;
- var prevState = this.state;
- var options = self._options;
-
- if (this.state === Queueable.PROCESSING) {
- return false;
- }
-
- if (!this.startedTimestamp) {
- this.startedTimestamp = +new Date();
- }
-
- this.state = Queueable.PROCESSING;
- this.trigger('statechanged', this.state, prevState);
-
- _xhr = new XMLHttpRequest();
-
- if (_xhr.upload) {
- _xhr.upload.onprogress = function(e) {
- self.progress(e.loaded, e.total);
- };
- }
-
- _xhr.onload = function() {
- var result = {
- response: this.responseText,
- status: this.status,
- responseHeaders: this.getAllResponseHeaders()
- };
-
- if (this.status < 200 || this.status >= 400) { // assume error
- return self.failed(result);
- }
-
- self.done(result);
- };
-
- _xhr.onerror = function() {
- self.failed(); // TODO: reason here
- };
-
- _xhr.onloadend = function() {
- // we do not need _xhr anymore, so destroy it
- setTimeout(function() { // we detach to sustain reference until all handlers are done
- if (_xhr) {
- _xhr.destroy();
- _xhr = null;
- }
- }, 1);
- };
-
- try {
- url = options.multipart ? options.url : buildUrl(options.url, options.params);
- _xhr.open(options.http_method, url, true);
-
-
- // headers must be set after request is already opened, otherwise INVALID_STATE_ERR exception will raise
- if (!plupload.isEmptyObj(options.headers)) {
- plupload.each(options.headers, function(val, key) {
- _xhr.setRequestHeader(key, val);
- });
- }
-
-
- if (options.multipart) {
- formData = new FormData();
-
- if (!plupload.isEmptyObj(options.params)) {
- plupload.each(options.params, function(val, key) {
- formData.append(key, val);
- });
- }
-
- formData.append(options.file_data_name, blob);
-
- _xhr.send(formData);
- } else { // if no multipart, send as binary stream
- if (plupload.isEmptyObj(options.headers) || !_xhr.hasRequestHeader('content-type')) {
- _xhr.setRequestHeader('content-type', 'application/octet-stream'); // binary stream header
- }
-
- _xhr.send(blob);
- }
-
- this.trigger('started');
- } catch(ex) {
- self.failed();
- }
- },
-
-
- stop: function() {
- if (_xhr) {
- _xhr.abort();
- _xhr.destroy();
- _xhr = null;
- }
- ChunkUploader.prototype.stop.call(this);
- },
-
- setOption: function(option, value) {
- ChunkUploader.prototype.setOption.call(this, option, value, true);
- },
-
- setOptions: function(options) {
- ChunkUploader.prototype.setOption.call(this, options, true);
- },
-
- destroy: function() {
- this.stop();
- ChunkUploader.prototype.destroy.call(this);
- }
- });
-
-
- /**
- * Builds a full url out of a base URL and an object with items to append as query string items.
- *
- * @method buildUrl
- * @private
- * @param {String} url Base URL to append query string items to.
- * @param {Object} items Name/value object to serialize as a querystring.
- * @return {String} String with url + serialized query string items.
- */
- function buildUrl(url, items) {
- var query = '';
-
- plupload.each(items, function(value, name) {
- query += (query ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);
- });
-
- if (query) {
- url += (url.indexOf('?') > 0 ? '&' : '?') + query;
- }
-
- return url;
- }
-
- }
-
- plupload.inherit(ChunkUploader, Queueable);
-
- return ChunkUploader;
-});
-
-// Included from: src/FileUploader.js
-
-/**
- * FileUploader.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.se.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-/**
- * @class plupload.FileUploader
- * @extends plupload.core.Queueable
- * @constructor
- * @since 3.0
- * @final
- */
-define('plupload/FileUploader', [
- 'plupload',
- 'plupload/core/Collection',
- 'plupload/core/Queueable',
- 'plupload/ChunkUploader'
-], function(plupload, Collection, Queueable, ChunkUploader) {
-
-
- function FileUploader(file, queue) {
- var _chunks = new Collection();
- var _totalChunks = 1;
-
- Queueable.call(this);
-
- this._options = {
- chunk_size: 0,
- params: {},
- send_file_name: true,
- stop_on_fail: true
- };
-
- plupload.extend(this, {
- /**
- When send_file_name is set to true, will be sent with the request as `name` param.
- Can be used on server-side to override original file name.
-
- @property name
- @type {String}
- */
- name: file.name,
-
-
- start: function() {
- var self = this;
- var prevState = this.state;
- var up;
-
- if (this.state === Queueable.PROCESSING) {
- return false;
- }
-
- if (!this.startedTimestamp) {
- this.startedTimestamp = +new Date();
- }
-
- this.state = Queueable.PROCESSING;
- this.trigger('statechanged', this.state, prevState);
-
- // send additional 'name' parameter only if required or explicitly requested
- if (self._options.send_file_name) {
- self._options.params.name = self.target_name || self.name;
- }
-
- if (self._options.chunk_size) {
- _totalChunks = Math.ceil(file.size / self._options.chunk_size);
- self.uploadChunk(false, true);
- } else {
- up = new ChunkUploader(file);
-
- up.bind('progress', function(e) {
- self.progress(e.loaded, e.total);
- });
-
- up.bind('done', function(e, result) {
- self.done(result);
- });
-
- up.bind('failed', function(e, result) {
- self.failed(result);
- });
-
- up.setOptions(self._options);
-
- queue.addItem(up);
- }
-
- this.trigger('started');
- },
-
-
- uploadChunk: function(seq, dontStop) {
- var self = this;
- var chunkSize = this.getOption('chunk_size');
- var up;
- var chunk = {};
- var _options;
-
- chunk.seq = parseInt(seq, 10) || getNextChunk();
- chunk.start = chunk.seq * chunkSize;
- chunk.end = Math.min(chunk.start + chunkSize, file.size);
- chunk.total = file.size;
-
- // do not proceed for weird chunks
- if (chunk.start < 0 || chunk.start >= file.size) {
- return false;
- }
-
- _options = plupload.extendImmutable({}, this.getOptions(), {
- params: {
- chunk: chunk.seq,
- chunks: _totalChunks
- }
- });
-
- up = new ChunkUploader(file.slice(chunk.start, chunk.end, file.type));
-
- up.bind('progress', function(e) {
- self.progress(calcProcessed() + e.loaded, file.size);
- });
-
- up.bind('failed', function(e, result) {
- _chunks.add(chunk.seq, plupload.extend({
- state: Queueable.FAILED
- }, chunk));
-
- self.trigger('chunkuploadfailed', plupload.extendImmutable({}, chunk, result));
-
- if (_options.stop_on_fail) {
- self.failed(result);
- }
- });
-
- up.bind('done', function(e, result) {
- _chunks.add(chunk.seq, plupload.extend({
- state: Queueable.DONE
- }, chunk));
-
- self.trigger('chunkuploaded', plupload.extendImmutable({}, chunk, result));
-
- if (calcProcessed() >= file.size) {
- self.progress(file.size, file.size);
- self.done(result); // obviously we are done
- } else if (dontStop) {
- plupload.delay(function() {
- self.uploadChunk(getNextChunk(), dontStop);
- });
- }
- });
-
- up.bind('processed', function() {
- this.destroy();
- });
-
- up.setOptions(_options);
-
- _chunks.add(chunk.seq, plupload.extend({
- state: Queueable.PROCESSING
- }, chunk));
-
- queue.addItem(up);
-
- // enqueue even more chunks if slots available
- if (dontStop && queue.countSpareSlots()) {
- self.uploadChunk(getNextChunk(), dontStop);
- }
-
- return true;
- },
-
- destroy: function() {
- FileUploader.prototype.destroy.call(this);
- _chunks.clear();
- }
- });
-
-
- function calcProcessed() {
- var processed = 0;
-
- _chunks.each(function(item) {
- if (item.state === Queueable.DONE) {
- processed += (item.end - item.start);
- }
- });
-
- return processed;
- }
-
-
- function getNextChunk() {
- var i = 0;
- while (i < _totalChunks && _chunks.hasKey(i)) {
- i++;
- }
- return i;
- }
-
- }
-
-
- plupload.inherit(FileUploader, Queueable);
-
- return FileUploader;
-});
-
-// Included from: src/ImageResizer.js
-
-/**
- * ImageResizer.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-/**
- @class plupload.ImageResizer
- @extends plupload.core.Queueable
- @constructor
- @private
- @final
- @since 3.0
- @param {plupload.File} fileRef
-*/
-define("plupload/ImageResizer", [
- 'plupload',
- 'plupload/core/Queueable'
-], function(plupload, Queueable) {
- var mxiImage = moxie.image.Image;
-
- function ImageResizer(fileRef) {
-
- Queueable.call(this);
-
- this._options = {
- type: 'image/jpeg',
- quality: 90,
- crop: false,
- fit: true,
- preserveHeaders: true,
- resample: 'default',
- multipass: true
- };
-
- this.setOption = function(option, value) {
- if (typeof(option) !== 'object' && !this._options.hasOwnProperty(option)) {
- return;
- }
- ImageResizer.prototype.setOption.apply(this, arguments);
- };
-
-
- this.start = function(options) {
- var self = this;
- var img;
-
- if (options) {
- this.setOptions(options.resize);
- }
-
- img = new mxiImage();
-
- img.bind('load', function() {
- this.resize(self.getOptions());
- });
-
- img.bind('resize', function() {
- self.done(this.getAsBlob(self.getOption('type'), self.getOption('quality')));
- this.destroy();
- });
-
- img.bind('error', function() {
- self.failed();
- this.destroy();
- });
-
- img.load(fileRef, self.getOption('runtimeOptions'));
- };
- }
-
- plupload.inherit(ImageResizer, Queueable);
-
- // ImageResizer is only included for builds with Image manipulation support, so we add plupload.Image here manually
- plupload.Image = mxiImage;
-
- return ImageResizer;
-});
-
-// Included from: src/File.js
-
-/**
- * File.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.se.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-/**
- * @class plupload.File
- * @extends plupload.core.Queueable
- * @constructor
- * @since 3.0
- * @final
- */
-define('plupload/File', [
- 'plupload',
- 'plupload/core/Queueable',
- 'plupload/FileUploader',
- 'plupload/ImageResizer'
-], function(plupload, Queueable, FileUploader, ImageResizer) {
-
- function File(file, queueUpload, queueResize) {
- Queueable.call(this);
-
-
- plupload.extend(this, {
- /**
- * For backward compatibility
- *
- * @property id
- * @type {String}
- * @deprecated
- */
- id: this.uid,
-
-
- /**
- When send_file_name is set to true, will be sent with the request as `name` param.
- Can be used on server-side to override original file name.
-
- @property name
- @type {String}
- */
- name: file.name,
-
- /**
- @property target_name
- @type {String}
- @deprecated use name
- */
- target_name: null,
-
- /**
- * File type, `e.g image/jpeg`
- *
- * @property type
- * @type String
- */
- type: file.type,
-
- /**
- * File size in bytes (may change after client-side manupilation).
- *
- * @property size
- * @type Number
- */
- size: file.size,
-
- /**
- * Original file size in bytes.
- *
- * @property origSize
- * @type Number
- */
- origSize: file.size,
-
- start: function() {
- var prevState = this.state;
-
- if (this.state === Queueable.PROCESSING) {
- return false;
- }
-
- this.state = Queueable.PROCESSING;
- this.trigger('statechanged', this.state, prevState);
- this.trigger('started');
-
- if (!plupload.isEmptyObj(this._options.resize) && isImage(this.type) && runtimeCan(file, 'send_binary_string')) {
- this.resizeAndUpload();
- } else {
- this.upload();
- }
- return true;
- },
-
- /**
- * Get the file for which this File is responsible
- *
- * @method getSource
- * @returns {moxie.file.File}
- */
- getSource: function() {
- return file;
- },
-
- /**
- * Returns file representation of the current runtime. For HTML5 runtime
- * this is going to be native browser File object
- * (for backward compatibility)
- *
- * @method getNative
- * @deprecated
- * @returns {File|Blob|Object}
- */
- getNative: function() {
- return this.getFile().getSource();
- },
-
-
- resizeAndUpload: function() {
- var self = this;
- var opts = self.getOptions();
- var rszr = new ImageResizer(file);
-
- rszr.bind('progress', function(e) {
- self.progress(e.loaded, e.total);
- });
-
- rszr.bind('done', function(e, file) {
- file = file;
- self.upload();
- });
-
- rszr.bind('failed', function() {
- self.upload();
- });
-
- rszr.setOption('runtimeOptions', {
- runtime_order: opts.runtimes,
- required_caps: opts.required_features,
- preferred_caps: opts.preferred_caps,
- swf_url: opts.flash_swf_url,
- xap_url: opts.silverlight_xap_url
- });
-
- queueResize.addItem(rszr);
- },
-
-
- upload: function() {
- var self = this;
- var up = new FileUploader(file, queueUpload);
-
- up.bind('paused', function() {
- self.pause();
- });
-
- up.bind('resumed', function() {
- this.start();
- });
-
- up.bind('started', function() {
- self.trigger('startupload');
- });
-
- up.bind('progress', function(e) {
- self.progress(e.loaded, e.total);
- });
-
- up.bind('done', function(e, result) {
- self.done(result);
- });
-
- up.bind('failed', function(e, result) {
- self.failed(result);
- });
-
- up.setOptions(self.getOptions());
-
- up.start();
- },
-
-
-
- destroy: function() {
- File.prototype.destroy.call(this);
- file = null;
- }
- });
- }
-
-
- function isImage(type) {
- return plupload.inArray(type, ['image/jpeg', 'image/png']) > -1;
- }
-
-
- function runtimeCan(blob, cap) {
- if (blob.ruid) {
- var info = plupload.Runtime.getInfo(blob.ruid);
- if (info) {
- return info.can(cap);
- }
- }
- return false;
- }
-
-
- plupload.inherit(File, Queueable);
-
- return File;
-});
-
-// Included from: src/Uploader.js
-
-/**
- * Uploader.js
- *
- * Copyright 2017, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- */
-
-
-/**
-@class plupload.Uploader
-@extends plupload.core.Queue
-@constructor
-@public
-@final
-
-@param {Object} settings For detailed information about each option check documentation.
- @param {String|DOMElement} settings.browse_button id of the DOM element or DOM element itself to use as file dialog trigger.
- @param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled.
- @param {Boolean} [settings.send_chunk_number=true] Whether to send chunks and chunk numbers, or total and offset bytes.
- @param {String|DOMElement} [settings.container] id of the DOM element or DOM element itself that will be used to wrap uploader structures. Defaults to immediate parent of the `browse_button` element.
- @param {String|DOMElement} [settings.drop_element] id of the DOM element or DOM element itself to use as a drop zone for Drag-n-Drop.
- @param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message.
- @param {Object} [settings.filters={}] Set of file type filters.
- @param {Array} [settings.filters.mime_types=[]] List of file types to accept, each one defined by title and list of extensions. `e.g. {title : "Image files", extensions : "jpg,jpeg,gif,png"}`. Dispatches `plupload.FILE_EXTENSION_ERROR`
- @param {String|Number} [settings.filters.max_file_size=0] Maximum file size that the user can pick, in bytes. Optionally supports b, kb, mb, gb, tb suffixes. `e.g. "10mb" or "1gb"`. By default - not set. Dispatches `plupload.FILE_SIZE_ERROR`.
- @param {Boolean} [settings.filters.prevent_duplicates=false] Do not let duplicates into the queue. Dispatches `plupload.FILE_DUPLICATE_ERROR`.
- @param {String} [settings.flash_swf_url] URL of the Flash swf.
- @param {Object} [settings.headers] Custom headers to send with the upload. Hash of name/value pairs.
- @param {String} [settings.http_method="POST"] HTTP method to use during upload (only PUT or POST allowed).
- @param {Number} [settings.max_retries=0] How many times to retry the chunk or file, before triggering Error event.
- @param {Boolean} [settings.multipart=true] Whether to send file and additional parameters as Multipart formated message.
- @param {Boolean} [settings.multi_selection=true] Enable ability to select multiple files at once in file dialog.
- @param {Object} [settings.params] Hash of key/value pairs to send with every file upload.
- @param {String|Object} [settings.required_features] Either comma-separated list or hash of required features that chosen runtime should absolutely possess.
- @param {Object} [settings.resize] Enable resizing of images on client-side. Applies to `image/jpeg` and `image/png` only. `e.g. {width : 200, height : 200, quality : 90, crop: true}`
- @param {Number} settings.resize.width Resulting width
- @param {Number} [settings.resize.height=width] Resulting height (optional, if not supplied will default to width)
- @param {String} [settings.resize.type='image/jpeg'] MIME type of the resulting image
- @param {Number} [settings.resize.quality=90] In the case of JPEG, controls the quality of resulting image
- @param {Boolean} [settings.resize.crop='cc'] If not falsy, image will be cropped, by default from center
- @param {Boolean} [settings.resize.fit=true] In case of crop whether to upscale the image to fit the exact dimensions
- @param {Boolean} [settings.resize.preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize)
- @param {String} [settings.resize.resample='default'] Resampling algorithm to use during resize
- @param {Boolean} [settings.resize.multipass=true] Whether to scale the image in steps (results in better quality)
- @param {String} [settings.runtimes="html5,flash,silverlight,html4"] Comma separated list of runtimes, that Plupload will try in turn, moving to the next if previous fails.
- @param {Boolean} [settings.send_file_name=true] Whether to send file name as additional argument - 'name' (required for chunked uploads and some other cases where file name cannot be sent via normal ways).
- @param {String} [settings.silverlight_xap_url] URL of the Silverlight xap.
- @param {Boolean} [settings.unique_names=false] If true will generate unique filenames for uploaded files.
- @param {String} settings.url URL of the server-side upload handler.
-*/
-
-/**
-Fires when the current RunTime has been initialized.
-
-@event Init
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires after the init event incase you need to perform actions there.
-
-@event PostInit
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires when the option is changed in via uploader.setOption().
-
-@event OptionChanged
-@since 2.1
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {String} name Name of the option that was changed
-@param {Mixed} value New value for the specified option
-@param {Mixed} oldValue Previous value of the option
- */
-
-/**
-Fires when the silverlight/flash or other shim needs to move.
-
-@event Refresh
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires when the overall state is being changed for the upload queue.
-
-@event StateChanged
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires when browse_button is clicked and browse dialog shows.
-
-@event Browse
-@since 2.1.2
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires for every filtered file before it is added to the queue.
-
-@event FileFiltered
-@since 2.1
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file Another file that has to be added to the queue.
- */
-
-/**
-Fires when the file queue is changed. In other words when files are added/removed to the files array of the uploader instance.
-
-@event QueueChanged
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires after files were filtered and added to the queue.
-
-@event FilesAdded
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Array} files Array of FileUploader objects that were added to the queue by user.
- */
-
-/**
-Fires when file is removed from the queue.
-
-@event FilesRemoved
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Array} files Array of files that got removed.
- */
-
-/**
-Fires just before a file is uploaded. Can be used to cancel upload of the current file
-by returning false from the handler.
-
-@event BeforeUpload
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File to be uploaded.
- */
-
-/**
-Fires when a file is to be uploaded by the runtime.
-
-@event UploadFile
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File to be uploaded.
- */
-
-/**
-Fires while a file is being uploaded. Use this event to update the current file upload progress.
-
-@event UploadProgress
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File that is currently being uploaded.
- */
-
-/**
-Fires when file chunk is uploaded.
-
-@event ChunkUploaded
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File that the chunk was uploaded for.
-@param {Object} result Object with response properties.
- @param {Number} result.offset The amount of bytes the server has received so far, including this chunk.
- @param {Number} result.total The size of the file.
- @param {String} result.response The response body sent by the server.
- @param {Number} result.status The HTTP status code sent by the server.
- @param {String} result.responseHeaders All the response headers as a single string.
- */
-
-/**
-Fires when a file is successfully uploaded.
-
-@event FileUploaded
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {plupload.File} file File that was uploaded.
-@param {Object} result Object with response properties.
- @param {String} result.response The response body sent by the server.
- @param {Number} result.status The HTTP status code sent by the server.
- @param {String} result.responseHeaders All the response headers as a single string.
- */
-
-/**
-Fires when all files in a queue are uploaded
-
-@event UploadComplete
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-
-/**
-Fires whenever upload is aborted for some reason
-
-@event CancelUpload
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-
-/**
-Fires when a error occurs.
-
-@event Error
-@param {plupload.Uploader} uploader Uploader instance sending the event.
-@param {Object} error Contains code, message and sometimes file and other details.
- @param {Number} error.code The plupload error code.
- @param {String} error.message Description of the error (uses i18n).
- */
-
-/**
-Fires when destroy method is called.
-
-@event Destroy
-@param {plupload.Uploader} uploader Uploader instance sending the event.
- */
-define('plupload/Uploader', [
- 'plupload',
- 'plupload/core/Collection',
- 'plupload/core/Queue',
- 'plupload/QueueUpload',
- 'plupload/QueueResize',
- 'plupload/File'
-], function(plupload, Collection, Queue, QueueUpload, QueueResize, PluploadFile) {
-
- var fileFilters = {};
- var undef;
-
-
- function Uploader(options) {
- var _fileInputs = [];
- var _fileDrops = [];
- var _queueUpload, _queueResize;
- var _initialized = false;
- var _disabled = false;
-
- var _options = normalizeOptions(plupload.extend({
- backward_compatibility: true,
- chunk_size: 0,
- file_data_name: 'file',
- filters: {
- mime_types: '*',
- prevent_duplicates: false,
- max_file_size: 0
- },
- flash_swf_url: 'js/Moxie.swf',
- // @since 2.3
- http_method: 'POST',
- // headers: false, // Plupload had a required feature with the same name, comment it to avoid confusion
- max_resize_slots: 1,
- max_retries: 0,
- max_upload_slots: 1,
- multipart: true,
- multipart_params: {}, // deprecated, use - params,
- multi_selection: true,
- // @since 3
- params: {},
- resize: false,
- runtimes: plupload.Runtime.order,
- send_chunk_number: true, // whether to send chunks and chunk numbers, instead of total and offset bytes
- send_file_name: true,
- silverlight_xap_url: 'js/Moxie.xap',
-
- // during normalization, these should be processed last
- required_features: false,
- preferred_caps: false
- }, options));
-
- Queue.call(this);
-
-
- // Add public methods
- plupload.extend(this, {
-
- _options: _options,
-
- /**
- * Unique id for the Uploader instance.
- *
- * @property id
- * @type String
- */
- id: this.uid,
-
- /**
- * Current state of the total uploading progress. This one can either be plupload.STARTED or plupload.STOPPED.
- * These states are controlled by the stop/start methods. The default value is STOPPED.
- *
- * @property state
- * @type Number
- */
- state: plupload.STOPPED,
-
- /**
- * Map of features that are available for the uploader runtime. Features will be filled
- * before the init event is called, these features can then be used to alter the UI for the end user.
- * Some of the current features that might be in this map is: dragdrop, chunks, jpgresize, pngresize.
- *
- * @property features
- * @type Object
- * @deprecated
- */
- features: {},
-
- /**
- * Object with name/value settings.
- *
- * @property settings
- * @type Object
- * @deprecated Use `getOption()/setOption()`
- */
- settings : _options,
-
- /**
- * Current runtime name
- *
- * @property runtime
- * @type String
- * @deprecated There might be multiple runtimes per uploader
- */
- runtime: null,
-
- /**
- * Current upload queue, an array of File instances
- *
- * @property files
- * @deprecated use forEachItem(callback) to cycle over the items in the queue
- * @type Array
- */
- files: [],
-
- /**
- * Total progess information. How many files has been uploaded, total percent etc.
- *
- * @property total
- * @deprecated use stats
- */
- total: this.stats,
-
- /**
- * Initializes the Uploader instance and adds internal event listeners.
- *
- * @method init
- */
- init: function() {
- var self = this, preinitOpt, err;
-
- preinitOpt = self.getOption('preinit');
- if (typeof(preinitOpt) == "function") {
- preinitOpt(self);
- } else {
- plupload.each(preinitOpt, function(func, name) {
- self.bind(name, func);
- });
- }
-
- bindEventListeners.call(self);
-
- // Check for required options
- plupload.each(['container', 'browse_button', 'drop_element'], function(el) {
- if (self.getOption(el) === null) {
- err = {
- code: plupload.INIT_ERROR,
- message: plupload.sprintf(plupload.translate("%s specified, but cannot be found."), el)
- }
- return false;
- }
- });
-
- if (err) {
- return self.trigger('Error', err);
- }
-
-
- if (!self.getOption('browse_button') && !self.getOption('drop_element')) {
- return self.trigger('Error', {
- code: plupload.INIT_ERROR,
- message: plupload.translate("You must specify either browse_button or drop_element.")
- });
- }
-
-
- initControls.call(self, function(initialized) {
- var runtime;
- var initOpt = self.getOption('init');
- var queueOpts = plupload.extendImmutable({}, self.getOption(), { auto_start: true });
-
- if (typeof(initOpt) == "function") {
- initOpt(self);
- } else {
- plupload.each(initOpt, function(func, name) {
- self.bind(name, func);
- });
- }
-
- if (initialized) {
- _initialized = true;
- runtime = plupload.Runtime.getInfo(getRUID());
-
- _queueUpload = new QueueUpload(queueOpts);
- _queueResize = new QueueResize(queueOpts);
-
- self.trigger('Init', {
- ruid: runtime.uid,
- runtime: self.runtime = runtime.type
- });
-
- self.trigger('PostInit');
- } else {
- self.trigger('Error', {
- code: plupload.INIT_ERROR,
- message: plupload.translate('Init error.')
- });
- }
- });
- },
-
- /**
- * Set the value for the specified option(s).
- *
- * @method setOption
- * @since 2.1
- * @param {String|Object} option Name of the option to change or the set of key/value pairs
- * @param {Mixed} [value] Value for the option (is ignored, if first argument is object)
- */
- setOption: function(option, value) {
- if (_initialized) {
- // following options cannot be changed after initialization
- if (plupload.inArray(option, [
- 'container',
- 'browse_button',
- 'drop_element',
- 'runtimes',
- 'multi_selection',
- 'flash_swf_url',
- 'silverlight_xap_url'
- ]) > -1) {
- return this.trigger('Error', {
- code: plupload.OPTION_ERROR,
- message: plupload.sprintf(plupload.translate("%s option cannot be changed.")),
- option: option
- });
- }
- }
-
- if (typeof(option) !== 'object') {
- value = normalizeOption(option, value, this._options);
-
- // queues will take in only appropriate options
- if (_queueUpload) {
- _queueUpload.setOption(option, value);
- }
- if (_queueResize) {
- _queueResize.setOption(option, value);
- }
- }
-
- Uploader.prototype.setOption.call(this, option, value);
- },
-
- /**
- * Refreshes the upload instance by dispatching out a refresh event to all runtimes.
- * This would for example reposition flash/silverlight shims on the page.
- *
- * @method refresh
- */
- refresh: function() {
- if (_fileInputs.length) {
- plupload.each(_fileInputs, function(fileInput) {
- fileInput.trigger('Refresh');
- });
- }
-
- if (_fileDrops.length) {
- plupload.each(_fileDrops, function(fileDrops) {
- fileDrops.trigger('Refresh');
- });
- }
-
- this.trigger('Refresh');
- },
-
- /**
- * Stops the upload of the queued files.
- *
- * @method stop
- */
- stop: function() {
- if (Uploader.prototype.stop.call(this) && this.state != plupload.STOPPED) {
- this.trigger('CancelUpload');
- }
- },
-
-
- /**
- * Disables/enables browse button on request.
- *
- * @method disableBrowse
- * @param {Boolean} disable Whether to disable or enable (default: true)
- */
- disableBrowse: function() {
- _disabled = arguments[0] !== undef ? arguments[0] : true;
-
- if (_fileInputs.length) {
- plupload.each(_fileInputs, function(fileInput) {
- fileInput.disable(_disabled);
- });
- }
-
- this.trigger('DisableBrowse', _disabled);
- },
-
- /**
- * Returns the specified FileUploader object by id
- *
- * @method getFile
- * @deprecated use getItem()
- * @param {String} id FileUploader id to look for
- * @return {plupload.FileUploader}
- */
- getFile: function(id) {
- return this.getItem(id);
- },
-
- /**
- * Adds file to the queue programmatically. Can be native file, instance of Plupload.File,
- * instance of mOxie.File, input[type="file"] element, or array of these. Fires FilesAdded,
- * if any files were added to the queue. Otherwise nothing happens.
- *
- * @method addFile
- * @since 2.0
- * @param {plupload.File|mOxie.File|File|Node|Array} file File or files to add to the queue.
- * @param {String} [fileName] If specified, will be used as a name for the file
- */
- addFile: function(file, fileName) {
- var self = this;
- var queue = [];
- var ruid; // spare runtime uid, for those files that do not have their own
- var filesAdded = []; // here we track the files that got filtered and are added to the queue
-
-
- function bindListeners(fileUp) {
- fileUp.bind('beforestart', function(e) {
- return self.trigger('BeforeUpload', e.target);
- });
-
- fileUp.bind('startupload', function() {
- self.trigger('UploadFile', this);
- });
-
- fileUp.bind('progress', function() {
- self.trigger('UploadProgress', this);
- });
-
- fileUp.bind('done', function(e, args) {
- self.trigger('FileUploaded', this, args);
- });
-
- fileUp.bind('failed', function(e, err) {
- self.trigger('Error', plupload.extend({
- code: plupload.HTTP_ERROR,
- message: plupload.translate('HTTP Error.'),
- file: this
- }, err));
- });
- }
-
-
- function filterFile(file, cb) {
- var queue = [];
- plupload.each(self.getOption('filters'), function(rule, name) {
- if (fileFilters[name]) {
- queue.push(function(cb) {
- fileFilters[name].call(self, rule, file, function(res) {
- cb(!res);
- });
- });
- }
- });
- plupload.inParallel(queue, cb);
- }
-
- /**
- * @method resolveFile
- * @private
- * @param {mxiFile|mxiBlob|FileUploader|File|Blob|input[type="file"]} file
- */
- function resolveFile(file) {
- var type = plupload.typeOf(file);
-
- // mxiFile (final step for other conditional branches)
- if (file instanceof moxie.file.File) {
- if (!file.ruid && !file.isDetached()) {
- if (!ruid) { // weird case
- return false;
- }
- file.ruid = ruid;
- file.connectRuntime(ruid);
- }
-
- queue.push(function(cb) {
- // run through the internal and user-defined filters, if any
- filterFile(file, function(err) {
- var fileUp;
-
- if (!err) {
- fileUp = new PluploadFile(file, _queueUpload, _queueResize);
-
- if (fileName) {
- fileUp.name = fileName;
- }
-
- bindListeners(fileUp);
-
- self.addItem(fileUp); // make files available for the filters by updating the main queue directly
- filesAdded.push(fileUp);
- self.trigger("FileFiltered", fileUp);
- }
-
- plupload.delay(cb); // do not build up recursions or eventually we might hit the limits
- });
- });
- }
- // mxiBlob
- else if (file instanceof moxie.file.Blob) {
- resolveFile(file.getSource());
- file.destroy();
- }
- // native File or blob
- else if (plupload.inArray(type, ['file', 'blob']) !== -1) {
- resolveFile(new moxie.file.File(null, file));
- }
- // input[type="file"]
- else if (type === 'node' && plupload.typeOf(file.files) === 'filelist') {
- // if we are dealing with input[type="file"]
- plupload.each(file.files, resolveFile);
- }
- // mixed array of any supported types (see above)
- else if (type === 'array') {
- fileName = null; // should never happen, but unset anyway to avoid funny situations
- plupload.each(file, resolveFile);
- }
- }
-
- ruid = getRUID();
-
- resolveFile(file);
-
- if (queue.length) {
- plupload.inParallel(queue, function() {
- // if any files left after filtration, trigger FilesAdded
- if (filesAdded.length) {
- self.trigger("FilesAdded", filesAdded);
- }
- });
- }
- },
-
- /**
- * Removes a specific item from the queue
- *
- * @method removeFile
- * @param {plupload.FileUploader|String} file
- */
- removeFile: function(file) {
- var item = this.extractItem(typeof(file) === 'string' ? file : file.uid);
- if (item) {
- this.trigger("FilesRemoved", [item]);
- item.destroy();
- }
- },
-
- /**
- * Removes part of the queue and returns removed files.
- * Triggers FilesRemoved and consequently QueueChanged events.
- *
- * @method splice
- * @param {Number} [start=0] Start index to remove from
- * @param {Number} [length] Length of items to remove
- */
- splice: function() {
- var i = 0;
- var shouldRestart = plupload.STARTED == this.state;
-
- var removed = Queue.prototype.splice.apply(this, arguments);
- if (removed.length) {
- this.trigger("FilesRemoved", removed);
-
- if (shouldRestart) {
- this.stop();
- }
-
- for (i = 0; i < removed.length; i++) {
- removed[i].destroy();
- }
-
- if (shouldRestart) {
- this.start();
- }
- }
- },
-
- /**
- Dispatches the specified event name and its arguments to all listeners.
-
- @method trigger
- @param {String} name Event name to fire.
- @param {Object..} Multiple arguments to pass along to the listener functions.
- */
-
- // override the parent method to match Plupload-like event logic
- dispatchEvent: function(type) {
- var list, args, result;
-
- type = type.toLowerCase();
-
- list = this.hasEventListener(type);
-
- if (list) {
- // sort event list by priority
- list.sort(function(a, b) {
- return b.priority - a.priority;
- });
-
- // first argument should be current plupload.Uploader instance
- args = [].slice.call(arguments);
- args.shift();
- args.unshift(this);
-
- for (var i = 0; i < list.length; i++) {
- // Fire event, break chain if false is returned
- if (list[i].fn.apply(list[i].scope, args) === false) {
- return false;
- }
- }
- }
- return true;
- },
-
- /**
- Check whether uploader has any listeners to the specified event.
-
- @method hasEventListener
- @param {String} name Event name to check for.
- */
-
-
- /**
- Adds an event listener by name.
-
- @method bind
- @param {String} name Event name to listen for.
- @param {function} fn Function to call ones the event gets fired.
- @param {Object} [scope] Optional scope to execute the specified function in.
- @param {Number} [priority=0] Priority of the event handler - handlers with higher priorities will be called first
- */
- bind: function(name, fn, scope, priority) {
- // adapt moxie EventTarget style to Plupload-like
- plupload.Uploader.prototype.bind.call(this, name, fn, priority, scope);
- }
-
- /**
- Removes the specified event listener.
-
- @method unbind
- @param {String} name Name of event to remove.
- @param {function} fn Function to remove from listener.
- */
-
- /**
- Removes all event listeners.
-
- @method unbindAll
- */
- });
-
-
- // keep alive deprecated properties
- if (_options.backward_compatibility) {
- this.bind('FilesAdded FilesRemoved', function (up) {
- up.files = up.toArray();
- }, this, 999);
-
- this.bind('OptionChanged', function (up, name, value) {
- up.settings[name] = typeof(value) == 'object' ? plupload.extend({}, value) : value;
- }, this, 999);
- }
-
-
- function getRUID() {
- var ctrl = _fileInputs[0] || _fileDrops[0];
- if (ctrl) {
- return ctrl.getRuntime().uid;
- }
- return false;
- }
-
-
- function bindEventListeners() {
- this.bind('FilesAdded FilesRemoved', function(up) {
- up.trigger('QueueChanged');
- up.refresh();
- }, this, 999);
-
- this.bind('BeforeUpload', onBeforeUpload);
-
- this.bind('Stopped', function(up) {
- up.trigger('UploadComplete');
- });
-
- this.bind('Error', onError);
-
- this.bind('Destroy', onDestroy);
- }
-
-
- function initControls(cb) {
- var self = this;
- var initialized = 0;
- var queue = [];
-
- // common settings
- var options = {
- runtime_order: self.getOption('runtimes'),
- required_caps: self.getOption('required_features'),
- preferred_caps: self.getOption('preferred_caps'),
- swf_url: self.getOption('flash_swf_url'),
- xap_url: self.getOption('silverlight_xap_url')
- };
-
- // add runtime specific options if any
- plupload.each(self.getOption('runtimes').split(/\s*,\s*/), function(runtime) {
- if (self.getOption(runtime)) {
- options[runtime] = self.getOption(runtime);
- }
- });
-
- // initialize file pickers - there can be many
- if (self.getOption('browse_button')) {
- plupload.each(self.getOption('browse_button'), function(el) {
- queue.push(function(cb) {
- var fileInput = new moxie.file.FileInput(plupload.extend({}, options, {
- accept: self.getOption('filters').mime_types,
- name: self.getOption('file_data_name'),
- multiple: self.getOption('multi_selection'),
- container: self.getOption('container'),
- browse_button: el
- }));
-
- fileInput.onready = function() {
- var info = plupload.Runtime.getInfo(this.ruid);
-
- // for backward compatibility
- plupload.extend(self.features, {
- chunks: info.can('slice_blob'),
- multipart: info.can('send_multipart'),
- multi_selection: info.can('select_multiple')
- });
-
- initialized++;
- _fileInputs.push(this);
- cb();
- };
-
- fileInput.onchange = function() {
- self.addFile(this.files);
- };
-
- fileInput.bind('mouseenter mouseleave mousedown mouseup', function(e) {
- if (!_disabled) {
- if (self.getOption('browse_button_hover')) {
- if ('mouseenter' === e.type) {
- plupload.addClass(el, self.getOption('browse_button_hover'));
- } else if ('mouseleave' === e.type) {
- plupload.removeClass(el, self.getOption('browse_button_hover'));
- }
- }
-
- if (self.getOption('browse_button_active')) {
- if ('mousedown' === e.type) {
- plupload.addClass(el, self.getOption('browse_button_active'));
- } else if ('mouseup' === e.type) {
- plupload.removeClass(el, self.getOption('browse_button_active'));
- }
- }
- }
- });
-
- fileInput.bind('mousedown', function() {
- self.trigger('Browse');
- });
-
- fileInput.bind('error runtimeerror', function() {
- fileInput = null;
- cb();
- });
-
- fileInput.init();
- });
- });
- }
-
- // initialize drop zones
- if (self.getOption('drop_element')) {
- plupload.each(self.getOption('drop_element'), function(el) {
- queue.push(function(cb) {
- var fileDrop = new moxie.file.FileDrop(plupload.extend({}, options, {
- drop_zone: el
- }));
-
- fileDrop.onready = function() {
- var info = plupload.Runtime.getInfo(this.ruid);
-
- // for backward compatibility
- plupload.extend(self.features, {
- chunks: info.can('slice_blob'),
- multipart: info.can('send_multipart'),
- dragdrop: info.can('drag_and_drop')
- });
-
- initialized++;
- _fileDrops.push(this);
- cb();
- };
-
- fileDrop.ondrop = function() {
- self.addFile(this.files);
- };
-
- fileDrop.bind('error runtimeerror', function() {
- fileDrop = null;
- cb();
- });
-
- fileDrop.init();
- });
- });
- }
-
-
- plupload.inParallel(queue, function() {
- if (typeof(cb) === 'function') {
- cb(initialized);
- }
- });
- }
-
-
- // Internal event handlers
- function onBeforeUpload(up, file) {
- // Generate unique target filenames
- if (up.getOption('unique_names')) {
- var matches = file.name.match(/\.([^.]+)$/),
- ext = "part";
- if (matches) {
- ext = matches[1];
- }
- file.target_name = file.id + '.' + ext;
- }
- }
-
-
- function onError(up, err) {
- if (err.code === plupload.INIT_ERROR) {
- up.destroy();
- }
- else if (err.code === plupload.HTTP_ERROR && up.state == plupload.STARTED) {
- up.trigger('CancelUpload');
- }
- }
-
-
- function onDestroy(up) {
- up.forEachItem(function(file) {
- file.destroy();
- });
-
- if (_fileInputs.length) {
- plupload.each(_fileInputs, function(fileInput) {
- fileInput.destroy();
- });
- _fileInputs = [];
- }
-
- if (_fileDrops.length) {
- plupload.each(_fileDrops, function(fileDrop) {
- fileDrop.destroy();
- });
- _fileDrops = [];
- }
-
- _initialized = false;
-
- if (_queueUpload) {
- _queueUpload.destroy();
- }
-
- if (_queueResize) {
- _queueResize.destroy();
- }
-
- _options = _queueUpload = _queueResize = null; // purge these exclusively
-
- }
-
- }
-
-
- // convert plupload features to caps acceptable by mOxie
- function normalizeCaps(settings) {
- var features = settings.required_features,
- caps = {};
-
- function resolve(feature, value, strict) {
- // Feature notation is deprecated, use caps (this thing here is required for backward compatibility)
- var map = {
- chunks: 'slice_blob',
- jpgresize: 'send_binary_string',
- pngresize: 'send_binary_string',
- progress: 'report_upload_progress',
- multi_selection: 'select_multiple',
- dragdrop: 'drag_and_drop',
- drop_element: 'drag_and_drop',
- headers: 'send_custom_headers',
- urlstream_upload: 'send_binary_string',
- canSendBinary: 'send_binary',
- triggerDialog: 'summon_file_dialog'
- };
-
- if (map[feature]) {
- caps[map[feature]] = value;
- } else if (!strict) {
- caps[feature] = value;
- }
- }
-
- if (typeof(features) === 'string') {
- plupload.each(features.split(/\s*,\s*/), function(feature) {
- resolve(feature, true);
- });
- } else if (typeof(features) === 'object') {
- plupload.each(features, function(value, feature) {
- resolve(feature, value);
- });
- } else if (features === true) {
- // check settings for required features
- if (settings.chunk_size && settings.chunk_size > 0) {
- caps.slice_blob = true;
- }
-
- if (!plupload.isEmptyObj(settings.resize) || settings.multipart === false) {
- caps.send_binary_string = true;
- }
-
- if (settings.http_method) {
- caps.use_http_method = settings.http_method;
- }
-
- plupload.each(settings, function(value, feature) {
- resolve(feature, !!value, true); // strict check
- });
- }
-
- return caps;
- }
-
- function normalizeOptions(options) {
- plupload.each(options, function(value, option) {
- options[option] = normalizeOption(option, value, options);
- });
- return options;
- }
-
- /**
- Normalize an option.
-
- @method normalizeOption
- @private
-
- @param {String} option Name of the option to normalize
- @param {Mixed} value
- @param {Object} options The whole set of options, that might be modified during normalization (see max_file_size or unique_names)!
- */
- function normalizeOption(option, value, options) {
- switch (option) {
-
- case 'chunk_size':
- if (value = plupload.parseSize(value)) {
- options.send_file_name = true;
- }
- break;
-
- case 'headers':
- var headers = {};
- if (typeof(value) === 'object') {
- plupload.each(value, function(value, key) {
- headers[key.toLowerCase()] = value;
- });
- }
- return headers;
-
- case 'http_method':
- return value.toUpperCase() === 'PUT' ? 'PUT' : 'POST';
-
-
- case 'filters':
- if (plupload.typeOf(value) === 'array') { // for backward compatibility
- value = {
- mime_types: value
- };
- }
-
- // if file format filters are being updated, regenerate the matching expressions
- if (value.mime_types) {
- if (plupload.typeOf(value.mime_types) === 'string') {
- value.mime_types = plupload.mimes2extList(value.mime_types);
- }
-
- // generate and cache regular expression for filtering file extensions
- options.re_ext_filter = (function(filters) {
- var extensionsRegExp = [];
-
- plupload.each(filters, function(filter) {
- plupload.each(filter.extensions.split(/,/), function(ext) {
- if (/^\s*\*\s*$/.test(ext)) {
- extensionsRegExp.push('\\.*');
- } else {
- extensionsRegExp.push('\\.' + ext.replace(new RegExp('[' + ('/^$.*+?|()[]{}\\'.replace(/./g, '\\$&')) + ']', 'g'), '\\$&'));
- }
- });
- });
-
- return new RegExp('(' + extensionsRegExp.join('|') + ')$', 'i');
- }(value.mime_types));
- }
-
- return value;
-
- case 'max_file_size':
- if (options && !options.filters) {
- options.filters = {};
- }
- options.filters.max_file_size = value;
- break;
-
- case 'multipart':
- if (!value) {
- options.send_file_name = true;
- }
- break;
-
- case 'multipart_params':
- options.params = options.multipart_params = value;
- break;
-
- case 'resize':
- if (value) {
- return plupload.extend({
- preserve_headers: true,
- crop: false
- }, value);
- }
- return false;
-
- case 'prevent_duplicates':
- if (options && !options.filters) {
- options.filters = {};
- }
- options.filters.prevent_duplicates = !!value;
- break;
-
- case 'unique_names':
- if (value) {
- options.send_file_name = true;
- }
- break;
-
- case 'required_features':
- // Normalize the list of required capabilities
- return normalizeCaps(plupload.extend({}, options));
-
- case 'preferred_caps':
- // Come up with the list of capabilities that can affect default mode in a multi-mode runtimes
- return normalizeCaps(plupload.extend({}, options, {
- required_features: true
- }));
-
- // options that require reinitialisation
- case 'container':
- case 'browse_button':
- case 'drop_element':
- return 'container' === option ? plupload.get(value) : plupload.getAll(value);
- }
-
- return value;
- }
-
-
- /**
- * Registers a filter that will be executed for each file added to the queue.
- * If callback returns false, file will not be added.
- *
- * Callback receives two arguments: a value for the filter as it was specified in settings.filters
- * and a file to be filtered. Callback is executed in the context of uploader instance.
- *
- * @method addFileFilter
- * @static
- * @param {String} name Name of the filter by which it can be referenced in settings.filters
- * @param {String} cb Callback - the actual routine that every added file must pass
- */
- function addFileFilter(name, cb) {
- fileFilters[name] = cb;
- }
-
-
- /**
- * A way to predict what runtime will be choosen in the current environment with the
- * specified settings.
- *
- * @method predictRuntime
- * @static
- * @param {Object|String} config Plupload settings to check
- * @param {String} [runtimes] Comma-separated list of runtimes to check against
- * @return {String} Type of compatible runtime
- */
- function predictRuntime(config, runtimes) {
- var up, runtime;
-
- up = new Uploader(config);
- runtime = plupload.Runtime.thatCan(up.getOption('required_features'), runtimes || config.runtimes);
- up.destroy();
- return runtime;
- }
-
-
- addFileFilter('mime_types', function(filters, file, cb) {
- if (filters.length && !this.getOption('re_ext_filter').test(file.name)) {
- this.trigger('Error', {
- code: plupload.FILE_EXTENSION_ERROR,
- message: plupload.translate('File extension error.'),
- file: file
- });
- cb(false);
- } else {
- cb(true);
- }
- });
-
-
- addFileFilter('max_file_size', function(maxSize, file, cb) {
- var undef;
-
- maxSize = plupload.parseSize(maxSize);
-
- // Invalid file size
- if (file.size !== undef && maxSize && file.size > maxSize) {
- this.trigger('Error', {
- code: plupload.FILE_SIZE_ERROR,
- message: plupload.translate('File size error.'),
- file: file
- });
- cb(false);
- } else {
- cb(true);
- }
- });
-
-
- addFileFilter('prevent_duplicates', function(value, file, cb) {
- var self = this;
- if (value) {
- this.forEachItem(function(item) {
- // Compare by name and size (size might be 0 or undefined, but still equivalent for both)
- if (file.name === item.name && file.size === item.size) {
- self.trigger('Error', {
- code: plupload.FILE_DUPLICATE_ERROR,
- message: plupload.translate('Duplicate file error.'),
- file: file
- });
- cb(false);
- return;
- }
- });
- }
- cb(true);
- });
-
-
- addFileFilter('prevent_empty', function(value, file, cb) {
- if (value && !file.size && file.size !== undef) {
- this.trigger('Error', {
- code : plupload.FILE_SIZE_ERROR,
- message : plupload.translate('File size error.'),
- file : file
- });
- cb(false);
- } else {
- cb(true);
- }
- });
-
-
- Uploader.addFileFilter = addFileFilter;
-
- plupload.inherit(Uploader, Queue);
-
- // for backward compatibility
- plupload.addFileFilter = addFileFilter;
- plupload.predictRuntime = predictRuntime;
-
- return Uploader;
-});
-
-expose(["plupload","plupload/core/Collection","plupload/core/ArrCollection","plupload/core/Optionable","plupload/core/Queueable","plupload/core/Stats","plupload/core/Queue","plupload/QueueUpload","plupload/QueueResize","plupload/ChunkUploader","plupload/FileUploader","plupload/ImageResizer","plupload/File","plupload/Uploader"]);
-})(this);
-}));
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/plupload.full.min.js b/assets/javascripts/plupload/js/plupload.full.min.js
deleted file mode 100644
index 63bcd5b7..00000000
--- a/assets/javascripts/plupload/js/plupload.full.min.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
- * v1.5.8
- *
- * Copyright 2013, Moxiecode Systems AB
- * Released under GPL License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2018-02-19
- */
-!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&c(n,function(n,u){var c=-1!==h(e(n),["array","object"]);return n===r||t&&o[u]===r?!0:(c&&i&&(n=a(n)),e(o[u])===e(n)&&c?s(t,i,[o[u],n]):o[u]=n,void 0)})}),o}function u(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.parent=t.prototype,e}function c(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function l(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function d(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function f(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===h(t[r],i)&&n.push(t[r]);return n.length?n:!1}function p(e,t){var i=[];return c(e,function(e){-1!==h(e,t)&&i.push(e)}),i.length?i:null}function g(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:E,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,clone:o,inherit:u,each:c,isEmptyObj:l,inSeries:d,inParallel:m,inArray:h,arrayDiff:f,arrayIntersect:p,toArray:g,trim:x,sprintf:w,parseSizeStr:v,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(mn;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a=")),i.use_blob_uri},use_data_uri:function(){var e=new Image;return e.onload=function(){i.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return i.use_data_uri&&("IE"!==a.browser||a.version>=9)},use_data_uri_of:function(e){return i.use_data_uri&&33e3>e||i.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),i.use_fileinput=!e.disabled},use_webgl:function(){var e,n=document.createElement("canvas"),r=null;try{r=n.getContext("webgl")||n.getContext("experimental-webgl")}catch(o){}return r||(r=null),e=!!r,i.use_webgl=e,n=t,e}};return function(t){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(i[t])?i[t].apply(this,n):!!i[t]}}(),o=(new n).getResult(),a={can:r,uaParser:n,browser:o.browser.name,version:o.browser.version,os:o.os.name,osVersion:o.os.version,verComp:i,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return a.OS=a.os,a}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.getGlobalEventTarget=function(){if(/^moxie\./.test(e.global_event_dispatcher)&&!e.can("access_global_ns")){var i=t.guid("moxie_event_target_");window[i]=function(e,t){n.instance.dispatchEvent(e,t)},e.global_event_dispatcher=i}return e.global_event_dispatcher},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb xlt xla,application/vnd.ms-powerpoint,ppt pps pot ppa,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={},r={},o=function(e){var t,i,o,a=e.split(/,/);for(t=0;ta;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){_&&(_.destroy(),_=null),s.dispatchEvent("loadend"),s=null}function r(r){_.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),_.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),_.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),_.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(_,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(_,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(_,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),_.bind("Abort",function(e){s.dispatchEvent(e),n()}),_.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(_,"XMLHttpRequest","send",{url:x,method:v,async:T,user:w,password:y,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),_=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(_.connectRuntime(k)):(_.bind("RuntimeInit",function(e,t){r(t)}),_.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),_.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,w,y,E,b,_,R,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(w=u||l.user,y=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(R||(R={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),R[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),R.hasOwnProperty(t))?R[t].header+": "+R[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!_)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);_.getRuntime().exec.call(_,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){_&&("function"===e.typeOf(_.destroy)&&_.destroy(),_=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height),r>1&&!s.fit&&(r=1);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,fit:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.exec("Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,fit:!0,resample:"nearest"},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){this.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.meta&&this.meta.thumb&&this.meta.thumb.data.destroy(),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,11,"<=")||"Firefox"===n.browser&&n.verComp(n.version,37,"<")||"iOS"===n.os||"Android"===n.os)}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))},this.destroy=function(){this.getRuntime().getShim().removeInstance(this.uid)}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),(g.can("summon_file_dialog")?c:m).setAttribute("tabindex",-1),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){};try{if(m.status>=200&&m.status<400){s.trigger("load");break}}catch(r){}s.trigger("error")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},w={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=w[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;ii.height?"width":"height",a=Math.round(i[o]*n),s=!1;"nearest"!==r&&(.5>n||n>2)&&(n=.5>n?.5:2,s=!0);var u=t(i,n);return s?e(u,a/u[o],r):u}function t(e,t){var i=e.width,n=e.height,r=Math.round(i*t),o=Math.round(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,y.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t.call(r,this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t.call(this,e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),w=g=v=y=null,b=!1}var g,x,v,w,y,E=this,b=!1,_=!0;t.extend(this,{loadFromBlob:function(e){var t=this.getRuntime(),n=arguments.length>1?arguments[1]:!0;if(!t.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return y=e,e.isDetached()?(w=e.getSource(),m.call(this,w),void 0):(h.call(this,e.getSource(),function(e){n&&(w=l(e)),m.call(this,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,y=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?w=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&w&&i.can("access_image_binary")&&(x=new a(w)),t={width:e().width||0,height:e().height||0,type:y.type||u.getFileMime(y.name),size:w&&w.length||y.size||0,name:y.name||"",meta:null},_&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),_=n.preserveHeaders,!_){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:y.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:y.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return w||(w=l(E.getAsDataURL(e,t))),w;if("image/jpeg"!==e)w=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}w=l(i),x&&(w=x.stripHeaders(w),_&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),w=x.writeHeaders(w)),x.purge(),x=null)}return b=!1,w},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,a;a=this.getShimContainer(),e.extend(a.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='","IE"===t.browser?(r=document.createElement("div"),a.appendChild(r),r.outerHTML=i,r=a=null):a.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){var r={init:function(e){var r=this,o=this.getRuntime(),a=i.get(e.browse_button);a&&(a.setAttribute("tabindex",-1),a=null),this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],n.each(e,function(e){r.files.push(new t(o.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=r}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&t.meta.thumb.data&&!(e.meta.thumb.data instanceof n)&&(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){function r(e){for(var t="",i=0;ii;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),r.meta&&r.meta.thumb&&r.meta.thumb.data&&!(e.meta.thumb.data instanceof i)&&(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,11,"<=")||"Firefox"===n.browser&&n.verComp(n.version,37,"<")||"iOS"===n.os||"Android"===n.os)}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&(i.extend(d.style,{top:"100%"}),d.firstChild.setAttribute("tabindex",-1))),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),g.can("summon_file_dialog")&&h.setAttribute("tabindex",-1),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;this.value&&(i=this.files?this.files[0]:{name:this.value},i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null)},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")?("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})):e.setAttribute("tabindex",-1),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=w.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,w=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),w.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*
]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})},destroy:function(){this.getRuntime().getShim().removeInstance(this.uid)}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)});
-/**
- * Plupload - multi-runtime File Uploader
- * v3.1.2
- *
- * Copyright 2018, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2018-02-20
- */
-!function(t,e){var i=function(){var t={};return e.apply(t,arguments),t.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):t.plupload=i(t.moxie)}(this||window,function(t){!function(e,i){"use strict";function n(t,e){for(var i,n=[],r=0;r":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return t?(""+t).replace(i,function(t){return e[t]?"&"+e[t]+";":t}):t},toArray:i.Basic.toArray,inArray:i.Basic.inArray,addI18n:e.core.I18n.addI18n,translate:e.core.I18n.translate,sprintf:i.Basic.sprintf,isEmptyObj:i.Basic.isEmptyObj,hasClass:i.Dom.hasClass,addClass:i.Dom.addClass,removeClass:i.Dom.removeClass,getStyle:i.Dom.getStyle,addEvent:i.Events.addEvent,removeEvent:i.Events.removeEvent,removeAllEvents:i.Events.removeAllEvents,cleanName:function(t){var e,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],e=0;e0?"&":"?")+n),t},formatSize:function(t){function e(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}var i=this;if(t=parseInt(t,10),isNaN(t))return i.translate("N/A");var n=Math.pow(1024,4);return t>n?e(t/n,1)+" "+i.translate("tb"):t>(n/=1024)?e(t/n,1)+" "+i.translate("gb"):t>(n/=1024)?e(t/n,1)+" "+i.translate("mb"):t>1024?Math.round(t/1024)+" "+i.translate("kb"):t+" "+i.translate("b")},mimes2extList:t.core.utils.Mime.mimes2extList,resolveUrl:i.Url.resolveUrl,parseSize:i.Basic.parseSizeStr,delay:i.Basic.delay,EventTarget:t.core.EventTarget,Runtime:t.runtime.Runtime,FileInput:t.file.FileInput,FileReader:t.file.FileReader}}),r("plupload/core/Collection",["plupload"],function(){var t=function(){function e(){var t;for(t in n);return n[t]}var i,n={},r=0;plupload.extend(this,{count:function(){return r},hasKey:function(t){return n.hasOwnProperty(t)},get:function(t){return n[t]},first:function(){for(var t in n)return n[t]},last:function(){return i},toObject:function(){return n},add:function(t,e){var s=this;return"object"!=typeof t||e?n.hasOwnProperty(t)?s.update.apply(s,arguments):(n[t]=i=e,r++,void 0):plupload.each(t,function(t,e){s.add(e,t)})},remove:function(t){if(this.hasKey(t)){var s=n[t];delete n[t],r--,i===s&&(i=e())}},extract:function(t){var e=this.get(t);return this.remove(t),e},shift:function(){var t,e,i=this;for(e in n)return t=n[e],i.remove(e),t},update:function(t,e){n[t]=e},each:function(t){plupload.each(n,t)},combineWith:function(){var e=new t;return e.add(n),plupload.each(arguments,function(i){i instanceof t&&e.add(i.toObject())}),e},clear:function(){n={},i=null,r=0}})};return t}),r("plupload/core/ArrCollection",["plupload"],function(t){var e=function(){var e=[];t.extend(this,{count:function(){return e.length},hasKey:function(t){return this.getIdx(t)>-1},get:function(t){var i=this.getIdx(t);return i>-1?e[i]:null},getIdx:function(t){for(var i=0,n=e.length;n>i;i++)if(e[i].uid===t)return i;return-1},getByIdx:function(t){return e[t]},first:function(){return e[0]},last:function(){return e[e.length-1]},add:function(t){t=arguments[1]||t;var i=this.getIdx(t.uid);return i>-1?(e[i]=t,i):(e.push(t),e.length-1)},remove:function(t){return!!this.extract(t)},splice:function(i,n){return i="undefinded"===t.typeOf(i)?0:Math.max(i,0),n="undefinded"!==t.typeOf(n)&&i+n-1?e.splice(i,1):null},shift:function(){return e.shift()},update:function(t,i){var n=this.getIdx(t);return n>-1?(e[n]=i,!0):!1},each:function(i){t.each(e,i)},combineWith:function(){return Array.prototype.concat.apply(this.toArray(),arguments)},sort:function(t){e.sort(t||function(t,e){return t.priority-e.priority})},clear:function(){e=[]},toObject:function(){for(var t={},i=0,n=e.length;n>i;i++)t[e[i].uid]=e[i];return t},toArray:function(){return Array.prototype.slice.call(e)}})};return e}),r("plupload/core/Optionable",["plupload"],function(e){var i=t.core.EventTarget;return function(t){function i(){t.apply(this,arguments),this._options={}}return e.inherit(i,t),e.extend(i.prototype,{setOption:function(t,i,n){var r,s=this;return"object"==typeof t?(n=i,e.each(t,function(t,e){s.setOption(e,t,n)}),void 0):((!n||s._options.hasOwnProperty(t))&&(r=e.clone(s._options[t]),"object"===e.typeOf(i)&&"object"===e.typeOf(s._options[t])?e.extend(s._options[t],i):s._options[t]=i,s.trigger("OptionChanged",t,i,r)),void 0)},getOption:function(t){if(!t)return this._options;var i=this._options[t];return e.inArray(e.typeOf(i),["array","object"])>-1?e.extendImmutable({},i):i},setOptions:function(t,e){"object"==typeof t&&this.setOption(t,e)},getOptions:function(){return this.getOption()}}),i}(i)}),r("plupload/core/Queueable",["plupload","plupload/core/Optionable"],function(t,e){return function(e){function i(){e.apply(this,arguments),this.uid=t.guid(),this.state=i.IDLE,this.processed=0,this.total=0,this.percent=0,this.retries=0,this.priority=0,this.startedTimestamp=0,this.processedTimestamp=0}return i.IDLE=1,i.PROCESSING=2,i.PAUSED=6,i.RESUMED=7,i.DONE=5,i.FAILED=4,i.DESTROYED=8,t.inherit(i,e),t.extend(i.prototype,{start:function(){var t=this.state;return this.state===i.PROCESSING?!1:(this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=i.PROCESSING,this.trigger("statechanged",this.state,t),this.trigger("started"),!0)},pause:function(){var e=this.state;return-1===t.inArray(this.state,[i.IDLE,i.RESUMED,i.PROCESSING])?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.state=i.PAUSED,this.trigger("statechanged",this.state,e),this.trigger("paused"),!0)},resume:function(){var t=this.state;return this.state!==i.PAUSED&&this.state!==i.RESUMED?!1:(this.state=i.RESUMED,this.trigger("statechanged",this.state,t),this.trigger("resumed"),!0)},stop:function(){var t=this.state;return this.state===i.IDLE?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.startedTimestamp=0,this.state=i.IDLE,this.trigger("statechanged",this.state,t),this.trigger("stopped"),!0)},done:function(t){var e=this.state;return this.state===i.DONE?!1:(this.processed=this.total,this.loaded=this.processed,this.percent=100,this.processedTimestamp=+new Date,this.state=i.DONE,this.trigger("statechanged",this.state,e),this.trigger("done",t),this.trigger("processed"),!0)},failed:function(t){var e=this.state;return this.state===i.FAILED?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.processedTimestamp=+new Date,this.state=i.FAILED,this.trigger("statechanged",this.state,e),this.trigger("failed",t),this.trigger("processed"),!0)},progress:function(t,e){e&&(this.total=e),this.processed=Math.min(t,this.total),this.loaded=this.processed,this.percent=Math.ceil(100*(this.processed/this.total)),this.trigger({type:"progress",loaded:this.processed,total:this.total})},destroy:function(){var t=this.state;return this.state===i.DESTROYED?!1:(this.state=i.DESTROYED,this.trigger("statechanged",this.state,t),this.trigger("destroy"),this.unbindAll(),!0)}}),i}(e)}),r("plupload/core/Stats",[],function(){return function(){var t=this;t.size=0,t.total=0,t.loaded=0,t.uploaded=0,t.done=0,t.failed=0,t.queued=0,t.paused=0,t.processing=0,t.paused=0,t.percent=0,t.bytesPerSec=0,t.processedPerSec=0,t.reset=function(){t.size=t.total=t.loaded=t.processed=t.uploaded=t.done=t.failed=t.queued=t.processing=t.paused=t.percent=t.bytesPerSec=t.processedPerSec=0}}}),r("plupload/core/Queue",["plupload","plupload/core/ArrCollection","plupload/core/Queueable","plupload/core/Stats"],function(t,e,i,n){return function(r){function s(i){r.apply(this,arguments),this._queue=new e,this.stats=new n,this._options=t.extend({},this._options,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1},i)}function o(){var t;return this.forEachItem(function(e){return e.state===i.IDLE||e.state===i.RESUMED?(t=e,!1):void 0}),t?t:null}function a(){var t;if(this.state!==i.PROCESSING&&this.state!==i.PAUSED)return!1;if(this.stats.processingt.startedTimestamp)&&(r+=n),e.processedPerSec=Math.ceil(r/((+new Date-t.startedTimestamp||1)/1e3)),e.processed=n,e.total+=s.total,e.total&&(e.percent=Math.ceil(100*(e.processed/e.total)))}),t.percent=e.percent,e.loaded=e.processed,e.size=e.total,e.bytesPerSec=e.processedPerSec,!0):!1},destroy:function(){var e=this;return e.state===i.DESTROYED?!1:e.state!==i.IDLE?(e.bindOnce("Stopped",function(){t.delay.call(e,e.destroy)}),e.stop()):(e.clear(),s.parent.destroy.call(this),e._queue=e.stats=null,!0)}}),s}(i)}),r("plupload/QueueUpload",["plupload","plupload/core/Queue"],function(t,e){return function(i){function n(t){e.call(this,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1,url:!1,chunk_size:0,multipart:!0,http_method:"POST",params:{},headers:!1,file_data_name:"file",send_file_name:!0,stop_on_fail:!0}),this.setOption=function(t,e){"object"!=typeof t&&"max_upload_slots"==t&&(t="max_slots"),n.prototype.setOption.call(this,t,e,!0)},this.setOptions(t)}return t.inherit(n,i),n}(e)}),r("plupload/QueueResize",["plupload","plupload/core/Queue"],function(t,e){return function(i){function n(t){e.call(this,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1,resize:{}}),this.setOption=function(t,e){"object"!=typeof t&&"max_resize_slots"==t&&(t="max_slots"),n.prototype.setOption.call(this,t,e,!0)},this.setOptions(t)}return t.inherit(n,i),n}(e)}),r("plupload/ChunkUploader",["plupload","plupload/core/Collection","plupload/core/Queueable"],function(e,i,n){function r(t){function i(t,i){var n="";return e.each(i,function(t,e){n+=(n?"&":"")+encodeURIComponent(e)+"="+encodeURIComponent(t)}),n&&(t+=(t.indexOf("?")>0?"&":"?")+n),t}var a;n.call(this),this._options={file_data_name:"file",headers:!1,http_method:"POST",multipart:!0,params:{},send_file_name:!0,url:!1},e.extend(this,{start:function(){var r,u,l=this,p=this.state,c=l._options;if(this.state===n.PROCESSING)return!1;this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=n.PROCESSING,this.trigger("statechanged",this.state,p),a=new s,a.upload&&(a.upload.onprogress=function(t){l.progress(t.loaded,t.total)}),a.onload=function(){var t={response:this.responseText,status:this.status,responseHeaders:this.getAllResponseHeaders()};return this.status<200||this.status>=400?l.failed(t):(l.done(t),void 0)},a.onerror=function(){l.failed()},a.onloadend=function(){setTimeout(function(){a&&(a.destroy(),a=null)},1)};try{r=c.multipart?c.url:i(c.url,c.params),a.open(c.http_method,r,!0),e.isEmptyObj(c.headers)||e.each(c.headers,function(t,e){a.setRequestHeader(e,t)}),c.multipart?(u=new o,e.isEmptyObj(c.params)||e.each(c.params,function(t,e){u.append(e,t)}),u.append(c.file_data_name,t),a.send(u)):((e.isEmptyObj(c.headers)||!a.hasRequestHeader("content-type"))&&a.setRequestHeader("content-type","application/octet-stream"),a.send(t)),this.trigger("started")}catch(d){l.failed()}},stop:function(){a&&(a.abort(),a.destroy(),a=null),r.prototype.stop.call(this)},setOption:function(t,e){r.prototype.setOption.call(this,t,e,!0)},setOptions:function(t){r.prototype.setOption.call(this,t,!0)},destroy:function(){this.stop(),r.prototype.destroy.call(this)}})}var s=t.xhr.XMLHttpRequest,o=t.xhr.FormData;return e.inherit(r,n),r}),r("plupload/FileUploader",["plupload","plupload/core/Collection","plupload/core/Queueable","plupload/ChunkUploader"],function(t,e,i,n){function r(s,o){function a(){var t=0;return l.each(function(e){e.state===i.DONE&&(t+=e.end-e.start)}),t}function u(){for(var t=0;p>t&&l.hasKey(t);)t++;return t}var l=new e,p=1;i.call(this),this._options={chunk_size:0,params:{},send_file_name:!0,stop_on_fail:!0},t.extend(this,{name:s.name,start:function(){var t,e=this,r=this.state;return this.state===i.PROCESSING?!1:(this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=i.PROCESSING,this.trigger("statechanged",this.state,r),e._options.send_file_name&&(e._options.params.name=e.target_name||e.name),e._options.chunk_size?(p=Math.ceil(s.size/e._options.chunk_size),e.uploadChunk(!1,!0)):(t=new n(s),t.bind("progress",function(t){e.progress(t.loaded,t.total)}),t.bind("done",function(t,i){e.done(i)}),t.bind("failed",function(t,i){e.failed(i)}),t.setOptions(e._options),o.addItem(t)),this.trigger("started"),void 0)},uploadChunk:function(e,r){var c,d,h=this,f=this.getOption("chunk_size"),g={};return g.seq=parseInt(e,10)||u(),g.start=g.seq*f,g.end=Math.min(g.start+f,s.size),g.total=s.size,g.start<0||g.start>=s.size?!1:(d=t.extendImmutable({},this.getOptions(),{params:{chunk:g.seq,chunks:p}}),c=new n(s.slice(g.start,g.end,s.type)),c.bind("progress",function(t){h.progress(a()+t.loaded,s.size)}),c.bind("failed",function(e,n){l.add(g.seq,t.extend({state:i.FAILED},g)),h.trigger("chunkuploadfailed",t.extendImmutable({},g,n)),d.stop_on_fail&&h.failed(n)}),c.bind("done",function(e,n){l.add(g.seq,t.extend({state:i.DONE},g)),h.trigger("chunkuploaded",t.extendImmutable({},g,n)),a()>=s.size?(h.progress(s.size,s.size),h.done(n)):r&&t.delay(function(){h.uploadChunk(u(),r)})}),c.bind("processed",function(){this.destroy()}),c.setOptions(d),l.add(g.seq,t.extend({state:i.PROCESSING},g)),o.addItem(c),r&&o.countSpareSlots()&&h.uploadChunk(u(),r),!0)},destroy:function(){r.prototype.destroy.call(this),l.clear()}})}return t.inherit(r,i),r}),r("plupload/ImageResizer",["plupload","plupload/core/Queueable"],function(e,i){function n(t){i.call(this),this._options={type:"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},this.setOption=function(t){("object"==typeof t||this._options.hasOwnProperty(t))&&n.prototype.setOption.apply(this,arguments)},this.start=function(e){var i,n=this;e&&this.setOptions(e.resize),i=new r,i.bind("load",function(){this.resize(n.getOptions())}),i.bind("resize",function(){n.done(this.getAsBlob(n.getOption("type"),n.getOption("quality"))),this.destroy()}),i.bind("error",function(){n.failed(),this.destroy()}),i.load(t,n.getOption("runtimeOptions"))}}var r=t.image.Image;return e.inherit(n,i),e.Image=r,n}),r("plupload/File",["plupload","plupload/core/Queueable","plupload/FileUploader","plupload/ImageResizer"],function(t,e,i,n){function r(a,u,l){e.call(this),t.extend(this,{id:this.uid,name:a.name,target_name:null,type:a.type,size:a.size,origSize:a.size,start:function(){var i=this.state;return this.state===e.PROCESSING?!1:(this.state=e.PROCESSING,this.trigger("statechanged",this.state,i),this.trigger("started"),!t.isEmptyObj(this._options.resize)&&s(this.type)&&o(a,"send_binary_string")?this.resizeAndUpload():this.upload(),!0)},getSource:function(){return a},getNative:function(){return this.getFile().getSource()},resizeAndUpload:function(){var t=this,e=t.getOptions(),i=new n(a);i.bind("progress",function(e){t.progress(e.loaded,e.total)}),i.bind("done",function(e,i){i=i,t.upload()}),i.bind("failed",function(){t.upload()}),i.setOption("runtimeOptions",{runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:e.preferred_caps,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url}),l.addItem(i)},upload:function(){var t=this,e=new i(a,u);e.bind("paused",function(){t.pause()}),e.bind("resumed",function(){this.start()}),e.bind("started",function(){t.trigger("startupload")}),e.bind("progress",function(e){t.progress(e.loaded,e.total)}),e.bind("done",function(e,i){t.done(i)}),e.bind("failed",function(e,i){t.failed(i)}),e.setOptions(t.getOptions()),e.start()},destroy:function(){r.prototype.destroy.call(this),a=null}})}function s(e){return t.inArray(e,["image/jpeg","image/png"])>-1}function o(e,i){if(e.ruid){var n=t.Runtime.getInfo(e.ruid);if(n)return n.can(i)}return!1}return t.inherit(r,e),r}),r("plupload/Uploader",["plupload","plupload/core/Collection","plupload/core/Queue","plupload/QueueUpload","plupload/QueueResize","plupload/File"],function(e,i,n,r,s,o){function a(i){function u(){var t=O[0]||b[0];return t?t.getRuntime().uid:!1}function c(){this.bind("FilesAdded FilesRemoved",function(t){t.trigger("QueueChanged"),t.refresh()},this,999),this.bind("BeforeUpload",g),this.bind("Stopped",function(t){t.trigger("UploadComplete")}),this.bind("Error",m),this.bind("Destroy",_)}function d(i){var n=this,r=0,s=[],o={runtime_order:n.getOption("runtimes"),required_caps:n.getOption("required_features"),preferred_caps:n.getOption("preferred_caps"),swf_url:n.getOption("flash_swf_url"),xap_url:n.getOption("silverlight_xap_url")};e.each(n.getOption("runtimes").split(/\s*,\s*/),function(t){n.getOption(t)&&(o[t]=n.getOption(t))}),n.getOption("browse_button")&&e.each(n.getOption("browse_button"),function(i){s.push(function(s){var a=new t.file.FileInput(e.extend({},o,{accept:n.getOption("filters").mime_types,name:n.getOption("file_data_name"),multiple:n.getOption("multi_selection"),container:n.getOption("container"),browse_button:i}));a.onready=function(){var t=e.Runtime.getInfo(this.ruid);e.extend(n.features,{chunks:t.can("slice_blob"),multipart:t.can("send_multipart"),multi_selection:t.can("select_multiple")}),r++,O.push(this),s()},a.onchange=function(){n.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(t){R||(n.getOption("browse_button_hover")&&("mouseenter"===t.type?e.addClass(i,n.getOption("browse_button_hover")):"mouseleave"===t.type&&e.removeClass(i,n.getOption("browse_button_hover"))),n.getOption("browse_button_active")&&("mousedown"===t.type?e.addClass(i,n.getOption("browse_button_active")):"mouseup"===t.type&&e.removeClass(i,n.getOption("browse_button_active"))))}),a.bind("mousedown",function(){n.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),n.getOption("drop_element")&&e.each(n.getOption("drop_element"),function(i){s.push(function(s){var a=new t.file.FileDrop(e.extend({},o,{drop_zone:i}));a.onready=function(){var t=e.Runtime.getInfo(this.ruid);e.extend(n.features,{chunks:t.can("slice_blob"),multipart:t.can("send_multipart"),dragdrop:t.can("drag_and_drop")}),r++,b.push(this),s()},a.ondrop=function(){n.addFile(this.files)},a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.inParallel(s,function(){"function"==typeof i&&i(r)})}function g(t,e){if(t.getOption("unique_names")){var i=e.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),e.target_name=e.id+"."+n}}function m(t,i){i.code===e.INIT_ERROR?t.destroy():i.code===e.HTTP_ERROR&&t.state==e.STARTED&&t.trigger("CancelUpload")}function _(t){t.forEachItem(function(t){t.destroy()}),O.length&&(e.each(O,function(t){t.destroy()}),O=[]),b.length&&(e.each(b,function(t){t.destroy()}),b=[]),E=!1,y&&y.destroy(),v&&v.destroy(),I=y=v=null}var y,v,O=[],b=[],E=!1,R=!1,I=l(e.extend({backward_compatibility:!0,chunk_size:0,file_data_name:"file",filters:{mime_types:"*",prevent_duplicates:!1,max_file_size:0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_resize_slots:1,max_retries:0,max_upload_slots:1,multipart:!0,multipart_params:{},multi_selection:!0,params:{},resize:!1,runtimes:e.Runtime.order,send_chunk_number:!0,send_file_name:!0,silverlight_xap_url:"js/Moxie.xap",required_features:!1,preferred_caps:!1},i));n.call(this),e.extend(this,{_options:I,id:this.uid,state:e.STOPPED,features:{},settings:I,runtime:null,files:[],total:this.stats,init:function(){var t,i,n=this;return t=n.getOption("preinit"),"function"==typeof t?t(n):e.each(t,function(t,e){n.bind(e,t)}),c.call(n),e.each(["container","browse_button","drop_element"],function(t){return null===n.getOption(t)?(i={code:e.INIT_ERROR,message:e.sprintf(e.translate("%s specified, but cannot be found."),t)},!1):void 0}),i?n.trigger("Error",i):n.getOption("browse_button")||n.getOption("drop_element")?(d.call(n,function(t){var i,o=n.getOption("init"),a=e.extendImmutable({},n.getOption(),{auto_start:!0});"function"==typeof o?o(n):e.each(o,function(t,e){n.bind(e,t)}),t?(E=!0,i=e.Runtime.getInfo(u()),y=new r(a),v=new s(a),n.trigger("Init",{ruid:i.uid,runtime:n.runtime=i.type}),n.trigger("PostInit")):n.trigger("Error",{code:e.INIT_ERROR,message:e.translate("Init error.")})}),void 0):n.trigger("Error",{code:e.INIT_ERROR,message:e.translate("You must specify either browse_button or drop_element.")})},setOption:function(t,i){return E&&e.inArray(t,["container","browse_button","drop_element","runtimes","multi_selection","flash_swf_url","silverlight_xap_url"])>-1?this.trigger("Error",{code:e.OPTION_ERROR,message:e.sprintf(e.translate("%s option cannot be changed.")),option:t}):("object"!=typeof t&&(i=p(t,i,this._options),y&&y.setOption(t,i),v&&v.setOption(t,i)),a.prototype.setOption.call(this,t,i),void 0)},refresh:function(){O.length&&e.each(O,function(t){t.trigger("Refresh")}),b.length&&e.each(b,function(t){t.trigger("Refresh")}),this.trigger("Refresh")},stop:function(){a.prototype.stop.call(this)&&this.state!=e.STOPPED&&this.trigger("CancelUpload")},disableBrowse:function(){R=arguments[0]!==h?arguments[0]:!0,O.length&&e.each(O,function(t){t.disable(R)}),this.trigger("DisableBrowse",R)},getFile:function(t){return this.getItem(t)},addFile:function(i,n){function r(t){t.bind("beforestart",function(t){return p.trigger("BeforeUpload",t.target)}),t.bind("startupload",function(){p.trigger("UploadFile",this)}),t.bind("progress",function(){p.trigger("UploadProgress",this)}),t.bind("done",function(t,e){p.trigger("FileUploaded",this,e)}),t.bind("failed",function(t,i){p.trigger("Error",e.extend({code:e.HTTP_ERROR,message:e.translate("HTTP Error."),file:this},i))})}function s(t,i){var n=[];e.each(p.getOption("filters"),function(e,i){f[i]&&n.push(function(n){f[i].call(p,e,t,function(t){n(!t)})})}),e.inParallel(n,i)}function a(i){var u=e.typeOf(i);if(i instanceof t.file.File){if(!i.ruid&&!i.isDetached()){if(!l)return!1;i.ruid=l,i.connectRuntime(l)}c.push(function(t){s(i,function(s){var a;s||(a=new o(i,y,v),n&&(a.name=n),r(a),p.addItem(a),d.push(a),p.trigger("FileFiltered",a)),e.delay(t)})})}else i instanceof t.file.Blob?(a(i.getSource()),i.destroy()):-1!==e.inArray(u,["file","blob"])?a(new t.file.File(null,i)):"node"===u&&"filelist"===e.typeOf(i.files)?e.each(i.files,a):"array"===u&&(n=null,e.each(i,a))}var l,p=this,c=[],d=[];l=u(),a(i),c.length&&e.inParallel(c,function(){d.length&&p.trigger("FilesAdded",d)})},removeFile:function(t){var e=this.extractItem("string"==typeof t?t:t.uid);e&&(this.trigger("FilesRemoved",[e]),e.destroy())},splice:function(){var t=0,i=e.STARTED==this.state,r=n.prototype.splice.apply(this,arguments);if(r.length){for(this.trigger("FilesRemoved",r),i&&this.stop(),t=0;t0&&(r.slice_blob=!0),e.isEmptyObj(t.resize)&&t.multipart!==!1||(r.send_binary_string=!0),t.http_method&&(r.use_http_method=t.http_method),e.each(t,function(t,e){i(e,!!t,!0)})),r}function l(t){return e.each(t,function(e,i){t[i]=p(i,e,t)}),t}function p(t,i,n){switch(t){case"chunk_size":(i=e.parseSize(i))&&(n.send_file_name=!0);break;case"headers":var r={};return"object"==typeof i&&e.each(i,function(t,e){r[e.toLowerCase()]=t}),r;case"http_method":return"PUT"===i.toUpperCase()?"PUT":"POST";case"filters":return"array"===e.typeOf(i)&&(i={mime_types:i}),i.mime_types&&("string"===e.typeOf(i.mime_types)&&(i.mime_types=e.mimes2extList(i.mime_types)),n.re_ext_filter=function(t){var i=[];return e.each(t,function(t){e.each(t.extensions.split(/,/),function(t){/^\s*\*\s*$/.test(t)?i.push("\\.*"):i.push("\\."+t.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+i.join("|")+")$","i")}(i.mime_types)),i;case"max_file_size":n&&!n.filters&&(n.filters={}),n.filters.max_file_size=i;break;case"multipart":i||(n.send_file_name=!0);break;case"multipart_params":n.params=n.multipart_params=i;break;case"resize":return i?e.extend({preserve_headers:!0,crop:!1},i):!1;case"prevent_duplicates":n&&!n.filters&&(n.filters={}),n.filters.prevent_duplicates=!!i;break;case"unique_names":i&&(n.send_file_name=!0);break;case"required_features":return u(e.extend({},n));case"preferred_caps":return u(e.extend({},n,{required_features:!0}));case"container":case"browse_button":case"drop_element":return"container"===t?e.get(i):e.getAll(i)}return i}function c(t,e){f[t]=e}function d(t,i){var n,r;return n=new a(t),r=e.Runtime.thatCan(n.getOption("required_features"),i||t.runtimes),n.destroy(),r}var h,f={};return c("mime_types",function(t,i,n){t.length&&!this.getOption("re_ext_filter").test(i.name)?(this.trigger("Error",{code:e.FILE_EXTENSION_ERROR,message:e.translate("File extension error."),file:i}),n(!1)):n(!0)}),c("max_file_size",function(t,i,n){var r;t=e.parseSize(t),i.size!==r&&t&&i.size>t?(this.trigger("Error",{code:e.FILE_SIZE_ERROR,message:e.translate("File size error."),file:i}),n(!1)):n(!0)}),c("prevent_duplicates",function(t,i,n){var r=this;t&&this.forEachItem(function(t){return i.name===t.name&&i.size===t.size?(r.trigger("Error",{code:e.FILE_DUPLICATE_ERROR,message:e.translate("Duplicate file error."),file:i}),n(!1),void 0):void 0}),n(!0)}),c("prevent_empty",function(t,i,n){t&&!i.size&&i.size!==h?(this.trigger("Error",{code:e.FILE_SIZE_ERROR,message:e.translate("File size error."),file:i}),n(!1)):n(!0)}),a.addFileFilter=c,e.inherit(a,n),e.addFileFilter=c,e.predictRuntime=d,a}),o(["plupload","plupload/core/Collection","plupload/core/ArrCollection","plupload/core/Optionable","plupload/core/Queueable","plupload/core/Stats","plupload/core/Queue","plupload/QueueUpload","plupload/QueueResize","plupload/ChunkUploader","plupload/FileUploader","plupload/ImageResizer","plupload/File","plupload/Uploader"])}(this)});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/js/plupload.min.js b/assets/javascripts/plupload/js/plupload.min.js
deleted file mode 100644
index 9f9d4475..00000000
--- a/assets/javascripts/plupload/js/plupload.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Plupload - multi-runtime File Uploader
- * v3.1.2
- *
- * Copyright 2018, Ephox
- * Released under AGPLv3 License.
- *
- * License: http://www.plupload.com/license
- * Contributing: http://www.plupload.com/contributing
- *
- * Date: 2018-02-20
- */
-!function(t,e){var i=function(){var t={};return e.apply(t,arguments),t.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):t.plupload=i(t.moxie)}(this||window,function(t){!function(e,i){"use strict";function n(t,e){for(var i,n=[],r=0;r":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return t?(""+t).replace(i,function(t){return e[t]?"&"+e[t]+";":t}):t},toArray:i.Basic.toArray,inArray:i.Basic.inArray,addI18n:e.core.I18n.addI18n,translate:e.core.I18n.translate,sprintf:i.Basic.sprintf,isEmptyObj:i.Basic.isEmptyObj,hasClass:i.Dom.hasClass,addClass:i.Dom.addClass,removeClass:i.Dom.removeClass,getStyle:i.Dom.getStyle,addEvent:i.Events.addEvent,removeEvent:i.Events.removeEvent,removeAllEvents:i.Events.removeAllEvents,cleanName:function(t){var e,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],e=0;e0?"&":"?")+n),t},formatSize:function(t){function e(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}var i=this;if(t=parseInt(t,10),isNaN(t))return i.translate("N/A");var n=Math.pow(1024,4);return t>n?e(t/n,1)+" "+i.translate("tb"):t>(n/=1024)?e(t/n,1)+" "+i.translate("gb"):t>(n/=1024)?e(t/n,1)+" "+i.translate("mb"):t>1024?Math.round(t/1024)+" "+i.translate("kb"):t+" "+i.translate("b")},mimes2extList:t.core.utils.Mime.mimes2extList,resolveUrl:i.Url.resolveUrl,parseSize:i.Basic.parseSizeStr,delay:i.Basic.delay,EventTarget:t.core.EventTarget,Runtime:t.runtime.Runtime,FileInput:t.file.FileInput,FileReader:t.file.FileReader}}),r("plupload/core/Collection",["plupload"],function(){var t=function(){function e(){var t;for(t in n);return n[t]}var i,n={},r=0;plupload.extend(this,{count:function(){return r},hasKey:function(t){return n.hasOwnProperty(t)},get:function(t){return n[t]},first:function(){for(var t in n)return n[t]},last:function(){return i},toObject:function(){return n},add:function(t,e){var s=this;return"object"!=typeof t||e?n.hasOwnProperty(t)?s.update.apply(s,arguments):(n[t]=i=e,r++,void 0):plupload.each(t,function(t,e){s.add(e,t)})},remove:function(t){if(this.hasKey(t)){var s=n[t];delete n[t],r--,i===s&&(i=e())}},extract:function(t){var e=this.get(t);return this.remove(t),e},shift:function(){var t,e,i=this;for(e in n)return t=n[e],i.remove(e),t},update:function(t,e){n[t]=e},each:function(t){plupload.each(n,t)},combineWith:function(){var e=new t;return e.add(n),plupload.each(arguments,function(i){i instanceof t&&e.add(i.toObject())}),e},clear:function(){n={},i=null,r=0}})};return t}),r("plupload/core/ArrCollection",["plupload"],function(t){var e=function(){var e=[];t.extend(this,{count:function(){return e.length},hasKey:function(t){return this.getIdx(t)>-1},get:function(t){var i=this.getIdx(t);return i>-1?e[i]:null},getIdx:function(t){for(var i=0,n=e.length;n>i;i++)if(e[i].uid===t)return i;return-1},getByIdx:function(t){return e[t]},first:function(){return e[0]},last:function(){return e[e.length-1]},add:function(t){t=arguments[1]||t;var i=this.getIdx(t.uid);return i>-1?(e[i]=t,i):(e.push(t),e.length-1)},remove:function(t){return!!this.extract(t)},splice:function(i,n){return i="undefinded"===t.typeOf(i)?0:Math.max(i,0),n="undefinded"!==t.typeOf(n)&&i+n-1?e.splice(i,1):null},shift:function(){return e.shift()},update:function(t,i){var n=this.getIdx(t);return n>-1?(e[n]=i,!0):!1},each:function(i){t.each(e,i)},combineWith:function(){return Array.prototype.concat.apply(this.toArray(),arguments)},sort:function(t){e.sort(t||function(t,e){return t.priority-e.priority})},clear:function(){e=[]},toObject:function(){for(var t={},i=0,n=e.length;n>i;i++)t[e[i].uid]=e[i];return t},toArray:function(){return Array.prototype.slice.call(e)}})};return e}),r("plupload/core/Optionable",["plupload"],function(e){var i=t.core.EventTarget;return function(t){function i(){t.apply(this,arguments),this._options={}}return e.inherit(i,t),e.extend(i.prototype,{setOption:function(t,i,n){var r,s=this;return"object"==typeof t?(n=i,e.each(t,function(t,e){s.setOption(e,t,n)}),void 0):((!n||s._options.hasOwnProperty(t))&&(r=e.clone(s._options[t]),"object"===e.typeOf(i)&&"object"===e.typeOf(s._options[t])?e.extend(s._options[t],i):s._options[t]=i,s.trigger("OptionChanged",t,i,r)),void 0)},getOption:function(t){if(!t)return this._options;var i=this._options[t];return e.inArray(e.typeOf(i),["array","object"])>-1?e.extendImmutable({},i):i},setOptions:function(t,e){"object"==typeof t&&this.setOption(t,e)},getOptions:function(){return this.getOption()}}),i}(i)}),r("plupload/core/Queueable",["plupload","plupload/core/Optionable"],function(t,e){return function(e){function i(){e.apply(this,arguments),this.uid=t.guid(),this.state=i.IDLE,this.processed=0,this.total=0,this.percent=0,this.retries=0,this.priority=0,this.startedTimestamp=0,this.processedTimestamp=0}return i.IDLE=1,i.PROCESSING=2,i.PAUSED=6,i.RESUMED=7,i.DONE=5,i.FAILED=4,i.DESTROYED=8,t.inherit(i,e),t.extend(i.prototype,{start:function(){var t=this.state;return this.state===i.PROCESSING?!1:(this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=i.PROCESSING,this.trigger("statechanged",this.state,t),this.trigger("started"),!0)},pause:function(){var e=this.state;return-1===t.inArray(this.state,[i.IDLE,i.RESUMED,i.PROCESSING])?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.state=i.PAUSED,this.trigger("statechanged",this.state,e),this.trigger("paused"),!0)},resume:function(){var t=this.state;return this.state!==i.PAUSED&&this.state!==i.RESUMED?!1:(this.state=i.RESUMED,this.trigger("statechanged",this.state,t),this.trigger("resumed"),!0)},stop:function(){var t=this.state;return this.state===i.IDLE?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.startedTimestamp=0,this.state=i.IDLE,this.trigger("statechanged",this.state,t),this.trigger("stopped"),!0)},done:function(t){var e=this.state;return this.state===i.DONE?!1:(this.processed=this.total,this.loaded=this.processed,this.percent=100,this.processedTimestamp=+new Date,this.state=i.DONE,this.trigger("statechanged",this.state,e),this.trigger("done",t),this.trigger("processed"),!0)},failed:function(t){var e=this.state;return this.state===i.FAILED?!1:(this.processed=this.percent=0,this.loaded=this.processed,this.processedTimestamp=+new Date,this.state=i.FAILED,this.trigger("statechanged",this.state,e),this.trigger("failed",t),this.trigger("processed"),!0)},progress:function(t,e){e&&(this.total=e),this.processed=Math.min(t,this.total),this.loaded=this.processed,this.percent=Math.ceil(100*(this.processed/this.total)),this.trigger({type:"progress",loaded:this.processed,total:this.total})},destroy:function(){var t=this.state;return this.state===i.DESTROYED?!1:(this.state=i.DESTROYED,this.trigger("statechanged",this.state,t),this.trigger("destroy"),this.unbindAll(),!0)}}),i}(e)}),r("plupload/core/Stats",[],function(){return function(){var t=this;t.size=0,t.total=0,t.loaded=0,t.uploaded=0,t.done=0,t.failed=0,t.queued=0,t.paused=0,t.processing=0,t.paused=0,t.percent=0,t.bytesPerSec=0,t.processedPerSec=0,t.reset=function(){t.size=t.total=t.loaded=t.processed=t.uploaded=t.done=t.failed=t.queued=t.processing=t.paused=t.percent=t.bytesPerSec=t.processedPerSec=0}}}),r("plupload/core/Queue",["plupload","plupload/core/ArrCollection","plupload/core/Queueable","plupload/core/Stats"],function(t,e,i,n){return function(r){function s(i){r.apply(this,arguments),this._queue=new e,this.stats=new n,this._options=t.extend({},this._options,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1},i)}function o(){var t;return this.forEachItem(function(e){return e.state===i.IDLE||e.state===i.RESUMED?(t=e,!1):void 0}),t?t:null}function a(){var t;if(this.state!==i.PROCESSING&&this.state!==i.PAUSED)return!1;if(this.stats.processingt.startedTimestamp)&&(r+=n),e.processedPerSec=Math.ceil(r/((+new Date-t.startedTimestamp||1)/1e3)),e.processed=n,e.total+=s.total,e.total&&(e.percent=Math.ceil(100*(e.processed/e.total)))}),t.percent=e.percent,e.loaded=e.processed,e.size=e.total,e.bytesPerSec=e.processedPerSec,!0):!1},destroy:function(){var e=this;return e.state===i.DESTROYED?!1:e.state!==i.IDLE?(e.bindOnce("Stopped",function(){t.delay.call(e,e.destroy)}),e.stop()):(e.clear(),s.parent.destroy.call(this),e._queue=e.stats=null,!0)}}),s}(i)}),r("plupload/QueueUpload",["plupload","plupload/core/Queue"],function(t,e){return function(i){function n(t){e.call(this,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1,url:!1,chunk_size:0,multipart:!0,http_method:"POST",params:{},headers:!1,file_data_name:"file",send_file_name:!0,stop_on_fail:!0}),this.setOption=function(t,e){"object"!=typeof t&&"max_upload_slots"==t&&(t="max_slots"),n.prototype.setOption.call(this,t,e,!0)},this.setOptions(t)}return t.inherit(n,i),n}(e)}),r("plupload/QueueResize",["plupload","plupload/core/Queue"],function(t,e){return function(i){function n(t){e.call(this,{max_slots:1,max_retries:0,auto_start:!1,finish_active:!1,resize:{}}),this.setOption=function(t,e){"object"!=typeof t&&"max_resize_slots"==t&&(t="max_slots"),n.prototype.setOption.call(this,t,e,!0)},this.setOptions(t)}return t.inherit(n,i),n}(e)}),r("plupload/ChunkUploader",["plupload","plupload/core/Collection","plupload/core/Queueable"],function(e,i,n){function r(t){function i(t,i){var n="";return e.each(i,function(t,e){n+=(n?"&":"")+encodeURIComponent(e)+"="+encodeURIComponent(t)}),n&&(t+=(t.indexOf("?")>0?"&":"?")+n),t}var a;n.call(this),this._options={file_data_name:"file",headers:!1,http_method:"POST",multipart:!0,params:{},send_file_name:!0,url:!1},e.extend(this,{start:function(){var r,u,l=this,p=this.state,c=l._options;if(this.state===n.PROCESSING)return!1;this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=n.PROCESSING,this.trigger("statechanged",this.state,p),a=new s,a.upload&&(a.upload.onprogress=function(t){l.progress(t.loaded,t.total)}),a.onload=function(){var t={response:this.responseText,status:this.status,responseHeaders:this.getAllResponseHeaders()};return this.status<200||this.status>=400?l.failed(t):(l.done(t),void 0)},a.onerror=function(){l.failed()},a.onloadend=function(){setTimeout(function(){a&&(a.destroy(),a=null)},1)};try{r=c.multipart?c.url:i(c.url,c.params),a.open(c.http_method,r,!0),e.isEmptyObj(c.headers)||e.each(c.headers,function(t,e){a.setRequestHeader(e,t)}),c.multipart?(u=new o,e.isEmptyObj(c.params)||e.each(c.params,function(t,e){u.append(e,t)}),u.append(c.file_data_name,t),a.send(u)):((e.isEmptyObj(c.headers)||!a.hasRequestHeader("content-type"))&&a.setRequestHeader("content-type","application/octet-stream"),a.send(t)),this.trigger("started")}catch(d){l.failed()}},stop:function(){a&&(a.abort(),a.destroy(),a=null),r.prototype.stop.call(this)},setOption:function(t,e){r.prototype.setOption.call(this,t,e,!0)},setOptions:function(t){r.prototype.setOption.call(this,t,!0)},destroy:function(){this.stop(),r.prototype.destroy.call(this)}})}var s=t.xhr.XMLHttpRequest,o=t.xhr.FormData;return e.inherit(r,n),r}),r("plupload/FileUploader",["plupload","plupload/core/Collection","plupload/core/Queueable","plupload/ChunkUploader"],function(t,e,i,n){function r(s,o){function a(){var t=0;return l.each(function(e){e.state===i.DONE&&(t+=e.end-e.start)}),t}function u(){for(var t=0;p>t&&l.hasKey(t);)t++;return t}var l=new e,p=1;i.call(this),this._options={chunk_size:0,params:{},send_file_name:!0,stop_on_fail:!0},t.extend(this,{name:s.name,start:function(){var t,e=this,r=this.state;return this.state===i.PROCESSING?!1:(this.startedTimestamp||(this.startedTimestamp=+new Date),this.state=i.PROCESSING,this.trigger("statechanged",this.state,r),e._options.send_file_name&&(e._options.params.name=e.target_name||e.name),e._options.chunk_size?(p=Math.ceil(s.size/e._options.chunk_size),e.uploadChunk(!1,!0)):(t=new n(s),t.bind("progress",function(t){e.progress(t.loaded,t.total)}),t.bind("done",function(t,i){e.done(i)}),t.bind("failed",function(t,i){e.failed(i)}),t.setOptions(e._options),o.addItem(t)),this.trigger("started"),void 0)},uploadChunk:function(e,r){var c,d,h=this,f=this.getOption("chunk_size"),g={};return g.seq=parseInt(e,10)||u(),g.start=g.seq*f,g.end=Math.min(g.start+f,s.size),g.total=s.size,g.start<0||g.start>=s.size?!1:(d=t.extendImmutable({},this.getOptions(),{params:{chunk:g.seq,chunks:p}}),c=new n(s.slice(g.start,g.end,s.type)),c.bind("progress",function(t){h.progress(a()+t.loaded,s.size)}),c.bind("failed",function(e,n){l.add(g.seq,t.extend({state:i.FAILED},g)),h.trigger("chunkuploadfailed",t.extendImmutable({},g,n)),d.stop_on_fail&&h.failed(n)}),c.bind("done",function(e,n){l.add(g.seq,t.extend({state:i.DONE},g)),h.trigger("chunkuploaded",t.extendImmutable({},g,n)),a()>=s.size?(h.progress(s.size,s.size),h.done(n)):r&&t.delay(function(){h.uploadChunk(u(),r)})}),c.bind("processed",function(){this.destroy()}),c.setOptions(d),l.add(g.seq,t.extend({state:i.PROCESSING},g)),o.addItem(c),r&&o.countSpareSlots()&&h.uploadChunk(u(),r),!0)},destroy:function(){r.prototype.destroy.call(this),l.clear()}})}return t.inherit(r,i),r}),r("plupload/ImageResizer",["plupload","plupload/core/Queueable"],function(e,i){function n(t){i.call(this),this._options={type:"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},this.setOption=function(t){("object"==typeof t||this._options.hasOwnProperty(t))&&n.prototype.setOption.apply(this,arguments)},this.start=function(e){var i,n=this;e&&this.setOptions(e.resize),i=new r,i.bind("load",function(){this.resize(n.getOptions())}),i.bind("resize",function(){n.done(this.getAsBlob(n.getOption("type"),n.getOption("quality"))),this.destroy()}),i.bind("error",function(){n.failed(),this.destroy()}),i.load(t,n.getOption("runtimeOptions"))}}var r=t.image.Image;return e.inherit(n,i),e.Image=r,n}),r("plupload/File",["plupload","plupload/core/Queueable","plupload/FileUploader","plupload/ImageResizer"],function(t,e,i,n){function r(a,u,l){e.call(this),t.extend(this,{id:this.uid,name:a.name,target_name:null,type:a.type,size:a.size,origSize:a.size,start:function(){var i=this.state;return this.state===e.PROCESSING?!1:(this.state=e.PROCESSING,this.trigger("statechanged",this.state,i),this.trigger("started"),!t.isEmptyObj(this._options.resize)&&s(this.type)&&o(a,"send_binary_string")?this.resizeAndUpload():this.upload(),!0)},getSource:function(){return a},getNative:function(){return this.getFile().getSource()},resizeAndUpload:function(){var t=this,e=t.getOptions(),i=new n(a);i.bind("progress",function(e){t.progress(e.loaded,e.total)}),i.bind("done",function(e,i){i=i,t.upload()}),i.bind("failed",function(){t.upload()}),i.setOption("runtimeOptions",{runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:e.preferred_caps,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url}),l.addItem(i)},upload:function(){var t=this,e=new i(a,u);e.bind("paused",function(){t.pause()}),e.bind("resumed",function(){this.start()}),e.bind("started",function(){t.trigger("startupload")}),e.bind("progress",function(e){t.progress(e.loaded,e.total)}),e.bind("done",function(e,i){t.done(i)}),e.bind("failed",function(e,i){t.failed(i)}),e.setOptions(t.getOptions()),e.start()},destroy:function(){r.prototype.destroy.call(this),a=null}})}function s(e){return t.inArray(e,["image/jpeg","image/png"])>-1}function o(e,i){if(e.ruid){var n=t.Runtime.getInfo(e.ruid);if(n)return n.can(i)}return!1}return t.inherit(r,e),r}),r("plupload/Uploader",["plupload","plupload/core/Collection","plupload/core/Queue","plupload/QueueUpload","plupload/QueueResize","plupload/File"],function(e,i,n,r,s,o){function a(i){function u(){var t=O[0]||b[0];return t?t.getRuntime().uid:!1}function c(){this.bind("FilesAdded FilesRemoved",function(t){t.trigger("QueueChanged"),t.refresh()},this,999),this.bind("BeforeUpload",g),this.bind("Stopped",function(t){t.trigger("UploadComplete")}),this.bind("Error",m),this.bind("Destroy",_)}function d(i){var n=this,r=0,s=[],o={runtime_order:n.getOption("runtimes"),required_caps:n.getOption("required_features"),preferred_caps:n.getOption("preferred_caps"),swf_url:n.getOption("flash_swf_url"),xap_url:n.getOption("silverlight_xap_url")};e.each(n.getOption("runtimes").split(/\s*,\s*/),function(t){n.getOption(t)&&(o[t]=n.getOption(t))}),n.getOption("browse_button")&&e.each(n.getOption("browse_button"),function(i){s.push(function(s){var a=new t.file.FileInput(e.extend({},o,{accept:n.getOption("filters").mime_types,name:n.getOption("file_data_name"),multiple:n.getOption("multi_selection"),container:n.getOption("container"),browse_button:i}));a.onready=function(){var t=e.Runtime.getInfo(this.ruid);e.extend(n.features,{chunks:t.can("slice_blob"),multipart:t.can("send_multipart"),multi_selection:t.can("select_multiple")}),r++,O.push(this),s()},a.onchange=function(){n.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(t){R||(n.getOption("browse_button_hover")&&("mouseenter"===t.type?e.addClass(i,n.getOption("browse_button_hover")):"mouseleave"===t.type&&e.removeClass(i,n.getOption("browse_button_hover"))),n.getOption("browse_button_active")&&("mousedown"===t.type?e.addClass(i,n.getOption("browse_button_active")):"mouseup"===t.type&&e.removeClass(i,n.getOption("browse_button_active"))))}),a.bind("mousedown",function(){n.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),n.getOption("drop_element")&&e.each(n.getOption("drop_element"),function(i){s.push(function(s){var a=new t.file.FileDrop(e.extend({},o,{drop_zone:i}));a.onready=function(){var t=e.Runtime.getInfo(this.ruid);e.extend(n.features,{chunks:t.can("slice_blob"),multipart:t.can("send_multipart"),dragdrop:t.can("drag_and_drop")}),r++,b.push(this),s()},a.ondrop=function(){n.addFile(this.files)},a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.inParallel(s,function(){"function"==typeof i&&i(r)})}function g(t,e){if(t.getOption("unique_names")){var i=e.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),e.target_name=e.id+"."+n}}function m(t,i){i.code===e.INIT_ERROR?t.destroy():i.code===e.HTTP_ERROR&&t.state==e.STARTED&&t.trigger("CancelUpload")}function _(t){t.forEachItem(function(t){t.destroy()}),O.length&&(e.each(O,function(t){t.destroy()}),O=[]),b.length&&(e.each(b,function(t){t.destroy()}),b=[]),E=!1,y&&y.destroy(),v&&v.destroy(),I=y=v=null}var y,v,O=[],b=[],E=!1,R=!1,I=l(e.extend({backward_compatibility:!0,chunk_size:0,file_data_name:"file",filters:{mime_types:"*",prevent_duplicates:!1,max_file_size:0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_resize_slots:1,max_retries:0,max_upload_slots:1,multipart:!0,multipart_params:{},multi_selection:!0,params:{},resize:!1,runtimes:e.Runtime.order,send_chunk_number:!0,send_file_name:!0,silverlight_xap_url:"js/Moxie.xap",required_features:!1,preferred_caps:!1},i));n.call(this),e.extend(this,{_options:I,id:this.uid,state:e.STOPPED,features:{},settings:I,runtime:null,files:[],total:this.stats,init:function(){var t,i,n=this;return t=n.getOption("preinit"),"function"==typeof t?t(n):e.each(t,function(t,e){n.bind(e,t)}),c.call(n),e.each(["container","browse_button","drop_element"],function(t){return null===n.getOption(t)?(i={code:e.INIT_ERROR,message:e.sprintf(e.translate("%s specified, but cannot be found."),t)},!1):void 0}),i?n.trigger("Error",i):n.getOption("browse_button")||n.getOption("drop_element")?(d.call(n,function(t){var i,o=n.getOption("init"),a=e.extendImmutable({},n.getOption(),{auto_start:!0});"function"==typeof o?o(n):e.each(o,function(t,e){n.bind(e,t)}),t?(E=!0,i=e.Runtime.getInfo(u()),y=new r(a),v=new s(a),n.trigger("Init",{ruid:i.uid,runtime:n.runtime=i.type}),n.trigger("PostInit")):n.trigger("Error",{code:e.INIT_ERROR,message:e.translate("Init error.")})}),void 0):n.trigger("Error",{code:e.INIT_ERROR,message:e.translate("You must specify either browse_button or drop_element.")})},setOption:function(t,i){return E&&e.inArray(t,["container","browse_button","drop_element","runtimes","multi_selection","flash_swf_url","silverlight_xap_url"])>-1?this.trigger("Error",{code:e.OPTION_ERROR,message:e.sprintf(e.translate("%s option cannot be changed.")),option:t}):("object"!=typeof t&&(i=p(t,i,this._options),y&&y.setOption(t,i),v&&v.setOption(t,i)),a.prototype.setOption.call(this,t,i),void 0)},refresh:function(){O.length&&e.each(O,function(t){t.trigger("Refresh")}),b.length&&e.each(b,function(t){t.trigger("Refresh")}),this.trigger("Refresh")},stop:function(){a.prototype.stop.call(this)&&this.state!=e.STOPPED&&this.trigger("CancelUpload")},disableBrowse:function(){R=arguments[0]!==h?arguments[0]:!0,O.length&&e.each(O,function(t){t.disable(R)}),this.trigger("DisableBrowse",R)},getFile:function(t){return this.getItem(t)},addFile:function(i,n){function r(t){t.bind("beforestart",function(t){return p.trigger("BeforeUpload",t.target)}),t.bind("startupload",function(){p.trigger("UploadFile",this)}),t.bind("progress",function(){p.trigger("UploadProgress",this)}),t.bind("done",function(t,e){p.trigger("FileUploaded",this,e)}),t.bind("failed",function(t,i){p.trigger("Error",e.extend({code:e.HTTP_ERROR,message:e.translate("HTTP Error."),file:this},i))})}function s(t,i){var n=[];e.each(p.getOption("filters"),function(e,i){f[i]&&n.push(function(n){f[i].call(p,e,t,function(t){n(!t)})})}),e.inParallel(n,i)}function a(i){var u=e.typeOf(i);if(i instanceof t.file.File){if(!i.ruid&&!i.isDetached()){if(!l)return!1;i.ruid=l,i.connectRuntime(l)}c.push(function(t){s(i,function(s){var a;s||(a=new o(i,y,v),n&&(a.name=n),r(a),p.addItem(a),d.push(a),p.trigger("FileFiltered",a)),e.delay(t)})})}else i instanceof t.file.Blob?(a(i.getSource()),i.destroy()):-1!==e.inArray(u,["file","blob"])?a(new t.file.File(null,i)):"node"===u&&"filelist"===e.typeOf(i.files)?e.each(i.files,a):"array"===u&&(n=null,e.each(i,a))}var l,p=this,c=[],d=[];l=u(),a(i),c.length&&e.inParallel(c,function(){d.length&&p.trigger("FilesAdded",d)})},removeFile:function(t){var e=this.extractItem("string"==typeof t?t:t.uid);e&&(this.trigger("FilesRemoved",[e]),e.destroy())},splice:function(){var t=0,i=e.STARTED==this.state,r=n.prototype.splice.apply(this,arguments);if(r.length){for(this.trigger("FilesRemoved",r),i&&this.stop(),t=0;t0&&(r.slice_blob=!0),e.isEmptyObj(t.resize)&&t.multipart!==!1||(r.send_binary_string=!0),t.http_method&&(r.use_http_method=t.http_method),e.each(t,function(t,e){i(e,!!t,!0)})),r}function l(t){return e.each(t,function(e,i){t[i]=p(i,e,t)}),t}function p(t,i,n){switch(t){case"chunk_size":(i=e.parseSize(i))&&(n.send_file_name=!0);break;case"headers":var r={};return"object"==typeof i&&e.each(i,function(t,e){r[e.toLowerCase()]=t}),r;case"http_method":return"PUT"===i.toUpperCase()?"PUT":"POST";case"filters":return"array"===e.typeOf(i)&&(i={mime_types:i}),i.mime_types&&("string"===e.typeOf(i.mime_types)&&(i.mime_types=e.mimes2extList(i.mime_types)),n.re_ext_filter=function(t){var i=[];return e.each(t,function(t){e.each(t.extensions.split(/,/),function(t){/^\s*\*\s*$/.test(t)?i.push("\\.*"):i.push("\\."+t.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+i.join("|")+")$","i")}(i.mime_types)),i;case"max_file_size":n&&!n.filters&&(n.filters={}),n.filters.max_file_size=i;break;case"multipart":i||(n.send_file_name=!0);break;case"multipart_params":n.params=n.multipart_params=i;break;case"resize":return i?e.extend({preserve_headers:!0,crop:!1},i):!1;case"prevent_duplicates":n&&!n.filters&&(n.filters={}),n.filters.prevent_duplicates=!!i;break;case"unique_names":i&&(n.send_file_name=!0);break;case"required_features":return u(e.extend({},n));case"preferred_caps":return u(e.extend({},n,{required_features:!0}));case"container":case"browse_button":case"drop_element":return"container"===t?e.get(i):e.getAll(i)}return i}function c(t,e){f[t]=e}function d(t,i){var n,r;return n=new a(t),r=e.Runtime.thatCan(n.getOption("required_features"),i||t.runtimes),n.destroy(),r}var h,f={};return c("mime_types",function(t,i,n){t.length&&!this.getOption("re_ext_filter").test(i.name)?(this.trigger("Error",{code:e.FILE_EXTENSION_ERROR,message:e.translate("File extension error."),file:i}),n(!1)):n(!0)}),c("max_file_size",function(t,i,n){var r;t=e.parseSize(t),i.size!==r&&t&&i.size>t?(this.trigger("Error",{code:e.FILE_SIZE_ERROR,message:e.translate("File size error."),file:i}),n(!1)):n(!0)}),c("prevent_duplicates",function(t,i,n){var r=this;t&&this.forEachItem(function(t){return i.name===t.name&&i.size===t.size?(r.trigger("Error",{code:e.FILE_DUPLICATE_ERROR,message:e.translate("Duplicate file error."),file:i}),n(!1),void 0):void 0}),n(!0)}),c("prevent_empty",function(t,i,n){t&&!i.size&&i.size!==h?(this.trigger("Error",{code:e.FILE_SIZE_ERROR,message:e.translate("File size error."),file:i}),n(!1)):n(!0)}),a.addFileFilter=c,e.inherit(a,n),e.addFileFilter=c,e.predictRuntime=d,a}),o(["plupload","plupload/core/Collection","plupload/core/ArrCollection","plupload/core/Optionable","plupload/core/Queueable","plupload/core/Stats","plupload/core/Queue","plupload/QueueUpload","plupload/QueueResize","plupload/ChunkUploader","plupload/FileUploader","plupload/ImageResizer","plupload/File","plupload/Uploader"])}(this)});
\ No newline at end of file
diff --git a/assets/javascripts/plupload/license.txt b/assets/javascripts/plupload/license.txt
deleted file mode 100644
index 2def0e88..00000000
--- a/assets/javascripts/plupload/license.txt
+++ /dev/null
@@ -1,661 +0,0 @@
- GNU AFFERO GENERAL PUBLIC LICENSE
- Version 3, 19 November 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU Affero General Public License is a free, copyleft license for
-software and other kinds of works, specifically designed to ensure
-cooperation with the community in the case of network server software.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-our General Public Licenses are intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- Developers that use our General Public Licenses protect your rights
-with two steps: (1) assert copyright on the software, and (2) offer
-you this License which gives you legal permission to copy, distribute
-and/or modify the software.
-
- A secondary benefit of defending all users' freedom is that
-improvements made in alternate versions of the program, if they
-receive widespread use, become available for other developers to
-incorporate. Many developers of free software are heartened and
-encouraged by the resulting cooperation. However, in the case of
-software used on network servers, this result may fail to come about.
-The GNU General Public License permits making a modified version and
-letting the public access it on a server without ever releasing its
-source code to the public.
-
- The GNU Affero General Public License is designed specifically to
-ensure that, in such cases, the modified source code becomes available
-to the community. It requires the operator of a network server to
-provide the source code of the modified version running there to the
-users of that server. Therefore, public use of a modified version, on
-a publicly accessible server, gives the public access to the source
-code of the modified version.
-
- An older license, called the Affero General Public License and
-published by Affero, was designed to accomplish similar goals. This is
-a different license, not a version of the Affero GPL, but Affero has
-released a new version of the Affero GPL which permits relicensing under
-this license.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU Affero General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Remote Network Interaction; Use with the GNU General Public License.
-
- Notwithstanding any other provision of this License, if you modify the
-Program, your modified version must prominently offer all users
-interacting with it remotely through a computer network (if your version
-supports such interaction) an opportunity to receive the Corresponding
-Source of your version by providing access to the Corresponding Source
-from a network server at no charge, through some standard or customary
-means of facilitating copying of software. This Corresponding Source
-shall include the Corresponding Source for any work covered by version 3
-of the GNU General Public License that is incorporated pursuant to the
-following paragraph.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the work with which it is combined will remain governed by version
-3 of the GNU General Public License.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU Affero General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU Affero General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU Affero General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU Affero General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If your software can interact with users remotely through a computer
-network, you should also make sure that it provides a way for users to
-get its source. For example, if your program is a web application, its
-interface could display a "Source" link that leads users to an archive
-of the code. There are many ways you could offer source, and different
-solutions will be better for different programs; see section 13 for the
-specific requirements.
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU AGPL, see
-.
\ No newline at end of file
diff --git a/assets/javascripts/plupload/readme.md b/assets/javascripts/plupload/readme.md
deleted file mode 100644
index 5e329d55..00000000
--- a/assets/javascripts/plupload/readme.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# Plupload
-
-Plupload is a cross-browser multi-runtime file uploading API. Basically, a set of tools that will help you to
-build a reliable and visually appealing file uploader in minutes.
-
-Historically, Plupload comes from a dark and hostile age of no HTML5, hence all the alternative fallbacks,
-like Flash, Silverlight and Java (still in development). It is meant to provide an API, that
-will work anywhere and in any case, in one way or another. While having very solid fallbacks, Plupload
-is built with the future of HTML5 in mind.
-
-### Table of Contents
-* [Backstory](#backstory)
-* [Structure](#structure)
- * [File API and XHR L2 pollyfills](https://github.com/moxiecode/moxie/blob/master/README.md)
- * [Plupload API](https://github.com/moxiecode/plupload/wiki/API)
- * [UI Widget](https://github.com/moxiecode/plupload/wiki/UI.Plupload)
- * [Queue Widget](https://github.com/moxiecode/plupload/wiki/pluploadQueue)
-* [Demos](https://github.com/jayarjo/plupload-demos/blob/master/README.md)
-* [Building Instructions](#build)
-* [Getting Started](https://github.com/moxiecode/plupload/wiki/Getting-Started)
- * [Options](https://github.com/moxiecode/plupload/wiki/Options)
- * [Events](https://github.com/moxiecode/plupload/wiki/Uploader#wiki-events)
- * [Methods](https://github.com/moxiecode/plupload/wiki/Uploader#wiki-methods)
- * [Plupload in Your Language](https://github.com/moxiecode/plupload/wiki/Plupload-in-Your-Language)
- * [File Filters](https://github.com/moxiecode/plupload/wiki/File-Filters)
- * [Image Resizing on Client-Side](https://github.com/moxiecode/plupload/wiki/Image-Resizing-on-Client-Side)
- * [Chunking](https://github.com/moxiecode/plupload/wiki/Chunking)
- * [Upload to Amazon S3](https://github.com/moxiecode/plupload/wiki/Upload-to-Amazon-S3)
-* [FAQ](https://github.com/moxiecode/plupload/wiki/Frequently-Asked-Questions)
-* [Support](#support)
- * [Create a Fiddle](https://github.com/moxiecode/plupload/wiki/Create-a-Fiddle)
-* [Contributing](#contribute)
-* [License](#license)
-* [Contact Us](http://www.moxiecode.com/contact.php)
-
-
-### Backstory
-
-Plupload started in a time when uploading a file in a responsive and customizable manner was a real pain.
-Internally, browsers only had the `input[type="file"]` element. It was ugly and clunky at the same time.
-One couldn't even change it's visuals, without hiding it and coding another one on top of it from scratch.
-And then there was no progress indication for the upload process... Sounds pretty crazy today.
-
-It was very logical for developers to look for alternatives and writing their own implementations, using
-Flash and Java, in order to somehow extend limited browser capabilities. And so did we, in our search for
-a reliable and flexible file uploader for
-our [TinyMCE](http://www.tinymce.com/index.php)'s
-[MCImageManager](http://www.tinymce.com/enterprise/mcimagemanager.php).
-
-Quickly enough though, Plupload grew big. It easily split into a standalone project.
-With major *version 2.0* it underwent another huge reconstruction, basically
-[from the ground up](http://blog.moxiecode.com/2012/11/28/first-public-beta-plupload-2/),
-as all the low-level runtime logic has been extracted into separate [File API](http://www.w3.org/TR/FileAPI/)
-and [XHR L2](http://www.w3.org/TR/XMLHttpRequest/) pollyfills (currently known under combined name of [mOxie](https://github.com/moxiecode/moxie)),
-giving Plupload a chance to evolve further.
-
-
-### Structure
-
-Currently, Plupload may be considered as consisting of three parts: low-level pollyfills,
-Plupload API and Widgets (UI and Queue). Initially, Widgets were meant only to serve as examples
-of the API, but quickly formed into fully-functional API implementations that now come bundled with
-the Plupload API. This has been a source for multiple misconceptions about the API as Widgets were
-easily mistaken for the Plupload itself. They are only implementations, such as any of you can
-build by yourself out of the API.
-
-* [Low-level pollyfills (mOxie)](https://github.com/moxiecode/moxie) - have their own [code base](https://github.com/moxiecode/moxie) and [documentation](https://github.com/moxiecode/moxie/wiki) on GitHub.
-* [Plupload API](https://github.com/moxiecode/plupload/wiki/API)
-* [UI Widget](https://github.com/moxiecode/plupload/wiki/UI.Plupload)
-* [Queue Widget](https://github.com/moxiecode/plupload/wiki/pluploadQueue)
-
-
-### Building instructions
-
-Plupload depends on File API and XHR2 L2 pollyfills that currently have their
-[own repository](https://github.com/moxiecode/moxie) on GitHub. However, in most cases you shouldn't
-care as we bundle the latest build of mOxie, including full and minified JavaScript source and
-pre-compiled `SWF` and `XAP` components, with [every release](https://github.com/moxiecode/plupload/releases). You can find everything you may need under `js/` folder.
-
-There are cases where you might need a custom build, for example free of unnecessary runtimes, half the
-original size, etc. The difficult part of this task comes from mOxie and its set of additional runtimes
-that require special tools on your workstation in order to compile.
-Consider [build instructions for mOxie](https://github.com/moxiecode/moxie#build-instructions) -
-everything applies to Plupload as well.
-
-First of all, if you want to build custom Plupload packages you will require [Node.js](http://nodejs.org/),
-as this is our build environment of choice. Node.js binaries (as well as Source)
-[are available](http://nodejs.org/download/) for all major operating systems.
-
-Plupload includes _mOxie_ as a submodule, it also depends on some other repositories for building up it's dev
-environment - to avoid necessity of downloading them one by one, we recommended you to simply clone Plupload
-with [git](http://git-scm.com/) recursively (you will require git installed on your system for this operation
-to succeed):
-
-```
-git clone --recursive https://github.com/moxiecode/plupload.git
-```
-
-And finalize the preparation stage with: `npm install` - this will install all additional modules, including those
-required by dev and test environments. In case you would rather keep it minimal, add a `--production` flag.
-
-*Note:* Currently, for an unknown reason, locally installed Node.js modules on Windows, may not be automatically
-added to the system PATH. So, if `jake` commands below are not recognized you will need to add them manually:
-
-```
-set PATH=%PATH%;%CD%\node_modules\.bin\
-```
-
-
-### Support
-
-We are actively standing behind the Plupload and now that we are done with major rewrites and refactoring,
-the only real goal that we have ahead is making it as reliable and bulletproof as possible. We are open to
-all the suggestions and feature requests. We ask you to file bug reports if you encounter any. We may not
-react to them instantly, but we constantly bear them in my mind as we extend the code base.
-
-In addition to dedicated support for those who dare to buy our OEM licenses, we got
-[discussion boards](http://www.plupload.com/punbb/index.php), which is like an enormous FAQ,
-covering every possible application case. Of course, you are welcome to file a bug report or feature request,
-here on [GitHub](https://github.com/moxiecode/plupload/issues).
-
-Sometimes it is easier to notice the problem when bug report is accompained by the actual code. Consider providing
-[a Plupload fiddle](https://github.com/moxiecode/plupload/wiki/Create-a-Fiddle) for the troublesome code.
-
-
-### Contributing
-
-We are open to suggestions and code revisions, however there are some rules and limitations that you might
-want to consider first.
-
-* Code that you contribute will automatically be licensed under the LGPL, but will not be limited to LGPL.
-* Although all contributors will get the credit for their work, copyright notices will be changed to [Moxiecode Systems AB](http://www.moxiecode.com/).
-* Third party code will be reviewed, tested and possibly modified before being released.
-
-These basic rules help us earn a living and ensure that code remains Open Source and compatible with LGPL license. All contributions will be added to the changelog and appear in every release and on the site.
-
-An easy place to start is to [translate Plupload to your language](https://github.com/moxiecode/plupload/wiki/Plupload-in-Your-Language#contribute).
-
-You can read more about how to contribute at: [http://www.plupload.com/contributing](http://www.plupload.com/contributing)
-
-
-### License
-
-Copyright 2013, [Moxiecode Systems AB](http://www.moxiecode.com/)
-Released under [GPLv2 License](https://github.com/moxiecode/plupload/blob/master/license.txt).
-
-We also provide [commercial license](http://www.plupload.com/commercial.php).
diff --git a/assets/javascripts/redmine_dmsf.js b/assets/javascripts/redmine_dmsf.js
index 133c19d2..e145bd53 100644
--- a/assets/javascripts/redmine_dmsf.js
+++ b/assets/javascripts/redmine_dmsf.js
@@ -171,116 +171,3 @@ function dmsfExpandRows(EL, parentRow, url) {
alert('An error in rows expanding');
});
}
-
-/* Plupload */
-function dmsf_plupload_toggle(button, second_button) {
- if(button.hasClass('ui-state-default')) {
- button.removeClass('ui-state-default');
- button.addClass('ui-state-active');
- button.attr('aria-pressed', 'true');
- second_button.removeClass('ui-state-active');
- second_button.addClass('ui-state-default');
- second_button.attr('aria-pressed', 'false');
- }
-}
-
-function initPlUploader(uploader, formUrl, maxFileSize, maxFileCount, flashUrl) {
- uploader.html('');
- uploader = $('div', uploader);
- uploader.plupload({
- runtimes : 'html5,flash,html4',
- url : formUrl,
- max_file_size : maxFileSize,
- max_file_count: maxFileCount,
- multipart: true,
- // Enable ability to drag'n'drop files onto the widget (currently only HTML5 supports that)
- dragdrop: true,
- multipart_params : { authenticity_token : $('input[name=authenticity_token]').val() },
- // Rename files by clicking on their titles
- rename: true,
- // Views to activate
- views: {
- list: true,
- thumbs: true, // Show thumbs
- active: 'thumbs'
- },
- // Flash settings
- flash_swf_url : flashUrl
- });
- $('.plupload_scroll', uploader).resizable({
- handles: 's'
- });
-
- var pluploader = uploader.plupload('getUploader');
-
- pluploader.bind('FileUploaded', function(up, file, response) {
- var responseObject = $.parseJSON(response.response);
- if (responseObject == null) { //Bug: on Firefox folders entries act unexpectedly.
- file.status = plupload.FAILED;
- pluploader.trigger('UploadProgress', file);
- pluploader.trigger('QueueChanged');
- } else {
- if (responseObject.error == null) {
- var disk_filename_input = $('').attr('type', 'hidden')
- .attr('name', 'uploaded[' + window.dmsfFileFieldCount + '][disk_filename]')
- .val(responseObject.disk_filename);
- uploader.append(disk_filename_input);
- var content_type_input = $('').attr('type', 'hidden')
- .attr('name', 'uploaded[' + window.dmsfFileFieldCount + '][content_type]')
- .val(responseObject.content_type);
- uploader.append(content_type_input);
- var original_filename_input = $('').attr('type', 'hidden')
- .attr('name', 'uploaded[' + window.dmsfFileFieldCount + '][original_filename]')
- .val(responseObject.original_filename);
- uploader.append(original_filename_input);
- var tempfile_path = $('').attr('type', 'hidden')
- .attr('name', 'uploaded[' + window.dmsfFileFieldCount + '][tempfile_path]')
- .val(responseObject.tempfile_path);
- uploader.append(tempfile_path);
- } else {
- file.status = plupload.FAILED;
- pluploader.trigger('UploadProgress', file);
- pluploader.trigger('QueueChanged');
- }
- }
- window.dmsfFileFieldCount++;
- return true;
- });
-
- pluploader.bind('UploadComplete', function(up, files) {
- $('#uploadform').submit();
- });
-
- pluploader.bind('PostInit', function() {
- /* This is a workaround for EasyRedmine.
- There are radio buttons with texts instead of buttons with icons. */
- var list = $("label.plupload_button[data-view='list']");
- if(list.attr('role') != 'button') {
- var thumbs = $("label.plupload_button[data-view='thumbs']");
- if (list) {
- list.text('');
- list.attr('title', 'List');
- list.attr('role', 'button');
- list.attr('aria-pressed', 'false');
- list.removeClass('ui-checkboxradio-radio-label ui-checkboxradio-checked ui-state-active ui-controlgroup-item ui-checkboxradio-label');
- list.addClass('ui-button-icon-only ui-state-default ui-corner-left');
- list.html("List");
- list.click(function () {
- dmsf_plupload_toggle(list, thumbs);
- });
- }
- if (thumbs) {
- thumbs.text('');
- thumbs.attr('title', 'Thumbnails');
- thumbs.attr('role', 'button');
- thumbs.attr('aria-pressed', 'true');
- thumbs.removeClass('ui-checkboxradio-radio-label ui-checkboxradio-checked ui-controlgroup-item ui-checkboxradio-label');
- thumbs.addClass('ui-button-icon-only ui-corner-right');
- thumbs.html("Thumbnails");
- thumbs.click(function () {
- dmsf_plupload_toggle(thumbs, list);
- });
- }
- }
- });
-}
\ No newline at end of file
diff --git a/assets/stylesheets/jquery.dataTables/datatables.min.css b/assets/stylesheets/jquery.dataTables/datatables.min.css
deleted file mode 100644
index 7ad9f7d8..00000000
--- a/assets/stylesheets/jquery.dataTables/datatables.min.css
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * This combined file was created by the DataTables downloader builder:
- * https://datatables.net/download
- *
- * To rebuild or modify this file with the latest versions of the included
- * software please visit:
- * https://datatables.net/download/#ju/dt-1.10.18/r-2.2.2
- *
- * Included libraries:
- * DataTables 1.10.18, Responsive 2.2.2
- */
-
-table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit}
-
-
-table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:9px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#31b131}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}
-
-
diff --git a/assets/stylesheets/jquery.dataTables/images/sort_asc.png b/assets/stylesheets/jquery.dataTables/images/sort_asc.png
deleted file mode 100644
index e1ba61a8..00000000
Binary files a/assets/stylesheets/jquery.dataTables/images/sort_asc.png and /dev/null differ
diff --git a/assets/stylesheets/jquery.dataTables/images/sort_asc_disabled.png b/assets/stylesheets/jquery.dataTables/images/sort_asc_disabled.png
deleted file mode 100644
index fb11dfe2..00000000
Binary files a/assets/stylesheets/jquery.dataTables/images/sort_asc_disabled.png and /dev/null differ
diff --git a/assets/stylesheets/jquery.dataTables/images/sort_both.png b/assets/stylesheets/jquery.dataTables/images/sort_both.png
deleted file mode 100644
index af5bc7c5..00000000
Binary files a/assets/stylesheets/jquery.dataTables/images/sort_both.png and /dev/null differ
diff --git a/assets/stylesheets/jquery.dataTables/images/sort_desc.png b/assets/stylesheets/jquery.dataTables/images/sort_desc.png
deleted file mode 100644
index 0e156deb..00000000
Binary files a/assets/stylesheets/jquery.dataTables/images/sort_desc.png and /dev/null differ
diff --git a/assets/stylesheets/jquery.dataTables/images/sort_desc_disabled.png b/assets/stylesheets/jquery.dataTables/images/sort_desc_disabled.png
deleted file mode 100644
index c9fdd8a1..00000000
Binary files a/assets/stylesheets/jquery.dataTables/images/sort_desc_disabled.png and /dev/null differ
diff --git a/assets/stylesheets/plupload/jquery.ui.plupload.css b/assets/stylesheets/plupload/jquery.ui.plupload.css
deleted file mode 100644
index 820a65f6..00000000
--- a/assets/stylesheets/plupload/jquery.ui.plupload.css
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- Plupload
-------------------------------------------------------------------- */
-
-.plupload_wrapper * {
- box-sizing: content-box;
-}
-
-.plupload_button {
- cursor: pointer;
- outline: none;
-}
-
-.plupload_wrapper {
- font: normal 11px Verdana,sans-serif;
- width: 100%;
- min-width: 520px;
- line-height: 12px;
-}
-
-.plupload_container {
- _height: 300px;
- min-height: 300px;
- position: relative;
-}
-
-.plupload_filelist_footer {border-width: 1px 0 0 0}
-.plupload_file {border-width: 0 0 1px 0}
-.plupload_container .plupload_header {border-width: 0 0 1px 0; position: relative;}
-
-.plupload_delete .ui-icon,
-.plupload_done .ui-icon,
-.plupload_failed .ui-icon {
- cursor:pointer;
-}
-
-.plupload_header_content {
- height: 56px;
- padding: 0 160px 0 60px;
- position: relative;
-}
-
-.plupload_logo {
- width: 40px;
- height: 40px;
- background: url('../img/plupload.png') no-repeat 0 0;
- position: absolute;
- top: 8px;
- left: 8px;
-}
-
-.plupload_header_content_bw .plupload_logo {
- background-position: -40px 0;
-}
-
-.plupload_header_title {
- font: normal 18px sans-serif;
- line-height: 19px;
- padding: 6px 0 3px;
-}
-
-.plupload_header_text {
- font: normal 12px sans-serif;
-}
-
-.plupload_view_switch {
- position: absolute;
- right: 16px;
- bottom: 8px;
- margin: 0;
- display: none;
-}
-
-.plupload_view_switch .ui-button {
- margin-right: -0.31em;
-}
-
-.plupload_content {
- position: absolute;
- top: 86px;
- bottom: 44px;
- left: 0;
- right: 0;
- overflow-y: auto;
- width: 100%;
-}
-
-.plupload_filelist {
- border-collapse: collapse;
- border-left: none;
- border-right: none;
- margin: 0;
- padding: 0;
- width: 100%;
- -moz-user-select: none;
- -webkit-user-select: none;
- user-select: none;
-}
-
-.plupload_filelist_content {
- padding: 0;
- margin: 0;
-}
-
-.plupload_cell {padding: 8px 6px;}
-
-.plupload_file {
- list-style: none;
- display: block;
- position: relative;
- overflow: hidden;
- line-height: 12px;
-}
-
-.plupload_file_thumb {
- position: relative;
- background-image: none;
- background-color: #eee;
-}
-
-.plupload_thumb_loading {
- background: #eee url(../img/loading.gif) center no-repeat;
-}
-
-.plupload_thumb_loading .plupload_file_dummy,
-.plupload_thumb_embedded .plupload_file_dummy {
- display: none;
-}
-
-.plupload_file_name {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.plupload_filelist_header {
- border-top: none;
-}
-
-.plupload_filelist_footer {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
-}
-
-.plupload_buttons {
- position: relative;
-}
-
-/* list view */
-.plupload_view_list .plupload_file {
- border-left: none;
- border-right: none;
- border-top: none;
- height: 29px;
- width: 100% !important;
- /* fix IE6 vertical white-space bug */
- _float: left;
- _clear: left;
-}
-
-.plupload_view_list div.plupload_file_size,
-.plupload_view_list div.plupload_file_status,
-.plupload_view_list div.plupload_file_action {
- padding: 8px 6px;
- position: absolute;
- top: 0;
- right: 0;
-}
-
-.plupload_view_list div.plupload_file_name {
- margin-right: 156px;
- padding: 8px 6px;
- _width: 75%;
-}
-
-.plupload_view_list div.plupload_file_size {
- right: 28px;
-}
-
-.plupload_view_list div.plupload_file_status {
- right: 82px;
-}
-
-.plupload_view_list .plupload_file_rename {
- margin-left: -2px;
-}
-
-.plupload_view_list .plupload_file_size,
-.plupload_view_list .plupload_file_status,
-.plupload_filelist_footer .plupload_file_size,
-.plupload_filelist_footer .plupload_file_status {
- text-align: right;
- width: 52px;
-}
-
-.plupload_view_list .plupload_file_thumb {
- position: absolute;
- top: -999px;
-}
-
-.plupload_view_list .plupload_file_progress {
- display: none;
-}
-
-
-/* thumbs view */
-.plupload_view_thumbs .plupload_content {
- top: 57px;
-}
-
-.plupload_view_thumbs .plupload_filelist_header {
- display: none;
-}
-
-.plupload_view_thumbs .plupload_file {
- padding: 6px;
- margin: 10px;
- border: 1px solid #fff;
- float: left;
-}
-
-.plupload_view_thumbs .plupload_file_thumb,
-.plupload_view_thumbs .plupload_file_dummy {
- text-align: center;
- overflow: hidden;
-}
-
-.plupload_view_thumbs .plupload_file_dummy {
- font-size: 21px;
- font-weight: bold;
- text-transform: lowercase;
- overflow: hidden;
- border: none;
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-}
-
-.plupload_view_thumbs div.plupload_file_action {
- position: absolute;
- top: 0;
- right: 0;
-}
-
-.plupload_view_thumbs div.plupload_file_name {
- padding: 0;
- font-weight: bold;
-}
-
-.plupload_view_thumbs .plupload_file_rename {
- padding: 1px 0;
- width: 100% !important;
-}
-
-.plupload_view_thumbs div.plupload_file_size {
- font-size: 0.8em;
- font-weight: normal;
-}
-
-.plupload_view_thumbs div.plupload_file_status {
- position: relative;
- height: 3px;
- overflow: hidden;
- text-indent: -999px;
- margin-bottom: 3px;
-}
-
-.plupload_view_thumbs div.plupload_file_progress {
- border: none;
- height: 100%;
-}
-
-.plupload .ui-sortable-helper,
-.plupload .ui-sortable .plupload_file {
- cursor:move;
-}
-
-.plupload_file_action {width: 16px;}
-.plupload_file_name {
- overflow: hidden;
- padding-left: 10px;
-}
-
-.plupload_file_rename {
- border: none;
- font: normal 11px Verdana, sans-serif;
- padding: 1px 2px;
- line-height: 11px;
- height: 11px;
-}
-
-.plupload_progress {width: 60px;}
-.plupload_progress_container {padding: 1px;}
-
-
-/* Floats */
-
-.plupload_right {float: right;}
-.plupload_left {float: left;}
-.plupload_clear,.plupload_clearer {clear: both;}
-.plupload_clearer, .plupload_progress_bar {
- display: block;
- font-size: 0;
- line-height: 0;
-}
-.plupload_clearer {height: 0;}
-
-/* Misc */
-.plupload_hidden {display: none !important;}
-
-.plupload_droptext {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: transparent;
- text-align: center;
- vertical-align: middle;
- border: 0;
- line-height: 160px;
- display: none;
-}
-
-.plupload_dropbox .plupload_droptext {
- display: block;
-}
-
-.plupload_files_queued .plupload_droptext {
- display: none;
-}
-
-.plupload_buttons, .plupload_upload_status {float: left}
-
-.plupload_message {
- position: absolute;
- top: -1px;
- left: -1px;
- height: 100%;
- width: 100%;
-}
-
-.plupload_message p {
- padding:0.7em;
- margin:0;
-}
-
-.plupload_message strong {
- font-weight: bold;
-}
-
-.plupload_message i {
- font-style: italic;
-}
-
-.plupload_message p span.ui-icon {
- float: left;
- margin-right: 0.3em;
-}
-
-.plupload_header_content .ui-state-error,
-.plupload_header_content .ui-state-highlight {
- border:none;
-}
-
-.plupload_message_close {
- position:absolute;
- top:5px;
- right:5px;
- cursor:pointer;
-}
-
-.plupload .ui-sortable-placeholder {
- height:35px;
-}
diff --git a/assets/stylesheets/redmine_dmsf.css b/assets/stylesheets/redmine_dmsf.css
index 6f706f8d..bf1d156b 100644
--- a/assets/stylesheets/redmine_dmsf.css
+++ b/assets/stylesheets/redmine_dmsf.css
@@ -31,13 +31,6 @@
height: 16px;
}
-#dmsf_buttons,
-#dmsf_tag,
-#dmsf_uploader,
-#dmsf_uploader_header {
- display: none;
-}
-
#browser_wrapper .ui-toolbar {
margin-right: -2px;
}
@@ -46,15 +39,6 @@
border: none;
}
-#dmsf_tag {
- margin-left: 5px;
-}
-
-#dmsf_tag .check_box_group {
- background: inherit;
- border: 0;
-}
-
.list .dmsf_modified {
min-width: 127px;
width: 127px;
@@ -84,112 +68,29 @@
padding: 0;
}
-.list .dmsf_checkbox .DataTables_sort_wrapper {
- padding: 0;
-}
-
-table.display thead th div.DataTables_sort_wrapper {
- position: unset;
-}
-
-table.display thead th div.DataTables_sort_wrapper span {
- z-index: 1;
-}
-
.dmsf_entries {
margin-bottom: 10px;
display: block;
}
-/* Comptibility with Easy SW: sorting icons are not visible do */
-.ui-state-default .ui-icon,
-.ui-icon-circle-plus,
-.ui-icon-circle-arrow-e {
- background-image: url("../../../stylesheets/jquery/images/ui-icons_759fcf_256x240.png");
-}
-
-.ui-icon-triangle-1-n {
- background-position: 0 -16px;
-}
-
-.ui-icon-triangle-1-s {
- background-position: -64px -16px;
-}
-/* end */
-
-.dmsf_controls,
-.dmsf_controls input,
-.dmsf_controls select,
-.dmsf_entries #browser_filter.dataTables_filter,
-.dmsf_entries #browser_filter.dataTables_filter input {
- font-size: 0.9em;
-}
-
/* Revision's downloads box */
-.dmsf_revision_box .dataTables_length label,
-.dmsf_revision_box .dataTables_length select,
-.dmsf_revision_box .dataTables_filter label,
-.dmsf_revision_box .dataTables_filter input {
- font-weight: normal;
-}
#dmsf_buttons.dmsf_controls {
float: left
}
-#dmsf_tag.dmsf_controls {
- float: right
-}
-
-#browser_filter.dataTables_filter {
- float:none;
-}
-
-.dmsf_filename {
- padding: 0 10px 0 10px;
- float: right;
- font-size: 0.8em;
- white-space: nowrap;
-}
-
-.dmsf_size {
- font-size: 0.8em;
- white-space: nowrap;
-}
-
-.dmsf_author {
- font-size: 0.8em;
- white-space: nowrap;
-}
-
-.dmsf_version {
- font-size: 0.8em;
- white-space: nowrap;
-}
-
-.dmsf_version img {
- vertical-align:text-top;
-}
-
-.dmsf_workflow {
- font-size: 0.8em;
- white-space: nowrap;
-}
-
-.dmsf_upload_select {
- float: right;
- font-size: 0.9em;
-}
-
-.dmsf_upload_select input, .dmsf_upload_select select {
- font-size: 0.9em;
-}
-
.dmsf_uploader span[id*="dmsf_"] .filename {
-webkit-box-shadow: none !important;
box-shadow: none !important;
}
+.dmsf_filename {
+ padding: 0 10px 0 10px;
+ float: right;
+ font-size: 0.8em;
+ white-space: nowrap;
+}
+
/* Approval workflow */
#dmsf_users_for_delegate { height: 200px; overflow:auto; }
#dmsf_users_for_delegate label { display: block; }
@@ -252,14 +153,6 @@ div.dmsf_revision_inner_box .attribute .label {
}
/* Command icons */
-.icon-wf-none { background-image: url(../images/none.png); }
-.icon-wf-waiting { background-image: url(../images/waiting_for_approval.png); }
-.icon-wf-assigned { background-image: url(../images/assigned.png); }
-/* TODO: There is an extra tick in the context menu */
-/*.icon-wf-none::before{content: '✓'}
-.icon-wf-waiting::before{content: '✓'}
-.icon-wf-assigned::before{content: '✓'}*/
-
.icon-link { background-image: url(../../../images/link.png); }
.icon-approvalworkflows { background-image: url(../../../images/ticket_go.png); }
@@ -321,36 +214,27 @@ div.dmsf_revision_inner_box .attribute .label {
/* Links */
.dmsf_gray { color: #AAA }
-.dmsf_gray a, .dmsf_gray a:link, .dmsf_gray a:visited{ color: #484848; text-decoration: none; }
+
+.dmsf_gray a, .dmsf_gray a:link, .dmsf_gray a:visited {
+ color: #484848;
+ text-decoration: none;
+}
/* System folders */
-.dmsf_system { color: #5C82AD }
-.dmsf_system a, .dmsf_gray a:link, .dmsf_gray a:visited{ color: #484848; text-decoration: none; }
+.dmsf_system {
+ color: #5C82AD
+}
+
+.dmsf_system a, .dmsf_gray a:link, .dmsf_gray a:visited {
+ color: #484848;
+ text-decoration: none;
+}
/* Search results */
.icon-dmsf-file { background-image: url(../../../images/document.png); }
/* DMSF tree view */
.dmsf_hidden { display:none; }
-.dmsf_tree span.dmsf_expander { cursor: pointer; }
-.dmsf_tree.dmsf_expanded td.dmsf_title span {
- background: url(../../../images/arrow_down.png) no-repeat 0 50%;
- padding-left: 16px;
-}
-.dmsf_tree.dmsf_child .dmsf_title span { padding-left: 16px; }
-.dmsf_tree.dmsf_collapsed .dmsf_title span {
- background: url(../../../images/arrow_right.png) no-repeat 0 50%;
- padding-left: 16px;
-}
-.dmsf_tree.idnt-1 .dmsf_title {padding-left: 1.5em;}
-.dmsf_tree.idnt-2 .dmsf_title {padding-left: 2em;}
-.dmsf_tree.idnt-3 .dmsf_title {padding-left: 2.5em;}
-.dmsf_tree.idnt-4 .dmsf_title {padding-left: 3em;}
-.dmsf_tree.idnt-5 .dmsf_title {padding-left: 3.5em;}
-.dmsf_tree.idnt-6 .dmsf_title {padding-left: 4em;}
-.dmsf_tree.idnt-7 .dmsf_title {padding-left: 4.5em;}
-.dmsf_tree.idnt-8 .dmsf_title {padding-left: 5em;}
-.dmsf_tree.idnt-9 .dmsf_title {padding-left: 5.5em;}
.dmsf_odd {background-color:#f6f7f8;}
.dmsf_even {background-color: #fff;}
@@ -368,7 +252,7 @@ div.dmsf_revision_inner_box .attribute .label {
}
/* DMSF file upload */
-.dmsf_uploader{
+.dmsf_uploader {
padding:10px;
margin-bottom: 20px;
background-color:#f6f6f6;
@@ -382,31 +266,71 @@ div.dmsf_revision_inner_box .attribute .label {
overflow: hidden;
}
-.dmsf_add_link{
+.dmsf_add_link {
display: block;
float: right;
margin-top: 10px;
margin-bottom: 10px;
}
-.dmsf_add_file{
+.dmsf_add_file {
display: block;
float: left;
margin-top: 10px;
margin-bottom: 10px;
}
-#dmsf_attachments_fields input.description {margin-left:4px; width:340px;}
-#dmsf_attachments_fields span {display:block; white-space:nowrap;}
-#dmsf_attachments_fields input.filename {border:0; height:1.8em; width:250px; color:#555; background-color:inherit; background:url(../../../images/attachment.png) no-repeat 1px 50%; padding-left: 18px;}
-#dmsf_attachments_fields .ajax-waiting input.filename {background:url(../../../images/hourglass.png) no-repeat 0 50%;}
-#dmsf_attachments_fields .ajax-loading input.filename {background:url(../../../images/loading.gif) no-repeat 0 50%;}
-#dmsf_attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
+#dmsf_attachments_fields input.description {
+ margin-left:4px;
+ width:340px;
+}
-#dmsf_links_attachments_fields span {display:block; white-space:nowrap;}
-#dmsf_links_attachments_fields input.filename {border:0; height:1.8em; width:250px; color:#555; background-color:inherit; background:url(../../../images/link.png) no-repeat 1px 50%; padding-left: 18px;}
+#dmsf_attachments_fields span {
+ display:block;
+ white-space:nowrap;
+}
-/* New link form*/
+#dmsf_attachments_fields input.filename {
+ border:0;
+ height:1.8em;
+ width:250px;
+ color:#555;
+ background-color:inherit;
+ background:url(../../../images/attachment.png) no-repeat 1px 50%;
+ padding-left: 18px;
+}
+
+#dmsf_attachments_fields .ajax-waiting input.filename {
+ background:url(../../../images/hourglass.png) no-repeat 0 50%;
+}
+
+#dmsf_attachments_fields .ajax-loading input.filename {
+ background:url(../../../images/loading.gif) no-repeat 0 50%;
+}
+
+#dmsf_attachments_fields div.ui-progressbar {
+ width: 100px;
+ height:14px;
+ margin: 2px 0 -5px 8px;
+ display: inline-block;
+}
+
+#dmsf_links_attachments_fields span {
+ display:block;
+ white-space:nowrap;
+}
+
+#dmsf_links_attachments_fields input.filename {
+ border:0;
+ height:1.8em;
+ width:250px;
+ color:#555;
+ background-color:inherit;
+ background:url(../../../images/link.png) no-repeat 1px 50%;
+ padding-left: 18px;
+}
+
+/* New link form */
#dmsf_link_target_file_id, #dmsf_link_target_folder_id, #dmsf_link_target_project_id, #dmsf_link_name{
min-width: 40%;
}
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 3743ac2d..fdfc444d 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -128,9 +128,6 @@ cs:
option_version_major: Hlavní
option_version_custom: Vlastní
label_new_content: Nový obsah
- label_maximum_files_upload: Maximální počet najednou nahraných souborů
- note_maximum_number_of_files_uploaded: Maximální počet najednou nahraných souborů. 0 znamená bez omezení.
-
label_maximum_files_download: Maximální počet najednou stažených souborů
note_maximum_number_of_files_downloaded: Maximální počet najednou stažených souborů jako Zip nebo odeslaných emailem.
0 znamená bez omezení.
@@ -348,13 +345,6 @@ cs:
locked_documents: Zamčené dokumenty
open_approvals: Procesy ke schválení
- label_maximum_ajax_upload_filesize: Maximální velikost souboru nahratelná přes AJAX
- note_maximum_ajax_upload_filesize: Omezuje velikost souboru, který může být nahrán přes standardní rozhraní AJAX,
- jinak se použije standardní rozhraní Redminu. Číslo je v MB.
-
- label_classic: Klasický
- label_drag_drop: Moderní
-
error_maximum_upload_filecount: "Nelze nahrát více než %{filecount} soubor(ů)."
label_public_urls: Veřejné URL platné do
@@ -411,8 +401,6 @@ cs:
label_inherited_permissions: Zděděná práva
- label_switch_rlf: Přepni do/z Redmine vzhledu
- button_switch: Přepni vzhled
button_edit_content: Upravit obsah
field_workflow: Workflow
field_modified: Aktualizoval
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 0e6d44a7..aab90cf2 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -127,8 +127,6 @@ de:
option_version_minor: Unterversion
option_version_major: Hauptversion
label_new_content: Neuer Inhalt
- label_maximum_files_upload: Maximal zulässige Anzahl der hochgeladenen Dateien
- option_version_custom: Benutzerdefinierte
note_maximum_number_of_files_uploaded: Beschränkt die maximale Anzahl der Dateien, die auf einmal hochgeladen werden
können. 0 bedeutet unbeschränkt.
label_maximum_files_download: Maximal zulässige Anzahl der Dateien, die heruntergeladen werden können.
@@ -348,13 +346,6 @@ de:
locked_documents: Gesperrte Dateien
open_approvals: Offene Genehmigungs-Workflows
- label_maximum_ajax_upload_filesize: Maximale Dateigröße für den Upload via AJAX
- note_maximum_ajax_upload_filesize: Maximale Dateigröße für den Upload über die AJAX-Schnittstelle. Für größere Dateien
- muss der Standard-Uploader von Redmine verwendet werden. Angabe in MB.
-
- label_classic: Klassisch
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "Nicht mehr als %{filecount} Datai(en) kann man hochladen."
label_public_urls: Öffentliches URLs gültig bis
@@ -411,8 +402,6 @@ de:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6f8445f2..2493e065 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -128,9 +128,6 @@ en:
option_version_major: Major
option_version_custom: Custom
label_new_content: New content
- label_maximum_files_upload: Maximum files upload
- note_maximum_number_of_files_uploaded: Limits maximum number of files uploaded at once. 0 means unlimited.
-
label_maximum_files_download: Maximum files download
note_maximum_number_of_files_downloaded: Limits maximum number of files downloaded in zip or sent via email. 0 means
unlimited.
@@ -348,13 +345,6 @@ en:
locked_documents: Locked documents
open_approvals: Open approvals
- label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
- note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise
- Redmine standard upload form must be used. Number is in MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ en:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 22b20733..4c5dc335 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -128,9 +128,6 @@ es:
option_version_major: Mayor
option_version_custom: Custom
label_new_content: Nuevo contenido
- label_maximum_files_upload: Número máximo de archivos de subida
- note_maximum_number_of_files_uploaded: Número de límite máximo de archivos para una sola subida. 0 equivale a
- ilimitado.
label_maximum_files_download: Número máximo de archivos para descargar
note_maximum_number_of_files_downloaded: Número de límite máximo de archivos para una sola descarga en Zip o enviado
por email. 0 equivale a ilimitdo.
@@ -348,13 +345,6 @@ es:
locked_documents: Documentos bloqueados
open_approvals: Aprobaciones abiertas
- label_maximum_ajax_upload_filesize: "El máximo tamaño de archivo para subir por AJAX"
- note_maximum_ajax_upload_filesize: "El límite máximo de tamaño de archivo que puede ser subido por la interfaz AJAX
- estandar, de lo contrario se debe utilizar el formulario estandar de Redmine. El número es en MB."
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ es:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 23a094e1..f7b1c032 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -128,9 +128,6 @@ fr:
option_version_major: (modification majeure)
option_version_custom: (personnalisée)
label_new_content: Nouvelle version du fichier
- label_maximum_files_upload: Nombre maximal de documents pouvant être transmis
- note_maximum_number_of_files_uploaded: Nombre maximal de documents pouvant être transmis en une fois. La valeur 0
- signifie illimité.
label_maximum_files_download: Nombre maximal de fichiers pouvant être téléchargés
note_maximum_number_of_files_downloaded: Nombre maximal de documents pouvant être téléchargés ou transmis par mail en
une fois. La valeur 0 signifie illimité.
@@ -348,13 +345,6 @@ fr:
locked_documents: Documents verrouillés
open_approvals: Approbations en attente
- label_maximum_ajax_upload_filesize: Taille maximale de fichier pour téléversement via AJAX
- note_maximum_ajax_upload_filesize: "Taille maximale, en méga octets, de fichier pour téléversement via l'interface
- standard AJAX. Sinon l'interface standard de Redmine doit être utilisée."
-
- label_classic: Classique
- label_drag_drop: Moderne
-
error_maximum_upload_filecount: "Pas plus de %{filecount} fichier(s) ne peuvent être téléversés."
label_public_urls: URLs publiques valides pour
@@ -411,8 +401,6 @@ fr:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 8a4dd77b..44e7f38a 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -128,9 +128,6 @@ hu:
option_version_major: Fő
option_version_custom: Egyedi
label_new_content: Új tartalom
- label_maximum_files_upload: Maximum feltölthető fájlok
- note_maximum_number_of_files_uploaded: Egyszerre feltölthető fájlok maximum száma. 0 korlátlan fájlfeltöltést jelent.
-
label_maximum_files_download: Maximálisan feltölthető fájlok
note_maximum_number_of_files_downloaded: Maximálisan letölthető zip fájlok, vagy emailek. 0 korlátlan letöltést
jelent.
@@ -348,14 +345,6 @@ hu:
locked_documents: Locked documents
open_approvals: Nyitott jóváhagyások
- label_maximum_ajax_upload_filesize: Maximum méretű fájl feltöltése AJAX-on keresztül lehetésges
- note_maximum_ajax_upload_filesize: Korlározza a maximális fájlméretet, amelyet a hagyományos AJAX interfészen
- keresztül lehet feltölteni. Egyéb esetben a szoftver a saját feltöltő űrlapját használja. A szám MB-ben értendő.
- számára csak olvasható vagy írható-olvasható webdav felületről
-
- label_classic: Klasszikus
- label_drag_drop: Drag&Drop
-
error_maximum_upload_filecount: "Nem több, mint %{filecount} fájl tölthető fel."
label_public_urls: Public URLs valid to
@@ -411,8 +400,6 @@ hu:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 91215674..3a941bdb 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -128,9 +128,6 @@ it: # Italian strings thx 2 Matteo Arceci!
option_version_major: Maggiore
option_version_custom: Personalizzata
label_new_content: Nuovo contenuto
- label_maximum_files_upload: Limite di caricamento
- note_maximum_number_of_files_uploaded: Limita il numero massimo di documenti caricati alla volta. 0 significa senza
- limiti.
label_maximum_files_download: Numero massimo di documenti scaricabili
note_maximum_number_of_files_downloaded: Limita il numero massimo di documenti scaricabili in archivio zip o spediti
via email. 0 significa senza limiti.
@@ -348,13 +345,6 @@ it: # Italian strings thx 2 Matteo Arceci!
locked_documents: Documenti bloccati
open_approvals: Approvazioni aperte
- label_maximum_ajax_upload_filesize: Dimensione massima dei documenti caricabili tramite AJAX
- note_maximum_ajax_upload_filesize: Limita la dimensione massima dei documenti che possono essere caricati tramite
- interfaccia standard AJAX altrimenti sarà necessario utilizzare il modulo standard di Redmine. Il numero è espresso
- in MB.
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ it: # Italian strings thx 2 Matteo Arceci!
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index d6d6c34f..b9343711 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -128,9 +128,6 @@ ja:
option_version_major: メジャー
option_version_custom: カスタム
label_new_content: 新規コンテンツ
- label_maximum_files_upload: 最大ファイルアップロード数
- note_maximum_number_of_files_uploaded: 一度にアップロードできるファイル数の上限。0は無制限。
-
label_maximum_files_download: 最大ファイルダウンロード数
note_maximum_number_of_files_downloaded: Zip でダウンロードできる、またはメールで送信できるファイル数の上限。0は無制限。
@@ -348,13 +345,6 @@ ja:
locked_documents: ロック中
open_approvals: 未承認
- label_maximum_ajax_upload_filesize: アップロードファイルサイズ上限
- note_maximum_ajax_upload_filesize: アップロード可能なファイルサイズの上限。AjaxおよびRedmineの仕様に制限される
- (2ギガバイト程度までは確認済み)単位はMB。
-
- label_classic: クラシック
- label_drag_drop: モダン
-
error_maximum_upload_filecount: 一度にアップロードできるファイルは %{files} つまでです。
label_public_urls: 公開用URL
@@ -411,8 +401,6 @@ ja:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 1d6c1ccd..d640db34 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -127,9 +127,6 @@ ko:
option_version_major: 중요한
option_version_custom: 임의의
label_new_content: 새로운 콘텐츠
- label_maximum_files_upload: 최대 업로드 개수
- note_maximum_number_of_files_uploaded: 한번에 업로드 할 수 있는 최대 파일 수 제한. 0은 무제한을 나타냅니다.
-
label_maximum_files_download: 최대 다운로드 개수
note_maximum_number_of_files_downloaded: Zip 혹은 전자 우편을 통해 다운로드 할 수 있는 최대 파일 수 제한. 0은 무제한을 나타냅니다.
@@ -346,12 +343,6 @@ ko:
locked_documents: 잠긴 문서
open_approvals: 승인 열기
- label_maximum_ajax_upload_filesize: Ajax를 이용하여 업로드 할 수 있는 최대 파일 크기
- note_maximum_ajax_upload_filesize: 레드마인 표준 업로드를 사용하는 경우를 제외하고 Ajax 인터페이스로 업로드 할 때의 최대 파일 크기를 제한합니다. 단위는 MiB이며, 0은 무제한을 의미합니다.
-
- label_classic: 일반
- label_drag_drop: 드래그 & 드롭
-
error_maximum_upload_filecount: "%{filecount}가 넘는 파일을 업로드 할 수 없습니다."
label_public_urls: Public URLs valid to
@@ -404,8 +395,6 @@ ko:
label_inherited_permissions: 상속된 권한
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 41f5cff3..ba6b239c 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -128,9 +128,6 @@ nl:
option_version_major: Belangrijk
option_version_custom: Aangepast
label_new_content: Nieuwe inhoud
- label_maximum_files_upload: Maximale bestandsupload
- note_maximum_number_of_files_uploaded: Beperkt maximaal aantal bestanden dat tegelijkertijd geupload kan worden. 0
- betekent onbeperkt.
label_maximum_files_download: Maximaal aantal bestanden download
note_maximum_number_of_files_downloaded: Beperkt maximaal aantal bestanden gedownload in zip of verzonden via e-mail.
0 betekent onbeperkt.
@@ -348,13 +345,6 @@ nl:
locked_documents: Vergrendelde documenten
open_approvals: Open goedkeuringen
- label_maximum_ajax_upload_filesize: Maximale bestandsgrootte te uploaden via AJAX
- note_maximum_ajax_upload_filesize: Beperkt maximale bestandsgrootte die geupload kan worden via standaard AJAX
- interface of het Redmine standaard upload formulier moet worden gebruikt. Getal is in MB.
-
- label_classic: Klassiek
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "Er kunnen niet meer dan %{filecount} bestand(en) worden geupload."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ nl:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index b53e3b74..d5e114fc 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -128,9 +128,6 @@ pl:
option_version_major: Major
option_version_custom: Custom
label_new_content: Nowa zawartość
- label_maximum_files_upload: Maximum files upload
- note_maximum_number_of_files_uploaded: Maksymalna liczba jednocześnie przesyłanych plików. 0 oznacza brak ograniczeń.
-
label_maximum_files_download: Maksymalna liczba jednocześnie pobieranych plików
note_maximum_number_of_files_downloaded: Maksymalna liczba plików pobieranych w paczce zip lub wysyłanych przez email.
0 oznacza brak ograniczeń.
@@ -348,13 +345,6 @@ pl:
locked_documents: Dokumenty zablokowane
open_approvals: Otwarte procesy akceptacji
- label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
- note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise
- Redmine standard upload form must be used. Number is in MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ pl:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 25e39b4f..d983564c 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -128,9 +128,6 @@ pt-BR:
option_version_major: Major
option_version_custom: Personalizado
label_new_content: Novo conteúdo
- label_maximum_files_upload: Máximo de arquivos para upload
- note_maximum_number_of_files_uploaded: Limite máximo de arquivos carregados de uma única vez.
-
label_maximum_files_download: Máximo de download de arquivos
note_maximum_number_of_files_downloaded: Limite máximo de arquivos para download ou envio por e-mail de uma única vez.
@@ -348,13 +345,6 @@ pt-BR:
locked_documents: Documentos bloqueados
open_approvals: Aprovações abertas
- label_maximum_ajax_upload_filesize: Tamanha máximo de arquivo carregável via AJAX
- note_maximum_ajax_upload_filesize: Limita o tamanho máximo do arquivo que pode ser carregado através da interface AJAX
- padrão, caso contrário o formulário de upload padrão da Redmine deve ser usado. O número está em MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "Não mais que %{filecount} arquivo(s) pode(m) ser carregado(s)."
label_public_urls: URLs públicas válidas para
@@ -411,8 +401,6 @@ pt-BR:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index a1741a62..4ff8399d 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -128,9 +128,6 @@ ru:
option_version_major: Значительные изменения
option_version_custom: Пользовательская
label_new_content: Новое содержание
- label_maximum_files_upload: Максимальное количество файлов для загрузки
- note_maximum_number_of_files_uploaded: Ограничивает максимальное количество файлов, которое может быть загружено за
- один раз. 0 означает отсутствие ограничений.
label_maximum_files_download: Максимальное количество файлов для скачивания
note_maximum_number_of_files_downloaded: Ограничивает максимальное количество файлов, которое может быть скачано или
отправлено по почте за один раз. 0 означает отсутствие ограничений.
@@ -348,13 +345,6 @@ ru:
locked_documents: Заблокированные документы
open_approvals: Открытые согласования
- label_maximum_ajax_upload_filesize: Максимальный размер файла, загружаемого посредством AJAX
- note_maximum_ajax_upload_filesize: Максимальный размер файла, загружаемого посредством интерфейса AJAX, для
- загрузки можно использовать стандартную форму Redmine. Размер указан в MB.
-
- label_classic: Обычный
- label_drag_drop: Перетаскивание
-
error_maximum_upload_filecount: "Не более %{filecount} файла(ов) может быть загружено."
label_public_urls: Ссылка действительна до
@@ -411,8 +401,6 @@ ru:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index e615dabb..c3734c57 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -128,9 +128,6 @@ sl:
option_version_major: Major
option_version_custom: Custom
label_new_content: Nova vsebina
- label_maximum_files_upload: Maximum naloženih datotek
- note_maximum_number_of_files_uploaded: Omejitev največjega števila datotek za nalaganje naenkrat. 0 pomeni neomejeno.
-
label_maximum_files_download: Maximum datotek za prenos dol.
note_maximum_number_of_files_downloaded: Omejitev največjega števila prenešenih datotek v zip formatu ali poslanih po
emailu. 0 pomeni neomejeno.
@@ -348,13 +345,6 @@ sl:
locked_documents: Locked documents
open_approvals: Open approvals
- label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
- note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise
- Redmine standard upload form must be used. Number is in MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ sl:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index ac351581..a246cd4a 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -128,9 +128,6 @@ zh-TW:
option_version_major: Major
option_version_custom: Custom
label_new_content: 新的檔案內容
- label_maximum_files_upload: 最大上傳檔案數量
- note_maximum_number_of_files_uploaded: 同時間所能上傳的,最大檔案數量限制。 0 表示沒有限制。
-
label_maximum_files_download: 最大下載檔案數量
note_maximum_number_of_files_downloaded: 同時間所能下載的,最大檔案數量限制,(下載或電子郵件發送)。 0 表示沒有限制。
@@ -348,13 +345,6 @@ zh-TW:
locked_documents: Locked documents
open_approvals: Open approvals
- label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
- note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise
- Redmine standard upload form must be used. Number is in MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ zh-TW:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 898936d3..2a96533e 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -128,9 +128,6 @@ zh:
option_version_major: Major
option_version_custom: Custom
label_new_content: 新内容
- label_maximum_files_upload: 最大上传文件数
- note_maximum_number_of_files_uploaded: 一次上传的最大文件数量. 0表示无限制.
-
label_maximum_files_download: 最大下载文件数
note_maximum_number_of_files_downloaded: 最大文件下载数量(zip或发送电子邮件方式). 0表示无限制.
@@ -348,13 +345,6 @@ zh:
locked_documents: Locked documents
open_approvals: Open approvals
- label_maximum_ajax_upload_filesize: Maximum file size uploadable via AJAX
- note_maximum_ajax_upload_filesize: Limits maximum file size that can uploaded via standard AJAX interface otherwise
- Redmine standard upload form must be used. Number is in MB.
-
- label_classic: Classic
- label_drag_drop: Modern
-
error_maximum_upload_filecount: "No more than %{filecount} file(s) can be uploaded."
label_public_urls: Public URLs valid to
@@ -411,8 +401,6 @@ zh:
label_inherited_permissions: Inherited permissions
- label_switch_rlf: Switch Redmine look and feel design
- button_switch: Switch design
button_edit_content: Edit content
field_workflow: Workflow
field_modified: Updated
diff --git a/config/routes.rb b/config/routes.rb
index 71be8235..f460400f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -44,7 +44,6 @@ if Redmine::Plugin.installed? :redmine_dmsf
get '/projects/:id/dmsf/lock', :controller => 'dmsf', :action => 'lock', :as => 'lock_dmsf'
get '/projects/:id/dmsf/unlock', :controller => 'dmsf', :action => 'unlock', :as => 'unlock_dmsf'
get '/projects/:id/dmsf/', :controller => 'dmsf', :action => 'show', :as => 'dmsf_folder'
- get '/projects/:id/dmsf/rlf', controller: 'dmsf', action: 'switch_rlf', as: 'switch_rlf_dmsf'
get '/projects/:id/dmsf/new', :controller => 'dmsf', :action => 'new', :as => 'new_dmsf'
get '/projects/:id/dmsf/edit', :controller => 'dmsf', :action => 'edit', :as => 'edit_dmsf'
get '/projects/:id/dmsf/edit/root', :controller => 'dmsf', :action => 'edit_root', :as => 'edit_root_dmsf'
diff --git a/init.rb b/init.rb
index 9efb48f6..076fcdb6 100644
--- a/init.rb
+++ b/init.rb
@@ -39,10 +39,8 @@ Redmine::Plugin.register :redmine_dmsf do
settings partial: 'settings/dmsf_settings',
default: {
- 'dmsf_max_file_upload' => 0,
'dmsf_max_file_download' => 0,
'dmsf_max_email_filesize' => 0,
- 'dmsf_max_ajax_upload_filesize' => 100,
'dmsf_storage_directory' => 'files/dmsf',
'dmsf_index_database' => File.expand_path('dmsf_index', Rails.root),
'dmsf_stemming_lang' => 'english',