%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/varak.net/povidky.varak.net/app/presenters/
Upload File :
Create Path :
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");
        }
    }

}

Zerion Mini Shell 1.0