Izgled je najmanje bitan, on se lako menja. Funkcionalnost je ono na sta sam najvise ponosan.
Citat:
1) Kako je radjen layout sa tabelama ili css?
CSS. Ali kazem, izgled nije vazan, nisam ja pravio template. Ja
nikad ne radim dizajn, klijent ga obezbedjuje i to je njegov problem. Doduse, dizajner mora da radi po nekim pravilima koje sam napravio, ali to je jedino moje mesanje. Primer je da hocu sprajtove za staticke stvari: ikone da add/edit/delete bude <a class="icon delete"></a> umesto <img> tagova.
Citat:
2) Mozes li da izdvois jedan niz koda sa doctrine-om (ako si ga koristio), tipa kako uzimas ili snimas nesto iz baze?
Naravno, drage mi je sto si pitao:
Za stranicu gde se slusa neka pesma, ovo je query:
Code (php):
/**
* For listen->song() page
*
* @param mixed $id
* @return Song
*/
public function findForListenSong($id)
{
// tacka 1
$query = $this->createQuery('o')->select('o.*') ;
$this->addAlbum($query) ;
$this->addLanguage($query) ;
$this->addCreator($query) ;
$this->addStatistics($query) ;
$this->addCategory($query) ;
$this->addCountry($query) ;
$this->addActiveContest($query) ;
// tacka 2
if (User::isLogged())
$query->addSelect('ar.*')->leftJoin('o.AbuseReports ar WITH ar.creator_id=?', User::getLogged()->id) ;
// tacka 3
$query->addSelect('j.*')->leftJoin('o.Locationstatistics j') ;
return $query->addWhere('o.id=?', $id)->fetchOne() ;
}
Stranica u pitanju je
http://www.youmicro.com/listen...alien-ant-farm-smooth-criminal .
Ovo je malo kompleksniji query. Stvari za takmicenje (Contest) sam izbacio jer ih trenutno nema na live serveru.
tacka1: kreira query a zatim dodaje stvari koje ce se prikazivati na stranici. Vidis da tamo ima statistike (zvezdice), imas ime zemlje, jezik, da li je pesma u nekom takmicenju (nije, ali bice jednog dana)
Statistika ti je ovo:
Code (php):
/**
* Add statistics to query object:
*
* nr_of_votes, nr_of_views, nr_of_stars
*
* @param Doctrine_Query $query
*/
protected function addStatistics(Doctrine_Query $query)
{
$query->addSelect('s.voted AS nr_of_votes, s.viewed AS nr_of_views, ROUND(s.percentage/20) AS nr_of_stars')->leftJoin('o.Statistics s') ;
}
tacka2: ako je korisnik ulogovan, leftJoin sa AbuseReport-om. Posle koristim $song->isReportedByVisitor() da bih znao da li treba da ispisem 'Vec si prijavio ovu pesmu' ili da vodi na stranicu za login. Ovako kako radi je iskljucivo zelja klijenta.
tacka 3: Ona google mapa sto je vidis, ce da se joinuje sa Song-om. To posle koristim da izvucem zemlje posetioca, posaljem GooglemapAPI klasi (helper klasa, ne model) i u templatu-u uradim $map->show()
Posto je skoro svaki objekat visejezican npr. ime zemlje, ime kategorije, imam ovakve metode:
Code (php):
/**
* Add country as property:
*
* country_name
*
* @param Doctrine_Query $query
*/
protected function addCountry(Doctrine_Query $query)
{
$query->addSelect('e.name as country_name')
->leftJoin('o.Country y')
->leftJoin('y.CountryTranslation e WITH e.translation_id=?', Translation::getForVisitor()->id) ;
}
U .tpl ime zemlje izvlacim sa $song->country_name .
Translation::getForVisitor() ce mi vratiti instancu jezika koju posetioc koristi. To jest, ako je ulogovan, vratice se jezik koji koristi preko User::getLogged()->translation_id . Ako nije ulogovan (User::isLogged()), potrazice u cookies. Nemoj da kreiras nalog vec samo promeni jezik gore desno i videces na sta mislim.
Ako se ni cookie ne nadje, vratice defaultni jezik koji se podesava iz admin-a. Naravno, to se kesira; koliko god puta da pozoves Translation::getForVisitor(), samo se prvi put pristupa bazi.
