SettingForm.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\UI\Widget\Graphs\Settings;
  3. use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\BaseForm;
  4. use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\FormConstants;
  5. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Hidden;
  6. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Number;
  7. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\Select2vueByValueOnly;
  8. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Fields\ColorPicker;
  9. use \ThurData\Servers\KerioEmail\Core\UI\Widget\Graphs\EmptyGraph;
  10. use function ThurData\Servers\KerioEmail\Core\Helper\sl;
  11. /**
  12. * Description of SettingForm
  13. *
  14. * @autor ThurData <info@thurdata.ch>
  15. */
  16. class SettingForm extends BaseForm
  17. {
  18. protected $id = 'settingForm';
  19. protected $name = 'settingForm';
  20. protected $title = 'settingForm';
  21. protected $providerClass = 'ThurData\Servers\KerioEmail\Core\UI\Widget\Graphs\Settings\SettingDataProvider';
  22. protected $configFields = [];
  23. public function initContent()
  24. {
  25. $this->setFormType(FormConstants::UPDATE);
  26. if ($this->configFields)
  27. {
  28. foreach ($this->configFields as $field)
  29. {
  30. $this->addField($field);
  31. }
  32. $this->loadDataToForm();
  33. return $this;
  34. }
  35. else {
  36. $field = new Hidden();
  37. $field->initIds('setting');
  38. $this->addField($field);
  39. $request = sl('request');
  40. $lang = sl('lang');
  41. $customParams = json_decode(html_entity_decode($request->get('customParams', "{}")));
  42. $defaultFilter = json_decode(html_entity_decode($request->get('defaultFilter', "{}")));
  43. if ($defaultFilter->type)
  44. {
  45. switch ($defaultFilter->type)
  46. {
  47. case EmptyGraph::GRAPH_FILTER_TYPE_INT:
  48. $startFilter = new Number();
  49. $startFilter->initIds('start')->setDefaultValue($defaultFilter->default->start);
  50. $endFilter = new Number();
  51. $endFilter->initIds('end')->setDefaultValue($defaultFilter->default->end);
  52. $this->addField($startFilter);
  53. $this->addField($endFilter);
  54. break;
  55. case EmptyGraph::GRAPH_FILTER_TYPE_STRING:
  56. case EmptyGraph::GRAPH_FILTER_TYPE_DATE:
  57. $startFilter = new Select2vueByValueOnly('start');
  58. $startFilter->setDefaultValue($defaultFilter->default->start);
  59. $endFilter = new Select2vueByValueOnly('end');
  60. $endFilter->setDefaultValue($defaultFilter->default->end);
  61. if ($customParams->labels)
  62. {
  63. $startFilter->setAvailableValues($customParams->labels);
  64. $endFilter->setAvailableValues($customParams->labels);
  65. }
  66. $this->addField($startFilter);
  67. $this->addField($endFilter);
  68. break;
  69. }
  70. }
  71. if ($customParams->labels && $defaultFilter->displayEditColor)
  72. {
  73. foreach ($customParams->labels as $label)
  74. {
  75. $colorPicker = new ColorPicker($label);
  76. $colorPicker->setRawTitle(str_replace(':labelName:', $label, $lang->T('labelColor')));
  77. $this->addField($colorPicker);
  78. }
  79. }
  80. $this->loadDataToForm();
  81. }
  82. }
  83. public function setConfigFields($fieldsList = [])
  84. {
  85. if ($fieldsList)
  86. {
  87. $this->configFields = $fieldsList;
  88. }
  89. return $this;
  90. }
  91. }