1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10:
11:
12: use Xoops\Core\Kernel\Criteria;
13:
14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
24:
25: include_once dirname(dirname(__DIR__)) . '/include/common.php';
26:
27: class PublisherCategoryForm extends Xoops\Form\ThemeForm
28: {
29: 30: 31:
32: private $_subCatsCount = 4;
33:
34: 35: 36:
37: public function setSubCatsCount($count)
38: {
39: $this->_subCatsCount = (int)$count;
40: }
41:
42: 43: 44:
45: public function __construct(PublisherCategory $obj)
46: {
47: $xoops = Xoops::getInstance();
48: $publisher = Publisher::getInstance();
49:
50: $member_handler = $xoops->getHandlerMember();
51: $userGroups = $member_handler->getGroupList();
52:
53: parent::__construct(_AM_PUBLISHER_CATEGORY, "form", $xoops->getEnv('PHP_SELF'));
54: $this->setExtra('enctype="multipart/form-data"');
55:
56:
57: $criteria = new Criteria(null);
58: $criteria->setSort('weight');
59: $criteria->setOrder('ASC');
60: $categories = $publisher->getCategoryHandler()->getObjects($criteria);
61: $mytree = new XoopsObjectTree($categories, "categoryid", "parentid");
62: $cat_select = $mytree->makeSelBox('parentid', 'name', '--', $obj->getVar('parentid'), true);
63: $this->addElement(new Xoops\Form\Label(_AM_PUBLISHER_PARENT_CATEGORY_EXP, $cat_select));
64:
65:
66: $this->addElement(new Xoops\Form\Text(_AM_PUBLISHER_CATEGORY, 'name', 50, 255, $obj->getVar('name', 'e')), true);
67:
68:
69: $this->addElement(new Xoops\Form\TextArea(_AM_PUBLISHER_COLDESCRIPT, 'description', $obj->getVar('description', 'e'), 7, 60));
70:
71:
72: $groups = $xoops->getUserGroups();
73: $gperm_handler = $publisher->getGrouppermHandler();
74: $module_id = $publisher->getModule()->mid();
75: $allowed_editors = PublisherUtils::getEditors($gperm_handler->getItemIds('editors', $groups, $module_id));
76: $nohtml = false;
77: if (count($allowed_editors) > 0) {
78: $editor = @$_POST['editor'];
79: if (!empty($editor)) {
80: PublisherUtils::setCookieVar('publisher_editor', $editor);
81: } else {
82: $editor = PublisherUtils::getCookieVar('publisher_editor');
83: if (empty($editor) && $xoops->isUser()) {
84: $editor = $xoops->user->getVar('publisher_editor');
85: }
86: }
87: $editor = (empty($editor) || !in_array($editor, $allowed_editors)) ? $publisher->getConfig('submit_editor') : $editor;
88: $form_editor = new Xoops\Form\SelectEditor($this, 'editor', $editor, $nohtml, $allowed_editors);
89: $this->addElement($form_editor);
90: } else {
91: $editor = $publisher->getConfig('submit_editor');
92: }
93:
94: $editor_configs = array();
95: $editor_configs['rows'] = $publisher->getConfig('submit_editor_rows') == '' ? 35 : $publisher->getConfig('submit_editor_rows');
96: $editor_configs['cols'] = $publisher->getConfig('submit_editor_cols') == '' ? 60 : $publisher->getConfig('submit_editor_cols');
97: $editor_configs['width'] = $publisher->getConfig('submit_editor_width') == '' ? "100%" : $publisher->getConfig('submit_editor_width');
98: $editor_configs['height'] = $publisher->getConfig('submit_editor_height') == '' ? "400px" : $publisher->getConfig('submit_editor_height');
99:
100: $editor_configs['name'] = 'header';
101: $editor_configs['value'] = $obj->getVar('header', 'e');
102:
103: $text_header = new Xoops\Form\Editor(_AM_PUBLISHER_CATEGORY_HEADER, $editor, $editor_configs, $nohtml, $onfailure = null);
104: $text_header->setDescription(_AM_PUBLISHER_CATEGORY_HEADER_DSC);
105: $this->addElement($text_header);
106:
107:
108: $image_select = new Xoops\Form\Select('', 'image', $obj->image());
109: \Xoops\Core\Lists\ImageFile::setOptionsArray($image_select, PublisherUtils::getImageDir('category'));
110: $image_select->setExtra("onchange='showImgSelected(\"image3\", \"image\", \"" . 'uploads/' . PUBLISHER_DIRNAME . '/images/category/' . "\", \"\", \"" . \XoopsBaseConfig::get('url') . "\")'");
111: $image_tray = new Xoops\Form\ElementTray(_AM_PUBLISHER_IMAGE, ' ');
112: $image_tray->addElement($image_select);
113: $image_tray->addElement(new Xoops\Form\Label('', "<br /><br /><img src='" . PublisherUtils::getImageDir('category', false) . $obj->image() . "' name='image3' id='image3' alt='' />"));
114: $image_tray->setDescription(_AM_PUBLISHER_IMAGE_DSC);
115: $this->addElement($image_tray);
116:
117:
118:
119: $file_box = new Xoops\Form\File(_AM_PUBLISHER_IMAGE_UPLOAD, "image_file");
120: $file_box->set('size', 45);
121: $file_box->setDescription(_AM_PUBLISHER_IMAGE_UPLOAD_DSC);
122: $this->addElement($file_box);
123:
124:
125: $text_short_url = new Xoops\Form\Text(_AM_PUBLISHER_CATEGORY_SHORT_URL, 'short_url', 50, 255, $obj->getVar('short_url', 'e'));
126: $text_short_url->setDescription(_AM_PUBLISHER_CATEGORY_SHORT_URL_DSC);
127: $this->addElement($text_short_url);
128:
129:
130: $text_meta_keywords = new Xoops\Form\TextArea(_AM_PUBLISHER_CATEGORY_META_KEYWORDS, 'meta_keywords', $obj->getVar('meta_keywords', 'e'), 7, 60);
131: $text_meta_keywords->setDescription(_AM_PUBLISHER_CATEGORY_META_KEYWORDS_DSC);
132: $this->addElement($text_meta_keywords);
133:
134:
135: $text_meta_description = new Xoops\Form\TextArea(_AM_PUBLISHER_CATEGORY_META_DESCRIPTION, 'meta_description', $obj->getVar('meta_description', 'e'), 7, 60);
136: $text_meta_description->setDescription(_AM_PUBLISHER_CATEGORY_META_DESCRIPTION_DSC);
137: $this->addElement($text_meta_description);
138:
139:
140: $this->addElement(new Xoops\Form\Text(_AM_PUBLISHER_COLPOSIT, 'weight', 4, 4, $obj->getVar('weight')));
141:
142:
143:
144: $this->addElement(new Xoops\Form\Text("Custom template", 'template', 50, 255, $obj->getVar('template', 'e')), false);
145:
146:
147: $groups_read_checkbox = new Xoops\Form\Checkbox(_AM_PUBLISHER_PERMISSIONS_CAT_READ, 'groups_read[]', $obj->getGroups_read());
148: foreach ($userGroups as $group_id => $group_name) {
149: $groups_read_checkbox->addOption($group_id, $group_name);
150: }
151: $this->addElement($groups_read_checkbox);
152:
153:
154: $groups_submit_checkbox = new Xoops\Form\Checkbox(_AM_PUBLISHER_PERMISSIONS_CAT_SUBMIT, 'groups_submit[]', $obj->getGroups_submit());
155: $groups_submit_checkbox->setDescription(_AM_PUBLISHER_PERMISSIONS_CAT_SUBMIT_DSC);
156: foreach ($userGroups as $group_id => $group_name) {
157: $groups_submit_checkbox->addOption($group_id, $group_name);
158: }
159: $this->addElement($groups_submit_checkbox);
160:
161:
162: $groups_moderation_checkbox = new Xoops\Form\Checkbox(_AM_PUBLISHER_PERMISSIONS_CAT_MODERATOR, 'groups_moderation[]', $obj->getGroups_moderation());
163: $groups_moderation_checkbox->setDescription(_AM_PUBLISHER_PERMISSIONS_CAT_MODERATOR_DSC);
164: foreach ($userGroups as $group_id => $group_name) {
165: $groups_moderation_checkbox->addOption($group_id, $group_name);
166: }
167: $this->addElement($groups_moderation_checkbox);
168:
169: $moderator = new Xoops\Form\SelectUser(_AM_PUBLISHER_CATEGORY_MODERATOR, 'moderator', true, $obj->getVar('moderator', 'e'), 1, false);
170: $moderator->setDescription(_AM_PUBLISHER_CATEGORY_MODERATOR_DSC);
171: $this->addElement($moderator);
172:
173: $cat_tray = new Xoops\Form\ElementTray(_AM_PUBLISHER_SCATEGORYNAME, '<br /><br />');
174: for ($i = 0; $i < $this->_subCatsCount; ++$i) {
175: if ($i < (isset($_POST['scname']) ? sizeof($_POST['scname']) : 0)) {
176: $subname = isset($_POST['scname']) ? $_POST['scname'][$i] : '';
177: } else {
178: $subname = '';
179: }
180: $cat_tray->addElement(new Xoops\Form\Text('', 'scname[' . $i . ']', 50, 255, $subname));
181: }
182: $t = new Xoops\Form\Text('', 'nb_subcats', 3, 2);
183: $l = new Xoops\Form\Label('', sprintf(_AM_PUBLISHER_ADD_OPT, $t->render()));
184: $b = new Xoops\Form\Button('', 'submit_subcats', _AM_PUBLISHER_ADD_OPT_SUBMIT, 'submit');
185:
186: if (!$obj->getVar('categoryid')) {
187: $b->setExtra('onclick="this.form.elements.op.value=\'addsubcats\'"');
188: } else {
189: $b->setExtra('onclick="this.form.elements.op.value=\'mod\'"');
190: }
191:
192: $r = new Xoops\Form\ElementTray('');
193: $r->addElement($l);
194: $r->addElement($b);
195: $cat_tray->addElement($r);
196: $this->addElement($cat_tray);
197:
198: $this->addElement(new Xoops\Form\Hidden('categoryid', $obj->getVar('categoryid')));
199: $this->addElement(new Xoops\Form\Hidden('nb_sub_yet', $this->_subCatsCount));
200:
201:
202: $buttonTray = new Xoops\Form\ElementTray('', '');
203:
204:
205: if (!$obj->getVar('categoryid')) {
206: $buttonTray->addElement(new Xoops\Form\Button('', 'addcategory', _AM_PUBLISHER_CREATE, 'submit'));
207:
208: $buttonClear = new Xoops\Form\Button('', '', _AM_PUBLISHER_CLEAR, 'reset');
209: $buttonTray->addElement($buttonClear);
210:
211: $buttonCancel = new Xoops\Form\Button('', '', _AM_PUBLISHER_CANCEL, 'button');
212: $buttonCancel->setExtra('onclick="history.go(-1)"');
213: $buttonTray->addElement($buttonCancel);
214:
215: $this->addElement($buttonTray);
216: } else {
217: $buttonTray->addElement(new Xoops\Form\Button('', 'addcategory', _AM_PUBLISHER_MODIFY, 'submit'));
218:
219: $buttonCancel = new Xoops\Form\Button('', '', _AM_PUBLISHER_CANCEL, 'button');
220: $buttonCancel->setExtra('onclick="history.go(-1)"');
221: $buttonTray->addElement($buttonCancel);
222:
223: $this->addElement($buttonTray);
224: }
225: }
226: }
227: