Robert Vogel has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/224409

Change subject: InsertFile: Merge from master
......................................................................

InsertFile: Merge from master

This version depends on new API base classes in BlueSpiceFoundation!

Change-Id: I69a13bbcce2184a6156c2e4d5545e7fb170b2246
---
M InsertFile/InsertFile.class.php
M InsertFile/InsertFile.setup.php
A InsertFile/i18n/ba.json
M InsertFile/i18n/fy.json
M InsertFile/i18n/gl.json
A InsertFile/i18n/ksh.json
A InsertFile/i18n/ku-latn.json
M InsertFile/i18n/nl.json
A InsertFile/i18n/os.json
M InsertFile/i18n/pl.json
M InsertFile/i18n/ru.json
A InsertFile/i18n/sl.json
D InsertFile/includes/InsertFileAJAXBackend.php
M InsertFile/resources/BS.InsertFile/BaseDialog.js
M InsertFile/resources/BS.InsertFile/FileDialog.js
M InsertFile/resources/BS.InsertFile/ImageDialog.js
M InsertFile/resources/BS.InsertFile/UploadPanel.js
M InsertFile/resources/bluespice.insertFile.css
18 files changed, 373 insertions(+), 467 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceExtensions 
refs/changes/09/224409/1

diff --git a/InsertFile/InsertFile.class.php b/InsertFile/InsertFile.class.php
index 90dcdd9..d269b53 100644
--- a/InsertFile/InsertFile.class.php
+++ b/InsertFile/InsertFile.class.php
@@ -117,4 +117,10 @@
                return true;
        }
 
+       //There is an api action "licences" in mw 2.24, but it is described as
+       //"Get media license dropdown HTML."
+       public static function getLicenses() {
+               $oLicenses = new JsonLicenses();
+               return $oLicenses->getJsonOutput();
+       }
 }
\ No newline at end of file
diff --git a/InsertFile/InsertFile.setup.php b/InsertFile/InsertFile.setup.php
index 5a65c49..2520031 100644
--- a/InsertFile/InsertFile.setup.php
+++ b/InsertFile/InsertFile.setup.php
@@ -8,12 +8,8 @@
 
 $GLOBALS['wgAutoloadClasses']['InsertFile'] = __DIR__ . 
'/InsertFile.class.php';
 $wgAutoloadClasses['JsonLicenses']          = __DIR__ . 
'/includes/JsonLicenses.php';
-$wgAutoloadClasses['InsertFileAJAXBackend'] = __DIR__ . 
'/includes/InsertFileAJAXBackend.php';
 
-$wgAjaxExportList[] = 'InsertFileAJAXBackend::getFilePage';
-$wgAjaxExportList[] = 'InsertFileAJAXBackend::getFiles';
-$wgAjaxExportList[] = 'InsertFileAJAXBackend::getLicenses';
-$wgAjaxExportList[] = 'InsertFileAJAXBackend::getExistsWarning';
+$wgAjaxExportList[] = 'InsertFile::getLicenses';
 
 $aResourceModuleTemplate = array(
        'localBasePath' => __DIR__ . '/resources',
diff --git a/InsertFile/i18n/ba.json b/InsertFile/i18n/ba.json
new file mode 100644
index 0000000..9c0eac1
--- /dev/null
+++ b/InsertFile/i18n/ba.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Рустам Нурыев"
+               ]
+       },
+       "bs-insertfile-typenone": "юҡ"
+}
diff --git a/InsertFile/i18n/fy.json b/InsertFile/i18n/fy.json
index 2b905f0..9832ea1 100644
--- a/InsertFile/i18n/fy.json
+++ b/InsertFile/i18n/fy.json
@@ -6,6 +6,8 @@
        },
        "bs-insertfile-filename": "Triemnamme",
        "bs-insertfile-filesize": "Triemgrutte",
+       "bs-insertfile-alignnone": "gjin",
+       "bs-insertfile-typenone": "gjin",
        "bs-insertfile-uploadbuttontext": "Blêdzje",
        "bs-insertfile-warning": "Warskôging",
        "bs-insertfile-error": "Flater",
diff --git a/InsertFile/i18n/gl.json b/InsertFile/i18n/gl.json
index ebd368d..c5ee5c1 100644
--- a/InsertFile/i18n/gl.json
+++ b/InsertFile/i18n/gl.json
@@ -10,7 +10,7 @@
        "bs-insertfile-button-image-title": "Inserir ou editar imaxe",
        "bs-insertfile-button-file-title": "Inserir ou editar ficheiro",
        "bs-insertfile-uploadsdisabled": "A carga de ficheiros está desactivada 
neste wiki.",
-       "bs-insertfile-nomatch": "No hai coincidencias",
+       "bs-insertfile-nomatch": "Non hai coincidencias",
        "bs-insertfile-labelsort": "Ordenar por:",
        "bs-insertfile-labelfilter": "Filtro:",
        "bs-insertfile-filename": "Nome de ficheiro",
diff --git a/InsertFile/i18n/ksh.json b/InsertFile/i18n/ksh.json
new file mode 100644
index 0000000..a35615a
--- /dev/null
+++ b/InsertFile/i18n/ksh.json
@@ -0,0 +1,63 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Purodha"
+               ]
+       },
+       "bs-insertfile-insert-image": "Donn e Belld ennföhje",
+       "bs-insertfile-insert-file": "Donn en Dattei ennföhje",
+       "bs-insertfile-button-image-title": "Donn e Belld ennföhje udder 
änndere",
+       "bs-insertfile-button-file-title": "Donn en Dattei ennföhje udder 
änndere",
+       "bs-insertfile-uploadsdisabled": "Et Huhlaade es en heh däm Wiki 
ußjeschalldt.",
+       "bs-insertfile-nomatch": "Kein Träfer",
+       "bs-insertfile-labelsort": "Zottehr noh:",
+       "bs-insertfile-labelfilter": "Felter:",
+       "bs-insertfile-filename": "Dä Nahme vun dä Dattei",
+       "bs-insertfile-filesize": "Datteijömfang",
+       "bs-insertfile-lastmodified": "Neuste Änderonge",
+       "bs-insertfile-labelupload": "Huhlahde",
+       "bs-insertfile-details-title": "Eijnzelheite",
+       "bs-insertfile-labeldimensions": "Jrühße (Beijde x Hühde)",
+       "bs-insertfile-labellink": "Lengk",
+       "bs-insertfile-alignnone": "keine",
+       "bs-insertfile-alignleft": "lengks",
+       "bs-insertfile-aligncenter": "medde",
+       "bs-insertfile-alignright": "rääß",
+       "bs-insertfile-labeltype": "Dekkerazjuhn",
+       "bs-insertfile-typenone": "kein",
+       "bs-insertfile-typethumb": "Minni_Belldsche",
+       "bs-insertfile-typeframe": "Rahme",
+       "bs-insertfile-typeborder": "Ömrandong",
+       "bs-insertfile-uploadbuttontext": "Aanluhre",
+       "bs-insertfile-uploadimageemptytext": "Söhg e neu Belld us …",
+       "bs-insertfile-uploadimagefieldlabel": "Donn e neu Belld huhlahde",
+       "bs-insertfile-uploadfileemptytext": "Söhg e neu Belld us …",
+       "bs-insertfile-uploadfilefieldlabel": "Der Zihl_Datteijnahme",
+       "bs-insertfile-uploaddestfilelabel": "Zihl_Nahme",
+       "bs-insertfile-uploaddescfilelabel": "Zosammejefaß",
+       "bs-insertfile-uploadwatchthislabel": "Op heh di Dattei oppaßße",
+       "bs-insertfile-uploadignorewarningslabel": "Alle Warnonge övverjonn",
+       "bs-insertfile-uploadsubmitvalue": "Dateij huhlade",
+       "bs-insertfile-errorloading": "Ene Fähler es opjetrodde beim Datteihje 
lahde.",
+       "bs-insertfile-warning": "Warnong",
+       "bs-insertfile-warningupload": "En Dattei es aam huh jelahde wähde. 
Wells De verhaffesch heh dat Finster zoh maache?",
+       "bs-insertfile-allowedfiletypesare": "Jölltejje Zoote Datteije sin:",
+       "bs-insertfile-error": "Fähler",
+       "bs-insertfile-errornofileextensiononupload": "Di usjesöhk Datteij hät 
kein file extension.",
+       "bs-insertfile-errornofileextensionondestination": "Dä ußjesöhk 
Zihl_Nahme hät kein file extension.",
+       "bs-insertfile-errorWrongFileExtensionOnUpload": "Di usjesöhk Datteij 
hät kein jöltejje file extension.",
+       "bs-insertfile-errorWrongImageTypeOnUpload": "Di usjesöhk Datteij hät 
kein zohjelohße file extension.",
+       "bs-insertfile-errorWrongFileExtensionOnDestination": "Dä usjesöhk 
Zihl_Nahme hät kein jöltejje file extension.",
+       "bs-insertfile-errorwrongfiletypeondestination": "Dä usjesöhk 
Zihl_Nahme hät kein zohjelohße file extension.",
+       "bs-insertfile-titlefile": "Dattei ennföhje",
+       "bs-insertfile-titleimage": "Donn e Belld ennföhje",
+       "bs-insertfile-of": "vun",
+       "bs-insertfile-select-a-link": "Söhg en Zood udder ene Lengk uß",
+       "bs-insertfile-license": "Lėzänz",
+       "bs-insertfile-categories": "Saachjroppe",
+       "bs-insertfile-linktext": "Zeijsch dä Täx aan",
+       "bs-insertfile-no-link": "Keine Lengk",
+       "bs-insertfile-error-no-medialink": "Keine Lengk obb en 
Mehdijje_Datteij ußjesöhk",
+       "bs-insertfile-error-no-imagelink": "Keine Lengk obb en Beld_Datteij 
ußjesöhk",
+       "bs-insertfile-upload-waitmessage": "Et Huhlahde es em Jang …"
+}
diff --git a/InsertFile/i18n/ku-latn.json b/InsertFile/i18n/ku-latn.json
new file mode 100644
index 0000000..e28c1f9
--- /dev/null
+++ b/InsertFile/i18n/ku-latn.json
@@ -0,0 +1,24 @@
+{
+       "@metadata": {
+               "authors": [
+                       "George Animal"
+               ]
+       },
+       "bs-insertfile-labelfilter": "Parzûn:",
+       "bs-insertfile-filename": "Navê dosyeyê",
+       "bs-insertfile-lastmodified": "Guherandinên dawî",
+       "bs-insertfile-labelupload": "Bar bike",
+       "bs-insertfile-labellink": "Girêdan",
+       "bs-insertfile-alignright": "rast",
+       "bs-insertfile-typenone": "tune",
+       "bs-insertfile-typethumb": "thumbnail",
+       "bs-insertfile-uploadimageemptytext": "Wêneyekî nû hilbijêre...",
+       "bs-insertfile-uploadimagefieldlabel": "Wêneyekî nû bar bike",
+       "bs-insertfile-uploadfileemptytext": "Dosyeyeka nû hilbijêre...",
+       "bs-insertfile-uploaddescfilelabel": "Kurte",
+       "bs-insertfile-uploadsubmitvalue": "Dosyeyê bar bike",
+       "bs-insertfile-select-a-link": "Girêdanekê hilbijêre an jî binivîse",
+       "bs-insertfile-license": "Destûr",
+       "bs-insertfile-categories": "Kategorî",
+       "bs-insertfile-no-link": "Girêdan tune"
+}
diff --git a/InsertFile/i18n/nl.json b/InsertFile/i18n/nl.json
index 7257c8d..55f5414 100644
--- a/InsertFile/i18n/nl.json
+++ b/InsertFile/i18n/nl.json
@@ -2,27 +2,72 @@
        "@metadata": {
                "authors": [
                        "Sjoerddebruin",
-                       "SPQRobin"
+                       "SPQRobin",
+                       "Siebrand",
+                       "Esketti"
                ]
        },
+       "bs-insertfile-desc": "Het dialoogvenster bestanden uploaden en 
invoegen van een link naar een bestand",
        "bs-insertfile-insert-image": "Afbeelding invoegen",
        "bs-insertfile-insert-file": "Bestand invoegen",
+       "bs-insertfile-button-image-title": "Invoegen of bewerken afbeelding",
+       "bs-insertfile-button-file-title": "Invoegen of bewerken bestand",
+       "bs-insertfile-uploadsdisabled": "Uploaden is niet mogelijk in deze 
wiki.",
+       "bs-insertfile-nomatch": "Geen resultaten",
        "bs-insertfile-labelsort": "Sorteren op:",
        "bs-insertfile-labelfilter": "Filter:",
        "bs-insertfile-filename": "Bestandsnaam",
        "bs-insertfile-filesize": "Bestandsgrootte",
        "bs-insertfile-lastmodified": "Recente wijzigingen",
+       "bs-insertfile-labelupload": "Upload",
        "bs-insertfile-details-title": "Details",
+       "bs-insertfile-labeldimensions": "Afmetingen (b x h)",
+       "bs-insertfile-labelalt": "Alternatieve tekst",
+       "bs-insertfile-labelalign": "Aanpassing",
+       "bs-insertfile-labellink": "Koppeling",
+       "bs-insertfile-alignnone": "geen",
+       "bs-insertfile-alignleft": "links",
+       "bs-insertfile-aligncenter": "gecentreerd",
+       "bs-insertfile-alignright": "rechts",
+       "bs-insertfile-labeltype": "Decoratie",
+       "bs-insertfile-typenone": "geen",
+       "bs-insertfile-typethumb": "miniatuur",
+       "bs-insertfile-typeframe": "frame",
+       "bs-insertfile-typeborder": "rand",
+       "bs-insertfile-uploadbuttontext": "Bladeren",
+       "bs-insertfile-uploadimageemptytext": "Kies een nieuwe afbeelding...",
+       "bs-insertfile-uploadimagefieldlabel": "Nieuwe afbeelding toevoegen",
+       "bs-insertfile-uploadfileemptytext": "Kies een nieuw bestand...",
+       "bs-insertfile-uploadfilefieldlabel": "Opslaan als",
+       "bs-insertfile-uploaddestfilelabel": "Doelnaam",
        "bs-insertfile-uploaddescfilelabel": "Samenvatting",
        "bs-insertfile-uploadwatchthislabel": "Dit bestand volgen",
        "bs-insertfile-uploadignorewarningslabel": "Alle waarschuwingen 
negeren",
        "bs-insertfile-uploadsubmitvalue": "Bestand uploaden",
        "bs-insertfile-errorloading": "Er is een fout opgetreden tijdens het 
laden van bestanden.",
        "bs-insertfile-warning": "Waarschuwing",
+       "bs-insertfile-warningupload": "Er is een file te wachten voor het 
uploaden. Wil je echt om dit venster te sluiten?",
        "bs-insertfile-allowedfiletypesare": "Geldige bestandstypen zijn:",
        "bs-insertfile-error": "Fout",
        "bs-insertfile-errornofileextensiononupload": "Het bestand dat u 
gekozen heeft heeft geen extensie.",
+       "bs-insertfile-errornofileextensionondestination": "Het doel u gekozen 
naam heeft geen extensie.",
+       "bs-insertfile-errorWrongFileExtensionOnUpload": "Het bestand dat u 
hebt gekozen is niet geldig bestands extensie.",
+       "bs-insertfile-errorWrongImageTypeOnUpload": "Het bestand dat u hebt 
gekozen is niet toegestaan een afbeelding van het type.",
+       "bs-insertfile-errorWrongFileTypeOnUpload": "Het bestand dat u hebt 
gekozen is niet toegestaan bestandstype.",
+       "bs-insertfile-errorWrongFileExtensionOnDestination": "Het doel u 
gekozen naam heeft geen geldige extensie.",
+       "bs-insertfile-errorwrongimagetypeondestination": "Het doel u gekozen 
naam is niet toegestaan beeld-extensie.",
+       "bs-insertfile-errorwrongfiletypeondestination": "Het doel u gekozen 
naam heeft geen geldige extensie.",
+       "bs-insertfile-uploadcomplete": "Uw bestand is opgeslagen succesvol.",
+       "bs-insertfile-titlefile": "Bestand toevoegen",
+       "bs-insertfile-titleimage": "Afbeelding invoegen",
+       "bs-insertfile-tipkeepratio": "Verhoudingen behouden",
        "bs-insertfile-of": "of",
+       "bs-insertfile-select-a-link": "Selecteer of type een koppeling",
        "bs-insertfile-license": "Licentie",
-       "bs-insertfile-categories": "Categorieën"
+       "bs-insertfile-categories": "Categorieën",
+       "bs-insertfile-linktext": "Tekst weergeven",
+       "bs-insertfile-no-link": "Geen koppeling",
+       "bs-insertfile-error-no-medialink": "Geen media-link geselecteerd.",
+       "bs-insertfile-error-no-imagelink": "Geen afbeelding link 
geselecteerd.",
+       "bs-insertfile-upload-waitmessage": "Uploaden in progress ..."
 }
diff --git a/InsertFile/i18n/os.json b/InsertFile/i18n/os.json
new file mode 100644
index 0000000..39c4edb
--- /dev/null
+++ b/InsertFile/i18n/os.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Amikeco"
+               ]
+       },
+       "bs-insertfile-uploaddescfilelabel": "Афыст"
+}
diff --git a/InsertFile/i18n/pl.json b/InsertFile/i18n/pl.json
index 6988b9a..a981d9c 100644
--- a/InsertFile/i18n/pl.json
+++ b/InsertFile/i18n/pl.json
@@ -4,15 +4,27 @@
                        "Chrumps"
                ]
        },
+       "bs-insertfile-insert-image": "Wstaw obrazek",
+       "bs-insertfile-insert-file": "Wstaw plik",
+       "bs-insertfile-button-image-title": "Wstaw lub edytuj obrazek",
+       "bs-insertfile-button-file-title": "Wstaw lub edytuj plik",
+       "bs-insertfile-nomatch": "Brak dopasowania",
        "bs-insertfile-labelsort": "Sortuj według:",
        "bs-insertfile-labelfilter": "Filtr:",
        "bs-insertfile-filename": "Nazwa pliku",
        "bs-insertfile-filesize": "Rozmiar pliku",
        "bs-insertfile-lastmodified": "Ostatnie zmiany",
+       "bs-insertfile-labelupload": "Prześlij",
        "bs-insertfile-details-title": "Szczegóły",
        "bs-insertfile-labeldimensions": "Rozmiar (szer. x wys.)",
        "bs-insertfile-labelalt": "Tekst alternatywny",
+       "bs-insertfile-labelalign": "Wyrównanie",
        "bs-insertfile-labellink": "Link",
+       "bs-insertfile-alignnone": "brak",
+       "bs-insertfile-alignleft": "do lewej",
+       "bs-insertfile-aligncenter": "na środku",
+       "bs-insertfile-alignright": "do prawej",
+       "bs-insertfile-typenone": "brak",
        "bs-insertfile-typethumb": "miniatura",
        "bs-insertfile-typeframe": "ramka",
        "bs-insertfile-uploadimageemptytext": "Wybierz nowy obrazek ...",
@@ -36,6 +48,7 @@
        "bs-insertfile-errorwrongfiletypeondestination": "Wybrana nazwa 
docelowa ma niedozwolone rozszerzenie.",
        "bs-insertfile-uploadcomplete": "Plik został zapisany pomyślnie.",
        "bs-insertfile-titlefile": "Wstaw plik",
+       "bs-insertfile-titleimage": "Wstaw obrazek",
        "bs-insertfile-tipkeepratio": "Zachowaj proporcje",
        "bs-insertfile-license": "Licencja",
        "bs-insertfile-categories": "Kategorie",
diff --git a/InsertFile/i18n/ru.json b/InsertFile/i18n/ru.json
index 966f132..197727b 100644
--- a/InsertFile/i18n/ru.json
+++ b/InsertFile/i18n/ru.json
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Okras",
-                       "Alexandr Efremov"
+                       "Alexandr Efremov",
+                       "Kaganer"
                ]
        },
        "bs-insertfile-desc": "Диалог загрузки файлов и вставки ссылки на файл",
@@ -65,7 +66,7 @@
        "bs-insertfile-categories": "Категории",
        "bs-insertfile-linktext": "Отображаемый текст",
        "bs-insertfile-no-link": "Нет ссылки",
-       "bs-insertfile-error-no-medialink": "Медиа ссылка не выбрана.",
+       "bs-insertfile-error-no-medialink": "Не выбрана ссылка на медиафайл.",
        "bs-insertfile-error-no-imagelink": "Ссылка на изображение не выбрано.",
        "bs-insertfile-upload-waitmessage": "Загрузка в процессе…"
 }
diff --git a/InsertFile/i18n/sl.json b/InsertFile/i18n/sl.json
new file mode 100644
index 0000000..d2873a5
--- /dev/null
+++ b/InsertFile/i18n/sl.json
@@ -0,0 +1,71 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Alojz.tic",
+                       "Skalcaa"
+               ]
+       },
+       "bs-insertfile-desc": "Pogovorno okno za nalaganje datotek in 
vstavljanje povezav na datoteke",
+       "bs-insertfile-insert-image": "Vstavi sliko",
+       "bs-insertfile-insert-file": "Vstavi datoteko",
+       "bs-insertfile-button-image-title": "Vstavljanje ali urejanje slik",
+       "bs-insertfile-button-file-title": "Vstavljanje ali urejanje datotek",
+       "bs-insertfile-uploadsdisabled": "Na tem wikiju je nalaganje datotek 
onemogočeno.",
+       "bs-insertfile-nomatch": "Ni ujemanj",
+       "bs-insertfile-labelsort": "Razvrsti po:",
+       "bs-insertfile-labelfilter": "Filter:",
+       "bs-insertfile-filename": "Ime datoteke",
+       "bs-insertfile-filesize": "Velikost datoteke",
+       "bs-insertfile-lastmodified": "Nedavne spremembe",
+       "bs-insertfile-labelupload": "Naloži",
+       "bs-insertfile-details-title": "Podrobnosti",
+       "bs-insertfile-labeldimensions": "Velikost (š x v)",
+       "bs-insertfile-labelalt": "Nadomestno besedilo",
+       "bs-insertfile-labelalign": "Prilagoditev",
+       "bs-insertfile-labellink": "Povezava",
+       "bs-insertfile-alignnone": "noben",
+       "bs-insertfile-alignleft": "levo",
+       "bs-insertfile-aligncenter": "sredinsko",
+       "bs-insertfile-alignright": "desno",
+       "bs-insertfile-labeltype": "Okrasitev",
+       "bs-insertfile-typenone": "noben",
+       "bs-insertfile-typethumb": "sličica",
+       "bs-insertfile-typeframe": "okvir",
+       "bs-insertfile-typeborder": "obroba",
+       "bs-insertfile-uploadbuttontext": "Prebrskaj",
+       "bs-insertfile-uploadimageemptytext": "Izberite novo sliko ...",
+       "bs-insertfile-uploadimagefieldlabel": "Naložite novo sliko",
+       "bs-insertfile-uploadfileemptytext": "Izberite novo datoteko ...",
+       "bs-insertfile-uploadfilefieldlabel": "Ime ciljne datoteke",
+       "bs-insertfile-uploaddestfilelabel": "Ciljno ime",
+       "bs-insertfile-uploaddescfilelabel": "Povzetek",
+       "bs-insertfile-uploadwatchthislabel": "Poglejte to datoteko",
+       "bs-insertfile-uploadignorewarningslabel": "Prezri vsa opozorila",
+       "bs-insertfile-uploadsubmitvalue": "Naloži datoteko",
+       "bs-insertfile-errorloading": "Med nalaganjem datotek je prišlo do 
napake.",
+       "bs-insertfile-warning": "Opozorilo",
+       "bs-insertfile-warningupload": "Datoteka čaka na pošiljanje. Ali res 
želite zapreti to okno?",
+       "bs-insertfile-allowedfiletypesare": "Veljavne vrste datotek so:",
+       "bs-insertfile-error": "Napaka",
+       "bs-insertfile-errornofileextensiononupload": "Datoteka, ki ste jo 
izbrali nima končnice.",
+       "bs-insertfile-errornofileextensionondestination": "Ciljno ime, ki ste 
ga izberali nima končnice.",
+       "bs-insertfile-errorWrongFileExtensionOnUpload": "Datoteka, ki ste jo 
izbrali nima veljavne končnice.",
+       "bs-insertfile-errorWrongImageTypeOnUpload": "Datoteka, ki ste jo 
izbrali, ni dovoljen tip slike.",
+       "bs-insertfile-errorWrongFileTypeOnUpload": "Datoteka, ki ste jo 
izbrali, ni dovoljena vrsta datoteke.",
+       "bs-insertfile-errorWrongFileExtensionOnDestination": "Ciljno ime, ki 
ste ga izberali nima veljavne končnice.",
+       "bs-insertfile-errorwrongimagetypeondestination": "Ciljno ime, ki ste 
ga izberali nima veljavne končnice.",
+       "bs-insertfile-errorwrongfiletypeondestination": "Ciljno ime, ki ste ga 
izberali nima dovoljene končnice.",
+       "bs-insertfile-uploadcomplete": "Vaša datoteka je uspešno shranjena.",
+       "bs-insertfile-titlefile": "Vstavi datoteko",
+       "bs-insertfile-titleimage": "Vstavi sliko",
+       "bs-insertfile-tipkeepratio": "Ohrani razmerja",
+       "bs-insertfile-of": "od",
+       "bs-insertfile-select-a-link": "Izberite ali vnesite povezavo",
+       "bs-insertfile-license": "Licenca",
+       "bs-insertfile-categories": "Kategorije",
+       "bs-insertfile-linktext": "Prikaz besedila",
+       "bs-insertfile-no-link": "Ni povezave",
+       "bs-insertfile-error-no-medialink": "Ni izbrana nobena povezava 
medijskih vsebin.",
+       "bs-insertfile-error-no-imagelink": "Ni izbrana nobena povezava slike.",
+       "bs-insertfile-upload-waitmessage": "Nalaganje se izvaja ..."
+}
diff --git a/InsertFile/includes/InsertFileAJAXBackend.php 
b/InsertFile/includes/InsertFileAJAXBackend.php
deleted file mode 100644
index 3f81120..0000000
--- a/InsertFile/includes/InsertFileAJAXBackend.php
+++ /dev/null
@@ -1,388 +0,0 @@
-<?php
-
-class InsertFileAJAXBackend {
-
-       public static function getLicenses() {
-               $oLicenses = new JsonLicenses();
-               return $oLicenses->getJsonOutput();
-       }
-
-       /**
-        * Calculate on which page an file is shown and put it to ajax output.
-        * @param type $output The ajax output which have to be valid JSON.
-        */
-       public static function getFilePage() {
-               global $wgDBtype;
-               $oRequest = RequestContext::getMain()->getRequest();
-               $filename = $oRequest->getVal( 'filename', false );
-               $type = $oRequest->getVal( 'type', 'image' );
-               $pagesize = $oRequest->getInt( 'pagesize', 12 );
-
-               if ( strstr( $filename, 'index.php' ) ) {
-                       $token = array( );
-                       parse_str( $filename, $token );
-                       if ( isset( $token[ 'f' ] ) ) {
-                               $token = explode( ':', $token[ 'f' ] );
-                               $filename = $token[ 1 ];
-                       }
-               }
-
-               if ( !$filename ) {
-                       return FormatJson::encode(
-                               array(
-                                       'file' => '',
-                                       'page' => 0
-                               )
-                       );
-               }
-
-               $dbr = wfGetDB( DB_SLAVE );
-
-               switch ( $type ) {
-                       // TODO MRG (01.07.11 12:08): see above: Tiff special 
case only makes sense with PAgedTiffHandler activated.
-                       case 'image':
-                               switch ( $wgDBtype ) {
-                                       case 'postgres':
-                                               $sql = "SELECT 
insertfile_getImagePosition('{$filename}') AS rank";
-                                               break;
-                                       case 'oracle':
-                                               $sql = "SELECT 
if_getImagePosition('{$filename}') AS rank FROM dual";
-                                               break;
-                                       case 'mysql':
-                                       default:
-                                               $tbl = $dbr->tableName( 'image' 
);
-                                               $sql = "SELECT tmp.rank FROM
-                                                                       (SELECT 
@row:=@row+1 rank, i.img_name
-                                                                        FROM 
{$tbl} i, (SELECT @row:=0) r
-                                                                        WHERE 
(i.img_major_mime = 'image' OR i.img_minor_mime = 'tiff')
-                                                                        ORDER 
BY i.img_name ASC) tmp
-                                                               WHERE 
tmp.img_name = '{$filename}'";
-                                               break;
-                               }
-                               break;
-                       case 'file':
-                               switch ( $wgDBtype ) {
-                                       case 'postgres':
-                                               $sql = "SELECT 
insertfile_getFileUploadPosition('{$filename}') AS rank";
-                                               break;
-                                       case 'oracle':
-                                               $sql = "SELECT 
if_getFileUploadPosition('{$filename}') AS rank FROM dual";
-                                               break;
-                                       case 'mysql':
-                                       default:
-                                               $tbl = $dbr->tableName( 'image' 
);
-                                               $sql = "SELECT tmp.rank FROM
-                                                                       (SELECT 
@row:=@row+1 rank, i.img_name
-                                                                        FROM 
{$tbl} i, (SELECT @row:=0) r
-                                                                        WHERE 
(i.img_major_mime != 'image' AND i.img_minor_mime != 'tiff')
-                                                                        ORDER 
BY i.img_name ASC) tmp
-                                                               WHERE 
tmp.img_name = '{$filename}'";
-                                               break;
-                               }
-                               break;
-               }
-
-               $res = $dbr->query( $sql );
-               if ( $res && $res->numRows() ) {
-                       $row = $res->fetchObject();
-                       $page = ceil( $row->rank / $pagesize );
-               } else {
-                       $page = 0;
-               }
-               return FormatJson::encode(
-                       array(
-                               'file' => $filename,
-                               'page' => $page
-                       )
-               );
-       }
-
-       /**
-        * Calculate on which page an uploaded file is shown and put it to ajax 
output.
-        * @param type $output The ajax output which have to be valid JSON.
-        */
-       public static function getUploadedFilePage() {
-               global $wgDBtype;
-               $oRequest = RequestContext::getMain()->getRequest();
-               $type = $oRequest->getVal( 'type', 'image' );
-               $sort = $oRequest->getVal( 'sort', 'name' );
-               $pagesize = $oRequest->getInt( 'pagesize', 12 );
-
-               switch ( $sort ) {
-                       case 'size':
-                               $sql_sort = 'i.img_size DESC';
-                               break;
-                       case 'lastmod':
-                               $sql_sort = 'i.img_timestamp DESC';
-                               break;
-                       case 'name':
-                       default:
-                               $sql_sort = 'i.img_name ASC';
-               }
-
-               $dbr = wfGetDB( DB_SLAVE );
-
-               if ( $wgDBtype == 'mysql' || $wgDBtype == 'sqlite' ) {
-                       if ( $type == 'image' ) {
-                               $tbl = $dbr->tableName( 'image' );
-                               $sql = "SELECT tmp.rank, tmp.img_name FROM
-                                                       (SELECT @row:=@row+1 
rank, i.img_name, i.img_timestamp
-                                                        FROM {$tbl} i, (SELECT 
@row:=0) r
-                                                        WHERE 
(i.img_major_mime = 'image' OR i.img_minor_mime = 'tiff')
-                                                        ORDER BY {$sql_sort}) 
tmp
-                                               ORDER BY tmp.img_timestamp DESC
-                                               LIMIT 1";
-                       } else {
-                               $tbl = $dbr->tableName( 'image' );
-                               $sql = "SELECT tmp.rank, tmp.img_name FROM
-                                                       (SELECT @row:=@row+1 
rank, i.img_name, i.img_timestamp
-                                                        FROM {$tbl} i, (SELECT 
@row:=0) r
-                                                        WHERE 
(i.img_major_mime != 'image' AND i.img_minor_mime != 'tiff')
-                                                        ORDER BY {$sql_sort}) 
tmp
-                                               ORDER BY tmp.img_timestamp DESC
-                                               LIMIT 1";
-                       }
-
-                       $filename = '';
-
-                       $res = $dbr->query( $sql );
-                       if ( $res && $res->numRows() ) {
-                               $row = $res->fetchObject();
-                               $page = ceil( $row->rank / $pagesize );
-                               $filename = $row->img_name;
-                       } else {
-                               $page = 0;
-                       }
-               } else {
-                       if ( $type == 'image' ) {
-                               $tbl = $dbr->tableName( 'image' );
-                               $sql = "SELECT i.img_name, i.img_timestamp
-                                                FROM {$tbl} i
-                                                WHERE (i.img_major_mime = 
'image' OR i.img_minor_mime = 'tiff')
-                                                ORDER BY {$sql_sort}";
-                       } else {
-                               $tbl = $dbr->tableName( 'image' );
-                               $sql = "SELECT i.img_name, i.img_timestamp
-                                                FROM {$tbl} i
-                                                WHERE (i.img_major_mime != 
'image' AND i.img_minor_mime != 'tiff')
-                                                ORDER BY {$sql_sort}";
-                       }
-
-                       $filename = '';
-
-                       $res = $dbr->query( $sql );
-                       $rows = array();
-                       $rank = 0;
-                       $newestRow = null;
-                       if ( $res && $res->numRows() ) {
-                               while($row = $res->fetchObject()) {
-                                       $rank++;
-                                       $rows[$rank] = array('rank' => $rank, 
'filename' => $row->img_name, 'time' => $row->img_timestamp);
-                                       if(!$newestRow || $newestRow['time'] < 
$row->img_timestamp) {
-                                               $newestRow = &$rows[$rank];
-                                       }
-                               }
-                               $page = ceil( $newestRow['rank'] / $pagesize );
-                               $filename = $newestRow['filename'];
-                       } else {
-                               $page = 0;
-                       }
-               }
-
-               return FormatJson::encode(
-                       array(
-                               'file' => $filename,
-                               'page' => $page
-                       )
-               );
-       }
-
-       public static function getExistsWarning( $sFilename ) {
-               $oFile = wfFindFile( $sFilename );
-               if( !$oFile ) {
-                       $oFile = wfLocalFile( $sFilename );
-               }
-
-               $s = '&#160;';
-               if ( $oFile ) {
-                       $exists = UploadBase::getExistsWarning( $oFile );
-                       $warning = SpecialUpload::getExistsWarning( $exists );
-                       if ( $warning !== '' ) {
-                               if ( BsExtensionManager::getExtension( 
'SecureFileStore' ) !== null ) {
-                                       $warning = 
SecureFileStore::secureStuff( $warning );
-                               }
-                               $s = "<div>$warning</div>";
-                       }
-               }
-
-               return $s;
-       }
-
-       /**
-        * Process the dataset for the ExtJS file store and put it to ajax 
output.
-        */
-       public static function getFiles() {
-               $thumbs_width  = 128;
-               $thumbs_height = 128;
-
-               $oStoreParams = BsExtJSStoreParams::newFromRequest();
-               $sFileType    = $oStoreParams->getRequest()->getVal('type', 
'image');
-               //$aFileExtensions = 
$oStoreParams->getRequest()->getArray('type'); //TODO: For future use
-
-               $sStart = $oStoreParams->getStart();
-               $sLimit = $oStoreParams->getLimit();
-
-               switch ( $oStoreParams->getSort() ) {
-                       case 'size':
-                               $sSort = 'i.img_size';
-                               break;
-                       case 'name':
-                               $sSort = 'i.img_name';
-                               break;
-                       case 'lastmod':
-                       default:
-                               $sSort = 'i.img_timestamp';
-               }
-               $sSort .= ' '.$oStoreParams->getDirection();
-
-               $sType = '';
-               switch ( $sFileType ) {
-                       case 'image':
-                               $sType = "(i.img_major_mime = 'image' OR 
i.img_minor_mime = 'tiff')";
-                               break;
-                       case 'file':
-                               $sType = "(i.img_major_mime != 'image' AND 
i.img_minor_mime != 'tiff')";
-                               break;
-               }
-
-               $aConds = array();
-               $aConds[] = $sType;
-
-               $aNameFilters = array();
-               //We need to replace spaces, because the DB value does not have 
spaces
-               $aNameFilters[] = str_replace( ' ', '_', 
$oStoreParams->getQuery() );
-
-               $dbr = wfGetDB( DB_SLAVE );
-               $sImageTable = $dbr->tableName( 'image' );
-               $sCategoryLinksTable = $dbr->tableName( 'categorylinks' );
-               $sPageTable = $dbr->tableName( 'page' );
-
-               wfRunHooks( 'BSInsertFileGetFilesBeforeQuery', array( &$aConds, 
&$aNameFilters ) );
-
-               global $wgDBtype;
-               $sNameFilters = self::buildNameFiltersSQL( $aNameFilters, 
$wgDBtype );
-               if( !empty( $sNameFilters ) ) $aConds[] = $sNameFilters;
-               $sConds = implode( ' AND ', $aConds );
-
-               // Searching for images/files in categories with name 
$sCategoryFilter
-               // TODO SW: verify that this image is found by category, may be 
join in statement
-               $sCategoryFilter = self::buildNameFiltersSQL( $aNameFilters, 
$wgDBtype, 'cl_to' );
-               $sConds .= " OR i.img_name IN (SELECT page_title FROM 
$sCategoryLinksTable, $sPageTable where $sCategoryFilter and page_namespace=6 
and page_id=cl_from) AND $sType";
-
-               if ( $wgDBtype == 'oracle' ) {
-                       $sql =
-                               "SELECT * FROM
-                                       (
-                                               SELECT i.img_name, i.img_size, 
i.img_width, i.img_height, i.img_timestamp,
-                                                               row_number() 
over (ORDER BY {$sSort}) rnk
-                                               FROM {$sImageTable} i
-                                               WHERE {$sConds}
-                                       )
-                               WHERE rnk BETWEEN {$sStart}+1 AND " . ( $sStart 
+ $sLimit );
-               } elseif ( $wgDBtype == 'postgres' ) {
-                       $sql = "SELECT i.img_name, i.img_size, i.img_width, 
i.img_height, i.img_timestamp
-                               FROM {$sImageTable} i
-                               WHERE {$sConds}
-                               ORDER BY {$sSort}
-                               OFFSET {$sStart}
-                               LIMIT {$sLimit}";
-               } else {
-                       $sql = "SELECT i.img_name, i.img_size, i.img_width, 
i.img_height, i.img_timestamp
-                               FROM {$sImageTable} i
-                               WHERE {$sConds}
-                               ORDER BY {$sSort}
-                               LIMIT {$sStart}, {$sLimit}";
-               }
-
-               $rowTotal = $dbr->selectRow(
-                       array( 'i' => 'image' ),
-                       array( 'total' => 'COUNT(img_name)' ),
-                       $sConds
-               );
-
-               $aOutput = array(
-                       'total' => $rowTotal->total,
-                       'images' => array()
-               );
-
-               $res = $dbr->query( $sql );
-
-               foreach ( $res as $row ) {
-                       $img = self::newFromName( $row->img_name );
-
-                       $url = $img->createThumb( 48, 48 );//img size for 
preview in grid cell
-
-                       if ( BsExtensionManager::isContextActive( 
'MW::SecureFileStore::Active' ) ) {
-                               $url = SecureFileStore::secureStuff( $url, true 
);
-                       }
-
-                       $aOutput['images'][] = array(
-                               'name'    => $row->img_name,
-                               'url'     => $url,
-                               'size'    => $row->img_size,
-                               'lastmod' => wfTimestamp(TS_UNIX, 
$row->img_timestamp),
-                               'width'   => $row->img_width,
-                               'height'  => $row->img_height
-                       );
-               }
-               return FormatJson::encode( $aOutput );
-       }
-
-
-       /**
-        * Builds filter conditions for SQL query
-        * @param array $nameFilters
-        * @param string $dbType
-        * @return string A SQL fragment containing all filter conditions
-        */
-       protected static function buildNameFiltersSQL( $nameFilters, $dbType, 
$sTableName = 'i.img_name' ) {
-               //HINT: CONVERT is needed because field type is VARBINARY.
-               //Converting to UTF8 is just a heuristics. SQL is probably
-               //nonstandard.
-               $sFormat = "LOWER(CONVERT($sTableName USING 'UTF8')) LIKE %s";
-
-               if( $dbType == 'oracle' || $dbType == 'postgres' || $dbType == 
'sqlite') {
-                       $sFormat = "LOWER($sTableName) LIKE %s";
-               }
-               $dbr = wfGetDB( DB_SLAVE );
-               $aFormattedFilters = array();
-               foreach( $nameFilters as $nameFilter ) {
-                       //if( empty($nameFilter) ) continue;
-                       $aFormattedFilters[] = sprintf(
-                               $sFormat,
-                               $dbr->addQuotes('%'.strtolower($nameFilter).'%')
-                       );
-               }
-
-               $sNameFilters = implode( ' OR ', $aFormattedFilters );
-
-               if( !empty($sNameFilters) ) {
-                       $sNameFilters = '('.$sNameFilters.')';
-               }
-
-               return $sNameFilters;
-       }
-
-       protected static function newFromName( $name ) {
-               $title = Title::makeTitleSafe( NS_FILE, $name );
-               if ( is_object( $title ) ) {
-                               $img = wfFindFile( $title );
-                               if ( !$img ) {
-                                       $img = wfLocalFile( $title );
-                               }
-                               return $img;
-               } else {
-                               return null;
-               }
-       }
-}
\ No newline at end of file
diff --git a/InsertFile/resources/BS.InsertFile/BaseDialog.js 
b/InsertFile/resources/BS.InsertFile/BaseDialog.js
index c417299..6dab624 100644
--- a/InsertFile/resources/BS.InsertFile/BaseDialog.js
+++ b/InsertFile/resources/BS.InsertFile/BaseDialog.js
@@ -2,8 +2,14 @@
        extend: 'BS.Window',
        requires: [
                'Ext.data.Store', 'Ext.form.TextField', 
'Ext.ux.form.SearchField',
-               'BS.InsertFile.UploadDialog', 'Ext.Button', 
'Ext.toolbar.Toolbar',
-               'Ext.grid.Panel', 'Ext.form.Panel'
+               'Ext.Button', 'Ext.toolbar.Toolbar', 'Ext.grid.Panel', 
'Ext.form.Panel',
+               'Ext.ux.grid.FiltersFeature',
+               //Unfortunately 'Ext.ux.grid.FiltersFeature' only 'uses' those 
classes, but not 'requires' them...
+               'Ext.ux.grid.menu.ListMenu', 'Ext.ux.grid.menu.RangeMenu',
+               'Ext.ux.grid.filter.BooleanFilter', 
'Ext.ux.grid.filter.DateFilter',
+               'Ext.ux.grid.filter.DateTimeFilter', 
'Ext.ux.grid.filter.ListFilter',
+               'Ext.ux.grid.filter.NumericFilter', 
'Ext.ux.grid.filter.StringFilter',
+               'BS.InsertFile.UploadDialog', 'BS.model.File'
        ],
        modal: true,
        bodyPadding: 0,
@@ -33,28 +39,33 @@
        afterInitComponent: function() {
                this.conf = {
                        columns: {
-                               items: [{
-                                       dataIndex: 'url',
+                               items: [
+                               {
+                                       dataIndex: 'file_thumbnail_url',
                                        renderer: this.renderThumb,
                                        width: 56,
-                                       sortable: false
+                                       sortable: false,
+                                       filterable: false
                                },{
                                        text: 
mw.message('bs-insertfile-filename').plain(),
-                                       dataIndex: 'name',
+                                       dataIndex: 'file_display_text',
                                        flex: 1
                                },{
                                        text: 
mw.message('bs-insertfile-filesize').plain(),
-                                       dataIndex: 'size',
+                                       dataIndex: 'file_size',
                                        renderer:this.renderSize,
                                        width: 100
                                },{
                                        text: 
mw.message('bs-insertfile-lastmodified').plain(),
-                                       dataIndex: 'lastmod',
+                                       dataIndex: 'file_timestamp',
                                        renderer:this.renderLastModified,
-                                       width: 150
-                               }],
+                                       width: 150,
+                                       filterable: false //TODO: Use 
DateTimeFilter (needs to be supported by BSF)
+                               }
+                       ],
                                defaults: {
-                                       tdCls: 'bs-if-cell'
+                                       tdCls: 'bs-if-cell',
+                                       filterable: true
                                }
                        }
                };
@@ -63,29 +74,30 @@
                        height: 200,
                        buffered: true, // allow the grid to interact with the 
paging scroller by buffering
                        pageSize: 20,
-                       leadingBufferZone: 60,
+                       leadingBufferZone: 20,
                        proxy: {
                                type: 'ajax',
-                               url: 
bs.util.getAjaxDispatcherUrl('InsertFileAJAXBackend::getFiles'),
+                               url: mw.util.wikiScript('api'),
                                reader: {
                                        type: 'json',
-                                       root: 'images',
-                                       idProperty: 'name'
+                                       root: 'results',
+                                       idProperty: 'file_name',
+                                       totalProperty: 'total'
                                },
                                extraParams: {
-                                       type: this.storeFileType
+                                       format: 'json',
+                                       action: 'bs-filebackend-store'
                                }
                        },
                        remoteFilter: true,
                        autoLoad: true,
-                       fields: ['name', 'lastmod', 'url', 'size', 'width', 
'height' ],
+                       model: 'BS.model.File',
                        sortInfo: {
-                               field: 'lastmod',
+                               field: 'file_timestamp',
                                direction: 'ASC'
                        }
                });
                this.stImageGrid.on( 'load', this.onStImageGridLoad, this );
-
 
                this.sfFilter = Ext.create( 'Ext.ux.form.SearchField', {
                        fieldLabel: 
mw.message('bs-insertfile-labelfilter').plain(),
@@ -130,12 +142,15 @@
                        items: toolBarItems
                });
 
+               var filterFeature = this.makeGridFilterFeatureConfig();
+
                this.gdImages = Ext.create('Ext.grid.Panel', {
                        region: 'center',
                        collapsible: false,
                        store: this.stImageGrid,
                        loadMask: true,
                        dockedItems: this.tbGridTools,
+                       features: [ new 
Ext.ux.grid.FiltersFeature(filterFeature) ],
                        selModel: {
                                pruneRemoved: false
                        },
@@ -147,6 +162,9 @@
                });
 
                this.gdImages.on( 'select', this.onGdImagesSelect, this );
+               this.gdImages.on( 'afterrender', function(){
+                       this.gdImages.filters.createFilters(); //This is 
required to have out default filters be applied on load!
+               }, this );
 
                this.tfFileName = Ext.create('Ext.form.TextField', {
                        readOnly: true,
@@ -169,6 +187,7 @@
                        this.pnlConfig
                ];
 
+               $(document).trigger("BSInsertFileInsertBaseDialogAfterInit", 
[this, this.items]);
                this.callParent(arguments);
        },
 
@@ -193,6 +212,7 @@
 
        dlgUploadOKClick: function( dialog, upload ){
                this.stImageGrid.reload();
+               this.resetFilters();
                this.sfFilter.setValue( upload.filename );
        },
 
@@ -211,6 +231,7 @@
                this.tfLinkText.reset();
 
                if( obj.title ) {
+                       this.resetFilters();
                        this.tfFileName.setValue( obj.title );
                        this.sfFilter.setValue( obj.title );
                        this.sfFilter.onTrigger2Click();
@@ -227,16 +248,13 @@
                this.callParent( arguments );
        },
 
-       renderThumb: function( url ) {
-               /*return mw.html.element(
-                       'img',
-                       {
-                               src: url,
-                               height: 48,
-                               width: 48
-                       }
-               );*/
-               return '<img src="'+url+'" height="48" width="48" />';
+       renderThumb: function( url, meta, record ) {
+               var attribs = {
+                       class: 'bs-insertfile-icon',
+                       style: 'background-image:url('+url+')'
+               };
+
+               return mw.html.element( 'div', attribs );
        },
 
        renderSize: function( size ){
@@ -244,14 +262,11 @@
        },
 
        renderLastModified: function( lastmod ){
-               return Ext.Date.format(
-                       new Date(lastmod * 1000),
-                       'd.m.Y G:i'
-               );
+               return Ext.Date.format( lastmod, 'd.m.Y G:i' );
        },
 
        onGdImagesSelect: function( grid, record, index, eOpts ){
-               this.tfFileName.setValue( record.get('name') );
+               this.tfFileName.setValue( record.get('file_name') );
                this.pnlConfig.expand();
        },
 
@@ -261,5 +276,26 @@
                        return selectedRecords[0];
                }
                return null;
+       },
+
+       makeGridFilterFeatureConfig: function() {
+               return {
+                       ftype: 'filters',
+                       encode: true,
+                       autoReload: true,
+                       filters: [
+                               {
+                                       active: true,
+                                       dataIndex: 'file_mimetype',
+                                       type: 'string',
+                                       value: { 'nct': 'image/' } 
//unfortunately there is no "not starts with"
+                               }
+                       ]
+               };
+       },
+
+       resetFilters: function () {
+               this.gdImages.filters.clearFilters(); //We disable all 
filters...
+               
this.gdImages.filters.getFilter('file_mimetype').setActive(true);//... and 
reenable the mime_type filter to have normal behavior
        }
 });
diff --git a/InsertFile/resources/BS.InsertFile/FileDialog.js 
b/InsertFile/resources/BS.InsertFile/FileDialog.js
index 741472e..2a4c579 100644
--- a/InsertFile/resources/BS.InsertFile/FileDialog.js
+++ b/InsertFile/resources/BS.InsertFile/FileDialog.js
@@ -14,7 +14,10 @@
                this.configPanel.items = [];
                this.callParent(arguments);
        },
-       onPnlConfigExpand: function(panel, eOpts){
+       afterInitComponent: function() {
                this.callParent(arguments);
        },
+       onPnlConfigExpand: function(panel, eOpts){
+               this.callParent(arguments);
+       }
 });
\ No newline at end of file
diff --git a/InsertFile/resources/BS.InsertFile/ImageDialog.js 
b/InsertFile/resources/BS.InsertFile/ImageDialog.js
index f584ae0..76cd16e 100644
--- a/InsertFile/resources/BS.InsertFile/ImageDialog.js
+++ b/InsertFile/resources/BS.InsertFile/ImageDialog.js
@@ -170,8 +170,8 @@
                        if( this.nbWidth.getValue() === null && 
this.nbHeight.getValue() === null ) {
                                var record = records[0];
                                this.isSetData = true;
-                               this.nbWidth.setValue(+record.get('width'));
-                               this.nbHeight.setValue(+record.get('height'));
+                               
this.nbWidth.setValue(+record.get('file_width'));
+                               
this.nbHeight.setValue(+record.get('file_height'));
                                this.isSetData = false;
                        }
                }
@@ -195,8 +195,8 @@
                if ((w === 0 && h === 0) || record === null ) {
                        return 0;
                }
-               var orgW = record.get('width');
-               var orgH = record.get('height');
+               var orgW = record.get('file_width');
+               var orgH = record.get('file_height');
 
                if (w === 0) {
                        return Math.round(orgW / (orgH / h));
@@ -271,7 +271,7 @@
 
                var height = this.nbHeight.getValue();
                var width = this.nbWidth.getValue();
-               if( height != record.get('height') || width != 
record.get('width') ) {
+               if( height != record.get('file_height') || width != 
record.get('file_width') ) {
                        cfg.sizeheight = height;
                        cfg.sizewidth = width;
                }
@@ -352,12 +352,12 @@
        onGdImagesSelect: function( grid, record, index, eOpts ){
                this.callParent(arguments);
 
-               this.hdnUrl.setValue( record.get('url') );
+               this.hdnUrl.setValue( record.get('file_thumbnail_url') );
                //This is to avoid an overriding of the dimension that may have 
been
                //set by this.setData()
                if( grid.getStore().filters.items.length === 0 || 
grid.getStore().getCount() !== 1 ) {
-                       this.nbWidth.setValue( record.get('width') );
-                       this.nbHeight.setValue( record.get('height') );
+                       this.nbWidth.setValue( record.get('file_width') );
+                       this.nbHeight.setValue( record.get('file_height') );
                }
                
$(document).trigger("BSInsertFileInsertImageDialogAfterImageSelect", [this, 
grid, record, index]);
        },
@@ -381,5 +381,11 @@
                else {
                        this.tfLinkText.disable();
                }
+       },
+
+       makeGridFilterFeatureConfig: function() {
+               var filtersCfg = this.callParent( arguments );
+               filtersCfg.filters[0].value = { 'sw': 'image/' }; //Set to 
"starts with"; value is 'image/' defined by base class
+               return filtersCfg;
        }
 });
\ No newline at end of file
diff --git a/InsertFile/resources/BS.InsertFile/UploadPanel.js 
b/InsertFile/resources/BS.InsertFile/UploadPanel.js
index cfa824d..6589008 100644
--- a/InsertFile/resources/BS.InsertFile/UploadPanel.js
+++ b/InsertFile/resources/BS.InsertFile/UploadPanel.js
@@ -60,7 +60,7 @@
                this.storeLicenses = Ext.create( 'Ext.data.Store', {
                        proxy: {
                                type: 'ajax',
-                               url: 
bs.util.getAjaxDispatcherUrl('InsertFileAJAXBackend::getLicenses'),
+                               url: 
bs.util.getAjaxDispatcherUrl('InsertFile::getLicenses'),
                                reader: {
                                        type: 'json',
                                        root: 'items',
@@ -140,8 +140,8 @@
                });
 
                this.panelItems = [
-                       this.tfFileName,
                        this.fuFile,
+                       this.tfFileName,
                        this.fsDetails
                ];
                var detailsItems = [
@@ -176,31 +176,36 @@
        },
 
        tfFileNameChange: function(field, value) {
-               Ext.Ajax.request({
-                       url: bs.util.getAjaxDispatcherUrl( 
'InsertFileAJAXBackend::getExistsWarning', [ value ] ),
-                       success: function(response, options) {
-                               if(!(response.responseText.trim() === ''
-                                       || response.responseText === '&#160;'
-                                       || response.responseText === '&nbsp;')) 
{
-
-                                       bs.util.alert(
-                                               this.getId()+'-existswarning',
-                                               {
-                                                       titleMsg: 
'bs-extjs-title-warning',
-                                                       text: 
response.responseText
-                                               },
-                                               {
-                                                       ok: function() {
-                                                               //User is 
noticed. Now let's set the
-                                                               //ignore 
warnings flag automatically
-                                                               
this.cbxWarnings.setValue(true);
-                                                       },
-                                                       scope: this
-                                               }
-                                       );
+               var Api = new mw.Api();
+               var me = this;
+               Api.get({
+                       action: 'query',
+                       format: 'json',
+                       titles: 'File:' + value,
+                       prop: 'imageinfo',
+                       iiprop: 'uploadwarning',
+                       indexpageids: ''
+               }).done( function ( response ) {
+                       if( response.query.pageids[0] === "-1" ) {
+                               return null;
+                       }
+                       bs.util.alert(
+                               me.getId()+'-existswarning',
+                               {
+                                       titleMsg: 'bs-extjs-title-warning',
+                                       text: 
response.query.pages[response.query.pageids[0]]
+                                               .imageinfo[0]
+                                               .html
+                               },
+                               {
+                                       ok: function() {
+                                               //User is noticed. Now let's 
set the
+                                               //ignore warnings flag 
automatically
+                                               me.cbxWarnings.setValue(true);
+                                       },
+                                       scope: me
                                }
-                       },
-                       scope: this
+                       );
                });
        },
 
diff --git a/InsertFile/resources/bluespice.insertFile.css 
b/InsertFile/resources/bluespice.insertFile.css
index d13deb3..3bf1757 100644
--- a/InsertFile/resources/bluespice.insertFile.css
+++ b/InsertFile/resources/bluespice.insertFile.css
@@ -32,4 +32,11 @@
 
 .bs-ve-image.thumb.center {
        width: auto;
+}
+
+.bs-insertfile-icon {
+       width: 48px;
+       height: 48px;
+       background-position: center center;
+       background-repeat: no-repeat;
 }
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/224409
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I69a13bbcce2184a6156c2e4d5545e7fb170b2246
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions
Gerrit-Branch: REL1_23
Gerrit-Owner: Robert Vogel <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to