79f63199817842d8bc9f9fac30096cd406f55316
[cascardo/ipsilon.git] / templates / admin / plugin_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                 var lastIndex = parseInt(newRow.find("td:first").text())
11                 newRow.find("td:first").text(lastIndex + 1)
12                 var inputFields = newRow.find("input")
13                 for (i = 0; i < inputFields.length; i++) {
14                     var separator = (lastIndex-1).toString()+"-"
15                     var nArr = $(inputFields[i]).attr("name").split(separator)
16                     var newidx = lastIndex.toString()+"-"
17                     if (nArr.length === 2) {
18                         $(inputFields[i]).attr("name", nArr[0]+newidx+nArr[1])
19                     }
20                     $(inputFields[i]).attr("value", "")
21                 }
22                 $(newRow).appendTo(ourTable)
23                 $(buttonRow).appendTo(ourTable)
24             }
25         );
26     </script>
27 {% endblock %}
28 {% block main %}
29 {% if user.is_admin %}
30
31     <div class = "row">
32         <div class="col-md-3 col-sm-3 col-xs-6">
33             <h2>{{ title }}</h2>
34         </div>
35         <div class="col-md-3 col-sm-3 col-xs-6" role="alert">
36           {% if message %}
37             <div class="alert alert-{{message_type}}">
38                 <p>{{ message }}</p>
39             </div>
40           {% endif %}
41         </div>
42     </div>
43
44     <hr>
45
46     <div id="options">
47         <form class="form-horizontal" role="form" id="{{ name }}" action="{{ action }}" method="post" enctype="application/x-www-form-urlencoded">
48         {% for k, v in config.iteritems() %}
49             <div class="form-group">
50               <label class="col-sm-2" for="{{ v.name }}">{{ v.name }}:</label>
51               <div class="col-sm-10">
52               {% set value = v.get_value() -%}
53               {% if v.__class__.__name__ in ['String', 'Template'] -%}
54                 <input type="text" class="form-control" name="{{ v.name }}"
55                   {%- if value %}
56                     value="{{ value }}"
57                   {%- endif -%}
58                 >
59               {% elif v.__class__.__name__ == 'List' -%}
60                 <textarea class="form-control" name="{{ v.name }}">
61                   {%- if value %}
62                     {{- value|join('\n') -}}
63                   {%- endif -%}
64                 </textarea>
65               {% elif v.__class__.__name__ == 'Choice' -%}
66                 {% set entries = v.get_allowed() -%}
67                 <div class="row">
68                 {% for e in entries -%}
69                   <div class="col-md-4">
70                     <input type="checkbox" name="{{ v.name }}_{{ e }}"
71                       {%- if value and e in value %}
72                         checked="true"
73                       {%- endif -%}
74                     >&nbsp;{{ e }}
75                   </div>
76                 {% endfor %}
77                 </div>
78               {% elif v.__class__.__name__ == 'Pick' -%}
79                 {% set entries = v.get_allowed() -%}
80                 <div class="row">
81                 {% for e in entries -%}
82                   <div class="col-md-4">
83                     <input type="radio" name="{{ v.name }}" value="{{ e }}"
84                       {%- if e == value %}
85                         checked="true"
86                       {%- endif -%}
87                     >&nbsp;{{ e }}
88                   </div>
89                 {% endfor %}
90                 </div>
91               {% elif v.__class__.__name__ == 'Condition' -%}
92                 <input type="checkbox" name="{{ v.name }}"
93                   {%- if value %}
94                     checked="true"
95                   {% endif -%}
96                 >
97               {% elif v.__class__.__name__ == 'ComplexList' -%}
98                 <table class="table table-striped extensible-table">
99                 <tr><th>#</th><th>Name</th><th>Delete</th></tr>
100                 {% for line in value -%}
101                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
102                 <tr class="list-field">
103                     <td>{{loop.index}}</td>
104                     <td>
105                       <input type="text" name="{{basename}}name"
106                         {%- if line.__class__.__name__ == 'list' -%}
107                           value="{{ line|join(' / ') }}"
108                         {%- else -%}
109                           value="{{ line }}"
110                         {%- endif -%}
111                       >
112                     </td>
113                     <td>
114                       <input type="checkbox" name="{{basename}}delete">
115                       <!-- Never cheked by default -->
116                     </td>
117                 </tr>
118                 {% endfor -%}
119                 <tr class="add-row">
120                     <td><button class="btn add-field" type="button"> + </button></td>
121                     <td colspan=3 />
122                 </tr>
123                 </table>
124               {% elif v.__class__.__name__ == 'MappingList' -%}
125                 <table class="table table-striped extensible-table">
126                 <tr><th>#</th><th>From</th><th>To</th><th>Delete</th></tr>
127                 {% for line in value -%}
128                     {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
129                 <tr class="list-field">
130                     <td>{{loop.index}}</td>
131                     <td>
132                       <input type="text" name="{{basename}}from"
133                         {% if line[0].__class__.__name__ == 'list' -%}
134                           value="{{ line[0]|join(' / ') }}"
135                         {% else -%}
136                           value="{{ line[0] }}"
137                         {% endif -%}
138                       >
139                     </td>
140                     <td>
141                       <input type="text" name="{{basename}}to"
142                         {% if line[1].__class__.__name__ == 'list' -%}
143                           value="{{ line[1]|join(' / ') }}"
144                         {% else -%}
145                           value="{{ line[1] }}"
146                         {% endif -%}
147                       >
148                     </td>
149                     <td>
150                       <input type="checkbox" name="{{basename}}delete">
151                       <!-- Never cheked by default -->
152                     </td>
153                 </tr>
154                 {% endfor -%}
155                 <tr class="add-row">
156                     <td><button class="btn add-field" type="button"> + </button></td>
157                     <td colspan=3 />
158                 </tr>
159                 </table>
160               {% else -%}
161                 {{ v.__class__.__name__ }}
162               {% endif -%}
163                 <span class="help-block">{{ v.description }}</span>
164               </div>
165             </div>
166             <hr>
167         {% endfor %}
168
169           <p>
170             <button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
171             Save
172             </button>
173             <a href="{{ back }}" class="btn btn-default" title="Back">Back</a>
174           </p>
175         </form>
176     </div>
177
178 {% endif %}
179 {% endblock %}