Add support for new options to plugin_config.html
[cascardo/ipsilon.git] / templates / admin / plugin_config.html
index 70d56f0..18792a2 100644 (file)
 {% extends "master-admin.html" %}
 {% block main %}
-    <h2>{{ title }}</h2>
-    {% if message %}
-    <div class="alert alert-{{message_type}}">
-        <p>{{ message }}</p>
+{% if user.is_admin %}
+
+    <div class = "row">
+        <div class="col-md-3 col-sm-3 col-xs-6">
+            <h2>{{ title }}</h2>
+        </div>
+        <div class="col-md-3 col-sm-3 col-xs-6" role="alert">
+          {% if message %}
+            <div class="alert alert-{{message_type}}">
+                <p>{{ message }}</p>
+            </div>
+          {% endif %}
+        </div>
     </div>
-    {% endif %}
-    <div id="options">
-        <form role="form" id="{{ name }}" action="{{ action }}" method="post" enctype="application/x-www-form-urlencoded">
 
-        {% for o in options_order %}
+    <hr>
+
+    <div id="options">
+        <form class="form-horizontal" role="form" id="{{ name }}" action="{{ action }}" method="post" enctype="application/x-www-form-urlencoded">
+        {% for k, v in config.iteritems() %}
             <div class="form-group">
-            <label for="{{ o }}">{{ o }}:</label>
-                <input type="text" class="form-control" name="{{ o }}" value="{{ plugin.get_config_value(o) }}">
+              <label class="col-sm-2" for="{{ v.name }}">{{ v.name }}:</label>
+              <div class="col-sm-10">
+              {% set value = v.get_value() -%}
+              {% if v.__class__.__name__ in ['String', 'Template'] -%}
+                <input type="text" class="form-control" name="{{ v.name }}"
+                  {%- if value %}
+                    value="{{ value }}"
+                  {%- endif -%}
+                >
+              {% elif v.__class__.__name__ == 'List' -%}
+                <textarea class="form-control" name="{{ v.name }}">
+                  {%- if value %}
+                    {{- value|join('\n') -}}
+                  {%- endif -%}
+                </textarea>
+              {% elif v.__class__.__name__ == 'Choice' -%}
+                {% set entries = v.get_allowed() -%}
+                <div class="row">
+                {% for e in entries -%}
+                  <div class="col-md-4">
+                    <input type="checkbox" name="{{ v.name }}_{{ e }}"
+                      {%- if value and e in value %}
+                        checked="true"
+                      {%- endif -%}
+                    >&nbsp;{{ e }}
+                  </div>
+                {% endfor %}
+                </div>
+              {% elif v.__class__.__name__ == 'Pick' -%}
+                {% set entries = v.get_allowed() -%}
+                <div class="row">
+                {% for e in entries -%}
+                  <div class="col-md-4">
+                    <input type="radio" name="{{ v.name }}" value="{{ e }}"
+                      {%- if e == value %}
+                        checked="true"
+                      {%- endif -%}
+                    >&nbsp;{{ e }}
+                  </div>
+                {% endfor %}
+                </div>
+              {% elif v.__class__.__name__ == 'Condition' -%}
+                <input type="checkbox" name="{{ v.name }}"
+                  {%- if value %}
+                    checked="true"
+                  {% endif -%}
+                >
+              {% elif v.__class__.__name__ == 'ComplexList' -%}
+                <table class="table table-striped">
+                <tr><th>#</th><th>Name</th><th>Delete</th></tr>
+                {% for line in value -%}
+                    {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
+                <tr>
+                    <td>{{loop.index}}</td>
+                    <td>
+                      <input type="text" name="{{basename}}name"
+                        {%- if line.__class__.__name__ == 'list' -%}
+                          value="{{ line|join(' / ') }}"
+                        {%- else -%}
+                          value="{{ line }}"
+                        {%- endif -%}
+                      >
+                    </td>
+                    <td>
+                      <input type="checkbox" name="{{basename}}delete">
+                      <!-- Never cheked by default -->
+                    </td>
+                </tr>
+                {% endfor -%}
+                </table>
+              {% elif v.__class__.__name__ == 'MappingList' -%}
+                <table class="table table-striped">
+                <tr><th>#</th><th>From</th><th>To</th><th>Delete</th></tr>
+                {% for line in value -%}
+                    {%- set basename = "%s %d-"|format(v.name, loop.index0) -%}
+                <tr>
+                    <td>{{loop.index}}</td>
+                    <td>
+                      <input type="text" name="{{basename}}from"
+                        {% if line[0].__class__.__name__ == 'list' -%}
+                          value="{{ line[0]|join(' / ') }}"
+                        {% else -%}
+                          value="{{ line[0] }}"
+                        {% endif -%}
+                      >
+                    </td>
+                    <td>
+                      <input type="text" name="{{basename}}to"
+                        {% if line[1].__class__.__name__ == 'list' -%}
+                          value="{{ line[1]|join(' / ') }}"
+                        {% else -%}
+                          value="{{ line[1] }}"
+                        {% endif -%}
+                      >
+                    </td>
+                    <td>
+                      <input type="checkbox" name="{{basename}}delete">
+                      <!-- Never cheked by default -->
+                    </td>
+                </tr>
+                {% endfor -%}
+                </table>
+              {% else -%}
+                {{ v.__class__.__name__ }}
+              {% endif -%}
+                <span class="help-block">{{ v.description }}</span>
+              </div>
             </div>
-            <span class="help-block">{{ plugin.get_config_desc(o) }}</span>
+            <hr>
         {% endfor %}
 
-        <button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
+          <p>
+            <button id="submit" class="btn btn-primary" name="submit" type="submit" value="Submit">
             Save
-        </button>
-        <a href="{{ back }}" class="btn btn-default" title="Back">Back</a>
+            </button>
+            <a href="{{ back }}" class="btn btn-default" title="Back">Back</a>
+          </p>
         </form>
     </div>
+
+{% endif %}
 {% endblock %}