Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 440deee5

Přidáno uživatelem Filip Jani před téměř 6 roky(ů)

Re #7505 přidávání inputů pomocí AJAXu

Zobrazit rozdíly:

app/AdminModule/component/Transliteration/TransliterationDataEditForm.latte
1 1
{ifset $containers}
2
    {form form class => 'form'}
3
        {foreach $containers as $containerName => $container}
2
    {snippet dataSnippet}
3
        {form form class => 'form'}
4
            {foreach $containers as $containerName => $container}
4 5

  
5
            {if isset($defaults[$containerName])}
6
                {var show = ' show'}
7
                {var expanded = 'true'}
8
            {else}
9
                {var show = ''}
10
                {var expanded = 'false'}
11
            {/if}
6
                {if isset($defaults[$containerName])}
7
                    {var show = ' show'}
8
                    {var expanded = 'true'}
9
                {else}
10
                    {var show = ''}
11
                    {var expanded = 'false'}
12
                {/if}
12 13

  
13
            <div class="card mb-1">
14
                <div class="card mb-1">
14 15

  
15
                <h5 class="mb-0">
16
                    <a class="btn btn-link" data-toggle="collapse" data-target="#{$containerName}"
17
                       aria-expanded="{$expanded}">
18
                        <small>
19
                            <span class="fa fa-fw fa-plus"></span>
20
                            <span class="fa fa-fw fa-minus"></span>
21
                        </small> {$container['title']}
22
                    </a>
23
                </h5>
16
                    <h5 class="mb-0">
17
                        <a class="btn btn-link" data-toggle="collapse" data-target="#{$containerName}"
18
                           aria-expanded="{$expanded}">
19
                            <small>
20
                                <span class="fa fa-fw fa-plus"></span>
21
                                <span class="fa fa-fw fa-minus"></span>
22
                            </small> {$container['title']}
23
                        </a>
24
                    </h5>
24 25

  
25
                <div id="{$containerName}" class="collapse{$show}">
26
                    <div class="card-body">
26
                    <div id="{$containerName}" class="collapse{$show}">
27
                        <div class="card-body">
27 28

  
28
                        {foreach $container as $multiplierName => $multiplier}
29
                            {foreach $container as $multiplierName => $multiplier}
29 30

  
30
                            {if $multiplierName !== 'title'}
31
                                {var name = $containerName . '-' . $multiplierName}
31
                                {if $multiplierName !== 'title'}
32
                                    {var name = $containerName . '-' . $multiplierName}
32 33

  
33
                                {if isset($defaults[$containerName][$multiplierName])}
34
                                    {var show = ' show'}
35
                                    {var expanded = 'true'}
36
                                {else}
37
                                    {var show = ''}
38
                                    {var expanded = 'false'}
39
                                {/if}
34
                                    {if isset($defaults[$containerName][$multiplierName])}
35
                                        {var show = ' show'}
36
                                        {var expanded = 'true'}
37
                                    {else}
38
                                        {var show = ''}
39
                                        {var expanded = 'false'}
40
                                    {/if}
40 41

  
41
                                <div class="card mb-1">
42
                                    <h5 class="mb-0">
43
                                        <a class="btn btn-link" data-toggle="collapse" data-target="#{$name}"
44
                                           aria-expanded="{$expanded}" onclick="return false;">
45
                                            <small>
46
                                                <span class="fa fa-fw fa-plus"></span>
47
                                                <span class="fa fa-fw fa-minus"></span>
48
                                            </small> {$multiplier}
49
                                        </a>
50
                                    </h5>
42
                                    <div class="card mb-1">
43
                                        <h5 class="mb-0">
44
                                            <a class="btn btn-link" data-toggle="collapse" data-target="#{$name}"
45
                                               aria-expanded="{$expanded}" onclick="return false;">
46
                                                <small>
47
                                                    <span class="fa fa-fw fa-plus"></span>
48
                                                    <span class="fa fa-fw fa-minus"></span>
49
                                                </small> {$multiplier}
50
                                            </a>
51
                                        </h5>
51 52

  
52
                                    <div id="{$name}" class="collapse{$show}">
53
                                        <div class="card-body">
54
                                            <div n:multiplier="$name" n:class="row, mb-2">
55
                                                <div class="col-5">
56
                                                    <input n:name="\App\Model\Repository\LineRepository::COLUMN_LINE_NUMBER" n:class="form-control, form-control-sm">
57
                                                </div>
58
                                                <div class="col-5">
59
                                                    <input n:name="\App\Model\Repository\LineRepository::COLUMN_TRANSLITERATION" n:class="form-control, form-control-sm">
60
                                                </div>
61
                                                <div class="col-2">
62
                                                    {btnRemove 'class' => 'btn btn-danger btn-sm float-right'}
53
                                        <div id="{$name}" class="collapse{$show}">
54
                                            <div class="card-body">
55
                                                <div n:multiplier="$name" n:class="row, mb-2">
56
                                                    <div class="col-5">
57
                                                        <input n:name="\App\Model\Repository\LineRepository::COLUMN_LINE_NUMBER" n:class="form-control, form-control-sm">
58
                                                    </div>
59
                                                    <div class="col-5">
60
                                                        <input n:name="\App\Model\Repository\LineRepository::COLUMN_TRANSLITERATION" n:class="form-control, form-control-sm">
61
                                                    </div>
62
                                                    <div class="col-2">
63
                                                        {btnRemove 'class' => 'btn btn-danger btn-sm ajax float-right'}
64
                                                    </div>
63 65
                                                </div>
64
                                            </div>
65 66

  
66
                                            {btnCreate $name 'class' => 'btn btn-info btn-sm'}
67
                                                {btnCreate $name 'class' => 'btn btn-info btn-sm ajax'}
68
                                            </div>
67 69
                                        </div>
68
                                    </div>
69 70

  
70
                                </div>
71
                            {/if}
71
                                    </div>
72
                                {/if}
72 73

  
73
                        {/foreach}
74
                            {/foreach}
74 75

  
76
                        </div>
75 77
                    </div>
76 78
                </div>
77
            </div>
78
        {/foreach}
79
            {/foreach}
79 80

  
80
        <div class="row mt-5">
81
            <div class="col-4 offset-8 float-right">
82
                {input submit}
81
            <div class="row mt-5">
82
                <div class="col-4 offset-8 float-right">
83
                    {input submit}
84
                </div>
83 85
            </div>
84
        </div>
85
    {/form}
86
        {/form}
87
    {/snippet}
86 88
{/ifset}
app/AdminModule/component/Transliteration/TransliterationDataEditForm.php
79 79
    {
80 80
        $form = new Form;
81 81

  
82
        $redrawCallback = function ()
83
        {
84
            $this->redrawControl('dataSnippet');
85
        };
86

  
82 87
        foreach ($this->containers as $name => $container)
83 88
        {
84 89
            $cont = $form->addContainer($name);
......
97 102
                    $container->addText(LineRepository::COLUMN_TRANSLITERATION);
98 103
                }, 0);
99 104

  
100
                $multiplier->addCreateButton('Add line')->setValidationScope([])->addClass('btn btn-primary');
101
                $multiplier->addRemoveButton('Delete')->addClass('btn btn-danger');
105
                $multiplier->addCreateButton('Add line', 1, $redrawCallback);
106
                $multiplier->addRemoveButton('Delete', $redrawCallback);
102 107
            }
103 108
        }
104 109

  
105
        $form->setDefaults($this->defaults);
110
        $defaults = $this->defaults === NULL ? $this->getDefaults() : $this->defaults;
111
        $form->setDefaults($defaults);
106 112

  
107 113
        $form->onSuccess[] = [$this, 'formSuccess'];
108 114
        $form->addSubmit('submit', 'Save');
app/AdminModule/component/Transliteration/TransliterationEditForm.latte
1
{form form}
2
    <div class="row">
3
        <div class="col-12">
4
            <div class="row mb-2">
5
                <div class="col-4">
6
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_ID}
7
                </div>
8
                <div class="col-8">
9
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_ID}
1
{snippet informationSnippet}
2
    {form form}
3
        <div class="row">
4
            <div class="col-12">
5
                <div class="row mb-2">
6
                    <div class="col-4">
7
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_ID}
8
                    </div>
9
                    <div class="col-8">
10
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_ID}
11
                    </div>
10 12
                </div>
11
            </div>
12 13

  
13
            <div class="row mb-2">
14
                <div class="col-4">
15
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_CHAPTER}
16
                </div>
17
                <div class="col-8">
18
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_CHAPTER}
14
                <div class="row mb-2">
15
                    <div class="col-4">
16
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_CHAPTER}
17
                    </div>
18
                    <div class="col-8">
19
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_CHAPTER}
20
                    </div>
19 21
                </div>
20
            </div>
21 22

  
22
            <div class="row mb-2">
23
                <div class="col-4">
24
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_ID}
25
                </div>
26
                <div class="col-8">
27
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_ID}
23
                <div class="row mb-2">
24
                    <div class="col-4">
25
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_ID}
26
                    </div>
27
                    <div class="col-8">
28
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_ID}
29
                    </div>
28 30
                </div>
29
            </div>
30 31

  
31
            <div class="row mb-2">
32
                <div class="col-4">
33
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_NO}
34
                </div>
35
                <div class="col-8">
36
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_NO}
32
                <div class="row mb-2">
33
                    <div class="col-4">
34
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_NO}
35
                    </div>
36
                    <div class="col-8">
37
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_MUSEUM_NO}
38
                    </div>
37 39
                </div>
38
            </div>
39 40

  
40
            <div class="row mb-2">
41
                <div class="col-4">
42
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_REG_NO}
43
                </div>
44
                <div class="col-8">
45
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_REG_NO}
41
                <div class="row mb-2">
42
                    <div class="col-4">
43
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_REG_NO}
44
                    </div>
45
                    <div class="col-8">
46
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_REG_NO}
47
                    </div>
46 48
                </div>
47
            </div>
48 49

  
49
            <div class="row mb-2">
50
                <div class="col-4">
51
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_ORIGIN_ID}
52
                </div>
53
                <div class="col-8">
54
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_ORIGIN_ID}
50
                <div class="row mb-2">
51
                    <div class="col-4">
52
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_ORIGIN_ID}
53
                    </div>
54
                    <div class="col-8">
55
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_ORIGIN_ID}
56
                    </div>
55 57
                </div>
56
            </div>
57 58

  
58
            <div class="row mb-2">
59
                <div class="col-4">
60
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_TYPE_ID}
61
                </div>
62
                <div class="col-8">
63
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_TYPE_ID}
59
                <div class="row mb-2">
60
                    <div class="col-4">
61
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_TYPE_ID}
62
                    </div>
63
                    <div class="col-8">
64
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_BOOK_TYPE_ID}
65
                    </div>
64 66
                </div>
65
            </div>
66 67

  
67
            <div class="row mb-2">
68
                <div class="col-4">
69
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_DATE}
70
                </div>
71
                <div class="col-8">
72
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_DATE}
68
                <div class="row mb-2">
69
                    <div class="col-4">
70
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_DATE}
71
                    </div>
72
                    <div class="col-8">
73
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_DATE}
74
                    </div>
73 75
                </div>
74
            </div>
75 76

  
76
            <div class="row mb-2">
77
                <div class="col-4">
78
                    {label \App\Model\Repository\TransliterationRepository::COLUMN_NOTE}
79
                </div>
80
                <div class="col-8">
81
                    {input \App\Model\Repository\TransliterationRepository::COLUMN_NOTE}
77
                <div class="row mb-2">
78
                    <div class="col-4">
79
                        {label \App\Model\Repository\TransliterationRepository::COLUMN_NOTE}
80
                    </div>
81
                    <div class="col-8">
82
                        {input \App\Model\Repository\TransliterationRepository::COLUMN_NOTE}
83
                    </div>
82 84
                </div>
83 85
            </div>
84 86
        </div>
85
    </div>
86

  
87
    <div class="row">
88
        <div class="col-12">
89
            <h5>References</h5>
90
            <p>(series, number, page)</p>
91
            <div n:multiplier="references">
92
                <div class="row mb-2">
93

  
94
                    <div class="col-3">
95
                        <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_SERIES" n:class="form-control"
96
                                required></div>
97 87

  
98
                    <div class="col-3">
99
                        <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_NUMBER" n:class="form-control">
88
        <div class="row">
89
            <div class="col-12">
90
                <h5>References</h5>
91
                <p>(series, number, page)</p>
92
                <div n:multiplier="references">
93
                    <div class="row mb-2">
94

  
95
                        <div class="col-3">
96
                            <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_SERIES" n:class="form-control, form-control-sm"
97
                                    required></div>
98

  
99
                        <div class="col-3">
100
                            <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_NUMBER" n:class="form-control, form-control-sm">
101
                        </div>
102

  
103
                        <div class="col-3">
104
                            <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_PLATE" n:class="form-control, form-control-sm">
105
                        </div>
106
                        <div class="col-2">{btnRemove 'class' => 'btn btn-danger btn-sm ajax float-right'}</div>
100 107
                    </div>
101

  
102
                    <div class="col-3">
103
                        <input n:name="\App\Model\Repository\LitReferenceRepository::COLUMN_PLATE" n:class="form-control">
104
                    </div>
105
                    <div class="col-2">{btnRemove 'class' => 'btn btn-danger float-right'}</div>
106 108
                </div>
107
            </div>
108 109

  
109
            {btnCreate references class => 'btn btn-info'}
110
                {btnCreate references class => 'btn btn-info btn-sm ajax'}
111
            </div>
110 112
        </div>
111
    </div>
112 113

  
113
    <div class="row mt-5">
114
        <div class="col-4 offset-8 float-right">
115
            {input submit}
114
        <div class="row mt-5">
115
            <div class="col-4 offset-8 float-right">
116
                {input submit}
117
            </div>
116 118
        </div>
117
    </div>
118

  
119
{/form}
120 119

  
120
    {/form}
121
{/snippet}
app/AdminModule/component/Transliteration/TransliterationEditForm.php
14 14
use Nette\Application\UI\Control;
15 15
use Nette\Database\Table\ActiveRow;
16 16
use Nette\Forms\Container;
17
use Nette\Forms\Controls\SubmitButton;
18
use WebChemistry\Forms\Controls\Multiplier;
17 19

  
18 20
/**
19 21
 * Class TransliterationEditForm
......
106 108
        $this->form->addText(TransliterationRepository::COLUMN_DATE, 'Date');
107 109
        $this->form->addText(TransliterationRepository::COLUMN_NOTE, 'Note');
108 110

  
111
        $redrawCallback = function ()
112
        {
113
            $this->redrawControl('informationSnippet');
114
        };
115

  
109 116
        // Definice dynamických prvků
117
        /** @var Multiplier $multiplier */
110 118
        $multiplier = $this->form->addMultiplier('references', function (Container $container)
111 119
        {
112 120
            $container->addHidden(LitReferenceRepository::COLUMN_ID);
......
116 124
        }, 0);
117 125

  
118 126
        // Definice tlačítek pro přidání / odebrání řádku
119
        $multiplier->addCreateButton('Add')->addClass('btn btn-primary');
120
        $multiplier->addRemoveButton('Remove')->addClass('btn btn-danger');
127
        $multiplier->addCreateButton('Add', 1, $redrawCallback);
128
        $multiplier->addRemoveButton('Remove', $redrawCallback);
121 129

  
122 130
        $this->form->setDefaults($this->getDefaults());
123 131

  
www/css/common.css
2 2
{
3 3
    border: 1px solid #ddd !important;
4 4
    margin: 0;
5
    xmin-width: 0;
6 5
    padding: 10px;
7 6
    position: relative;
8 7
    border-radius:4px;
9 8
    background-color:#f5f5f5;
10
    padding-left:10px!important;
11 9
}
12 10

  
13 11
legend

Také k dispozici: Unified diff