mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-12-18 22:43:47 +01:00
LSattr_html::date & LSformRule:📅 add special_values parameter
This commit is contained in:
parent
cccce6edb5
commit
7e74853021
12 changed files with 428 additions and 64 deletions
|
@ -5,7 +5,7 @@
|
||||||
<ulink url='http://mootools.net/forge/p/mootools_datepicker'>
|
<ulink url='http://mootools.net/forge/p/mootools_datepicker'>
|
||||||
MooTools-DatePicker</ulink></application> est utilisé pour la sélection
|
MooTools-DatePicker</ulink></application> est utilisé pour la sélection
|
||||||
graphique de la date et de l'heure.</para>
|
graphique de la date et de l'heure.</para>
|
||||||
|
|
||||||
<programlisting linenumbering="unnumbered">
|
<programlisting linenumbering="unnumbered">
|
||||||
<citetitle>Structure</citetitle>...
|
<citetitle>Structure</citetitle>...
|
||||||
<![CDATA['html_options' => array (
|
<![CDATA['html_options' => array (
|
||||||
|
@ -14,7 +14,11 @@
|
||||||
'manual' => '[Booleen pour l edition manuelle ou non]',
|
'manual' => '[Booleen pour l edition manuelle ou non]',
|
||||||
'showNowButton' => '[Booleen]',
|
'showNowButton' => '[Booleen]',
|
||||||
'showTodayButton' => '[Booleen]',
|
'showTodayButton' => '[Booleen]',
|
||||||
'style' => '[Nom du style utilise]'
|
'style' => '[Nom du style utilise]',
|
||||||
|
'special_values' => array (
|
||||||
|
'[value]' => '[label]',
|
||||||
|
[...]
|
||||||
|
),
|
||||||
),]]>
|
),]]>
|
||||||
...
|
...
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
@ -212,7 +216,20 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>special_values</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Tableau listant les valeurs spéciales que peut prendre l'attribut. Dans ce tableau
|
||||||
|
associatif, la clé doit correspondre à la valeur de l'attribut (telle que fournie par
|
||||||
|
<link linkend='config-LSattr_ldap_date'>l'attribut LDAP</link>) et la valeur associée au
|
||||||
|
label associé.</para>
|
||||||
|
<para>Ces valeurs spéciales seront proposées à l'utilisateur sous la forme de cases à cocher
|
||||||
|
dans le formulaire. Elles peuvent permettre par exemple de données une signification
|
||||||
|
particulière au zéro pour un attribut LDAP stockant un <emphasis>timestamp</emphasis>.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
|
|
||||||
</sect4>
|
</sect4>
|
||||||
|
|
|
@ -2,7 +2,18 @@
|
||||||
<title>LSattr_ldap_date</title>
|
<title>LSattr_ldap_date</title>
|
||||||
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
|
<para>Ce type est utilisé pour la gestion des attributs dont la valeur est
|
||||||
une date.</para>
|
une date.</para>
|
||||||
|
|
||||||
|
<note>
|
||||||
|
<para>Au sein d'LdapSaisie, les dates manipulées au travers ce type
|
||||||
|
d'attribut LDAP, sont au format <emphasis>timestamp</emphasis>. Il s'agit
|
||||||
|
donc de nombres entiers correpondants au nombre de secondes depuis le 1 janvier
|
||||||
|
1970.</para>
|
||||||
|
<para>Le type d'attribut HTML utilisé conjointement avec ce type d'attribut LDAP
|
||||||
|
devra être prévu pour recevoir et fournir des dates au format <emphasis>timestamp
|
||||||
|
</emphasis>, comme c'est le cas pour le <link linkend='config-LSattr_html_date'>
|
||||||
|
type d'attribut HTML <emphasis>date</emphasis></link>.</para>
|
||||||
|
</note>
|
||||||
|
|
||||||
<programlisting linenumbering="unnumbered">
|
<programlisting linenumbering="unnumbered">
|
||||||
<citetitle>Structure</citetitle>...
|
<citetitle>Structure</citetitle>...
|
||||||
<![CDATA['ldap_options' => array (
|
<![CDATA['ldap_options' => array (
|
||||||
|
@ -32,7 +43,7 @@
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Format de stockage de la date dans l'annuaire. Ce format est composé à
|
<para>Format de stockage de la date dans l'annuaire. Ce format est composé à
|
||||||
partir des motifs clés gérés par la fonction <function>date()</function>
|
partir des motifs clés gérés par la fonction <function>date()</function>
|
||||||
de &php;. Pour plus d'information, consulter
|
de &php;. Pour plus d'information, consulter
|
||||||
<ulink url='http://www.php.net/date'>la documentation officielle</ulink>.
|
<ulink url='http://www.php.net/date'>la documentation officielle</ulink>.
|
||||||
<note><simpara>La valeur par défaut est <emphasis>YmdHisO</emphasis>,
|
<note><simpara>La valeur par défaut est <emphasis>YmdHisO</emphasis>,
|
||||||
correspondant à la syntaxe <literal>Generalized Time</literal> telle que
|
correspondant à la syntaxe <literal>Generalized Time</literal> telle que
|
||||||
|
@ -53,11 +64,11 @@
|
||||||
possibles sont documentées dans <ulink url='https://www.php.net/timezones'>la
|
possibles sont documentées dans <ulink url='https://www.php.net/timezones'>la
|
||||||
documentation officielle de PHP</ulink>. (Par défaut : <literal>UTC</literal>)
|
documentation officielle de PHP</ulink>. (Par défaut : <literal>UTC</literal>)
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
|
|
||||||
</sect4>
|
</sect4>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<title>date</title>
|
<title>date</title>
|
||||||
<para>Cette règle vérifie que la valeur saisie est bien une date et qu'elle
|
<para>Cette règle vérifie que la valeur saisie est bien une date et qu'elle
|
||||||
respecte un format précis.</para>
|
respecte un format précis.</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<title>Paramètres de configuration</title>
|
<title>Paramètres de configuration</title>
|
||||||
|
|
||||||
|
@ -16,6 +16,15 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>special_values</term>
|
||||||
|
<listitem>
|
||||||
|
<para>Tableau listant les valeurs spéciales que peut prendre l'attribut. Dans ce tableau,
|
||||||
|
seules les valeurs sont utilisées et les clés n'ont pas d'importance. Ces valeurs spéciales
|
||||||
|
n'auront pas forcément besoin de respecter le format attendu.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
</sect4>
|
</sect4>
|
||||||
|
|
|
@ -144,8 +144,13 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
||||||
'label' => 'Samba',
|
'label' => 'Samba',
|
||||||
'args' => array (
|
'args' => array (
|
||||||
'sambaSID',
|
'sambaSID',
|
||||||
|
'sambaLogonTime',
|
||||||
|
'sambaLogoffTime',
|
||||||
|
'sambaKickoffTime',
|
||||||
'sambaLMPassword',
|
'sambaLMPassword',
|
||||||
'sambaNTPassword'
|
'sambaNTPassword',
|
||||||
|
'sambaPwdMustChange',
|
||||||
|
'sambaPwdCanChange',
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
), // fin Layout
|
), // fin Layout
|
||||||
|
@ -433,22 +438,6 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
||||||
),
|
),
|
||||||
/* ----------- end -----------*/
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
/* ----------- start -----------*/
|
|
||||||
'sambaSID' => array (
|
|
||||||
'label' => 'Samba Identifier',
|
|
||||||
'ldap_type' => 'ascii',
|
|
||||||
'html_type' => 'text',
|
|
||||||
'required' => 1,
|
|
||||||
'generate_function' => 'generate_sambaUserSID',
|
|
||||||
'rights' => array(
|
|
||||||
'admin' => 'r'
|
|
||||||
),
|
|
||||||
'form' => array (
|
|
||||||
'modify' => 0
|
|
||||||
)
|
|
||||||
),
|
|
||||||
/* ----------- end -----------*/
|
|
||||||
|
|
||||||
/* ----------- start -----------*/
|
/* ----------- start -----------*/
|
||||||
'homeDirectory' => array (
|
'homeDirectory' => array (
|
||||||
'label' => 'Home Directory',
|
'label' => 'Home Directory',
|
||||||
|
@ -625,32 +614,6 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
||||||
),
|
),
|
||||||
/* ----------- end -----------*/
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
/* ----------- start -----------*/
|
|
||||||
'sambaLMPassword' => array (
|
|
||||||
'label' => 'Samba Password (LM)',
|
|
||||||
'ldap_type' => 'ascii',
|
|
||||||
'html_type' => 'text',
|
|
||||||
'required' => 1,
|
|
||||||
'generate_function' => 'generate_sambaLMPassword',
|
|
||||||
'form' => array (
|
|
||||||
'modify' => 0
|
|
||||||
)
|
|
||||||
),
|
|
||||||
/* ----------- end -----------*/
|
|
||||||
|
|
||||||
/* ----------- start -----------*/
|
|
||||||
'sambaNTPassword' => array (
|
|
||||||
'label' => 'Samba Password (NT)',
|
|
||||||
'ldap_type' => 'ascii',
|
|
||||||
'html_type' => 'text',
|
|
||||||
'required' => 1,
|
|
||||||
'generate_function' => 'generate_sambaNTPassword',
|
|
||||||
'form' => array (
|
|
||||||
'modify' => 0
|
|
||||||
)
|
|
||||||
),
|
|
||||||
/* ----------- end -----------*/
|
|
||||||
|
|
||||||
/* ----------- start -----------*/
|
/* ----------- start -----------*/
|
||||||
'jpegPhoto' => array (
|
'jpegPhoto' => array (
|
||||||
'label' => 'Picture',
|
'label' => 'Picture',
|
||||||
|
@ -717,5 +680,185 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
||||||
),
|
),
|
||||||
/* ----------- end -----------*/
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/************************************************
|
||||||
|
* Samba Attributres
|
||||||
|
************************************************/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaSID' => array (
|
||||||
|
'label' => 'Samba Identifier',
|
||||||
|
'ldap_type' => 'ascii',
|
||||||
|
'html_type' => 'text',
|
||||||
|
'required' => 1,
|
||||||
|
'generate_function' => 'generate_user_sambaSID',
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'r'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 0
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaLogonTime' => array (
|
||||||
|
'label' => 'Samba last logon time',
|
||||||
|
'ldap_type' => 'date',
|
||||||
|
'ldap_options' => array(
|
||||||
|
'timestamp' => True,
|
||||||
|
),
|
||||||
|
'html_type' => 'date',
|
||||||
|
'html_options' => array(
|
||||||
|
'time' => True,
|
||||||
|
'showTodayButton' => False,
|
||||||
|
'special_values' => array(
|
||||||
|
'0' => 'Never',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'w'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaLogoffTime' => array (
|
||||||
|
'label' => 'Samba last logoff time',
|
||||||
|
'ldap_type' => 'date',
|
||||||
|
'ldap_options' => array(
|
||||||
|
'timestamp' => True,
|
||||||
|
),
|
||||||
|
'html_type' => 'date',
|
||||||
|
'html_options' => array(
|
||||||
|
'time' => True,
|
||||||
|
'showTodayButton' => False,
|
||||||
|
'special_values' => array(
|
||||||
|
'0' => 'Never',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'w'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaKickoffTime' => array (
|
||||||
|
'label' => 'Samba expiration time',
|
||||||
|
'help_info' => 'Specifies the time when the user will be locked down and cannot login any longer.',
|
||||||
|
'ldap_type' => 'date',
|
||||||
|
'ldap_options' => array(
|
||||||
|
'timestamp' => True,
|
||||||
|
),
|
||||||
|
'html_type' => 'date',
|
||||||
|
'html_options' => array(
|
||||||
|
'time' => True,
|
||||||
|
'showTodayButton' => False,
|
||||||
|
'special_values' => array(
|
||||||
|
LS_SAMBA_INFINITY_TIME => 'Never',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'no_value_label' => 'Never',
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'w'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaLMPassword' => array (
|
||||||
|
'label' => 'Samba Password (LM)',
|
||||||
|
'ldap_type' => 'ascii',
|
||||||
|
'html_type' => 'text',
|
||||||
|
'required' => 1,
|
||||||
|
'generate_function' => 'generate_sambaLMPassword',
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 0
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaNTPassword' => array (
|
||||||
|
'label' => 'Samba Password (NT)',
|
||||||
|
'ldap_type' => 'ascii',
|
||||||
|
'html_type' => 'text',
|
||||||
|
'required' => 1,
|
||||||
|
'generate_function' => 'generate_sambaNTPassword',
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 0
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaPwdMustChange' => array (
|
||||||
|
'label' => 'Samba password must change',
|
||||||
|
'ldap_type' => 'date',
|
||||||
|
'ldap_options' => array(
|
||||||
|
'timestamp' => True,
|
||||||
|
),
|
||||||
|
'html_type' => 'date',
|
||||||
|
'html_options' => array(
|
||||||
|
'time' => True,
|
||||||
|
'showTodayButton' => False,
|
||||||
|
'special_values' => array(
|
||||||
|
'0' => 'At first login',
|
||||||
|
LS_SAMBA_INFINITY_TIME => 'Never',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'no_value_label' => 'Never',
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'w'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 0
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
|
/* ----------- start -----------*/
|
||||||
|
'sambaPwdCanChange' => array (
|
||||||
|
'label' => 'Samba password can change',
|
||||||
|
'help_info' => 'If not set, the user will be free to change his password whenever he wants.',
|
||||||
|
'ldap_type' => 'date',
|
||||||
|
'ldap_options' => array(
|
||||||
|
'timestamp' => True,
|
||||||
|
),
|
||||||
|
'html_type' => 'date',
|
||||||
|
'html_options' => array(
|
||||||
|
'time' => True,
|
||||||
|
'showTodayButton' => False,
|
||||||
|
'special_values' => array(
|
||||||
|
LS_SAMBA_INFINITY_TIME => 'Never',
|
||||||
|
0 => 'Whenever',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'no_value_label' => 'Whenever',
|
||||||
|
'multiple' => true,
|
||||||
|
'rights' => array(
|
||||||
|
'admin' => 'w'
|
||||||
|
),
|
||||||
|
'view' => 1,
|
||||||
|
'form' => array (
|
||||||
|
'modify' => 1
|
||||||
|
)
|
||||||
|
),
|
||||||
|
/* ----------- end -----------*/
|
||||||
|
|
||||||
) // Fin args
|
) // Fin args
|
||||||
);
|
);
|
||||||
|
|
|
@ -40,7 +40,17 @@ class LSattr_html_date extends LSattr_html {
|
||||||
*/
|
*/
|
||||||
function addToForm (&$form,$idForm,$data=NULL) {
|
function addToForm (&$form,$idForm,$data=NULL) {
|
||||||
$element = parent::addToForm($form,$idForm,$data);
|
$element = parent::addToForm($form,$idForm,$data);
|
||||||
$form -> addRule($this -> name, 'date', array('msg' => _('Invalid value'), 'params' => array('format' => $element -> getFormat())) );
|
$form -> addRule(
|
||||||
|
$this -> name,
|
||||||
|
'date',
|
||||||
|
array(
|
||||||
|
'msg' => _('Invalid value'),
|
||||||
|
'params' => array(
|
||||||
|
'format' => $element -> getFormat(),
|
||||||
|
'special_values' => array_keys($element -> getSpecialValues()),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
return $element;
|
return $element;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,17 +77,23 @@ class LSformElement_date extends LSformElement {
|
||||||
if (!is_array($data)) {
|
if (!is_array($data)) {
|
||||||
$data=array($data);
|
$data=array($data);
|
||||||
}
|
}
|
||||||
|
$special_values = $this -> getSpecialValues();
|
||||||
for($i=0;$i<count($data);$i++) {
|
$values = array();
|
||||||
if(is_numeric($data[$i])) {
|
foreach ($data as $value) {
|
||||||
$data[$i]=strftime($this -> getFormat(),$data[$i]);
|
if(is_numeric($value)) {
|
||||||
|
if (array_key_exists($value, $special_values)) {
|
||||||
|
$values[] = $special_values[$value];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$values[] = strftime($this -> getFormat(), $value);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this -> form -> setElementError($this -> attr_html);
|
$this -> form -> setElementError($this -> attr_html);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self :: log_trace("$this -> setValue():".varDump($data)." => ".varDump($values));
|
||||||
$this -> values = $data;
|
$this -> values = $values;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,13 +105,22 @@ class LSformElement_date extends LSformElement {
|
||||||
public function exportValues(){
|
public function exportValues(){
|
||||||
$retval=array();
|
$retval=array();
|
||||||
if (is_array($this -> values)) {
|
if (is_array($this -> values)) {
|
||||||
|
$special_values = $this -> getSpecialValues();
|
||||||
foreach($this -> values as $val) {
|
foreach($this -> values as $val) {
|
||||||
$date = strptime($val,$this -> getFormat());
|
if (array_key_exists($val, $special_values)) {
|
||||||
|
$retval[] = $val;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$date = strptime($val, $this -> getFormat());
|
||||||
if (is_array($date)) {
|
if (is_array($date)) {
|
||||||
$retval[] = mktime($date['tm_hour'],$date['tm_min'],$date['tm_sec'],$date['tm_mon']+1,$date['tm_mday'],$date['tm_year']+1900);
|
$retval[] = mktime($date['tm_hour'],$date['tm_min'],$date['tm_sec'],$date['tm_mon']+1,$date['tm_mday'],$date['tm_year']+1900);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
self :: log_warning("exportValues($val): Fail to parse value from form.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self :: log_trace("$this -> exportValues():".varDump($this -> values)." => ".varDump($retval));
|
||||||
return $retval;
|
return $retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,10 +190,77 @@ class LSformElement_date extends LSformElement {
|
||||||
LStemplate :: addJSscript('LSformElement_date_field.js');
|
LStemplate :: addJSscript('LSformElement_date_field.js');
|
||||||
LStemplate :: addJSscript('LSformElement_date.js');
|
LStemplate :: addJSscript('LSformElement_date.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
$return['html'] = $this -> fetchTemplate();
|
$return['html'] = $this -> fetchTemplate();
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retournne un template Smarty compilé dans le contexte d'un LSformElement
|
||||||
|
*
|
||||||
|
* @param[in] string $template Le template à retourner
|
||||||
|
* @param[in] array $variables Variables Smarty à assigner avant l'affichage
|
||||||
|
*
|
||||||
|
* @retval string Le HTML compilé du template
|
||||||
|
*/
|
||||||
|
public function fetchTemplate($template=NULL, $variables=array()) {
|
||||||
|
$variables['special_values'] = $this -> getSpecialValues();
|
||||||
|
return parent :: fetchTemplate($template, $variables);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recupère la valeur de l'élement passée en POST
|
||||||
|
*
|
||||||
|
* Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère
|
||||||
|
* pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément
|
||||||
|
*
|
||||||
|
* @param[in] &$return array Reference of the array for retreived values
|
||||||
|
* @param[in] $onlyIfPresent boolean If true and data of this element is not present in POST data,
|
||||||
|
* just ignore it.
|
||||||
|
*
|
||||||
|
* @retval boolean true si la valeur est présente en POST, false sinon
|
||||||
|
*/
|
||||||
|
public function getPostData(&$return, $onlyIfPresent=false) {
|
||||||
|
if($this -> isFreeze()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
$values = self :: getData($_POST, $this -> name);
|
||||||
|
$special_values = self :: getData($_POST, $this -> name.'__special_value');
|
||||||
|
self :: log_trace($this." -> getPostData(): values=".varDump($values));
|
||||||
|
self :: log_trace($this." -> getPostData(): special_values=".varDump($special_values));
|
||||||
|
if (!is_array($values) && !is_array($special_values)) {
|
||||||
|
self :: log_trace($this." -> getPostData(): not in POST data");
|
||||||
|
if ($onlyIfPresent) {
|
||||||
|
self :: log_debug($this -> name.": not in POST data => ignore it");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$return[$this -> name] = array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(!is_array($values))
|
||||||
|
$values = array();
|
||||||
|
if(!is_array($special_values))
|
||||||
|
$special_values = array();
|
||||||
|
$return[$this -> name] = $special_values + $values;
|
||||||
|
self :: log_trace($this." -> merged values=".varDump($return[$this -> name]));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve list of special values with translated labels
|
||||||
|
*
|
||||||
|
* @return array Associative array with special values as keys and corresponding translated labels as values
|
||||||
|
*/
|
||||||
|
public function getSpecialValues() {
|
||||||
|
$special_values = array();
|
||||||
|
foreach ($this -> getParam('html_options.special_values', array()) as $value => $label)
|
||||||
|
$special_values[strval($value)] = __($label);
|
||||||
|
self :: log_trace("getSpecialValues(): ".varDump($special_values));
|
||||||
|
return $special_values;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convertis un format de date Php (strftime) en JS (jscalendar)
|
* Convertis un format de date Php (strftime) en JS (jscalendar)
|
||||||
*
|
*
|
||||||
|
|
|
@ -33,11 +33,15 @@ class LSformRule_date extends LSformRule {
|
||||||
* @param mixed $value Données à valider
|
* @param mixed $value Données à valider
|
||||||
* @param array $options Options de validation
|
* @param array $options Options de validation
|
||||||
* $options['params']['format']: le format de la date
|
* $options['params']['format']: le format de la date
|
||||||
|
* $options['params']['special_values']: array of special allowed values
|
||||||
* @param object $formElement L'objet formElement attaché
|
* @param object $formElement L'objet formElement attaché
|
||||||
*
|
*
|
||||||
* @return boolean True si les données sont valide, False sinon.
|
* @return boolean True si les données sont valide, False sinon.
|
||||||
*/
|
*/
|
||||||
public static function validate($value, $options=array(), &$formElement) {
|
public static function validate($value, $options=array(), &$formElement) {
|
||||||
|
$special_values = LSconfig :: get('params.special_values', array(), null, $options);
|
||||||
|
if (in_array($value, $special_values))
|
||||||
|
return true;
|
||||||
$format = LSconfig :: get('params.format', null, 'string', $options);
|
$format = LSconfig :: get('params.format', null, 'string', $options);
|
||||||
if (is_null($format)) {
|
if (is_null($format)) {
|
||||||
LSerror :: addErrorCode('LSformRule_date_01');
|
LSerror :: addErrorCode('LSformRule_date_01');
|
||||||
|
|
|
@ -636,6 +636,9 @@ function cli_generate_lang_file($command_args) {
|
||||||
case 'valueWithUnit':
|
case 'valueWithUnit':
|
||||||
addFromLSconfig("LSobjects.$obj.attrs.$attr.html_options.units.*");
|
addFromLSconfig("LSobjects.$obj.attrs.$attr.html_options.units.*");
|
||||||
break;
|
break;
|
||||||
|
case 'date':
|
||||||
|
addFromLSconfig("LSobjects.$obj.attrs.$attr.html_options.special_values.*");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,15 +11,22 @@ var LSformElement_date = new Class({
|
||||||
if (!$type(el)) {
|
if (!$type(el)) {
|
||||||
el = document;
|
el = document;
|
||||||
}
|
}
|
||||||
var getName = /^(.*)\[\]$/
|
var getName = /^(.*)\[[0-9]*\]$/;
|
||||||
el.getElements('input.LSformElement_date').each(function(input) {
|
el.getElements('input.LSformElement_date[type=text]').each(function(input) {
|
||||||
var name = getName.exec(input.name)[1];
|
var name = getName.exec(input.name)[1];
|
||||||
this.fields[name] = new LSformElement_date_field(name,input);
|
this.fields[name] = new LSformElement_date_field(name,input);
|
||||||
|
varLSform.addField(name, this.fields[name]);
|
||||||
}, this);
|
}, this);
|
||||||
},
|
},
|
||||||
|
|
||||||
reinitialize: function(el) {
|
reinitialize: function(el) {
|
||||||
this.initialiseLSformElement_date(el);
|
this.initialiseLSformElement_date(el);
|
||||||
|
},
|
||||||
|
|
||||||
|
clearValue: function() {
|
||||||
|
this.fields.each(function(field) {
|
||||||
|
field.clearValue();
|
||||||
|
}, this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
window.addEvent(window.ie ? 'load' : 'domready', function() {
|
window.addEvent(window.ie ? 'load' : 'domready', function() {
|
||||||
|
|
|
@ -2,6 +2,12 @@ var LSformElement_date_field = new Class({
|
||||||
initialize: function(name,input){
|
initialize: function(name,input){
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.input = input;
|
this.input = input;
|
||||||
|
this.specialValueInputs = $$(input.getAllNext('input.LSformElement_date[type=radio]'));
|
||||||
|
|
||||||
|
this.input.addEvent('change', this.onInputChange.bind(this));
|
||||||
|
this.specialValueInputs.each(function(input) {
|
||||||
|
input.addEvent('click', this.onSpecialValueInputClick.bind(this));
|
||||||
|
}, this);
|
||||||
|
|
||||||
this.params = varLSdefault.LSjsConfig[this.name];
|
this.params = varLSdefault.LSjsConfig[this.name];
|
||||||
if (!$type(this.params)) {
|
if (!$type(this.params)) {
|
||||||
|
@ -41,6 +47,7 @@ var LSformElement_date_field = new Class({
|
||||||
useFadeInOut: !Browser.ie
|
useFadeInOut: !Browser.ie
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
this.calendar.addEvent('onSelect', this.onInputChange.bind(this));
|
||||||
|
|
||||||
if (this.params.showNowButton) {
|
if (this.params.showNowButton) {
|
||||||
this.nowBtn = new Element('img');
|
this.nowBtn = new Element('img');
|
||||||
|
@ -66,8 +73,21 @@ var LSformElement_date_field = new Class({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onInputChange: function() {
|
||||||
|
if (!this.input.value)
|
||||||
|
return true;
|
||||||
|
this.specialValueInputs.each(function(input) {
|
||||||
|
input.removeProperty('checked');
|
||||||
|
}, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
onSpecialValueInputClick: function() {
|
||||||
|
this.input.value="";
|
||||||
|
},
|
||||||
|
|
||||||
onNowBtnClick: function() {
|
onNowBtnClick: function() {
|
||||||
this.input.value = new Date().format(this.params.format);
|
this.input.value = new Date().format(this.params.format);
|
||||||
|
this.input.fireEvent('change');
|
||||||
},
|
},
|
||||||
|
|
||||||
onTodayBtnClick: function() {
|
onTodayBtnClick: function() {
|
||||||
|
@ -85,7 +105,15 @@ var LSformElement_date_field = new Class({
|
||||||
date: now.get('date')
|
date: now.get('date')
|
||||||
});
|
});
|
||||||
this.input.value = today.format(this.params.format);
|
this.input.value = today.format(this.params.format);
|
||||||
|
this.input.fireEvent('change');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
clearValue: function() {
|
||||||
|
this.input.value="";
|
||||||
|
this.specialValueInputs.each(function(input) {
|
||||||
|
input.removeProperty('checked');
|
||||||
|
}, this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -16,6 +16,10 @@ $GLOBALS['LSlang'] = array (
|
||||||
"Allow user to connect a POSIX system." =>
|
"Allow user to connect a POSIX system." =>
|
||||||
"Autorisie l'utilisateur à se connecter aux systèmes POSIX.",
|
"Autorisie l'utilisateur à se connecter aux systèmes POSIX.",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdMustChange.html_options.special_values.0
|
||||||
|
"At first login" =>
|
||||||
|
"À la première connexion",
|
||||||
|
|
||||||
# LSobjects.LSpeople.LSrelation.groups.label
|
# LSobjects.LSpeople.LSrelation.groups.label
|
||||||
# LSobjects.LSsysaccount.LSrelation.groups.label
|
# LSobjects.LSsysaccount.LSrelation.groups.label
|
||||||
"Belongs to groups ..." =>
|
"Belongs to groups ..." =>
|
||||||
|
@ -111,6 +115,10 @@ $GLOBALS['LSlang'] = array (
|
||||||
"Identifier must contain alphanumeric values, dots (.) and dashes (-) only." =>
|
"Identifier must contain alphanumeric values, dots (.) and dashes (-) only." =>
|
||||||
"L'identifiant doit contenir uniquement des valeurs alpha-numériques, avec eventuellement des points (.) et des tirets (-).",
|
"L'identifiant doit contenir uniquement des valeurs alpha-numériques, avec eventuellement des points (.) et des tirets (-).",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdCanChange.help_info
|
||||||
|
"If not set, the user will be free to change his password whenever he wants." =>
|
||||||
|
"Si non défini, l'utilisateur pourra changer son mot de passe quand il le veut.",
|
||||||
|
|
||||||
# LSobjects.LSpeople.attrs.gidNumber.html_options.possible_values.1.label
|
# LSobjects.LSpeople.attrs.gidNumber.html_options.possible_values.1.label
|
||||||
"LDAP Groups" =>
|
"LDAP Groups" =>
|
||||||
"Groupes LDAP",
|
"Groupes LDAP",
|
||||||
|
@ -175,6 +183,16 @@ $GLOBALS['LSlang'] = array (
|
||||||
"Nb / page :" =>
|
"Nb / page :" =>
|
||||||
"Nb / page :",
|
"Nb / page :",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaLogonTime.html_options.special_values.0
|
||||||
|
# LSobjects.LSpeople.attrs.sambaLogoffTime.html_options.special_values.0
|
||||||
|
# LSobjects.LSpeople.attrs.sambaKickoffTime.no_value_label
|
||||||
|
# LSobjects.LSpeople.attrs.sambaKickoffTime.html_options.special_values.2147483647
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdMustChange.no_value_label
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdMustChange.html_options.special_values.2147483647
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdCanChange.html_options.special_values.2147483647
|
||||||
|
"Never" =>
|
||||||
|
"Jamais",
|
||||||
|
|
||||||
# LSobjects.LSpeople.attrs.uidNumber.label
|
# LSobjects.LSpeople.attrs.uidNumber.label
|
||||||
"Numeric identifier" =>
|
"Numeric identifier" =>
|
||||||
"Identifiant numérique",
|
"Identifiant numérique",
|
||||||
|
@ -220,10 +238,32 @@ $GLOBALS['LSlang'] = array (
|
||||||
"Samba Password (NT)" =>
|
"Samba Password (NT)" =>
|
||||||
"Mot de passe Samba (NT)",
|
"Mot de passe Samba (NT)",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaKickoffTime.label
|
||||||
|
"Samba expiration time" =>
|
||||||
|
"Date d'expiration Samba",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaLogoffTime.label
|
||||||
|
"Samba last logoff time" =>
|
||||||
|
"Date de dernière déconnexion Samba",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaLogonTime.label
|
||||||
|
"Samba last logon time" =>
|
||||||
|
"Date de dernière connexion Samba",
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdCanChange.label
|
||||||
|
"Samba password can change" =>
|
||||||
|
"Date de prochaine modification possible du mot de passe Samba",
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdMustChange.label
|
||||||
|
"Samba password must change" =>
|
||||||
|
"Date de prochaine modification obligatoire du mot de passe Samba",
|
||||||
|
|
||||||
# LSobjects.LSpeople.LSform.dataEntryForm.simple.label
|
# LSobjects.LSpeople.LSform.dataEntryForm.simple.label
|
||||||
"Simple" =>
|
"Simple" =>
|
||||||
"Simple",
|
"Simple",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaKickoffTime.help_info
|
||||||
|
"Specifies the time when the user will be locked down and cannot login any longer." =>
|
||||||
|
"Détermine la date à partir de laquelle l'utilisateur sera bloqué et ne pourra plus se connecter.",
|
||||||
|
|
||||||
# LSobjects.LSsysaccount.label
|
# LSobjects.LSsysaccount.label
|
||||||
"System accounts" =>
|
"System accounts" =>
|
||||||
"Comptes systèmes",
|
"Comptes systèmes",
|
||||||
|
@ -264,6 +304,11 @@ $GLOBALS['LSlang'] = array (
|
||||||
"Users" =>
|
"Users" =>
|
||||||
"Utilisateurs",
|
"Utilisateurs",
|
||||||
|
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdCanChange.no_value_label
|
||||||
|
# LSobjects.LSpeople.attrs.sambaPwdCanChange.html_options.special_values.0
|
||||||
|
"Whenever" =>
|
||||||
|
"N'importe quand",
|
||||||
|
|
||||||
# LSobjects.LSpeople.LSsearch.predefinedFilters.(jpegPhoto=*)
|
# LSobjects.LSpeople.LSsearch.predefinedFilters.(jpegPhoto=*)
|
||||||
"With photo" =>
|
"With photo" =>
|
||||||
"Avec photo",
|
"Avec photo",
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{if $freeze}
|
{if $freeze}
|
||||||
{if $value}{$value|escape:"htmlall"}{else}{$noValueTxt|escape:"htmlall"}{/if}
|
{if $value}{$value|escape:"htmlall"}{else}{$noValueTxt|escape:"htmlall"}{/if}
|
||||||
{else}
|
{else}
|
||||||
<input type='text' name='{$attr_name|escape:"htmlall"}[]' value='{$value|escape:'htmlall'}' class='LSformElement_date' autocomplete="off">
|
<input type='text' name='{$attr_name|escape:"htmlall"}[{$value_idx}]' value='{if !in_array($value, $special_values)}{$value|escape:'htmlall'}{/if}' class='LSformElement_date' autocomplete="off">
|
||||||
|
{foreach from=$special_values item=special_value_label key=special_value name=LSformElement_date_special_value}
|
||||||
|
<input type='radio' name='{$attr_name|escape:"htmlall"}__special_value[{$value_idx}]' class='LSformElement_date' value='{$special_value|escape:"htmlall"}'
|
||||||
|
id='LSformElement_date_special_value_{$attr_name|escape:"htmlall"}_{$value_idx}_{$smarty.foreach.LSformElement_date_special_value.index}' {if $value == $special_value_label}checked{/if}/>
|
||||||
|
<label for='LSformElement_date_special_value_{$attr_name|escape:"htmlall"}_{$value_idx}_{$smarty.foreach.LSformElement_date_special_value.index}'>{$special_value_label|escape:"htmlall"}</label>
|
||||||
|
{/foreach}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
Loading…
Reference in a new issue