Skip to content

Commit ecbae0c

Browse files
authored
Merge pull request #199 from ltb-project/198-define-mandatory-attributes
Allow to configure mandatory attributes
2 parents 205c956 + c2c44c0 commit ecbae0c

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

conf/config.inc.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@
5656
'employeenumber' => array( 'attribute' => 'employeenumber', 'faclass' => 'hashtag', 'type' => 'text' ),
5757
'employeetype' => array( 'attribute' => 'employeetype', 'faclass' => 'id-badge', 'type' => 'text' ),
5858
'fax' => array( 'attribute' => 'facsimiletelephonenumber', 'faclass' => 'fax', 'type' => 'tel' ),
59-
'firstname' => array( 'attribute' => 'givenname', 'faclass' => 'user-o', 'type' => 'text' ),
59+
'firstname' => array( 'attribute' => 'givenname', 'mandatory' => array("update"), 'faclass' => 'user-o', 'type' => 'text' ),
6060
'fullname' => array( 'attribute' => 'cn', 'faclass' => 'user-circle', 'type' => 'text' ),
6161
'guid' => array( 'attribute' => 'objectguid', 'faclass' => 'user', 'type' => 'guid' ),
6262
'identifier' => array( 'attribute' => 'uid', 'faclass' => 'user-o', 'type' => 'text' ),
6363
'l' => array( 'attribute' => 'l', 'faclass' => 'globe', 'type' => 'text' ),
64-
'lastname' => array( 'attribute' => 'sn', 'faclass' => 'user-o', 'type' => 'text' ),
64+
'lastname' => array( 'attribute' => 'sn', 'mandatory' => array("update"), 'faclass' => 'user-o', 'type' => 'text' ),
6565
'mail' => array( 'attribute' => 'mail', 'faclass' => 'envelope-o', 'type' => 'mailto' ),
6666
'mailquota' => array( 'attribute' => 'gosamailquota', 'faclass' => 'pie-chart', 'type' => 'bytes' ),
6767
'manager' => array( 'attribute' => 'manager', 'faclass' => 'user-circle-o', 'type' => 'dn_link' ),

docs/attributes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ To configure how LDAP attributes are displayed or searched, use the ``$attribute
88
* item : item identifier
99

1010
* ``attribute`` : name of LDAP attribute, in lower case
11+
* ``mandatory``: indicate if the attribute is mandatory. mandatory is an array with one possible value for now: ``update``
1112
* ``faclass`` : name of Font Awesome icon class
1213
* ``type`` : type of attribute (see below)
1314

templates/updateinfos.tpl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838
{$type=$attributes_map.{$item}.type}
3939
{$faclass=$attributes_map.{$item}.faclass}
4040
{$multivalued=$attributes_map.{$item}.multivalued}
41+
{$required=0}
42+
{if ($attributes_map.{$item}.mandatory|is_array)}
43+
{if in_array('all',$attributes_map.{$item}.mandatory) or in_array('update',$attributes_map.{$item}.mandatory)}
44+
{$required=1}
45+
{/if}
46+
{/if}
4147

4248
{if !({$entry.$attribute.0}) && ! $item|in_array:$update_items}
4349
{continue}
@@ -53,10 +59,10 @@
5359
<td>
5460
{if $item|in_array:$update_items}
5561
{if !({$entry.$attribute.0})}
56-
{include 'value_editor.tpl' item=$item itemindex=0 value="" type=$type list=$item_list.$item multivalued=$multivalued truncate_value_after=10000}
62+
{include 'value_editor.tpl' item=$item itemindex=0 value="" type=$type list=$item_list.$item multivalued=$multivalued required=$required truncate_value_after=10000}
5763
{else}
5864
{foreach from=$entry.{$attribute} item=$value name=updatevalue}
59-
{include 'value_editor.tpl' item=$item itemindex=$smarty.foreach.updatevalue.index multivalued=$multivalued value=$value type=$type list=$item_list.$item truncate_value_after=10000}
65+
{include 'value_editor.tpl' item=$item itemindex=$smarty.foreach.updatevalue.index multivalued=$multivalued required=$required value=$value type=$type list=$item_list.$item truncate_value_after=10000}
6066
{/foreach}
6167
{/if}
6268
{else}

templates/value_editor.tpl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
<div class="value_editor_container {$type} my-1 row">
22
<div class="value_editor_field col-10">
33
{if $type eq 'text'}
4-
<input type="text" name="{$item}{$itemindex}" class="form-control" value="{$value}" data-role="value" />
4+
<input type="text" name="{$item}{$itemindex}" class="form-control {if $required}border border-danger-subtle{/if}" value="{$value}" data-role="value" {if $required}required{/if} />
55
{else if $type eq 'mailto'}
6-
<input type="email" name="{$item}{$itemindex}" class="form-control" value="{$value}" data-role="value" />
6+
<input type="email" name="{$item}{$itemindex}" class="form-control {if $required}border border-danger-subtle{/if}" value="{$value}" data-role="value" {if $required}required{/if} />
77
{else if $type eq 'tel'}
8-
<input type="tel" name="{$item}{$itemindex}" class="form-control" value="{$value}" data-role="value" />
8+
<input type="tel" name="{$item}{$itemindex}" class="form-control {if $required}border border-danger-subtle{/if}" value="{$value}" data-role="value" {if $required}required{/if} />
99
{else if $type eq 'boolean'}
1010
<div class="form-check form-switch">
1111
<input class="form-check-input" type="checkbox" role="switch" name="{$item}{$itemindex}" {if $value eq 'TRUE'} checked{/if} value="TRUE" data-role="value" />
1212
</div>
1313
{else if $type eq 'date'}
14-
<input type="date" class="form-control" name="{$item}{$itemindex}" value="{convert_ldap_date($value)|date_format:"%Y-%m-%d"}" data-role="value" />
14+
<input type="date" class="form-control {if $required}border border-danger-subtle{/if}" name="{$item}{$itemindex}" value="{convert_ldap_date($value)|date_format:"%Y-%m-%d"}" data-role="value" {if $required}required{/if} />
1515
{else if $type eq 'ad_date'}
16-
<input type="date" class="form-control" name="{$item}{$itemindex}" value="{convert_ad_date($value)|date_format:"%Y-%m-%d"}" data-role="value" />
16+
<input type="date" class="form-control {if $required}border border-danger-subtle{/if}" name="{$item}{$itemindex}" value="{convert_ad_date($value)|date_format:"%Y-%m-%d"}" data-role="value" {if $required}required{/if} />
1717
{else if $type eq 'static_list' or $type eq 'list'}
18-
<select class="form-control" name="{$item}{$itemindex}" data-role="value">
18+
<select class="form-control {if $required}border border-danger-subtle{/if}" name="{$item}{$itemindex}" data-role="value" {if $required}required{/if} >
1919
<option></option>
2020
{foreach $list as $lvalue}
2121
<option value="{$lvalue@key}"{if {$lvalue@key}=={$value}} selected{/if}>{$lvalue}</option>
2222
{/foreach}
2323
</select>
2424
{else if $type eq 'bytes'}
25-
<input type="number" name="{$item}{$itemindex}" class="form-control" value="{$value}" data-role="value" />
25+
<input type="number" name="{$item}{$itemindex}" class="form-control {if $required}border border-danger-subtle{/if}" value="{$value}" data-role="value" {if $required}required{/if} />
2626
{else if $type eq 'dn_link'}
2727
<div class="dn_link_container">
28-
<input type="text" class="form-control" value="{get_attribute dn="{$value}" attribute="cn" ldap_url="{$ldap_params.ldap_url}" ldap_starttls="{$ldap_params.ldap_starttls}" ldap_binddn="{$ldap_params.ldap_binddn}" ldap_bindpw="{$ldap_params.ldap_bindpw}" ldap_filter="{$ldap_params.ldap_user_filter}" ldap_network_timeout="{$ldap_params.ldap_network_timeout}"}" data-role="display" data-conf-searchminchars="{$dn_link_search_min_chars}"/>
28+
<input type="text" class="form-control {if $required}border border-danger-subtle{/if}" value="{get_attribute dn="{$value}" attribute="cn" ldap_url="{$ldap_params.ldap_url}" ldap_starttls="{$ldap_params.ldap_starttls}" ldap_binddn="{$ldap_params.ldap_binddn}" ldap_bindpw="{$ldap_params.ldap_bindpw}" ldap_filter="{$ldap_params.ldap_user_filter}" ldap_network_timeout="{$ldap_params.ldap_network_timeout}"}" data-role="display" data-conf-searchminchars="{$dn_link_search_min_chars}" {if $required}required{/if} />
2929
<input type="hidden" name="{$item}{$itemindex}" value="{$value}" data-role="value" />
3030
<div class="z-3 position-absolute list-group dn_link_suggestions"></div>
3131
</div>
3232
{else}
33-
<input type="text" name={$item} class="form-control" value="{$value}" data-role="value" />
33+
<input type="text" name={$item} class="form-control {if $required}border border-danger-subtle{/if}" value="{$value}" data-role="value" {if $required}required{/if} />
3434
{/if}
3535
</div>
3636
<div class="value_editor_button col-2">

0 commit comments

Comments
 (0)