30if (empty($conf) || !is_object($conf)) {
 
   31  print 
"Error, template page can't be called as URL";
 
   36$langs->load(
"modulebuilder");
 
   38$listofexamplesforlink = 
'Societe:societe/class/societe.class.php<br>Contact:contact/class/contact.class.php<br>Product:product/class/product.class.php<br>Project:projet/class/project.class.php<br>...';
 
   42<!-- BEGIN PHP TEMPLATE admin_extrafields_edit.tpl.php -->
 
   44  jQuery(document).ready(
function() {
 
   45    function init_typeoffields(
type)
 
   47      console.log(
"select a new type (edit) = "+
type);
 
   48      var size = jQuery(
"#size");
 
   49      var computed_value = jQuery(
"#computed_value");
 
   50      var langfile = jQuery(
"#langfile");
 
   51      var default_value = jQuery(
"#default_value");
 
   52      var unique = jQuery(
"#unique");
 
   53      var required = jQuery(
"#required");
 
   54      var alwayseditable = jQuery(
"#alwayseditable");
 
   55      var list = jQuery(
"#list");
 
   56      var totalizable = jQuery(
"#totalizable");
 
   58      if ((
GETPOST(
'type', 
'alpha') != 
"select") && (
GETPOST(
'type', 
'alpha') != 
"sellist")) {
 
   59        print 
'jQuery("#value_choice").hide();';
 
   62      if (in_array(
GETPOST(
'type', 
'alpha'), [
"separate", 
'point', 
'linestrg', 
'polygon'])) {
 
   63        print 
"jQuery('#size, #default_value, #langfile').val('').prop('disabled', true);";
 
   64        print 
'jQuery("#value_choice").hide();';
 
   69      if (
type == 
'varchar' || 
type == 
'int' || 
type == 
'double' || 
type == 
'price') {
 
   70        jQuery(
"tr.extra_computed_value").show();
 
   72        computed_value.val(
''); jQuery(
"tr.extra_computed_value").hide();
 
   74      if (computed_value.val())
 
   76        console.log(
"We enter a computed formula");
 
   77        jQuery(
"#default_value").val(
'');
 
   79        jQuery(
"#default_value, #unique, #required, #alwayseditable, #list").attr(
'disabled', 
true);
 
   80        jQuery(
"tr.extra_default_value, tr.extra_unique, tr.extra_required, tr.extra_alwayseditable, tr.extra_list").hide();
 
   84        console.log(
"No computed formula");
 
   85        jQuery(
"#default_value, #unique, #required, #alwayseditable, #list").attr(
'disabled', 
false);
 
   86        jQuery(
"tr.extra_default_value, tr.extra_unique, tr.extra_required, tr.extra_alwayseditable, tr.extra_list").show();
 
   89      if (
type == 
'date') { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").hide();jQuery(
"#helpchkbxlst").hide(); }
 
   90      else if (
type == 
'datetime') { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
   91      else if (
type == 
'double')   { size.removeAttr(
'disabled'); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
   92      else if (
type == 
'int')      { size.removeAttr(
'disabled'); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
   93      else if (
type == 
'text')     { size.removeAttr(
'disabled'); unique.prop(
'disabled', 
true).removeAttr(
'checked'); jQuery(
"#value_choice").hide();jQuery(
"#helpchkbxlst").hide(); }
 
   94      else if (
type == 
'html')     { size.removeAttr(
'disabled'); unique.prop(
'disabled', 
true).removeAttr(
'checked'); jQuery(
"#value_choice").hide();jQuery(
"#helpchkbxlst").hide(); }
 
   95      else if (
type == 
'varchar')  { size.removeAttr(
'disabled'); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").hide();jQuery(
"#helpchkbxlst").hide(); }
 
   96      else if (
type == 
'password') { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); required.val(
'').prop(
'disabled', 
true); default_value.val(
'').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helppassword").show();}
 
   97      else if (
type == 
'boolean')  { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
   98      else if (
type == 
'price')    { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
   99      else if (
type == 
'pricecy')  { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").hide(); jQuery(
"#helpchkbxlst").hide();}
 
  100      else if (
type == 
'select')   { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpselect").show();}
 
  101      else if (
type == 
'sellist')  { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpsellist").show();}
 
  102      else if (
type == 
'radio')    { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpselect").show();}
 
  103      else if (
type == 
'checkbox') { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpselect").show();}
 
  104      else if (
type == 
'chkbxlst') { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpchkbxlst").show();}
 
  105      else if (
type == 
'link')     { size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'disabled'); jQuery(
"#value_choice").show(); jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helplink").show();}
 
  106      else if (
type == 
'separate') {
 
  107        size.val(
'').prop(
'disabled', 
true); unique.removeAttr(
'checked').prop(
'disabled', 
true); required.val(
'').prop(
'disabled', 
true); default_value.val(
'').prop(
'disabled', 
true);
 
  108        jQuery(
"#value_choice").show();
 
  109        jQuery(
".spanforparamtooltip").hide(); jQuery(
"#helpseparate").show();
 
  112        size.val(
'').prop(
'disabled', 
true);
 
  113        unique.removeAttr(
'disabled');
 
  116      if (
type == 
'separate' || 
type == 
'point' || 
type == 
'linestrg' || 
type == 
'polygon')
 
  118        required.removeAttr(
'checked').prop(
'disabled', 
true); alwayseditable.removeAttr(
'checked').prop(
'disabled', 
true); list.removeAttr(
'checked').prop(
'disabled', 
true);
 
  119        jQuery(
'#size, #default_value, #langfile').val(
'').prop(
'disabled', 
true);
 
  120        jQuery(
'#list').val(3); 
 
  124        default_value.removeAttr(
'disabled');
 
  125        required.removeAttr(
'disabled'); alwayseditable.removeAttr(
'disabled'); list.removeAttr(
'disabled');
 
  128    init_typeoffields(jQuery(
"#type").val());
 
  129    jQuery(
"#type").change(
function() {
 
  130      init_typeoffields($(
this).val());
 
  134    jQuery(
"#computed_value").keyup(
function() {
 
  135      init_typeoffields(jQuery(
'#type').val());
 
  140<!-- 
Form to edit an extra field -->
 
  141<form action=
"<?php echo $_SERVER["PHP_SELF
"]; ?>?attrname=<?php echo $attrname; ?>" id=
"formeditextrafield" method=
"post">
 
  142<input 
type=
"hidden" name=
"token" value=
"<?php echo newToken(); ?>">
 
  143<input 
type=
"hidden" name=
"attrname" value=
"<?php echo $attrname; ?>">
 
  144<input 
type=
"hidden" name=
"action" value=
"update">
 
  145<input 
type=
"hidden" name=
"rowid" value=
"<?php echo(empty($rowid) ? '' : $rowid) ?>">
 
  146<input 
type=
"hidden" name=
"enabled" value=
"<?php echo dol_escape_htmltag($extrafields->attributes[$elementtype]['enabled'][$attrname]); ?>">
 
  150<
table summary=
"listofattributes" class=
"border centpercent">
 
  153$label = $extrafields->attributes[$elementtype][
'label'][$attrname];
 
  154$type = $extrafields->attributes[$elementtype][
'type'][$attrname];
 
  155$size = $extrafields->attributes[$elementtype][
'size'][$attrname];
 
  156$computed = $extrafields->attributes[$elementtype][
'computed'][$attrname];
 
  157$default = $extrafields->attributes[$elementtype][
'default'][$attrname];
 
  158$unique = $extrafields->attributes[$elementtype][
'unique'][$attrname];
 
  159$required = $extrafields->attributes[$elementtype][
'required'][$attrname];
 
  160$pos = $extrafields->attributes[$elementtype][
'pos'][$attrname];
 
  161$alwayseditable = $extrafields->attributes[$elementtype][
'alwayseditable'][$attrname];
 
  162$param = $extrafields->attributes[$elementtype][
'param'][$attrname];
 
  163$perms = $extrafields->attributes[$elementtype][
'perms'][$attrname];
 
  164$langfile = $extrafields->attributes[$elementtype][
'langfile'][$attrname];
 
  165$list = $extrafields->attributes[$elementtype][
'list'][$attrname];
 
  166$totalizable = $extrafields->attributes[$elementtype][
'totalizable'][$attrname];
 
  167$help = $extrafields->attributes[$elementtype][
'help'][$attrname];
 
  168$entitycurrentorall = $extrafields->attributes[$elementtype][
'entityid'][$attrname];
 
  169$printable = $extrafields->attributes[$elementtype][
'printable'][$attrname];
 
  170$enabled = $extrafields->attributes[$elementtype][
'enabled'][$attrname];
 
  171$css = $extrafields->attributes[$elementtype][
'css'][$attrname];
 
  172$cssview = $extrafields->attributes[$elementtype][
'cssview'][$attrname];
 
  173$csslist = $extrafields->attributes[$elementtype][
'csslist'][$attrname];
 
  176if (is_array($param)) {
 
  177  if (($type == 
'select') || ($type == 
'checkbox') || ($type == 
'radio')) {
 
  178    foreach ($param[
'options'] as $key => $value) {
 
  180        $param_chain .= $key.
','.$value.
"\n";
 
  183  } elseif (($type == 
'sellist') || ($type == 
'chkbxlst') || ($type == 
'link') || ($type == 
'password') || ($type == 
'separate')) {
 
  184    $paramlist = array_keys($param[
'options']);
 
  185    $param_chain = $paramlist[0];
 
  190<tr><td 
class=
"titlefieldcreate fieldrequired"><?php echo $langs->trans(
"LabelOrTranslationKey"); ?></td><td 
class=
"valeur"><input 
type=
"text" name=
"label" size=
"40" value=
"<?php echo $label; ?>"></td></tr>
 
  193<tr><td 
class=
"fieldrequired"><?php echo $langs->trans(
"AttributeCode"); ?></td><td 
class=
"valeur"><?php echo $attrname; ?></td></tr>
 
  196<tr><td 
class=
"fieldrequired"><?php echo $langs->trans(
"Type"); ?></td><td 
class=
"valeur">
 
  199$typewecanchangeinto = array(
 
  200  'varchar'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select', 
'password', 
'text', 
'html'),
 
  201  'double'=>array(
'double', 
'price'),
 
  202  'price'=>array(
'double', 
'price'),
 
  203  'text'=>array(
'text', 
'html'),
 
  204  'html'=>array(
'text', 
'html'),
 
  205  'password'=>array(
'password', 
'varchar'),
 
  206  'mail'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select'),
 
  207  'url'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select'),
 
  208  'phone'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select'),
 
  209  'ip'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select'),
 
  210  'select'=>array(
'varchar', 
'phone', 
'mail', 
'url', 
'ip', 
'select'),
 
  211  'date'=>array(
'date', 
'datetime')
 
  218if (in_array($type, array_keys($typewecanchangeinto))) {
 
  220  if (empty($formadmin)) {
 
  221    include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
 
  224  print $formadmin->selectTypeOfFields(
'type', 
GETPOST(
'type', 
'alpha') ? 
GETPOST(
'type', 
'alpha') : $type, $typewecanchangeinto);
 
  227  print $type2label[$type];
 
  228  print 
'<input type="hidden" name="type" id="type" value="'.$type.
'">';
 
  234<tr 
class=
"extra_size"><td 
class=
"fieldrequired"><?php echo $langs->trans(
"Size"); ?></td><td><input 
id=
"size" type=
"text" name=
"size" class=
"width50" value=
"<?php echo $size; ?>"></td></tr>
 
  236<!--  Value (
for some fields like password, select list, radio, ...) -->
 
  237<tr 
id=
"value_choice">
 
  239  <?php echo $langs->trans(
"Value"); ?>
 
  242  <
table class=
"nobordernopadding">
 
  244    <textarea 
name=
"param" id=
"param" cols=
"80" rows=
"<?php echo ROWS_4 ?>"><?php echo 
dol_htmlcleanlastbr($param_chain); ?></textarea>
 
  246  <span 
id=
"helpselect" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelpselect"), 1, 0, 
'', 0, 2, 
'helpvalue1')?></span>
 
  247  <span 
id=
"helpsellist" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelpsellist"), 1, 0, 
'', 0, 2, 
'helpvalue2')?></span>
 
  248  <span 
id=
"helpchkbxlst" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelpsellist"), 1, 0, 
'', 0, 2, 
'helpvalue3')?></span>
 
  249  <span 
id=
"helplink" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelplink").
'<br><br>'.$langs->trans(
"Examples").
':<br>'.$listofexamplesforlink, 1, 0, 
'', 0, 2, 
'helpvalue4')?></span>
 
  250  <span 
id=
"helppassword" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelpPassword"), 1, 0, 
'', 0, 2, 
'helpvalue5')?></span>
 
  251  <span 
id=
"helpseparate" class=
"spanforparamtooltip"><?php print $form->textwithpicto(
'', $langs->trans(
"ExtrafieldParamHelpSeparator"), 1, 0, 
'', 0, 2, 
'helpvalue6')?></span>
 
  258<tr><td 
class=
"titlefield"><?php echo $langs->trans(
"Position"); ?></td><td 
class=
"valeur"><input 
type=
"text" name=
"pos" class=
"width50" value=
"<?php echo dol_escape_htmltag($pos); ?>"></td></tr>
 
  260<!-- Language file -->
 
  261<tr><td 
class=
"titlefield"><?php echo $langs->trans(
"LanguageFile"); ?></td><td 
class=
"valeur"><input 
type=
"text" name=
"langfile" class=
"minwidth200" value=
"<?php echo dol_escape_htmltag($langfile); ?>"></td></tr>
 
  263<!-- Computed value -->
 
  264<tr 
class=
"extra_computed_value">
 
  266  <td><?php echo $form->textwithpicto($langs->trans(
"ComputedFormula"), $langs->trans(
"ComputedFormulaDesc"), 1, 
'help', 
'', 0, 2, 
'tooltipcompute'); ?></td>
 
  268  <td><?php echo $form->textwithpicto($langs->trans(
"ComputedFormula"), $langs->trans(
"ComputedFormulaDesc")).$form->textwithpicto($langs->trans(
"Computedpersistent"), $langs->trans(
"ComputedpersistentDesc"), 1, 
'warning'); ?></td>
 
  270<td 
class=
"valeur"><textarea 
name=
"computed_value" id=
"computed_value" class=
"quatrevingtpercent" rows=
"<?php echo ROWS_4 ?>"><?php echo 
dol_htmlcleanlastbr($computed); ?></textarea></td>
 
  273<!-- Default Value (at sql setup level) -->
 
  274<tr 
class=
"extra_default_value"><td><?php echo $langs->trans(
"DefaultValue").
' ('.$langs->trans(
"Database").
')'; ?></td><td 
class=
"valeur"><input 
id=
"default_value" type=
"text" name=
"default_value" class=
"width50" value=
"<?php echo dol_escape_htmltag($default); ?>"></td></tr>
 
  277<tr 
class=
"extra_unique"><td><?php echo $langs->trans(
"Unique"); ?></td><td 
class=
"valeur"><input 
id=
"unique" type=
"checkbox" name=
"unique"<?php echo($unique ? 
' checked' : 
''); ?>></td></tr>
 
  280<tr 
class=
"extra_required"><td><?php echo $langs->trans(
"Mandatory"); ?></td><td 
class=
"valeur"><input 
id=
"required" type=
"checkbox" name=
"required"<?php echo($required ? 
' checked' : 
''); ?>></td></tr>
 
  282<!-- Always editable -->
 
  283<tr 
class=
"extra_alwayseditable"><td><?php echo $form->textwithpicto($langs->trans(
"AlwaysEditable"), $langs->trans(
"EditableWhenDraftOnly")); ?></td><td 
class=
"valeur"><input 
id=
"alwayseditable" type=
"checkbox" name=
"alwayseditable"<?php echo($alwayseditable ? 
' checked' : 
''); ?>></td></tr>
 
  286<tr><td 
class=
"extra_list"><?php echo $form->textwithpicto($langs->trans(
"Visibility"), $langs->trans(
"VisibleDesc").
'<br><br>'.$langs->trans(
"ItCanBeAnExpression")); ?>
 
  287</td><td 
class=
"valeur"><input 
id=
"list" class=
"minwidth100" type=
"text" name=
"list" value=
"<?php echo($list != '' ? $list : '1'); ?>"></td></tr>
 
  289<!-- Visibility 
for PDF-->
 
  290<tr><td 
class=
"extra_pdf"><?php echo $form->textwithpicto($langs->trans(
"DisplayOnPdf"), $langs->trans(
"DisplayOnPdfDesc")); ?>
 
  291</td><td 
class=
"valeur"><input 
id=
"printable" class=
"minwidth100" type=
"text" name=
"printable" value=
"<?php echo dol_escape_htmltag($printable); ?>"></td></tr>
 
  293<!-- Can be summed -->
 
  294<tr 
class=
"extra_totalizable"><td><?php echo $form->textwithpicto($langs->trans(
"Totalizable"), $langs->trans(
"TotalizableDesc")); ?></td><td 
class=
"valeur"><input 
id=
"totalizable" type=
"checkbox" name=
"totalizable"<?php echo($totalizable ? 
' checked' : 
''); ?>></td></tr>
 
  297<tr 
class=
"extra_css"><td><?php echo $form->textwithpicto($langs->trans(
"CssOnEdit"), $langs->trans(
"HelpCssOnEditDesc")); ?></td><td 
class=
"valeur"><input 
id=
"css" type=
"text" name=
"css" value=
"<?php echo $css ?>"></td></tr>
 
  300<tr 
class=
"extra_cssview"><td><?php echo $form->textwithpicto($langs->trans(
"CssOnView"), $langs->trans(
"HelpCssOnViewDesc")); ?></td><td 
class=
"valeur"><input 
id=
"cssview" type=
"text" name=
"cssview" value=
"<?php echo $cssview; ?>"></td></tr>
 
  303<tr 
class=
"extra_csslist"><td><?php echo $form->textwithpicto($langs->trans(
"CssOnList"), $langs->trans(
"HelpCssOnListDesc")); ?></td><td 
class=
"valeur"><input 
id=
"csslist" type=
"text" name=
"csslist" value=
"<?php echo $csslist; ?>"></td></tr>
 
  306<tr 
class=
"help"><td><?php echo $form->textwithpicto($langs->trans(
"HelpOnTooltip"), $langs->trans(
"HelpOnTooltipDesc")); ?></td><td 
class=
"valeur"><input 
id=
"help" class=
"quatrevingtpercent" type=
"text" name=
"help" value=
"<?php echo dol_escape_htmltag($help); ?>"></td></tr>
 
  308<?php 
if (isModEnabled(
'multicompany')) { ?>
 
  309  <!-- Multicompany entity -->
 
  310  <tr><td><?php echo $langs->trans(
"AllEntities"); ?></td><td 
class=
"valeur"><input 
id=
"entitycurrentorall" type=
"checkbox" name=
"entitycurrentorall"<?php echo(empty($entitycurrentorall) ? 
' checked' : 
''); ?>></td></tr>
 
  313<!-- Show Enabled 
property when value is not a common value -->
 
  314<?php 
if ($enabled != 
'1') { ?>
 
  315  <tr 
class=
"help"><td><?php echo $langs->trans(
"EnabledCondition"); ?></td><td 
class=
"valeur">
 
  324<div 
class=
"center"><input 
type=
"submit" name=
"button" class=
"button button-save" value=
"<?php echo $langs->trans("Save
"); ?>">     
 
  325<input 
type=
"submit" name=
"button" class=
"button button-cancel" value=
"<?php echo $langs->trans("Cancel
"); ?>"></div>
 
  329<!-- END PHP TEMPLATE admin_extrafields_edit.tpl.php -->
 
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
 
dol_get_fiche_end($notab=0)
Return tab footer of a card.
 
getPictoForType($key, $morecss='')
Return the picto for a data type.
 
dol_htmlcleanlastbr($stringtodecode)
This function remove all ending   and br at end.
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
 
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
 
treeview li table
No Email.
 
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
 
$conf db name
Only used if Module[ID]Name translation string is not found.