Projekt

Obecné

Profil

« Předchozí | Další » 

Revize ce045025

Přidáno uživatelem Petr Lukašík před téměř 6 roky(ů)

Re #7510 kompletní import, bugfixy v parseru+preview, js na anti-spam uploadu

Zobrazit rozdíly:

app/AdminModule/presenters/TransportPresenter.php
4 4

  
5 5
use App\AdminModule\Components\IExportFormFactory;
6 6
use App\AdminModule\Components\IImportFormFactory;
7
use App\Enum\EFlashMessage;
8
use App\Model\Facade\TransportFacade;
7 9
use App\Model\Repository\ObjectTypeRepository;
8 10
use App\Model\Repository\SurfaceTypeRepository;
9 11
use App\Utils\TextParser;
10 12

  
11 13
class TransportPresenter extends BaseUserPresenter
12 14
{
13
    /** @var IImportFormFactory  */
15
    /** @var IImportFormFactory */
14 16
    private $importFormFactory;
15 17

  
16
    /** @var IExportFormFactory  */
18
    /** @var IExportFormFactory */
17 19
    private $exportFormFactory;
18 20

  
19 21
    /** @var SurfaceTypeRepository */
......
22 24
    /** @var ObjectTypeRepository */
23 25
    private $objectTypeRepository;
24 26

  
27
    /** @var TransportFacade */
28
    private $transportFacade;
29

  
25 30
    public function __construct(
26 31
        IImportFormFactory $importFormFactory,
27 32
        IExportFormFactory $exportFormFactory,
28 33
        SurfaceTypeRepository $surfaceTypeRepository,
29
        ObjectTypeRepository $objectTypeRepository
34
        ObjectTypeRepository $objectTypeRepository,
35
        TransportFacade $transportFacade
30 36
    )
31 37
    {
32 38
        parent::__construct();
......
34 40
        $this->exportFormFactory = $exportFormFactory;
35 41
        $this->surfaceTypeRepository = $surfaceTypeRepository;
36 42
        $this->objectTypeRepository = $objectTypeRepository;
43
        $this->transportFacade = $transportFacade;
37 44
    }
38 45

  
39
    public function actionPreviewImport(TextParser $parser){
46
    /**
47
     * View pro zobrazení importovaných dat před uložením do databáze
48
     * @param TextParser $parser
49
     */
50
    public function renderPreviewImport(TextParser $parser)
51
    {
40 52
        $objectTypes = $this->objectTypeRepository->fetchObjectTypes();
41 53
        $surfaceTypes = $this->surfaceTypeRepository->fetchSurfaceTypes();
42 54
        $parser->setTypes($objectTypes, $surfaceTypes);
43 55

  
44
        $this->template->fileName = $parser->textFile->getName();
45
        $this->template->parsedFile = $parser->parseText();
56
        // Potřebuju to jako persistentní data do další akce presenteru
57
        $_SESSION['parsedText'] = $parser->parseText();
58

  
59
        $this->template->fileName = $parser->getTextFile()->getName();
60
        $this->template->parsedFile = $_SESSION['parsedText'];
46 61
        $this->template->transliterationNum = $this->countTransliterations();
47 62
        $this->template->surfaces = $surfaceTypes;
48 63
    }
49 64

  
50
    public function countTransliterations(){
51
        $num=0;
52
        foreach ($this->template->parsedFile as $book){
65
    /** Uloží data z textového souboru do databáze
66
     * @throws \Nette\Application\AbortException
67
     */
68
    public function actionConfirmPreview()
69
    {
70
        $result = $this->transportFacade->saveImportedData($_SESSION['parsedText']);
71
        $_SESSION['parsedText'] = null;
72

  
73
        if ($result) {
74
            $this->presenter->flashMessage('All data were imported successfully.', EFlashMessage::SUCCESS);
75
        } else {
76
            $this->presenter->flashMessage('There was an error when importing data.', EFlashMessage::ERROR);
77
        }
78

  
79
        $this->redirect("Transport:");
80
    }
81

  
82
    /** Počítá počet importovaných transliterací */
83
    public function countTransliterations()
84
    {
85
        $num = 0;
86
        foreach ($this->template->parsedFile as $book) {
53 87
            $num += count($book);
54 88
        }
55 89
        return $num;

Také k dispozici: Unified diff