admin_extrafields_edit.tpl.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?php
  2. /* Copyright (C) 2010-2012 Laurent Destailleur <eldy@users.sourceforge.net>
  3. * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /**
  19. * The following vars must be defined:
  20. * $type2label
  21. * $form
  22. * $conf, $lang,
  23. * The following vars may also be defined:
  24. * $elementtype
  25. */
  26. ?>
  27. <!-- BEGIN PHP TEMPLATE admin_extrafields_edit.tpl.php -->
  28. <script type="text/javascript">
  29. jQuery(document).ready(function() {
  30. function init_typeoffields(type)
  31. {
  32. console.log("select new type "+type);
  33. var size = jQuery("#size");
  34. var computed_value = jQuery("#computed_value");
  35. var default_value = jQuery("#default_value");
  36. var unique = jQuery("#unique");
  37. var required = jQuery("#required");
  38. var alwayseditable = jQuery("#alwayseditable");
  39. var list = jQuery("#list");
  40. <?php
  41. if((GETPOST('type') != "select") && (GETPOST('type') != "sellist"))
  42. {
  43. print 'jQuery("#value_choice").hide();';
  44. }
  45. if (GETPOST('type') == "separate")
  46. {
  47. print "jQuery('#size, #default_value').val('').prop('disabled', true);";
  48. print 'jQuery("#value_choice").hide();';
  49. }
  50. ?>
  51. // Case of computed field
  52. if (type == 'varchar' || type == 'int' || type == 'double' || type == 'price') {
  53. jQuery("tr.extra_computed_value").show();
  54. } else {
  55. computed_value.val(''); jQuery("tr.extra_computed_value").hide();
  56. }
  57. if (computed_value.val())
  58. {
  59. console.log("We enter a computed formula");
  60. jQuery("#default_value").val('');
  61. /* jQuery("#unique, #required, #alwayseditable, #ishidden, #list").removeAttr('checked'); */
  62. jQuery("#default_value, #unique, #required, #alwayseditable, #ishidden, #list").attr('disabled', true);
  63. jQuery("tr.extra_default_value, tr.extra_unique, tr.extra_required, tr.extra_alwayseditable, tr.extra_ishidden, tr.extra_list").hide();
  64. }
  65. else
  66. {
  67. console.log("No computed formula");
  68. jQuery("#default_value, #unique, #required, #alwayseditable, #ishidden, #list").attr('disabled', false);
  69. jQuery("tr.extra_default_value, tr.extra_unique, tr.extra_required, tr.extra_alwayseditable, tr.extra_ishidden, tr.extra_list").show();
  70. }
  71. if (type == 'date') { size.val('').prop('disabled', true); unique.removeAttr('disabled'); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide(); }
  72. else if (type == 'datetime') { size.val('').prop('disabled', true); unique.removeAttr('disabled'); jQuery("#value_choice").hide(); jQuery("#helpchkbxlst").hide();}
  73. else if (type == 'double') { size.removeAttr('disabled'); unique.removeAttr('disabled'); jQuery("#value_choice").hide(); jQuery("#helpchkbxlst").hide();}
  74. else if (type == 'int') { size.removeAttr('disabled'); unique.removeAttr('disabled'); jQuery("#value_choice").hide(); jQuery("#helpchkbxlst").hide();}
  75. else if (type == 'text') { size.removeAttr('disabled'); unique.prop('disabled', true).removeAttr('checked'); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide(); }
  76. else if (type == 'varchar') { size.removeAttr('disabled'); unique.removeAttr('disabled'); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide(); }
  77. else if (type == 'boolean') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide();}
  78. else if (type == 'price') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").hide();jQuery("#helpchkbxlst").hide();}
  79. else if (type == 'select') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();jQuery("#helplink").hide();}
  80. else if (type == 'sellist') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").show();jQuery("#helpselect").hide();jQuery("#helpsellist").show();jQuery("#helpchkbxlst").hide();jQuery("#helplink").hide();}
  81. else if (type == 'radio') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();jQuery("#helplink").hide();}
  82. else if (type == 'checkbox') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").show();jQuery("#helpselect").show();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();jQuery("#helplink").hide();}
  83. else if (type == 'chkbxlst') { size.val('').prop('disabled', true); unique.removeAttr('checked').prop('disabled', true); jQuery("#value_choice").show();jQuery("#helpselect").hide();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").show();jQuery("#helplink").hide();}
  84. else if (type == 'link') { size.val('').prop('disabled', true); unique.removeAttr('disabled'); jQuery("#value_choice").show();jQuery("#helpselect").hide();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();jQuery("#helplink").show();}
  85. else if (type == 'separate') { 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").hide();jQuery("#helpselect").hide();jQuery("#helpsellist").hide();jQuery("#helpchkbxlst").hide();jQuery("#helplink").hide();}
  86. else { // type = string
  87. size.val('').prop('disabled', true);
  88. unique.removeAttr('disabled');
  89. }
  90. if (type == 'separate')
  91. {
  92. required.removeAttr('checked').prop('disabled', true); alwayseditable.removeAttr('checked').prop('disabled', true); list.val('').prop('disabled', true);
  93. jQuery('#size, #default_value').val('').prop('disabled', true);
  94. }
  95. else
  96. {
  97. default_value.removeAttr('disabled');
  98. required.removeAttr('disabled'); alwayseditable.removeAttr('disabled'); list.val('').removeAttr('disabled');
  99. }
  100. }
  101. init_typeoffields(jQuery("#type").val());
  102. jQuery("#type").change(function() {
  103. init_typeoffields($(this).val());
  104. });
  105. // If we enter a formula, we disable other fields
  106. jQuery("#computed_value").keyup(function() {
  107. init_typeoffields(jQuery('#type').val());
  108. });
  109. });
  110. </script>
  111. <form action="<?php echo $_SERVER["PHP_SELF"]; ?>?attrname=<?php echo $attrname; ?>" method="post">
  112. <input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
  113. <input type="hidden" name="attrname" value="<?php echo $attrname; ?>">
  114. <input type="hidden" name="action" value="update">
  115. <input type="hidden" name="rowid" value="<?php echo $rowid ?>">
  116. <?php dol_fiche_head(); ?>
  117. <table summary="listofattributes" class="border centpercent">
  118. <?php
  119. $type=$extrafields->attribute_type[$attrname];
  120. $size=$extrafields->attribute_size[$attrname];
  121. $computed=$extrafields->attribute_computed[$attrname];
  122. $default=$extrafields->attribute_default[$attrname];
  123. $unique=$extrafields->attribute_unique[$attrname];
  124. $required=$extrafields->attribute_required[$attrname];
  125. $pos=$extrafields->attribute_pos[$attrname];
  126. $alwayseditable=$extrafields->attribute_alwayseditable[$attrname];
  127. $param=$extrafields->attribute_param[$attrname];
  128. $perms=$extrafields->attribute_perms[$attrname];
  129. $list=$extrafields->attribute_list[$attrname];
  130. if (! empty($conf->global->MAIN_CAN_HIDE_EXTRAFIELDS)) {
  131. $ishidden=$extrafields->attribute_hidden[$attrname];
  132. }
  133. if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param))
  134. {
  135. $param_chain = '';
  136. foreach ($param['options'] as $key => $value)
  137. {
  138. if(strlen($key))
  139. {
  140. $param_chain .= $key.','.$value."\n";
  141. }
  142. }
  143. }
  144. elseif (($type== 'sellist') || ($type == 'chkbxlst') || ($type == 'link') )
  145. {
  146. $paramlist=array_keys($param['options']);
  147. $param_chain = $paramlist[0];
  148. }
  149. ?>
  150. <!-- Label -->
  151. <tr><td class="titlefield fieldrequired"><?php echo $langs->trans("Label"); ?></td><td class="valeur"><input type="text" name="label" size="40" value="<?php echo $extrafields->attribute_label[$attrname]; ?>"></td></tr>
  152. <!-- Code -->
  153. <tr><td class="fieldrequired"><?php echo $langs->trans("AttributeCode"); ?></td><td class="valeur"><?php echo $attrname; ?></td></tr>
  154. <!-- Type -->
  155. <tr><td class="fieldrequired"><?php echo $langs->trans("Type"); ?></td><td class="valeur">
  156. <?php
  157. // Define list of possible type transition
  158. $typewecanchangeinto=array(
  159. 'varchar'=>array('varchar', 'phone', 'mail', 'url', 'select'),
  160. 'mail'=>array('varchar', 'phone', 'mail', 'url', 'select'),
  161. 'url'=>array('varchar', 'phone', 'mail', 'url', 'select'),
  162. 'phone'=>array('varchar', 'phone', 'mail', 'url', 'select'),
  163. 'select'=>array('varchar', 'phone', 'mail', 'url', 'select')
  164. );
  165. if (in_array($type, array_keys($typewecanchangeinto)))
  166. {
  167. $newarray=array();
  168. print '<select id="type" class="flat type" name="type">';
  169. foreach($type2label as $key => $val)
  170. {
  171. $selected='';
  172. if ($key == (GETPOST('type')?GETPOST('type'):$type)) $selected=' selected="selected"';
  173. if (in_array($key, $typewecanchangeinto[$type])) print '<option value="'.$key.'"'.$selected.'>'.$val.'</option>';
  174. else print '<option value="'.$key.'" disabled="disabled"'.$selected.'>'.$val.'</option>';
  175. }
  176. print '</select>';
  177. }
  178. else
  179. {
  180. print $type2label[$type];
  181. print '<input type="hidden" name="type" id="type" value="'.$type.'">';
  182. }
  183. ?>
  184. </td></tr>
  185. <!-- Size -->
  186. <tr class="extra_size"><td class="fieldrequired"><?php echo $langs->trans("Size"); ?></td><td><input id="size" type="text" name="size" size="5" value="<?php echo $size; ?>"></td></tr>
  187. <!-- Value (for select list / radio) -->
  188. <tr id="value_choice">
  189. <td>
  190. <?php echo $langs->trans("Value"); ?>
  191. </td>
  192. <td>
  193. <table class="nobordernopadding">
  194. <tr><td>
  195. <textarea name="param" id="param" cols="80" rows="<?php echo ROWS_4 ?>"><?php echo dol_htmlcleanlastbr($param_chain); ?></textarea>
  196. </td><td>
  197. <span id="helpselect"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?></span>
  198. <span id="helpsellist"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?></span>
  199. <span id="helpchkbxlst"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"),1,0)?></span>
  200. <span id="helplink"><?php print $form->textwithpicto('', $langs->trans("ExtrafieldParamHelplink"),1,0)?></span>
  201. </td></tr>
  202. </table>
  203. </td>
  204. </tr>
  205. <!-- Position -->
  206. <tr><td class="titlefield"><?php echo $langs->trans("Position"); ?></td><td class="valeur"><input type="text" name="pos" size="5" value="<?php echo dol_escape_htmltag($extrafields->attribute_pos[$attrname]); ?>"></td></tr>
  207. <!-- Computed value -->
  208. <tr class="extra_computed_value"><td><?php echo $form->textwithpicto($langs->trans("ComputedFormula"), $langs->trans("ComputedFormulaDesc"), 1, 'help', '', 0, 2, 'tooltipcompute'); ?></td><td class="valeur"><input id="computed_value" class="quatrevingtpercent" type="text" name="computed_value" value="<?php echo dol_escape_htmltag($computed); ?>"></td></tr>
  209. <!-- Default value -->
  210. <!-- Edit of default into sql structure not yet supported -->
  211. <!-- Unique -->
  212. <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>
  213. <!-- Required -->
  214. <tr class="extra_required"><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required"<?php echo ($required?' checked':''); ?>></td></tr>
  215. <!-- Always editable -->
  216. <tr class="extra_alwayseditable"><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable"<?php echo ($alwayseditable?' checked':''); ?>></td></tr>
  217. <!-- Is visible or not -->
  218. <?php if (! empty($conf->global->MAIN_CAN_HIDE_EXTRAFIELDS)) { ?>
  219. <tr><td><?php echo $langs->trans("Hidden"); ?></td><td class="valeur"><input id="ishidden" type="checkbox" name="ishidden"<?php echo ($ishidden ?' checked':''); ?>></td></tr>
  220. <?php } ?>
  221. <!-- By default visible into list -->
  222. <?php if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { ?>
  223. <tr><td><?php echo $langs->trans("ByDefaultInList"); ?>
  224. <?php echo img_info($langs->trans("FeatureNotYetSupported")); ?>
  225. </td><td class="valeur"><input id="list" type="checkbox" name="list" <?php echo ($list?' checked':''); ?>></td></tr>
  226. <?php } ?>
  227. </table>
  228. <?php dol_fiche_end(); ?>
  229. <div align="center"><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  230. <input type="submit" name="button" class="button" value="<?php echo $langs->trans("Cancel"); ?>"></div>
  231. </form>
  232. <!-- END PHP TEMPLATE admin_extrafields_edit.tpl.php -->