1f921f6d0c9816f1cc1e4ccbf1f26f2284da35c8
[cascardo/ipsilon.git] / templates / admin / option_config.html
1 {% extends "master-admin.html" %}
2 {% block scripts %}
3     <script>
4         $( document ).on("click", ".add-field",
5             function() {
6                 var buttonRow = $(this).parents(".add-row")
7                 var ourTable = $(this).parents(".extensible-table")
8                 var lastRow = $(ourTable).find(".list-field:last")
9                 var newRow = $(lastRow).clone()
10                 lastRow.show()
11                 var inputFields = lastRow.find("input")
12                 for (i = 0; i < inputFields.length; i++) {
13                     $(inputFields[i]).prop("disabled", false)
14                 }
15                 var lastIndex = parseInt(newRow.find("td:first").text())
16                 newRow.find("td:first").text(lastIndex + 1)
17                 var inputFields = newRow.find("input")
18                 for (i = 0; i < inputFields.length; i++) {
19                     var separator = (lastIndex-1).toString()+"-"
20                     var nArr = $(inputFields[i]).attr("name").split(separator)
21                     var newidx = lastIndex.toString()+"-"
22                     if (nArr.length === 2) {
23                         $(inputFields[i]).attr("name", nArr[0]+newidx+nArr[1])
24                     }
25                     $(inputFields[i]).attr("value", "")
26                 }
27                 $(newRow).appendTo(ourTable)
28                 $(buttonRow).appendTo(ourTable)
29             }
30         );
31     </script>
32 {% endblock %}
33 {% block main %}
34
35     <div class = "row">
36         <div class="col-md-3 col-sm-3 col-xs-6">
37             <h2>{{ title }}</h2>
38         </div>
39         <div class="col-md-3 col-sm-3 col-xs-6" role="alert">
40           {% if message %}
41             <div class="alert alert-{{message_type}}">
42                 <p>{{ message }}</p>
43             </div>
44           {% endif %}
45         </div>
46     </div>
47
48     <hr>
49
50     <div id="options">
51         <form class="form-horizontal" role="form" id="{{ name }}" action="{{ action }}" method="post" enctype="application/x-www-form-urlencoded">
52         {% for k, v in config.iteritems() %}
53             <div class="form-group">
54               <label class="col-sm-2" for="{{ v.name }}">{{ v.name }}:</label>
55               <div class="col-sm-10">
56               {% set value = v.get_value() -%}
57               {% if v.__class__.__name__ in ['String', 'Template'] -%}
58                 <input type="text" class="form-control" name="{{ v.name }}"
59                   {%- if value %}
60                     value="{{ value }}"
61                   {%- endif -%}
62                   {% if v.is_readonly() -%}
63                     disabled
64                   {%- endif -%}
65                 >
66               {% elif v.__class__.__name__ == 'List' -%}
67                 <textarea class="form-control" name="{{ v.name }}"
68                   {% if v.is_readonly() -%}
69                     disabled
70                   {%- endif -%}
71                 >
72                   {%- if value %}
73                     {{- value|join('\n') -}}
74                   {%- endif -%}
75                 </textarea>
76               {% elif v.__class__.__name__ == 'Choice' -%}
77                 {% set entries = v.get_allowed() -%}
78                 <div class="row">
79                 {% for e in entries -%}
80                   <div class="col-md-4">
81                     <input type="checkbox" name="{{ v.name }}_{{ e }}"
82                       {%- if value and e in value %}
83                         checked="true"
84                       {%- endif -%}
85                       {% if v.is_readonly() -%}
86                         disabled
87                       {%- endif -%}
88                     >&nbsp;{{ e }}
89                   </div>
90                 {% endfor %}
91                 </div>
92               {% elif v.__class__.__name__ == 'Pick' -%}
93                 {% set entries = v.get_allowed() -%}
94                 <div class="row">
95                 {% for e in entries -%}
96                   <div class="col-md-4">
97                     <input type="radio" name="{{ v.name }}" value="{{ e }}"
98                       {%- if e == value %}
99                         checked="true"
100                       {%- endif -%}
101                       {% if v.is_readonly() -%}
102                         disabled
103                       {%- endif -%}
104                     >&nbsp;{{ e }}
105                   </div>
106                 {% endfor %}
107                 </div>
108               {% elif v.__class__.__name__ == 'Condition' -%}
109                 <input type="checkbox" name="{{ v.name }}"
110                   {%- if value %}
111                     checked="true"
112                   {% endif -%}
113                   {% if v.is_readonly() -%}
114                     disabled
115                   {%- endif -%}
116                 >
117               {% elif v.__class__.__name__ == 'ComplexList' -%}
118                 <table class="table table-striped extensible-table">
119                 <tr><th>#</th><th>Name</th><th>Delete</th></tr>
120                 {% for line in value -%}
121                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
122                 <tr class="list-field">
123                     <td>{{loop.index}}</td>
124                     <td>
125                       <input type="text" name="{{basename}}name"
126                         {%- if line.__class__.__name__ == 'list' -%}
127                           value="{{ line|join(' / ') }}"
128                         {%- else -%}
129                           value="{{ line }}"
130                         {%- endif -%}
131                         {% if v.is_readonly() -%}
132                           disabled
133                         {%- endif -%}
134                       >
135                     </td>
136                     <td>
137                       <input type="checkbox" name="{{basename}}delete">
138                       <!-- Never checked by default -->
139                     </td>
140                 </tr>
141                 {% endfor -%}
142                 <!-- Template for new row -->
143                 {%- set basename = "%s %d-"|format(v.name, value|length) -%}
144                 <tr class="list-field" style="display:none">
145                     <td>{{value|length + 1}}</td>
146                     <td>
147                       <input type="text" name="{{basename}}name" value=""
148                              disabled="disabled">
149                     </td>
150                     <td>
151                       <input type="checkbox" name="{{basename}}delete"
152                              disabled="disabled">
153                     </td>
154                 </tr>
155                 <!-- End of Template -->
156                 <tr class="add-row">
157                     <td><button class="btn add-field" type="button"> + </button></td>
158                     <td colspan=3 />
159                 </tr>
160                 </table>
161               {% elif v.__class__.__name__ == 'MappingList' -%}
162                 <table class="table table-striped extensible-table">
163                 <tr><th>#</th><th>From</th><th>To</th><th>Delete</th></tr>
164                 {% for line in value -%}
165                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
166                 <tr class="list-field">
167                     <td>{{loop.index}}</td>
168                     <td>
169                       <input type="text" name="{{basename}}from"
170                         {% if line[0].__class__.__name__ == 'list' -%}
171                           value="{{ line[0]|join(' / ') }}"
172                         {% else -%}
173                           value="{{ line[0] }}"
174                         {% endif -%}
175                       >
176                     </td>
177                     <td>
178                       <input type="text" name="{{basename}}to"
179                         {% if line[1].__class__.__name__ == 'list' -%}
180                           value="{{ line[1]|join(' / ') }}"
181                         {% else -%}
182                           value="{{ line[1] }}"
183                         {% endif -%}
184                       >
185                     </td>
186                     <td>
187                       <input type="checkbox" name="{{basename}}delete">
188                       <!-- Never checked by default -->
189                     </td>
190                 </tr>
191                 {% endfor -%}
192                 <!-- Template for new row -->
193                 {%- set basename = "%s %d-"|format(v.name, value|length) -%}
194                 <tr class="list-field" style="display:none">
195                     <td>{{value|length + 1}}</td>
196                     <td>
197                       <input type="text" name="{{basename}}from" value=""
198                              disabled="disabled">
199                     </td>
200                     <td>
201                       <input type="text" name="{{basename}}to"
202                              disabled="disabled">
203                     </td>
204                     <td>
205                       <input type="checkbox" name="{{basename}}delete"
206                              disabled="disabled">
207                       <!-- Never checked by default -->
208                     </td>
209                 </tr>
210                 <!-- End of Template -->
211                 <tr class="add-row">
212                     <td><button class="btn add-field" type="button"> + </button></td>
213                     <td colspan=3 />
214                 </tr>
215                 </table>
216               {% else -%}
217                 {{ v.__class__.__name__ }}
218               {% endif -%}
219                 <span class="help-block">{{ v.description }}</span>
220               </div>
221             </div>
222             <hr>
223         {% endfor %}
224
225           <p>
226             <button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
227             Save
228             </button>
229             <a href="{{ back }}" class="btn btn-default" title="Back">Back</a>
230           </p>
231         </form>
232     </div>
233
234 {% endblock %}