Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 8ef808c0

Přidáno uživatelem Jan Šedivý před asi 6 roky(ů)

Re #7327 Detail transliterace

Zobrazit rozdíly:

app/FrontModule/presenters/TransliterationPresenter.php
5 5

  
6 6

  
7 7
use App\FrontModule\Components\ITransliterationSearchFormFactory;
8
use App\Model\Repository\LineRepository;
9
use App\Model\Repository\LitReferenceRepository;
10
use App\Model\Repository\RevHistoryRepository;
8 11
use App\Model\Repository\TransliterationRepository;
9 12
use App\Model\TransliterationSearchModel;
10 13
use Nette\Application\UI\Presenter;
14
use Nette\SmartObject;
15
use Tracy\Debugger;
11 16

  
12 17
class TransliterationPresenter extends Presenter
13 18
{
......
20 25
    /** @var TransliterationSearchModel */
21 26
    private $transliterationSearchModel;
22 27

  
28
    /** @var LitReferenceRepository */
29
    private $litReferenceRepository;
30

  
31
    /** @var RevHistoryRepository */
32
    private $revHistoryRepository;
33

  
34
    /** @var LineRepository */
35
    private $lineRepository;
36

  
23 37
    public function __construct(
24 38
        ITransliterationSearchFormFactory $transliterationSearchFormFactory,
25 39
        TransliterationRepository $transliterationRepository,
26
        TransliterationSearchModel $transliterationSearchModel
40
        TransliterationSearchModel $transliterationSearchModel,
41
        LitReferenceRepository $litReferenceRepository,
42
        RevHistoryRepository $revHistoryRepository,
43
        LineRepository $lineRepository
27 44
    )
28 45
    {
29 46
        parent::__construct();
......
31 48
        $this->transliterationSearchFormFactory = $transliterationSearchFormFactory;
32 49
        $this->transliterationRepository = $transliterationRepository;
33 50
        $this->transliterationSearchModel = $transliterationSearchModel;
51
        $this->litReferenceRepository = $litReferenceRepository;
52
        $this->revHistoryRepository = $revHistoryRepository;
53
        $this->lineRepository = $lineRepository;
34 54
    }
35 55

  
36 56

  
......
58 78
        $this->template->resultRows = $resultRows;
59 79
    }
60 80

  
81
    public function actionView($id)
82
    {
83
        $transliteration = $this->transliterationRepository->getTransliterationDetail($id);
84
        if(!$transliteration)
85
        {
86
            $this->presenter->flashMessage('Transliteration not found');
87
            $this->redirect('Transliteration:search');
88
        }
89
        $lines = $this->lineRepository->getAllLinesForTransliteration($id);
90
        $lineArray = [];
91
        foreach ($lines as $line)
92
        {
93
            $lineArray[$line->object_type][$line->surface_type][] = array('transliteration' => $line->transliteration, 'line_number' => $line->line_number);
94
        }
95

  
96
        $this->template->transliteration = $transliteration;
97
        $this->template->litReferences = $this->litReferenceRepository->findBy([LitReferenceRepository::COLUMN_TRANSLITERATION_ID => $id]);
98
        $this->template->revisionHistory = $this->revHistoryRepository->findBy([RevHistoryRepository::COLUMN_TRANSLITERATION_ID => $id]);
99
        $this->template->lineArray = $lineArray;
100
    }
101

  
61 102
    public function createComponentTransliterationSearchForm()
62 103
    {
63 104
        return $this->transliterationSearchFormFactory->create();
app/FrontModule/templates/Transliteration/searchResult.latte
31 31
    {foreach $resultRows as $result}
32 32
        <hr>
33 33

  
34
        <a href="transliteration-info.html">
34
        <a n:href="Transliteration:view $result->id">
35 35
            {$result->book_abrev}, {$result->chapter}
36 36
        </a>
37 37
        <div>
app/FrontModule/templates/Transliteration/view.latte
1
{block content}
2
    <div class="display-5">Transliteration info</div>
3
    <hr>
4

  
5
    <div class="display-6">
6
        <div class="text-muted">Catalogue information</div>
7
    </div>
8
    <div>
9

  
10
        <div>
11
            <a href="#">edit book</a> |
12
            <a href="#">edit transliteration info</a>
13
        </div>
14

  
15
    </div>
16
    <div class="container-fluid">
17
        <dl class="row">
18

  
19
            <dt class="col-sm-3">Book abrev.</dt>
20
            <dd class="col-sm-9">{$transliteration->book_abrev}</dd>
21

  
22
            <dt class="col-sm-3">Book name</dt>
23
            <dd class="col-sm-9">{$transliteration->book_name}</dd>
24

  
25
            <dt class="col-sm-3">Book subtitle</dt>
26
            <dd class="col-sm-9">{$transliteration->book_subtitle}</dd>
27

  
28
            <dt class="col-sm-3">Book author</dt>
29
            <dd class="col-sm-9">{$transliteration->book_autor}</dd>
30

  
31
            <dt class="col-sm-3">Place of publication</dt>
32
            <dd class="col-sm-9">{$transliteration->place_of_pub}</dd>
33

  
34
            <dt class="col-sm-3">Date of publication</dt>
35
            <dd class="col-sm-9">{$transliteration->date_of_pub}</dd>
36

  
37
            <dt class="col-sm-3">Pages</dt>
38
            <dd class="col-sm-9">{$transliteration->pages}</dd>
39

  
40
            <dt class="col-sm-3">Book description</dt>
41
            <dd class="col-sm-9">{$transliteration->book_description}</dd>
42

  
43
            <dt class="col-sm-3">Volume</dt>
44
            <dd class="col-sm-9">{$transliteration->volume}</dd>
45

  
46
            <dt class="col-sm-3">Volume number</dt>
47
            <dd class="col-sm-9">{$transliteration->volume_no}</dd>
48

  
49
            <dt class="col-sm-3">Book type</dt>
50
            <dd class="col-sm-9">{$transliteration->book_type}</dd>
51

  
52
            <dt class="col-sm-3">Chapter</dt>
53
            <dd class="col-sm-9">{$transliteration->chapter}</dd>
54

  
55
            <dt class="col-sm-3">Museum</dt>
56
            <dd class="col-sm-9">{$transliteration->museum}{ifset $transliteration->place}, {$transliteration->place}{/ifset}</dd>
57

  
58
            <dt class="col-sm-3">Museum no.</dt>
59
            <dd class="col-sm-9">{$transliteration->museum_no}</dd>
60

  
61
            <dt class="col-sm-3">Reg. (Excavation) no.</dt>
62
            <dd class="col-sm-9">{$transliteration->reg_no}</dd>
63

  
64
            <dt class="col-sm-3">Date</dt>
65
            <dd class="col-sm-9">{$transliteration->date}</dd>
66

  
67
            <dt class="col-sm-3">Origin (Ancient name / Modern name)</dt>
68
            <dd class="col-sm-9">{$transliteration->old_name}/{$transliteration->origin}</dd>
69

  
70
            <dt class="col-sm-3">Note</dt>
71
            <dd class="col-sm-9">{$transliteration->note}</dd>
72

  
73
            <dt class="col-sm-3">References (handcopy)</dt>
74
            <dd class="col-sm-9">
75
                {foreach $litReferences as $reference}
76
                    {$reference->series} {$reference->number}, {$reference->plate}<br>
77
                {/foreach}
78
            </dd>
79

  
80
        </dl>
81
    </div>
82

  
83
    <hr>
84
    <div class="display-6">
85
        <div class="text-muted">Transliteration data</div>
86
    </div>
87

  
88

  
89
    <a href="#">edit</a>
90

  
91
    <div class="container-fluid">
92
        {foreach $lineArray as $objectType => $surface}
93
            <b>{$objectType}</b> <br>
94
            {foreach $surface as $surfaceType => $lines}
95
                <div class="noname" id="tablet-div">
96
                    <hr>
97

  
98
                    <i>{$surfaceType}</i> <br>
99
                    {foreach $lines as $line}
100
                        {$line['line_number']}. {$line['transliteration']} <br>
101
                    {/foreach}
102
                </div>
103
            {/foreach}
104
        {/foreach}
105
    </div>
106
    <hr>
107
    <div class="display-6">
108
        <div class="text-muted">Revision history</div>
109
    </div>
110
    <div class="container-fluid">
111
        {foreach $revisionHistory as $revisionRecord}
112
            {$revisionRecord->date|date:'Y-m-d'} {ifset $revisionRecord->name} - {$revisionRecord->name}{/ifset} - {$revisionRecord->description}<br>
113
        {/foreach}
114
    </div>
115
{/block}
app/model/repository/LineRepository.php
20 20
    const COLUMN_BROKEN = 'broken';
21 21
    const COLUMN_OLD_BOOKANDCHAPTER = 'old_bookandchapter';
22 22
    const COLUMN_LINE_NUMBER = 'line_number';
23

  
24
    public function getAllLinesForTransliteration($transliterationId)
25
    {
26
        return $this->context->query(
27
            "SELECT
28
                         l.line_number,
29
                         l.transliteration,
30
                         st.surface_type,
31
                         o.object_type
32
                  FROM line l
33
                         LEFT JOIN surface s on l.id_surface = s.id_surface
34
                         LEFT JOIN surface_type st on s.id_surface_type = st.id_surface_type
35
                         LEFT JOIN transliteration t on s.id_transliteration = t.id_transliteration
36
                         LEFT JOIN object_type o on s.id_object_type = o.id_object_type
37
                  WHERE t.id_transliteration = ?
38
                  ORDER BY st.sorter ASC, line_number ASC",
39
            $transliterationId
40
        );
41
    }
23 42
}
app/model/repository/TransliterationRepository.php
3 3
namespace App\Model\Repository;
4 4

  
5 5
use App\Enum\ELogicalConditions;
6
use Tracy\Debugger;
6 7

  
7 8
/**
8 9
 * Repository pro práci s tabulkou `transliteration`
......
63 64
            $whereArgs[] = "%" . $queryParams['word3'] . "%";
64 65
        }
65 66

  
66
        $query = "SELECT b.book_abrev, t.chapter, l.transliteration, l.line_number FROM transliteration t
67
        $query = "SELECT 
68
                    t.id_transliteration as id, 
69
                    b.book_abrev, 
70
                    t.chapter, 
71
                    l.transliteration, 
72
                    l.line_number 
73
                  FROM transliteration t
67 74
                  LEFT JOIN surface s ON s.id_transliteration = t.id_transliteration
68 75
                  LEFT JOIN line l ON l.id_surface = s.id_surface
69 76
                  LEFT JOIN book b on t.id_book = b.id_book
......
71 78

  
72 79
        return $this->context->queryArgs($query, $whereArgs);
73 80
    }
81

  
82
    public function getTransliterationDetail($id)
83
    {
84
        return $this->context->query(
85
            "SELECT 
86
                    t.id_transliteration as id,
87
                    t.chapter,
88
                    t.museum_no,
89
                    t.reg_no,
90
                    t.date,
91
                    t.note,
92
                    b.*, 
93
                    bt.book_type,
94
                    m.museum,
95
                    m.place,
96
                    o.*
97
                  FROM transliteration t
98
                  LEFT JOIN surface s ON s.id_transliteration = t.id_transliteration
99
                  LEFT JOIN book b on t.id_book = b.id_book
100
                  LEFT JOIN book_type bt on t.id_book_type =bt.id_book_type
101
                  LEFT JOIN museum m on t.id_museum = m.id_museum
102
                  LEFT JOIN origin o on t.id_origin = o.id_origin
103
                  WHERE t.id_transliteration = ?", $id
104
        )->fetch();
105
    }
74 106
}

Také k dispozici: Unified diff