ParanoyaBLOG

programmare necesse est,
vivere non est necesse

 

PDW Filebrowser – filtr *.* przy swfupload

 

W PDW Filebrowsera pod TinyMCE brakuje możliwości dodania filtru ‚*.*’ tak aby okno wskazywania plików pokazywało wszystkie pliki.
 
Ustawienie filtru ‚*’ dla $extension_whitelist powoduje, że w oknie wyboru pliku wszystkie pliki są widoczne lecz żaden uploadowany plik fizycznie nie wgrywał się na dysk.
 
Okazuje się, że w kodzie listę rozszerzeń plików „rozbijana” jest na tablicę używając przecinka jako separatora. Następnie przy wgrywaniu pliku wydziela z niego rozszerzenie i sprawdza czy takowe istnieje w powstałej przez rozbicie tablicy. Jeśli istnieje – plik jest wgrywany na dysk serwera do odpowiedniego katalogu. Jeśli nie ląduje gdzieś w kosmosie. Ustawiając $extension_whitelist na ‚*’ po takim rozbiciu uzyskuje się tablicę rozszerzeń, w której jedynym elementem jest *. Skrypt porównując rozszerzenie pliku z zawartością tej tablicy nie znalazł podobieństw i uznał, że rozszerzenie nie jest dozwolone … nie wgrał plików na serwer.
 
Problem można obejść dopisując kilka prostych linijek kodu w pliku upload.php (katalog swfupload) w linii 78.
 
Linie:
 

$is_valid_extension = false;
$allowedExtensions = explode(',', $extension_whitelist);

 
Zmieniamy na:
 

if ($extension_whitelist == '*') {
 $is_valid_extension = true;
} else {
 $is_valid_extension = false;
 $allowedExtensions = explode(',', $extension_whitelist);
}

 
Proste, łopatologiczne … acz skuteczne :P

 

Internet explorer – SELECT i innerHTML

 

Dynamiczna zmiana opcji select’a poprzez właściwość innerHTML jest dość wygodna. Jednak jak się niestety okazało na drodze do sukcesu znowu stanęły przeglądarki z rodziny Internet Explorer. Nie są w stanie obsłużyć właściwości innerHTML dla elementów SELECT. Rozwiązaniem może być mała funkcyjka :)

 

  1. function setOptions(elem, options) {

  2. elem.options.length = 0;

  3. var i = 0;

  4. var icount = options.length;

  5. for (i = 0; i < icount; i++) {

  6. elem.options[elem.options.length] = new Option(options[i][‚text’], options[i][‚value’]);

  7. }

  8. }

 

Pierwszym parametrem jest tutaj select, w którym chcemy zmienić listę opcji (pobrać go możemy chociażby poprzez document.getElementById).
 
Drugi parametr to tablica opcji. Każdy element tablicy jest obiektem składającym się z dwóch właściwości: text oraz value.
 
Tak więc po raz kolejny sprawdza się powiedzenie że nie ma drogi na skróty :/

 

Ubuntu – przyciski minimalizuj/maksymalizuj/zamknij

 

Od pewnego momentu w nowym stylu Ubuntu przyciski minimalizuj/maksymalizuj/zamknij zaczęły pojawiać się po lewej stronie belki tytułowej programów. Osobiście uważam to za nieporozumienie. Na szczęście jest na to proste rozwiązanie. Należy w terminalu wydać komendę:
 

gconftool-2 --type string --set /apps/metacity/general/button_layout "menu:minimize,maximize,close"