form.twig 13.1 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
                Σε αυτή την καρτέλα θα καταχωρήσετε πληροφορίες που αφορούν στον εξοπλισμό που ήδη υπάρχει στο σχολείο και είναι λειτουργικός ή/και στον νέο εξοπλισμό που θέλετε να αποκτήσετε, υποβάλλοντας και τη σχετική αίτηση. Αν ένα σχολείο είχε ήδη συμπληρώσει τη σχετική αίτηση μπορεί α) να διατηρήσει την αρχική αίτησή του, β) να επικαιροποιήσει την αρχική αίτησή του γ) να υποβάλει νέα αίτηση.
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
88
89
            </p>
            <p>
90
91
                Στο πεδίο <strong>«Σχόλια/Παρατηρήσεις»</strong> περιγράφεται το πως θα
                υποστηρίζονται οι εκπαιδευτικοί του σχολείου σας στην χρήση του
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
92
                συνόλου των νέων ψηφιακών υποδομών που θέλετε να αποκτήσετε και
93
94
95
                συνοπτικά το σχέδιο του σχολείου σας για την χρήση των νέων ψηφιακών
                υποδομών στην μαθησιακή διαδικασία με ενδοσχολικές δραστηριότητες
                αλλά και δράσεις ανοιχτές στην τοπική κοινωνία.
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
96
97
            </p>
            <p>
98
                Ελέγχετε προσεκτικά όλες τις καρτέλες και τα πεδία της αίτησης
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
99
                του σχολείου σας πριν την υποβάλετε και συνέχεια την εκτυπώνεται
100
101
                σε PDF αρχείο για να έχετε ένα πλήρες αντιγραφο για τα αρχεία
                σας.
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
102
103
            </p>
            <p>
104
105
106
107
                Θα ενημερωθείτε στο ηλεκτρονικό σας ταχυδρομείο εάν έχει επιλεγεί
                το σχολείο σας και με ποιον από τον προτεινόμενο εξοπλισμό να
                συμμετάσχει στην 1η φάση Αναβάθμισης Ψηφιακών Υποδομών των
                Σχολείων.
kanellov's avatar
kanellov committed
108
            </p>
Vassilis Kanellopoulos's avatar
Vassilis Kanellopoulos committed
109
        </div>
110

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