public function getField() { $field = new rex_form_select_element(); $field->setAttribute('class', 'form-control'); $field->setLabel(rex_i18n::msg('system_setting_default_template_id')); $select = $field->getSelect(); $select->setSize(1); $select->setSelected(rex_template::getDefaultId()); $templates = rex_template::getTemplatesForCategory(0); if (empty($templates)) { $select->addOption(rex_i18n::msg('option_no_template'), 0); } else { $select->addArrayOptions($templates); } return $field; }
/** * Erstellt eine neue Kategorie. * * @param int $category_id KategorieId in der die neue Kategorie erstellt werden soll * @param array $data Array mit den Daten der Kategorie * * @throws rex_api_exception * * @return string Eine Statusmeldung */ public static function addCategory($category_id, array $data) { $message = ''; if (!is_array($data)) { throw new rex_api_exception('Expecting $data to be an array!'); } self::reqKey($data, 'catpriority'); self::reqKey($data, 'catname'); // parent may be null, when adding in the root cat $parent = rex_category::get($category_id); if ($parent) { $path = $parent->getPath(); $path .= $parent->getId() . '|'; } else { $path = '|'; } if ($data['catpriority'] <= 0) { $data['catpriority'] = 1; } if (!isset($data['name'])) { $data['name'] = $data['catname']; } if (!isset($data['status'])) { $data['status'] = 0; } $contentAvailable = rex_plugin::get('structure', 'content')->isAvailable(); if ($contentAvailable) { $startpageTemplates = []; if ($category_id != '') { // TemplateId vom Startartikel der jeweiligen Sprache vererben $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setQuery('select clang_id,template_id from ' . rex::getTablePrefix() . "article where id={$category_id} and startarticle=1"); for ($i = 0; $i < $sql->getRows(); $i++, $sql->next()) { $startpageTemplates[$sql->getValue('clang_id')] = $sql->getValue('template_id'); } } // Alle Templates der Kategorie $templates = rex_template::getTemplatesForCategory($category_id); } $user = rex::isBackend() ? null : 'frontend'; // Kategorie in allen Sprachen anlegen $AART = rex_sql::factory(); foreach (rex_clang::getAllIds() as $key) { if ($contentAvailable) { $template_id = rex_template::getDefaultId(); if (isset($startpageTemplates[$key]) && $startpageTemplates[$key] != '') { $template_id = $startpageTemplates[$key]; } // Wenn Template nicht vorhanden, dann entweder erlaubtes nehmen // oder leer setzen. if (!isset($templates[$template_id])) { $template_id = 0; if (count($templates) > 0) { $template_id = key($templates); } } } $AART->setTable(rex::getTablePrefix() . 'article'); if (!isset($id)) { $id = $AART->setNewId('id'); } else { $AART->setValue('id', $id); } $AART->setValue('clang_id', $key); $AART->setValue('template_id', $template_id); $AART->setValue('name', $data['name']); $AART->setValue('catname', $data['catname']); $AART->setValue('catpriority', $data['catpriority']); $AART->setValue('parent_id', $category_id); $AART->setValue('priority', 1); $AART->setValue('path', $path); $AART->setValue('startarticle', 1); $AART->setValue('status', $data['status']); $AART->addGlobalUpdateFields($user); $AART->addGlobalCreateFields($user); try { $AART->insert(); // ----- PRIOR if (isset($data['catpriority'])) { self::newCatPrio($category_id, $key, 0, $data['catpriority']); } $message = rex_i18n::msg('category_added_and_startarticle_created'); rex_article_cache::delete($id, $key); // ----- EXTENSION POINT // Objekte clonen, damit diese nicht von der extension veraendert werden koennen $message = rex_extension::registerPoint(new rex_extension_point('CAT_ADDED', $message, ['category' => clone $AART, 'id' => $id, 'parent_id' => $category_id, 'clang' => $key, 'name' => $data['catname'], 'priority' => $data['catpriority'], 'path' => $path, 'status' => $data['status'], 'article' => clone $AART, 'data' => $data])); } catch (rex_sql_exception $e) { throw new rex_api_exception($e); } } return $message; }
echo rex_view::title(rex_i18n::msg('title_templates')); $OUT = true; $function = rex_request('function', 'string'); $template_id = rex_request('template_id', 'int'); $save = rex_request('save', 'string'); $goon = rex_request('goon', 'string'); $success = ''; $error = ''; $content = ''; $message = ''; if ($function == 'delete') { $del = rex_sql::factory(); $del->setQuery('SELECT ' . rex::getTablePrefix() . 'article.id,' . rex::getTablePrefix() . 'template.name FROM ' . rex::getTablePrefix() . 'article LEFT JOIN ' . rex::getTablePrefix() . 'template ON ' . rex::getTablePrefix() . 'article.template_id=' . rex::getTablePrefix() . 'template.id WHERE ' . rex::getTablePrefix() . 'article.template_id="' . $template_id . '" LIMIT 0,10'); if ($del->getRows() > 0 || rex_template::getDefaultId() == $template_id) { $error = rex_i18n::msg('cant_delete_template_because_its_in_use', rex_i18n::msg('id') . ' = ' . $template_id); } else { $del->setQuery('DELETE FROM ' . rex::getTablePrefix() . 'template WHERE id = "' . $template_id . '" LIMIT 1'); // max. ein Datensatz darf loeschbar sein rex_file::delete(rex_path::addonCache('templates', $template_id . '.template')); $success = rex_i18n::msg('template_deleted'); } } elseif ($function == 'edit') { $legend = rex_i18n::msg('edit_template') . ' <small class="rex-primary-id">' . rex_i18n::msg('id') . ' = ' . $template_id . '</small>'; $hole = rex_sql::factory(); $hole->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id = "' . $template_id . '"'); if ($hole->getRows() == 1) { $templatename = $hole->getValue('name'); $template = $hole->getValue('content'); $active = $hole->getValue('active');
} // --------------------- ARTIKEL ADD FORM if ($function == 'add_art' && $KATPERM) { $tmpl_td = ''; if ($withTemplates) { $selectedTemplate = 0; if ($category_id) { // template_id vom Startartikel erben $sql2 = rex_sql::factory(); $sql2->setQuery('SELECT template_id FROM ' . rex::getTablePrefix() . 'article WHERE id=' . $category_id . ' AND clang_id=' . $clang . ' AND startarticle=1'); if ($sql2->getRows() == 1) { $selectedTemplate = $sql2->getValue('template_id'); } } if (!$selectedTemplate || !isset($TEMPLATE_NAME[$selectedTemplate])) { $selectedTemplate = rex_template::getDefaultId(); } if ($selectedTemplate && isset($TEMPLATE_NAME[$selectedTemplate])) { $template_select->setSelected($selectedTemplate); } $tmpl_td = '<td data-title="' . rex_i18n::msg('header_template') . '">' . $template_select->get() . '</td>'; } $echo .= '<tr class="mark"> <td class="rex-table-icon"><i class="rex-icon rex-icon-article"></i></td> <td class="rex-table-id" data-title="' . rex_i18n::msg('header_id') . '">-</td> <td data-title="' . rex_i18n::msg('header_article_name') . '"><input class="form-control" type="text" name="article-name" autofocus /></td> ' . $tmpl_td . ' <td data-title="' . rex_i18n::msg('header_date') . '">' . rex_formatter::strftime(time(), 'date') . '</td> <td class="rex-table-priority" data-title="' . rex_i18n::msg('header_priority') . '"><input class="form-control" type="text" name="article-position" value="' . ($artPager->getRowCount() + 1) . '" /></td> <td class="rex-table-action" colspan="3"><input type="hidden" name="rex-api-call" value="article_add" /><button class="btn btn-save" type="submit" name="artadd_function"' . rex::getAccesskey(rex_i18n::msg('article_add'), 'save') . '>' . rex_i18n::msg('article_add') . '</button></td> </tr>