74eede5f314cbeb30446aaaefe99d3674d8e0d1c
[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                 >
63               {% elif v.__class__.__name__ == 'List' -%}
64                 <textarea class="form-control" name="{{ v.name }}">
65                   {%- if value %}
66                     {{- value|join('\n') -}}
67                   {%- endif -%}
68                 </textarea>
69               {% elif v.__class__.__name__ == 'Choice' -%}
70                 {% set entries = v.get_allowed() -%}
71                 <div class="row">
72                 {% for e in entries -%}
73                   <div class="col-md-4">
74                     <input type="checkbox" name="{{ v.name }}_{{ e }}"
75                       {%- if value and e in value %}
76                         checked="true"
77                       {%- endif -%}
78                     >&nbsp;{{ e }}
79                   </div>
80                 {% endfor %}
81                 </div>
82               {% elif v.__class__.__name__ == 'Pick' -%}
83                 {% set entries = v.get_allowed() -%}
84                 <div class="row">
85                 {% for e in entries -%}
86                   <div class="col-md-4">
87                     <input type="radio" name="{{ v.name }}" value="{{ e }}"
88                       {%- if e == value %}
89                         checked="true"
90                       {%- endif -%}
91                     >&nbsp;{{ e }}
92                   </div>
93                 {% endfor %}
94                 </div>
95               {% elif v.__class__.__name__ == 'Condition' -%}
96                 <input type="checkbox" name="{{ v.name }}"
97                   {%- if value %}
98                     checked="true"
99                   {% endif -%}
100                 >
101               {% elif v.__class__.__name__ == 'ComplexList' -%}
102                 <table class="table table-striped extensible-table">
103                 <tr><th>#</th><th>Name</th><th>Delete</th></tr>
104                 {% for line in value -%}
105                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
106                 <tr class="list-field">
107                     <td>{{loop.index}}</td>
108                     <td>
109                       <input type="text" name="{{basename}}name"
110                         {%- if line.__class__.__name__ == 'list' -%}
111                           value="{{ line|join(' / ') }}"
112                         {%- else -%}
113                           value="{{ line }}"
114                         {%- endif -%}
115                       >
116                     </td>
117                     <td>
118                       <input type="checkbox" name="{{basename}}delete">
119                       <!-- Never checked by default -->
120                     </td>
121                 </tr>
122                 {% endfor -%}
123                 <!-- Template for new row -->
124                 {%- set basename = "%s %d-"|format(v.name, value|length) -%}
125                 <tr class="list-field" style="display:none">
126                     <td>{{value|length + 1}}</td>
127                     <td>
128                       <input type="text" name="{{basename}}name" value=""
129                              disabled="disabled">
130                     </td>
131                     <td>
132                       <input type="checkbox" name="{{basename}}delete"
133                              disabled="disabled">
134                     </td>
135                 </tr>
136                 <!-- End of Template -->
137                 <tr class="add-row">
138                     <td><button class="btn add-field" type="button"> + </button></td>
139                     <td colspan=3 />
140                 </tr>
141                 </table>
142               {% elif v.__class__.__name__ == 'MappingList' -%}
143                 <table class="table table-striped extensible-table">
144                 <tr><th>#</th><th>From</th><th>To</th><th>Delete</th></tr>
145                 {% for line in value -%}
146                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
147                 <tr class="list-field">
148                     <td>{{loop.index}}</td>
149                     <td>
150                       <input type="text" name="{{basename}}from"
151                         {% if line[0].__class__.__name__ == 'list' -%}
152                           value="{{ line[0]|join(' / ') }}"
153                         {% else -%}
154                           value="{{ line[0] }}"
155                         {% endif -%}
156                       >
157                     </td>
158                     <td>
159                       <input type="text" name="{{basename}}to"
160                         {% if line[1].__class__.__name__ == 'list' -%}
161                           value="{{ line[1]|join(' / ') }}"
162                         {% else -%}
163                           value="{{ line[1] }}"
164                         {% endif -%}
165                       >
166                     </td>
167                     <td>
168                       <input type="checkbox" name="{{basename}}delete">
169                       <!-- Never checked by default -->
170                     </td>
171                 </tr>
172                 {% endfor -%}
173                 <!-- Template for new row -->
174                 {%- set basename = "%s %d-"|format(v.name, value|length) -%}
175                 <tr class="list-field" style="display:none">
176                     <td>{{value|length + 1}}</td>
177                     <td>
178                       <input type="text" name="{{basename}}from" value=""
179                              disabled="disabled">
180                     </td>
181                     <td>
182                       <input type="text" name="{{basename}}to"
183                              disabled="disabled">
184                     </td>
185                     <td>
186                       <input type="checkbox" name="{{basename}}delete"
187                              disabled="disabled">
188                       <!-- Never checked by default -->
189                     </td>
190                 </tr>
191                 <!-- End of Template -->
192                 <tr class="add-row">
193                     <td><button class="btn add-field" type="button"> + </button></td>
194                     <td colspan=3 />
195                 </tr>
196                 </table>
197               {% else -%}
198                 {{ v.__class__.__name__ }}
199               {% endif -%}
200                 <span class="help-block">{{ v.description }}</span>
201               </div>
202             </div>
203             <hr>
204         {% endfor %}
205
206           <p>
207             <button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
208             Save
209             </button>
210             <a href="{{ back }}" class="btn btn-default" title="Back">Back</a>
211           </p>
212         </form>
213     </div>
214
215 {% endblock %}