* @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $ */ class jobsActions extends sfActions { public function executeList(sfWebRequest $request) { $this->jobFilter = new JobFormFilter(); $this->jobFilter->bind($request->getParameter($this->jobFilter->getName())); $this->pager = new sfDoctrinePager('Job'); $this->pager->setMaxPerPage($request->getParameter('pagesize', sfConfig::get('app_default_pagesize'))); $this->pager->setPage($request->getParameter('page', 1)); if($this->jobFilter->isValid()) { $query = $this->jobFilter->getQuery(); $query->orderBy('created_at DESC'); if($request->getParameter('export-excel', false)) { $this->pager->setPage(1); $this->pager->setMaxPerPage($query->count()); $this->setTemplate('excel'); $this->setLayout(false); $this->getResponse()->setContentType('application/ms-excel'); $this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename=zvz-export-inzeraty.xls'); } $this->pager->setQuery($query); } $this->pager->init(); } public function executeOfferCreate(sfWebRequest $request) { $this->form = new AdminOfferJobForm(); $this->processForms($request); $this->setTemplate('edit'); } public function executeDemandCreate(sfWebRequest $request) { $this->form = new AdminDemandJobForm(); $this->processForms($request); $this->setTemplate('edit'); } public function executeCopy(sfWebRequest $request) { $this->forward404Unless($copy_job = $this->getRoute()->getObject()); $this->job = $copy_job->getCopy(); if($this->job->isDemand()) { $this->form = new AdminDemandJobForm($this->job); } elseif($this->job->isOffer()) { $this->form = new AdminOfferJobForm($this->job); } $this->processForms($request); $this->setTemplate('edit'); } public function executeUpdate(sfWebRequest $request) { $this->forward404Unless($this->job = $this->getRoute()->getObject()); if($this->job->isDemand()) { $this->form = new AdminDemandJobForm($this->job); } elseif($this->job->isOffer()) { $this->form = new AdminOfferJobForm($this->job); } $this->processForms($request); $this->setTemplate('edit'); } protected function processForms(sfWebRequest $request) { if($request->isMethod('post') || $request->isMethod('put')) { $data = $request->getParameter($this->form->getName()); if(!isset($data['specializations_list'])) { $data['specializations_list'] = array(); } $this->form->bind($data); if($this->form->isValid()) { $this->job = $this->form->save(); $this->getUser()->addMessage('Inzerát uložen.'); $invoice = $this->job->createInvoice(); if($this->getActionName() != 'update') { $this->getUser()->addMessage('Objednávka vytvořena.'); } else { $this->getUser()->addMessage('Změny uloženy.'); } $this->redirect($this->generateUrl('jobs_list')); } } } public function executeDelete(sfWebRequest $request) { $this->forward404Unless($this->job = $this->getRoute()->getObject()); $this->job->delete(); $this->getUser()->addMessage('Inzerát odstraněn.'); $this->redirect($request->getReferer()); } public function executeActivate(sfWebRequest $request) { $this->forward404Unless($this->job = $this->getRoute()->getObject()); $this->job->setIsActive(true); $this->job->save(); $this->getUser()->addMessage('Inzerát aktivován.'); $this->redirect($request->getReferer()); } public function executeDeactivate(sfWebRequest $request) { $this->forward404Unless($this->job = $this->getRoute()->getObject()); $this->job->setIsActive(false); $this->job->save(); $this->getUser()->addMessage('Inzerát deaktivován.'); $this->redirect($request->getReferer()); } }