Deo koda unutar templates dela, gde uz pomoc url_for funkcije saljem URL na osnovu kog treba da mi se pozove executeThumbnail metoda:
Code:
$picid=0;
foreach ($files as $file) {
if($rownum == 4) {
echo '</tr><tr>';
$rownum = 1;
}
echo '<td class="dir1" background=' . url_for('galeria/thumbnail?d='.$folder.$file) . '">
<a onclick="open_picture_in_window_new(' . $picid . ')"><div class="fedo"><span class="kor">'
. htmlspecialchars($file) . '</span></div></a>' . $c . '</td>';
$rownum++;
$picid++;
}
$picid=0;
foreach ($files as $file) {
if($rownum == 4) {
echo '</tr><tr>';
$rownum = 1;
}
echo '<td class="dir1" background=' . url_for('galeria/thumbnail?d='.$folder.$file) . '">
<a onclick="open_picture_in_window_new(' . $picid . ')"><div class="fedo"><span class="kor">'
. htmlspecialchars($file) . '</span></div></a>' . $c . '</td>';
$rownum++;
$picid++;
}
Promenljive:
$picid-trenutno nebitna, jer ce sluziti za preusmeravanje na originalnu sliku, koja treba da se pojavi uz pomoc JS funkcije.
$files-globalna promenljiva koju akcija salje, i sadrzi listu imena slika, koja se nalaze unutar trenutne galerije.
$folder-globalna promenljiva koju akcija salje, i sadrzi putanju podfoldera do same slike, a unutar definisanog root foldera, odakle galerija pocinje
metoda unutar klase action koja treba da preuzme parametar 'd' i da obradi sliku:
Code:
public function executeThumbnail(sfWebRequest $request) {
$galery_dir = sfConfig::get('app_default_folder_fotogalery');
$thumb_dir = sfConfig::get('app_default_folder_fotogalery_icons');
$origimg = realpath($galery_dir . $request->getParameter('d', ''));
$thumbimg = realpath($thumb_dir . $request->getParameter('d', ''));
// Provera da li postoji trazeni fajl, i da li je citljiv
if (!is_readable($origimg) || !is_file($origimg)){
$this->forward404();
}
else{
// Provera da li postoji thumb slika, zadatog fajla
if(!is_readable($thumbimg) || !is_file($thumbimg) || filemtime($thumbimg)<filemtime($origimg)){
// Initialize the object for 240x180 thumbnails
$thumbnail = new sfThumbnail(240, 180);
// Load the image to reduce
$thumbnail->loadFile($origimg);
$direktorijum = dirname($origimg);
$slika = basename($origimg);
// Save the thumbnail
$thumbnail->save($direktorijum.'/'.$slika, 'image/jpeg');
}
else{
// Redirect to thumbnail link
$this->redirect($thumbimg);
}
}
}
public function executeThumbnail(sfWebRequest $request) {
$galery_dir = sfConfig::get('app_default_folder_fotogalery');
$thumb_dir = sfConfig::get('app_default_folder_fotogalery_icons');
$origimg = realpath($galery_dir . $request->getParameter('d', ''));
$thumbimg = realpath($thumb_dir . $request->getParameter('d', ''));
// Provera da li postoji trazeni fajl, i da li je citljiv
if (!is_readable($origimg) || !is_file($origimg)){
$this->forward404();
}
else{
// Provera da li postoji thumb slika, zadatog fajla
if(!is_readable($thumbimg) || !is_file($thumbimg) || filemtime($thumbimg)<filemtime($origimg)){
// Initialize the object for 240x180 thumbnails
$thumbnail = new sfThumbnail(240, 180);
// Load the image to reduce
$thumbnail->loadFile($origimg);
$direktorijum = dirname($origimg);
$slika = basename($origimg);
// Save the thumbnail
$thumbnail->save($direktorijum.'/'.$slika, 'image/jpeg');
}
else{
// Redirect to thumbnail link
$this->redirect($thumbimg);
}
}
}
Promenljive:
$galery_dir i $thumb_dir - preuzimaju apsolutnu putanju do root direktorijuma za galeriju, i thumbnail galeriju.
$origimg i $thumbimg - uz pomoc gornjih promenljivih i vrednosti koje iz parametra 'd', sadrze putanju do same slike, i putanju do thumb slike (radi provere da li thumb slika vec postoji)
Mislim da mi ovde poslednji red za redirekciju, nije bas najbolje napisan? Mada meni ni gornji deo ne radi, tacnije ne kreira mi samu thumbnail sliku, i ne snimi je na zadato mesto. A gledano po sfThumbnailPlugin dokumentaciji, sve sam dobro napisao?
Evo jos ova dva konfiguraciona fajla, koja su kljucna za ovaj postupak.
routing.yml:
Code:
galeria:
url: /galeria.php
param: { module: galeria, action: index, type: html }
galeria_thumb:
url: /galeria/thumbnail/
param: { module: galeria, action: thumbnail }
galeria:
url: /galeria.php
param: { module: galeria, action: index, type: html }
galeria_thumb:
url: /galeria/thumbnail/
param: { module: galeria, action: thumbnail }
app.yml:
Code:
all:
default_folder:
fotogalery: %SF_WEB_DIR%/fotogalery/
fotogalery_icons: %SF_WEB_DIR%/fotogalery_icons/
all:
default_folder:
fotogalery: %SF_WEB_DIR%/fotogalery/
fotogalery_icons: %SF_WEB_DIR%/fotogalery_icons/
Pri testiranju, mi se nikakva greska ne ispise, ali isto mi ni ne prikaze slicice, niti ih snimi u predvidjeni folder.
Ako zbog testiranja, direktno u address bar upisem direktnu adresu: ...../frontend_dev.php/galeria/thumbnail?d=galeria1/slika01.jpg. Tada mi ispise gresku:
404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL "/galeria/thumbnail" (/).