mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-08 00:52:01 +01:00
Fix missing array managements
This commit is contained in:
@@ -133,7 +133,7 @@ class FormSetup
|
||||
*/
|
||||
public function generateOutput($editMode = false)
|
||||
{
|
||||
global $hookmanager, $action;
|
||||
global $hookmanager, $action, $langs;
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||
|
||||
$parameters = array(
|
||||
@@ -177,6 +177,8 @@ class FormSetup
|
||||
$out .= '<div class="form-setup-button-container center">'; // Todo : remove .center by adding style to form-setup-button-container css class in all themes
|
||||
$out.= $this->htmlOutputMoreButton;
|
||||
$out .= '<input class="button button-save" type="submit" value="' . $this->langs->trans("Save") . '">'; // Todo fix dolibarr style for <button and use <button instead of input
|
||||
$out .= ' ';
|
||||
$out .= '<a class="button button-cancel" type="submit" href="' . $this->formAttributes['action'] . '">'.$langs->trans('Cancel').'</a>';
|
||||
$out .= '</div>';
|
||||
}
|
||||
|
||||
@@ -283,8 +285,13 @@ class FormSetup
|
||||
|
||||
$out = '';
|
||||
if ($item->enabled==1) {
|
||||
$trClass = 'oddeven';
|
||||
if ($item->getType() == 'title') {
|
||||
$trClass = 'liste_titre';
|
||||
}
|
||||
|
||||
$this->setupNotEmpty++;
|
||||
$out.= '<tr class="oddeven">';
|
||||
$out.= '<tr class="'.$trClass.'">';
|
||||
|
||||
$out.= '<td class="col-setup-title">';
|
||||
$out.= '<span id="helplink'.$item->confKey.'" class="spanforparamtooltip">';
|
||||
@@ -579,6 +586,15 @@ class FormSetupItem
|
||||
/** @var int $rank */
|
||||
public $rank = 0;
|
||||
|
||||
/** @var array set this var for options on select and multiselect items */
|
||||
public $fieldOptions = array();
|
||||
|
||||
/** @var callable $saveCallBack */
|
||||
public $saveCallBack;
|
||||
|
||||
/** @var callable $setValueFromPostCallBack */
|
||||
public $setValueFromPostCallBack;
|
||||
|
||||
/**
|
||||
* @var string $errors
|
||||
*/
|
||||
@@ -636,6 +652,10 @@ class FormSetupItem
|
||||
*/
|
||||
public function saveConfValue()
|
||||
{
|
||||
if (!empty($this->saveCallBack) && is_callable($this->saveCallBack)) {
|
||||
return call_user_func($this->saveCallBack);
|
||||
}
|
||||
|
||||
// Modify constant only if key was posted (avoid resetting key to the null value)
|
||||
if ($this->type != 'title') {
|
||||
$result = dolibarr_set_const($this->db, $this->confKey, $this->fieldValue, 'chaine', 0, '', $this->entity);
|
||||
@@ -647,6 +667,25 @@ class FormSetupItem
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an override function for saving data
|
||||
* @param callable $callBack a callable function
|
||||
* @return void
|
||||
*/
|
||||
public function setSaveCallBack(callable $callBack)
|
||||
{
|
||||
$this->saveCallBack = $callBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set an override function for get data from post
|
||||
* @param callable $callBack a callable function
|
||||
* @return void
|
||||
*/
|
||||
public function setValueFromPostCallBack(callable $callBack)
|
||||
{
|
||||
$this->setValueFromPostCallBack = $callBack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save const value based on htdocs/core/actions_setmoduleoptions.inc.php
|
||||
@@ -654,6 +693,10 @@ class FormSetupItem
|
||||
*/
|
||||
public function setValueFromPost()
|
||||
{
|
||||
if (!empty($this->setValueFromPostCallBack) && is_callable($this->setValueFromPostCallBack)) {
|
||||
return call_user_func($this->setValueFromPostCallBack);
|
||||
}
|
||||
|
||||
// Modify constant only if key was posted (avoid resetting key to the null value)
|
||||
if ($this->type != 'title') {
|
||||
if (preg_match('/category:/', $this->type)) {
|
||||
@@ -662,6 +705,13 @@ class FormSetupItem
|
||||
} else {
|
||||
$val_const = GETPOST($this->confKey, 'int');
|
||||
}
|
||||
} elseif ($this->type == 'multiselect') {
|
||||
$val = GETPOST($this->confKey, 'array');
|
||||
if ($val && is_array($val)) {
|
||||
$val_const = implode(',', $val);
|
||||
}
|
||||
} elseif ($this->type == 'html') {
|
||||
$val_const = GETPOST($this->confKey, 'restricthtml');
|
||||
} else {
|
||||
$val_const = GETPOST($this->confKey, 'alpha');
|
||||
}
|
||||
@@ -719,6 +769,10 @@ class FormSetupItem
|
||||
|
||||
if ($this->type == 'title') {
|
||||
$out.= $this->generateOutputField(); // title have no input
|
||||
} elseif ($this->type == 'multiselect') {
|
||||
$out.= $this->generateInputFieldMultiSelect();
|
||||
} elseif ($this->type == 'select') {
|
||||
$out.= $this->generateInputFieldSelect();
|
||||
} elseif ($this->type == 'textarea') {
|
||||
$out.= $this->generateInputFieldTextarea();
|
||||
} elseif ($this->type== 'html') {
|
||||
@@ -851,6 +905,29 @@ class FormSetupItem
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldMultiSelect()
|
||||
{
|
||||
$TSelected = array();
|
||||
if ($this->fieldValue) {
|
||||
$TSelected = explode(',', $this->fieldValue);
|
||||
}
|
||||
|
||||
return $this->form->multiselectarray($this->confKey, $this->fieldOptions, $TSelected, 0, 0, '', 0, 0, 'style="min-width:100px"');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function generateInputFieldSelect()
|
||||
{
|
||||
return $this->form->selectarray($this->confKey, $this->fieldOptions, $this->fieldValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* get the type : used for old module builder setup conf style conversion and tests
|
||||
* because this two class will quickly evolve it's important to not set or get directly $this->type (will be protected) so this method exist
|
||||
@@ -916,6 +993,10 @@ class FormSetupItem
|
||||
// nothing to do
|
||||
} elseif ($this->type == 'textarea') {
|
||||
$out.= dol_nl2br($this->fieldValue);
|
||||
} elseif ($this->type == 'multiselect') {
|
||||
$out.= $this->generateOutputFieldMultiSelect();
|
||||
} elseif ($this->type == 'select') {
|
||||
$out.= $this->generateOutputFieldSelect();
|
||||
} elseif ($this->type== 'html') {
|
||||
$out.= $this->fieldValue;
|
||||
} elseif ($this->type == 'yesno') {
|
||||
@@ -969,6 +1050,41 @@ class FormSetupItem
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function generateOutputFieldMultiSelect()
|
||||
{
|
||||
$outPut = '';
|
||||
$TSelected = array();
|
||||
if (!empty($this->fieldValue)) {
|
||||
$TSelected = explode(',', $this->fieldValue);
|
||||
}
|
||||
|
||||
if (!empty($TSelected)) {
|
||||
foreach ($TSelected as $selected) {
|
||||
if (!empty($this->fieldOptions[$selected])) {
|
||||
$outPut.= dolGetBadge('', $this->fieldOptions[$selected], 'info').' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
return $outPut;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function generateOutputFieldSelect()
|
||||
{
|
||||
$outPut = '';
|
||||
if (!empty($this->fieldOptions[$this->fieldValue])) {
|
||||
$outPut = $this->fieldOptions[$this->fieldValue];
|
||||
}
|
||||
|
||||
return $outPut;
|
||||
}
|
||||
|
||||
/*
|
||||
* METHODS FOR SETTING DISPLAY TYPE
|
||||
*/
|
||||
@@ -1076,4 +1192,37 @@ class FormSetupItem
|
||||
$this->type = 'title';
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set type of input as a simple title
|
||||
* no data to store
|
||||
* @param array $fieldOptions A table of field options
|
||||
* @return self
|
||||
*/
|
||||
public function setAsMultiSelect($fieldOptions)
|
||||
{
|
||||
if (is_array($fieldOptions)) {
|
||||
$this->fieldOptions = $fieldOptions;
|
||||
}
|
||||
|
||||
$this->type = 'multiselect';
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set type of input as a simple title
|
||||
* no data to store
|
||||
* @param array $fieldOptions A table of field options
|
||||
* @return self
|
||||
*/
|
||||
public function setAsSelect($fieldOptions)
|
||||
{
|
||||
if (is_array($fieldOptions)) {
|
||||
$this->fieldOptions = $fieldOptions;
|
||||
}
|
||||
|
||||
$this->type = 'select';
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user