mirror of
https://github.com/kakwa/ldapcherry
synced 2024-11-24 10:14:31 +01:00
abf3d5dea9
previously, only the add form had focus on first field. Now every form (add, modifify, selfmodify) have focus on first field.
132 lines
5.0 KiB
Cheetah
132 lines
5.0 KiB
Cheetah
## -*- coding: utf-8 -*-
|
|
<%
|
|
len_attr = len(attributes)
|
|
switch = len_attr / 2
|
|
if not switch * 2 == len_attr:
|
|
switch = switch + 1
|
|
counter = 1
|
|
lc1 = []
|
|
lc2 = []
|
|
for a in sorted(attributes.keys(), key=lambda attr: attributes[attr]['weight']):
|
|
if counter <= switch:
|
|
lc1.append(a)
|
|
else:
|
|
lc2.append(a)
|
|
counter = counter + 1
|
|
%>
|
|
<%def name="form_col(l)">
|
|
% for a in l:
|
|
<% attr = attributes[a] %>
|
|
<div class="form-group">
|
|
<div class="input-group">
|
|
<%
|
|
if modify:
|
|
required = ''
|
|
else:
|
|
required = ' required '
|
|
if not values is None and a in values:
|
|
if type(values[a]) is list:
|
|
tmp = values[a][0]
|
|
else:
|
|
tmp = values[a]
|
|
if tmp is None:
|
|
tmp = ''
|
|
value = ' value="'+ tmp + '"'
|
|
value2 = '<option>'+ tmp +'</option>'
|
|
else:
|
|
value = ''
|
|
value2 = ''
|
|
if 'default' in attr and value == '':
|
|
value = ' value="'+ attr['default'] + '"'
|
|
%>
|
|
|
|
<span class="input-group-addon" id="basic-addon-${a}">${attr['display_name']}</span>
|
|
% if modify and a == keyattr:
|
|
<input type="hidden" id="attr.${a}" name="attr.${a}" class="form-control" autocomplete='off' aria-describedby="basic-addon-${a}" ${required} ${value} readonly onfocus="this.removeAttribute('readonly');">
|
|
<span class="form-control" aria-describedby="basic-addon-${a}">${tmp}</span>
|
|
% elif attr['type'] == 'string':
|
|
<input type="text" id="attr.${a}" name="attr.${a}" class="form-control" autocomplete='off' placeholder="${attr['description']}" aria-describedby="basic-addon-${a}" ${required} ${value} readonly onfocus="this.removeAttribute('readonly');">
|
|
% elif attr['type'] == 'email':
|
|
<input type="email" id="attr.${a}" name="attr.${a}" class="form-control" autocomplete='off' placeholder="${attr['description']}" aria-describedby="basic-addon-${a}" ${required} ${value} data-error="email address is invalid" readonly onfocus="this.removeAttribute('readonly');">
|
|
% elif attr['type'] == 'int':
|
|
<input type="number" id="attr.${a}" name="attr.${a}" class="form-control" autocomplete='off' placeholder="${attr['description']}" aria-describedby="basic-addon-${a}" ${required} ${value} readonly onfocus="this.removeAttribute('readonly');">
|
|
% elif attr['type'] == 'fix':
|
|
<input type="hidden" id="attr.${a}" name="attr.${a}" class="form-control" autocomplete='off' aria-describedby="basic-addon-${a}" ${required} value="${attr['value']}" readonly onfocus="this.removeAttribute('readonly');">
|
|
<span class="form-control" placeholder="${attr['description']}" aria-describedby="basic-addon-${a}">${attr['value']}</span>
|
|
% elif attr['type'] == 'stringlist':
|
|
<select class="form-control" id="attr.${a}" name="attr.${a}">
|
|
${value2}
|
|
%for val in attr['values']:
|
|
<option>${val}</option>
|
|
%endfor
|
|
</select>
|
|
% elif attr['type'] == 'password':
|
|
<input type="password" class="form-control" data-ppolicy="ppolicy" name="attr.${a}1" id="${a}1" autocomplete='off' placeholder="${attr['description']}" ${required} readonly onfocus="this.removeAttribute('readonly');">
|
|
<span class="input-group-addon" id="basic-addon-${a}2">Retype ${attr['display_name']}</span>
|
|
<input type="password" class="form-control" data-match="#${a}1" data-match-error="Passwords don't match" name="attr.${a}2" id="#${a}2" autocomplete='off' placeholder="Confirm" ${required} readonly onfocus="this.removeAttribute('readonly');">
|
|
% endif
|
|
</div>
|
|
<div class="help-block with-errors"></div>
|
|
</div>
|
|
% endfor
|
|
</%def>
|
|
<div class="row">
|
|
<div class="col-md-6 column">
|
|
${form_col(lc1)}
|
|
</div>
|
|
<div class="col-md-6 column">
|
|
${form_col(lc2)}
|
|
</div>
|
|
</div>
|
|
% if autofill:
|
|
<%
|
|
from sets import Set
|
|
attr_set = Set([])
|
|
attr_events = {}
|
|
functions = {}
|
|
for attrid in attributes:
|
|
attr = attributes[attrid]
|
|
field = 'attr.' + attrid
|
|
attr_set.add(field)
|
|
if 'autofill' in attr:
|
|
function = attr['autofill']['function']
|
|
tuple = (field, function)
|
|
if not tuple in functions:
|
|
functions[tuple] = []
|
|
for arg in attr['autofill']['args']:
|
|
if arg[0] == '$':
|
|
field_arg = 'attr.' + arg[1:]
|
|
attr_set.add(field_arg)
|
|
functions[tuple].append("fields['" + field_arg + "'].value")
|
|
if not field_arg in attr_events:
|
|
attr_events[field_arg] = []
|
|
attr_events[field_arg].append(tuple)
|
|
else:
|
|
value = arg
|
|
functions[tuple].append("'" + value + "'")
|
|
%>
|
|
<script>
|
|
var fields = new Object();
|
|
% for attr in attr_set:
|
|
fields['${attr}'] = document.getElementById('${attr}');
|
|
% endfor
|
|
|
|
% for attrid in attr_events:
|
|
if (fields['${attrid}'] != null) {
|
|
fields['${attrid}'].onchange = function () {
|
|
% for tuple in attr_events[attrid]:
|
|
if (typeof(${tuple[1]}) == "function") {
|
|
fields['${tuple[0]}'].value = ${tuple[1]}(${', '.join(functions[tuple])});
|
|
}
|
|
% endfor
|
|
};
|
|
};
|
|
% endfor
|
|
</script>
|
|
% endif
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('form:eq(1) *:input[type!=hidden]:first').focus();
|
|
});
|
|
</script>
|