mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-08 02:28:23 +01:00
Fix better comaptibilty for extrafield email/mail
This commit is contained in:
@@ -9173,7 +9173,7 @@ abstract class CommonObject
|
|||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} elseif ($type == 'mail') {
|
} elseif ($type == 'mail' || $type == 'email') {
|
||||||
if (!$validate->isEmail($fieldValue)) {
|
if (!$validate->isEmail($fieldValue)) {
|
||||||
$this->setFieldError($fieldKey, $validate->error);
|
$this->setFieldError($fieldKey, $validate->error);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class DefaultValues extends CommonObject
|
|||||||
public $picto = '';
|
public $picto = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
|
* 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'email', 'phone', 'url', 'password')
|
||||||
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
||||||
* 'label' the translation key.
|
* 'label' the translation key.
|
||||||
* 'picto' is code of a picto to show before value in forms
|
* 'picto' is code of a picto to show before value in forms
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class EmailSenderProfile extends CommonObject
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password')
|
* 'type' if the field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'html', 'date', 'datetime', 'timestamp', 'duration', 'email', 'phone', 'url', 'password')
|
||||||
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
||||||
* 'label' the translation key.
|
* 'label' the translation key.
|
||||||
* 'enabled' is a condition when the field must be managed.
|
* 'enabled' is a condition when the field must be managed.
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ class ExtraFields
|
|||||||
'price' => 'ExtrafieldPrice',
|
'price' => 'ExtrafieldPrice',
|
||||||
'pricecy' => 'ExtrafieldPriceWithCurrency',
|
'pricecy' => 'ExtrafieldPriceWithCurrency',
|
||||||
'phone' => 'ExtrafieldPhone',
|
'phone' => 'ExtrafieldPhone',
|
||||||
'mail' => 'ExtrafieldMail',
|
'email' => 'ExtrafieldMail',
|
||||||
'url' => 'ExtrafieldUrl',
|
'url' => 'ExtrafieldUrl',
|
||||||
'ip' => 'ExtrafieldIP',
|
'ip' => 'ExtrafieldIP',
|
||||||
'icon' => 'Icon',
|
'icon' => 'Icon',
|
||||||
@@ -142,7 +142,7 @@ class ExtraFields
|
|||||||
*
|
*
|
||||||
* @param string $attrname Code of attribute
|
* @param string $attrname Code of attribute
|
||||||
* @param string $label label of attribute
|
* @param string $label label of attribute
|
||||||
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', 'separate',...)
|
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'email', 'password', 'url', 'select', 'checkbox', 'separate',...)
|
||||||
* @param int $pos Position of attribute
|
* @param int $pos Position of attribute
|
||||||
* @param string $size Size/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
|
* @param string $size Size/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
|
||||||
* @param string $elementtype Element type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
|
* @param string $elementtype Element type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
|
||||||
@@ -221,7 +221,7 @@ class ExtraFields
|
|||||||
*
|
*
|
||||||
* @param string $attrname Code of attribute
|
* @param string $attrname Code of attribute
|
||||||
* @param string $label label of attribute
|
* @param string $label label of attribute
|
||||||
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', 'separate',...)
|
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'email', 'password', 'url', 'select', 'checkbox', 'separate',...)
|
||||||
* @param int $pos Position of attribute
|
* @param int $pos Position of attribute
|
||||||
* @param string $size Size/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
|
* @param string $size Size/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
|
||||||
* @param string $elementtype Element type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
|
* @param string $elementtype Element type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
|
||||||
@@ -293,7 +293,7 @@ class ExtraFields
|
|||||||
* This is a private method. For public method, use addExtraField.
|
* This is a private method. For public method, use addExtraField.
|
||||||
*
|
*
|
||||||
* @param string $attrname code of attribute
|
* @param string $attrname code of attribute
|
||||||
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', ...)
|
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'email', 'password', 'url', 'select', 'checkbox', ...)
|
||||||
* @param string $length Size/length of attribute ('5', '24,8', ...)
|
* @param string $length Size/length of attribute ('5', '24,8', ...)
|
||||||
* @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...)
|
* @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...)
|
||||||
* @param int<0,1> $unique Is field unique or not
|
* @param int<0,1> $unique Is field unique or not
|
||||||
@@ -668,7 +668,7 @@ class ExtraFields
|
|||||||
*
|
*
|
||||||
* @param string $attrname Name of attribute
|
* @param string $attrname Name of attribute
|
||||||
* @param string $label Label of attribute
|
* @param string $label Label of attribute
|
||||||
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', ...)
|
* @param string $type Type of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'phone', 'email', 'password', 'url', 'select', 'checkbox', ...)
|
||||||
* @param string $length Size/length of attribute ('5', '24,8', ...)
|
* @param string $length Size/length of attribute ('5', '24,8', ...)
|
||||||
* @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...)
|
* @param string $elementtype Element type ('member', 'product', 'thirdparty', 'contact', ...)
|
||||||
* @param int<0,1> $unique Is field unique or not
|
* @param int<0,1> $unique Is field unique or not
|
||||||
@@ -723,7 +723,7 @@ class ExtraFields
|
|||||||
} elseif ($type == 'phone') {
|
} elseif ($type == 'phone') {
|
||||||
$typedb = 'varchar';
|
$typedb = 'varchar';
|
||||||
$lengthdb = '20';
|
$lengthdb = '20';
|
||||||
} elseif ($type == 'mail' || $type == 'ip' || $type == 'icon') {
|
} elseif ($type == 'mail' || $type == 'email' || $type == 'ip' || $type == 'icon') {
|
||||||
$typedb = 'varchar';
|
$typedb = 'varchar';
|
||||||
$lengthdb = '128';
|
$lengthdb = '128';
|
||||||
} elseif ($type == 'url') {
|
} elseif ($type == 'url') {
|
||||||
@@ -1259,7 +1259,7 @@ class ExtraFields
|
|||||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$newsize.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').'>';
|
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$newsize.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').'>';
|
||||||
} elseif (preg_match('/varchar/', $type)) {
|
} elseif (preg_match('/varchar/', $type)) {
|
||||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$size.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').'>';
|
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" maxlength="'.$size.'" value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').'>';
|
||||||
} elseif (in_array($type, array('mail', 'ip', 'phone', 'url'))) {
|
} elseif (in_array($type, array('email', 'mail', 'ip', 'phone', 'url'))) {
|
||||||
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'" '.($moreparam ? $moreparam : '').'>';
|
$out = '<input type="text" class="flat '.$morecss.' maxwidthonsmartphone" name="'.$keyprefix.$key.$keysuffix.'" id="'.$keyprefix.$key.$keysuffix.'" value="'.dol_escape_htmltag($value).'" '.($moreparam ? $moreparam : '').'>';
|
||||||
} elseif ($type == 'icon') {
|
} elseif ($type == 'icon') {
|
||||||
/* External lib inclusion are not allowed in backoffice. Also lib is included several time if there is several icon file.
|
/* External lib inclusion are not allowed in backoffice. Also lib is included several time if there is several icon file.
|
||||||
@@ -2117,7 +2117,7 @@ class ExtraFields
|
|||||||
} else {
|
} else {
|
||||||
$value = yn($value ? 1 : 0);
|
$value = yn($value ? 1 : 0);
|
||||||
}
|
}
|
||||||
} elseif ($type == 'mail') {
|
} elseif ($type == 'mail' || $type == 'email') {
|
||||||
$value = dol_print_email($value, 0, 0, 0, 64, 1, 1);
|
$value = dol_print_email($value, 0, 0, 0, 64, 1, 1);
|
||||||
} elseif ($type == 'ip') {
|
} elseif ($type == 'ip') {
|
||||||
$value = dol_print_ip($value, 0);
|
$value = dol_print_ip($value, 0);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class TimeSpent extends CommonObject
|
|||||||
* 'double(24,8)', 'real', 'price',
|
* 'double(24,8)', 'real', 'price',
|
||||||
* 'date', 'datetime', 'timestamp', 'duration',
|
* 'date', 'datetime', 'timestamp', 'duration',
|
||||||
* 'boolean', 'checkbox', 'radio', 'array',
|
* 'boolean', 'checkbox', 'radio', 'array',
|
||||||
* 'mail', 'phone', 'url', 'password', 'ip'
|
* 'email', 'phone', 'url', 'password', 'ip'
|
||||||
* Note: Filter must be a Dolibarr filter syntax string. Example: "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.status:!=:0) or (t.nature:is:NULL)"
|
* Note: Filter must be a Dolibarr filter syntax string. Example: "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.status:!=:0) or (t.nature:is:NULL)"
|
||||||
* 'label' the translation key.
|
* 'label' the translation key.
|
||||||
* 'picto' is code of a picto to show before value in forms
|
* 'picto' is code of a picto to show before value in forms
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
|
|
||||||
$error = 0;
|
$error = 0;
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters into $addfieldentry (this provided array is filled by modulebuilder/index.php)
|
||||||
if (is_array($addfieldentry) && count($addfieldentry) > 0) {
|
if (is_array($addfieldentry) && count($addfieldentry) > 0) {
|
||||||
if (empty($addfieldentry['name'])) {
|
if (empty($addfieldentry['name'])) {
|
||||||
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Name")), null, 'errors');
|
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("Name")), null, 'errors');
|
||||||
@@ -66,11 +66,12 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration|stars)/', $addfieldentry['type'])
|
if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration|stars)/', $addfieldentry['type'])
|
||||||
&& !preg_match('/^(boolean|smallint|real|date|datetime|timestamp|phone|mail|url|ip|password)$/', $addfieldentry['type'])) {
|
&& !preg_match('/^(boolean|smallint|real|date|datetime|timestamp|phone|email|url|ip|password)$/', $addfieldentry['type'])) { // Use email for email, mail is kept for compatibility
|
||||||
setEventMessages($langs->trans('BadValueForType', $addfieldentry['type']), null, 'errors');
|
setEventMessages($langs->trans('BadValueForType', $addfieldentry['type']), null, 'errors');
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
// Check for type stars(NumberOfStars), NumberOfStars must be an integer between 1 and 10
|
// Check for type stars(NumberOfStars), NumberOfStars must be an integer between 1 and 10
|
||||||
|
$matches = array();
|
||||||
if (preg_match('/^stars\((.+)\)$/', $addfieldentry['type'], $matches)) {
|
if (preg_match('/^stars\((.+)\)$/', $addfieldentry['type'], $matches)) {
|
||||||
if (!ctype_digit($matches[1]) || $matches[1] < 1 || $matches[1] > 10) {
|
if (!ctype_digit($matches[1]) || $matches[1] < 1 || $matches[1] > 10) {
|
||||||
setEventMessages($langs->trans('BadValueForType', $addfieldentry['type']), null, 'errors');
|
setEventMessages($langs->trans('BadValueForType', $addfieldentry['type']), null, 'errors');
|
||||||
@@ -350,7 +351,7 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '
|
|||||||
$type = 'integer';
|
$type = 'integer';
|
||||||
} elseif ($type == 'chkbxlst') {
|
} elseif ($type == 'chkbxlst') {
|
||||||
$type = 'varchar(128)';
|
$type = 'varchar(128)';
|
||||||
} elseif ($type == 'mail') {
|
} elseif ($type == 'mail' || $type == 'email') { // Prefer to use 'email'
|
||||||
$type = 'varchar(128)';
|
$type = 'varchar(128)';
|
||||||
} elseif (strpos($type, 'stars(') === 0) {
|
} elseif (strpos($type, 'stars(') === 0) {
|
||||||
$type = 'integer';
|
$type = 'integer';
|
||||||
@@ -358,6 +359,8 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '
|
|||||||
$type = 'varchar(20)';
|
$type = 'varchar(20)';
|
||||||
} elseif ($type == 'ip') {
|
} elseif ($type == 'ip') {
|
||||||
$type = 'varchar(32)';
|
$type = 'varchar(32)';
|
||||||
|
} elseif ($type == 'url') {
|
||||||
|
$type = 'varchar(255)';
|
||||||
}
|
}
|
||||||
|
|
||||||
$texttoinsert .= "\t".$key." ".$type;
|
$texttoinsert .= "\t".$key." ".$type;
|
||||||
|
|||||||
@@ -1130,7 +1130,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname && $user->hasRi
|
|||||||
setEventMessages($langs->trans("ErrorTableNotFound", $tablename), null, 'errors');
|
setEventMessages($langs->trans("ErrorTableNotFound", $tablename), null, 'errors');
|
||||||
} else {
|
} else {
|
||||||
/**
|
/**
|
||||||
* 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'ip', 'url', 'password')
|
* 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'email', 'phone', 'ip', 'url', 'password')
|
||||||
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
* Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)"
|
||||||
* 'label' the translation key.
|
* 'label' the translation key.
|
||||||
* 'picto' is code of a picto to show before value in forms
|
* 'picto' is code of a picto to show before value in forms
|
||||||
@@ -4636,7 +4636,34 @@ if ($module == 'initmodule') {
|
|||||||
print '<input name="proplabel" class="maxwidth125" value="'.dol_escape_htmltag($proplabel).'">';
|
print '<input name="proplabel" class="maxwidth125" value="'.dol_escape_htmltag($proplabel).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="tdoverflowmax150">';
|
print '<td class="tdoverflowmax150">';
|
||||||
print '<input name="proptype" class="maxwidth125" value="'.dol_escape_htmltag($proptype).'"></input>';
|
print '<input name="proptype" class="maxwidth125" value="'.dol_escape_htmltag($proptype).'" list="datalist'.$key.'"></input>';
|
||||||
|
// Use the samedatalist than for create
|
||||||
|
print '<datalist id="datalist'.$key.'">';
|
||||||
|
print '<option>varchar(128)</option>';
|
||||||
|
print '<option>email</option>';
|
||||||
|
print '<option>phone</option>';
|
||||||
|
print '<option>ip</option>';
|
||||||
|
print '<option>url</option>';
|
||||||
|
print '<option>password</option>';
|
||||||
|
print '<option>text</option>';
|
||||||
|
print '<option>html</option>';
|
||||||
|
print '<option>date</option>';
|
||||||
|
print '<option>datetime</option>';
|
||||||
|
print '<option>integer</option>';
|
||||||
|
print '<option>stars(5)</option>';
|
||||||
|
print '<option>double(28,4)</option>';
|
||||||
|
print '<option>real</option>';
|
||||||
|
print '<option>integer:ClassName:RelativePath/To/ClassFile.class.php[:1[:FILTER]]</option>';
|
||||||
|
// Combo with list of fields
|
||||||
|
/*
|
||||||
|
if (empty($formadmin)) {
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
|
||||||
|
$formadmin = new FormAdmin($db);
|
||||||
|
}
|
||||||
|
print $formadmin->selectTypeOfFields($key, GETPOST($key, 'alpha'));
|
||||||
|
*/
|
||||||
|
print '</datalist>';
|
||||||
|
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="tdoverflowmax200">';
|
print '<td class="tdoverflowmax200">';
|
||||||
print '<textarea name="proparrayofkeyval">';
|
print '<textarea name="proparrayofkeyval">';
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ class MyObject extends CommonObject
|
|||||||
* 'double(24,8)', 'real', 'price', 'stock',
|
* 'double(24,8)', 'real', 'price', 'stock',
|
||||||
* 'date', 'datetime', 'timestamp', 'duration',
|
* 'date', 'datetime', 'timestamp', 'duration',
|
||||||
* 'boolean', 'checkbox', 'radio', 'array',
|
* 'boolean', 'checkbox', 'radio', 'array',
|
||||||
* 'mail', 'phone', 'url', 'password', 'ip'
|
* 'email', 'phone', 'url', 'password', 'ip'
|
||||||
* Note: Filter must be a Dolibarr Universal Filter syntax string. Example: "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.status:!=:0) or (t.nature:is:NULL)"
|
* Note: Filter must be a Dolibarr Universal Filter syntax string. Example: "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.status:!=:0) or (t.nature:is:NULL)"
|
||||||
* 'length' the length of field. Example: 255, '24,8'
|
* 'length' the length of field. Example: 255, '24,8'
|
||||||
* 'label' the translation key.
|
* 'label' the translation key.
|
||||||
|
|||||||
Reference in New Issue
Block a user