form.twig 12.9 KB
Newer Older
1
2
{% extends "layout.twig" %}

3
{% macro itemSelect(name, label, options, selected, index) %}
4
5
6
7
8
9
10
11
12
13
    <div class="form-group">
        <select class="form-control input-sm" name="items[{{ index | default('<%= index %>') | raw }}][{{ name }}]">
        <option value="" disabled selected>{{ label|striptags }}</option>
        {% for option in options %}
            <option value="{{ option.value|e }}"{% if selected == option.value %} selected{% endif %}>
                {{ option.label }}
            </option>
        {% endfor %}
        </select>
    </div>
14
15
{% endmacro %}

16
{% macro itemCount(name, label, value, index, minvalue) %}
17
18
    <div class="form-group">
        <div class="col-xs-12 col-sm-12 col-md-9">
19
            <input placeholder="{{ label|striptags }}" class="form-control input-sm" min="{{ minvalue|default(1)}}"
20
                type="number" name="items[{{ index | default('<%= index %>') | raw }}][{{ name }}]" value="{{ value|default('')|raw }}">
21
22
23
24
        </div>
    </div>
{% endmacro %}

25
26
27
28
29
30
31
32
{% macro itemReasons(name, label, value, index) %}
    <div class="form-group">
        <textarea class="form-control input-sm" name="items[{{ index | default('<%= index %>') | raw }}][{{ name }}]"
                  placeholder="{{ label|striptags }}"
                  rows="1" cols="20">{{ value|default('') }}</textarea>
    </div>
{% endmacro %}

33
34
35
36
37
38
39
40
41
42
43
44
45
46
{% macro select(name, label, options, selected) %}
    <div class="form-group">
        <label class="control-label hidden-xs hidden-sm" for="el-{{ name }}">{{ label|raw }}</label>
        <select class="form-control" name="{{ name }}" id="el-{{ name }}">
            <option value="" disabled selected>{{ label|striptags }}</option>
            {% for option in options %}
            <option value="{{ option.value|e }}"{% if selected == option.value %} selected{% endif %}>
                {{ option.label }}
            </option>
            {% endfor %}
        </select>
    </div>
{% endmacro %}

47
{% macro yesno(name, label, selected) %}
48
49
50
51
    <div class="form-group">
        <label class="control-label hidden-xs hidden-sm" for="el-{{ name }}">{{ label|raw }}</label>
        <select class="form-control" name="{{ name }}" id="el-{{ name }}">
            <option value="" disabled selected>{{ label|striptags }}</option>
52
53
            <option value="ΝΑΙ"{% if selected == 'ΝΑΙ' %} selected{% endif %}>Ναι</option>
            <option value="ΟΧΙ"{% if selected == 'ΟΧΙ' %} selected{% endif %}>Όχι</option>
54
55
56
57
58
59
60
        </select>
    </div>
{% endmacro %}

{% macro text(name, label, value) %}
    <div class="form-group">
        <label class="control-label hidden-xs hidden-sm" for="el-{{ name }}">{{ label|raw }}</label>
61
62
        <textarea class="form-control" name="{{ name }}"
                  id="el-{{ name }}"
63
                  placeholder="{{ label|striptags }}">{{ value|default('') }}</textarea>
64
65
66
    </div>
{% endmacro %}

67
68
69
70
71
72
73
{% macro infoBox(boxtype, msg) %}
    <div class="alert alert-{{ boxtype }} alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Κλείσιμο"><span aria-hidden="true">&times;</span></button>
        <p class="text-{{ boxtype }}">{{ msg | raw }}</p>
    </div>
{% endmacro %}

74
{% block content %}
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
75
    {% import _self as macros %}
76

77
78
79
80
81
82
<div id="app-form">
    <h1>
    {% block title %}
        Αίτηση <small>για νέο εξοπλισμό</small>
    {% endblock %}
    </h1>
83
84
    <form method="post" action="" data-is-valid="{{ form.is_valid | default(true) ? '1' : '0' }}"
          data-messages="{{ form.messages|default({})|json_encode }}">
85
        <div class="form-group">
kanellov's avatar
kanellov committed
86
            <p>
87
88
89
                Σε αυτή την καρτέλα θα καταχωρήσετε πληροφορίες που αφορούν στον
                εξοπλισμό που θέλετε να αναβαθμίσετε ή/και στον νέο εξοπλισμό που
                θέλετε να αποκτήσετε, στο πεδίο <strong>«Αιτιολογία χρήσης»</strong> περιγράφεται
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
90
91
92
                συνοπτικά την εκπαιδευτική χρήση του προτεινόμενου εξοπλισμού.
            </p>
            <p>
93
94
                Στο πεδίο <strong>«Σχόλια/Παρατηρήσεις»</strong> περιγράφεται το πως θα
                υποστηρίζονται οι εκπαιδευτικοί του σχολείου σας στην χρήση του
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
95
                συνόλου των νέων ψηφιακών υποδομών που θέλετε να αποκτήσετε και
96
97
98
                συνοπτικά το σχέδιο του σχολείου σας για την χρήση των νέων ψηφιακών
                υποδομών στην μαθησιακή διαδικασία με ενδοσχολικές δραστηριότητες
                αλλά και δράσεις ανοιχτές στην τοπική κοινωνία.
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
99
100
            </p>
            <p>
101
                Ελέγχετε προσεκτικά όλες τις καρτέλες και τα πεδία της αίτησης
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
102
                του σχολείου σας πριν την υποβάλετε και συνέχεια την εκτυπώνεται
103
104
                σε PDF αρχείο για να έχετε ένα πλήρες αντιγραφο για τα αρχεία
                σας.
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
105
106
            </p>
            <p>
107
108
109
110
                Θα ενημερωθείτε στο ηλεκτρονικό σας ταχυδρομείο εάν έχει επιλεγεί
                το σχολείο σας και με ποιον από τον προτεινόμενο εξοπλισμό να
                συμμετάσχει στην 1η φάση Αναβάθμισης Ψηφιακών Υποδομών των
                Σχολείων.
kanellov's avatar
kanellov committed
111
            </p>
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
112
        </div>
113

Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
114
115
116
        <div class="table-responsive">
            <fieldset>
                <legend>Νέος εξοπλισμός</legend>
117
                <div id="items-list">
118
                    <table class="table table-hover table-striped table-condensed">
119
120
                        <thead>
                            <tr>
121
122
123
124
125
                                <th>Πλήθος αιτούμενων</th>
                                <th>Πλήθος υπαρχόντων που λειτουργούν</th>
                                <th class="col-xs-3">Τύπος</th>
                                <th class="col-xs-3">Χώρος</th>
                                <th class="col-xs-3">Αιτιολογία χρήσης</th>
126
127
128
                                <th></th>
                            </tr>
                        </thead>
129
                        <tbody>
130
                            {% for itemIndex,item in form.values.items %}
131
132
                                <tr>
                                    <td>{{ macros.itemCount('qty', 'Πλήθος', item.qty, loop.index0) }}</td>
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
                                    <td>{{ macros.itemCount('qtyacquired', 'Πλήθος', item.qtyacquired, loop.index0, 0) }}</td>
                                    <td class="col-xs-3">
                                        {{ macros.itemSelect('itemcategory_id', 'Τύπος', type_choices, item.itemcategory_id, loop.index0) }}
                                        {% if item.prev_form_load == true %}
                                            {% if item.itemcategory_id_prev == -2 %}
                                                {{ macros.infoBox('warning', "<small>Τα είδη έχουν τροποποιηθεί. Παρακαλούμε επιλέξτε εκ νέου από τη λίστα το είδος #{ item.itemcategory } εφόσον είναι διαθέσιμο.</small>") }}
                                            {% elseif item.itemcategory_id_prev == -1 %}
                                                {{ macros.infoBox('danger', "Δεν είναι διαθέσιμο το είδος #{ item.itemcategory } στη νέα αίτηση. Θα πρέπει να το καταργήσετε ή να επιλέξετε νέο είδος εξοπλισμού.") }}
                                            {% else %}
                                                {{ macros.infoBox('info', "<small>Το είδος #{ item.itemcategory } έχει αντικατασταθεί στη νέα αίτηση.</small>") }}
                                            {% endif %}
                                            </div>
                                        {% endif %}
                                    </td>
                                    <td class="col-xs-3">{{ macros.itemSelect('lab_id', 'Χώρος', lab_choices, item.lab_id, loop.index0 ) }}</td>
                                    <td class="col-xs-3">{{ macros.itemReasons('reasons', 'Αιτιολογία χρήσης', item.reasons, loop.index0) }}</td>
149
                                    <td>
150
151
                                        {% if loop.index0 > 0 %}
                                        <button type="button" class="btn btn-xs text-danger remove-row">
152
                                        <i class="fa fa-remove"></i>
153
                                        {% endif %}
154
155
                                    </button</td>
                                </tr>
156
157
158
                            {% else %}
                                <tr>
                                    <td>{{ macros.itemCount('qty', 'Πλήθος', '', 0) }}</td>
159
160
161
162
                                    <td>{{ macros.itemCount('qtyacquired', 'Πλήθος', '', 0, 0) }}</td>
                                    <td class="col-xs-3">{{ macros.itemSelect('itemcategory_id', 'Τύπος', type_choices, '', 0) }}</td>
                                    <td class="col-xs-3">{{ macros.itemSelect('lab_id', 'Χώρος', lab_choices, '', 0 ) }}</td>
                                    <td class="col-xs-3">{{ macros.itemReasons('reasons', 'Αιτιολογία χρήσης', '', 0) }}</td>
163
164
                                    <td></td>
                                </tr>
165
166
                            {% endfor %}
                        </tbody>
167
168
                        <tfoot>
                            <tr>
169
                                <td colspan="5" class="text-right col-xs-12">
170
171
172
173
174
175
176
177
178
                                    <button type="button" class="btn btn-sm btn-primary add-row">
                                        <i class="fa fa-plus"></i>
                                        Προσθήκη εξοπλισμού
                                    </button>
                                </td>
                            </tr>
                        </tfoot>
                    </table>
                </div>
179
                {{ macros.text('comments', 'Σχόλια/Παρατηρήσεις', form.values.comments) }}
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
180
181
            </fieldset>
        </div>
182
183
184
185
        <hr>
        <div class="form-group text-center">
            <button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary">Υποβολή</button>
        </div>
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
186
187
        <input type="hidden" name="{{ csrf.name_key }}" value="{{ csrf.name }}">
        <input type="hidden" name="{{ csrf.value_key }}" value="{{ csrf.value }}">
188
    </form>
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
    {% if choose %}
    <div class="modal fade" id="app-form-load-modal" role="dialog">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-body">
                    <p>Επιθυμείτε η νέα αίτηση να βασιστεί στη τελευταία αίτησή σας;</p>
                    <div class="text-right">
                        <button type="button" class="btn btn-default" data-dismiss="modal" aria-label="Close">
                            Όχι
                        </button>
                        <a class="btn btn-primary" href="{{ path_for('application_form', {}, { load: 1 }) }}">Ναι</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
    {% endif %}
206
    <script type="text/template" id="app-form-item-row-template">
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
207
        <td>{{ macros.itemCount('qty', 'Πλήθος') }}</td>
208
        <td>{{ macros.itemCount('qtyacquired', 'Πλήθος', '', '', 0) }}</td>
209
210
211
        <td>{{ macros.itemSelect('itemcategory_id', 'Τύπος', type_choices) }}</td>
        <td>{{ macros.itemSelect('lab_id', 'Χώρος', lab_choices) }}</td>
        <td>{{ macros.itemReasons('reasons', 'Αιτιολογία χρήσης') }}</td>
212
213
214
215
216
217
218
219
220
221
222
        <td><button type="button" class="btn btn-xs text-danger remove-row">
            <i class="fa fa-remove"></i>
        </button</td>
    </script>
</div>
{% endblock %}

{% block inlinejs %}
    {{ parent() }}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script>
223
224
    <script src="{{ base_url() }}/js/application_form/index.js"></script>
{% endblock %}