Edit.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /**
  3. * This file is part of the ForkBB <https://github.com/forkbb>.
  4. *
  5. * @copyright (c) Visman <mio.visman@yandex.ru, https://github.com/MioVisman>
  6. * @license The MIT License (MIT)
  7. */
  8. declare(strict_types=1);
  9. namespace ForkBB\Models\Pages\Admin\Parser;
  10. use ForkBB\Core\Validator;
  11. use ForkBB\Models\Page;
  12. use ForkBB\Models\Pages\Admin\Parser;
  13. use ForkBB\Models\Config\Config;
  14. use function \ForkBB\__;
  15. class Edit extends Parser
  16. {
  17. /**
  18. * Редактирование натроек парсера
  19. */
  20. public function edit(array $args, string $method): Page
  21. {
  22. $config = clone $this->c->config;
  23. if ('POST' === $method) {
  24. $v = $this->c->Validator->reset()
  25. ->addValidators([
  26. ])->addRules([
  27. 'token' => 'token:AdminParser',
  28. 'b_message_bbcode' => 'required|integer|in:0,1',
  29. 'b_sig_bbcode' => 'required|integer|in:0,1',
  30. 'b_smilies' => 'required|integer|in:0,1',
  31. 'b_smilies_sig' => 'required|integer|in:0,1',
  32. 'b_make_links' => 'required|integer|in:0,1',
  33. ])->addAliases([
  34. ])->addArguments([
  35. ])->addMessages([
  36. ]);
  37. $valid = $v->validation($_POST);
  38. $data = $v->getData();
  39. unset($data['token']);
  40. foreach ($data as $attr => $value) {
  41. $config->$attr = $value;
  42. }
  43. if ($valid) {
  44. $config->save();
  45. return $this->c->Redirect->page('AdminParser')->message('Parser settings updated redirect');
  46. }
  47. $this->fIswev = $v->getErrors();
  48. }
  49. $this->nameTpl = 'admin/form';
  50. $this->form = $this->formEdit($config);
  51. $this->titleForm = 'Parser settings head';
  52. $this->classForm = ['parser-settings'];
  53. return $this;
  54. }
  55. /**
  56. * Формирует данные для формы
  57. */
  58. protected function formEdit(Config $config): array
  59. {
  60. $form = [
  61. 'action' => $this->c->Router->link('AdminParser'),
  62. 'hidden' => [
  63. 'token' => $this->c->Csrf->create('AdminParser'),
  64. ],
  65. 'sets' => [],
  66. 'btns' => [
  67. 'save' => [
  68. 'type' => 'submit',
  69. 'value' => __('Save changes'),
  70. ],
  71. ],
  72. ];
  73. $yn = [1 => __('Yes'), 0 => __('No')];
  74. $form['sets']['bbcode'] = [
  75. 'legend' => 'BBCode subhead',
  76. 'fields' => [
  77. 'b_message_bbcode' => [
  78. 'type' => 'radio',
  79. 'value' => $config->b_message_bbcode,
  80. 'values' => $yn,
  81. 'caption' => 'BBCode label',
  82. 'help' => 'BBCode help',
  83. ],
  84. 'b_sig_bbcode' => [
  85. 'type' => 'radio',
  86. 'value' => $config->b_sig_bbcode,
  87. 'values' => $yn,
  88. 'caption' => 'BBCode sigs label',
  89. 'help' => 'BBCode sigs help',
  90. ],
  91. 'b_make_links' => [
  92. 'type' => 'radio',
  93. 'value' => $config->b_make_links,
  94. 'values' => $yn,
  95. 'caption' => 'Clickable links label',
  96. 'help' => 'Clickable links help',
  97. ],
  98. 'bbcode_management' => [
  99. 'type' => 'btn',
  100. 'caption' => null,
  101. 'value' => __('BBCode management'),
  102. 'title' => __('BBCode management'),
  103. 'link' => $this->c->Router->link('AdminBBCode'),
  104. ],
  105. ],
  106. ];
  107. $form['sets']['smilies'] = [
  108. 'legend' => 'Smilies subhead',
  109. 'fields' => [
  110. 'b_smilies' => [
  111. 'type' => 'radio',
  112. 'value' => $config->b_smilies,
  113. 'values' => $yn,
  114. 'caption' => 'Smilies mess label',
  115. 'help' => 'Smilies mess help',
  116. ],
  117. 'b_smilies_sig' => [
  118. 'type' => 'radio',
  119. 'value' => $config->b_smilies_sig,
  120. 'values' => $yn,
  121. 'caption' => 'Smilies sigs label',
  122. 'help' => 'Smilies sigs help',
  123. ],
  124. 'smilies_management' => [
  125. 'type' => 'btn',
  126. 'caption' => null,
  127. 'value' => __('Smilies management'),
  128. 'title' => __('Smilies management'),
  129. 'link' => $this->c->Router->link('AdminSmilies'),
  130. ],
  131. ],
  132. ];
  133. return $form;
  134. }
  135. }