%PDF- %PDF-
Direktori : /www/varak.net/povidky.varak.net/app/presenters/ |
Current File : /www/varak.net/povidky.varak.net/app/presenters/HomepagePresenter.php |
<?php use Nette\Application\UI\Form; /** * Homepage presenter. */ class HomepagePresenter extends BasePresenter { private $model; public function injectModels(Bookshelf $model) { $this->model = $model; } public function renderDefault() { $this->template->anyVariable = 'any value'; } protected function createComponentAddForm() { $httpRequest = $this->getHttpRequest(); $authorId = $httpRequest->getCookie('authorId'); $genreId = $httpRequest->getCookie('genreId'); $languageId = $httpRequest->getCookie('languageId'); $authors = $this->model->getAuthorsList(); $languages = $this->model->getLanguagesList(); $genres = $this->model->getGenresList(); $form = new Form(); $form->addText("name", 'Nazev knihy', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat název.'); $form->addSelect('author', 'Autor', $authors)->setDefaultValue($authorId); $form->addSelect('genre', 'Žánr', $genres)->setDefaultValue($genreId); $form->addSelect('language', 'Jazyk', $languages)->setDefaultValue($languageId); $form->addTextArea('text', 'Text', 80, 20)->addRule(Form::FILLED, 'Je nutné zadat text.'); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = callback($this, 'addFormSubmitted'); return $form; } protected function createComponentAddAuthorForm() { $form = new Form(); $form->addText("name", 'Jméno autora', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat jméno.')->addRule(Form::MAX_LENGTH, 'Maximální délka jména je 255 znaků', 255); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = callback($this, 'addAuthorFormSubmitted'); return $form; } /*protected function createComponentAddGenreForm() { $form = new Form(); $form->addText("name", 'Název žánru', 40, 255)->addRule(Form::FILLED, 'Je nutné zadat název.')->addRule(Form::MAX_LENGTH, 'Maximální délka názvu žánru je 255 znaků', 255); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = callback($this, 'addGenreFormSubmitted'); return $form; }*/ protected function createComponentAddLanguageForm() { $form = new Form(); $form->addText("tag", 'Zkratka', 5, 2)->addRule(Form::FILLED, 'Je nutné zadat zkratku.')->addRule(Form::LENGTH, 'Délka zkratky jsou dva znaky', 2); $form->addText("name", 'Jazyk', 40, 50)->addRule(Form::FILLED, 'Je nutné zadat název.')->addRule(Form::MAX_LENGTH, 'Maximální délka jazyka je 50 znaků', 50); $form->addSubmit('create', 'Vytvořit'); $form->onSuccess[] = callback($this, 'addLanguageFormSubmitted'); return $form; } public function addAuthorFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addAuthor($values['name']); $this->redirect(302, "Homepage:add"); } } /*public function addGenreFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addGenre($values['name']); $this->redirect(302, "Homepage:add"); } }*/ public function addLanguageFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $this->model->addLanguage($values['name'], $values['tag']); $this->redirect(302, "Homepage:add"); } } public function addFormSubmitted(Form $form) { if ($form->isValid()) { // submitted and valid $values = $form->getValues(); $newid = $this->model->addBook($values['name'], $values['author'], $values['genre'], $values['language']); $httpResponse = $this->getHttpResponse(); // Set cookies $httpResponse->setCookie('authorId', $values['author'], 0); $httpResponse->setCookie('genreId', $values['genre'], 0); $httpResponse->setCookie('languageId', $values['language'], 0); // Determine shard no. $shard = floor($newid / 1000); $fname = __DIR__."/../books/$shard/$newid.epub"; $mfname = __DIR__."/../books/$shard/$newid.mobi"; if(!file_exists(__DIR__."/../books/$shard/")) { // shard directory doesn't exist, create new one mkdir(__DIR__."/../books/$shard/"); } $p = popen("pandoc -o $fname -f markdown -t epub", "w"); fputs($p, "# ".$values->name."\r\n"); fputs($p, $values->text); pclose($p); //$values['file']->move($fname); //exec("ebook-convert $fname $mfname >> /tmp/convert.log 2>> /tmp/convert2.log &"); $this->redirect(302, "Homepage:add"); } } }