You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

312 lines
12 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
$section = 'admin';
require_once('tiki-setup.php');
$access->check_feature(['feature_wiki_templates','feature_cms_templates','feature_file_galleries_templates'], '', 'features', true);
$templateslib = TikiLib::lib('template');
$auto_query_args = ['templateId'];
//get_strings tra('Content Templates')
if (! isset($_REQUEST["templateId"])) {
$_REQUEST["templateId"] = 0;
}
$smarty->assign('templateId', $_REQUEST["templateId"]);
if ($_REQUEST["templateId"]) {
$info = $templateslib->get_template($_REQUEST["templateId"]);
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'html')) {
$info["section_html"] = 'y';
} else {
$info["section_html"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'wiki')) {
$info["section_wiki"] = 'y';
} else {
$info["section_wiki"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'wiki_html')) {
$info["section_wiki_html"] = 'y';
} else {
$info["section_wiki_html"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'file_galleries')) {
$info["section_file_galleries"] = 'y';
} else {
$info["section_file_galleries"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'newsletters')) {
$info["section_newsletters"] = 'y';
} else {
$info["section_newsletters"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'events')) {
$info["section_events"] = 'y';
} else {
$info["section_events"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'admins')) {
$info["section_admins"] = 'y';
} else {
$info["section_admin"] = 'n';
}
if ($templateslib->template_is_in_section($_REQUEST["templateId"], 'cms')) {
$info["section_cms"] = 'y';
} else {
$info["section_cms"] = 'n';
}
} else {
$info = [];
$info["name"] = '';
$info['template_type'] = 'static';
$info["content"] = '';
$info["section_cms"] = 'n';
$info["section_html"] = 'n';
$info["section_wiki"] = 'n';
$info["section_wiki_html"] = 'n';
$info["section_file_galleries"] = 'n';
$info["section_newsletters"] = 'n';
$info["section_event"] = 'n';
}
$cat_type = 'template';
$cat_objid = $_REQUEST['templateId'];
include_once("categorize_list.php");
$smarty->assign_by_ref('info', $info);
if (isset($_REQUEST["remove"]) && $access->checkCsrf(true)) {
$result = $templateslib->remove_template($_REQUEST["remove"]);
if ($result && $result->numRows()) {
Feedback::success(tr('Template removed'));
} else {
Feedback::error(tr('Template not removed'));
}
}
if (isset($_REQUEST["removesection"]) && $access->checkCsrf(true)) {
$result = $templateslib->remove_template_from_section($_REQUEST["rtemplateId"], $_REQUEST["removesection"]);
if ($result && $result->numRows()) {
Feedback::success(tr('Section removed'));
} else {
Feedback::error(tr('Section not removed'));
}
}
$smarty->assign('preview', 'n');
if (isset($_REQUEST["preview"])) {
TikiLib::lib('access')->check_permission('edit_content_templates', 'Edit template', 'template', $_REQUEST['templateId']);
$smarty->assign('preview', 'y');
if (isset($_REQUEST["section_html"]) && $_REQUEST["section_html"] == 'on') {
$info["section_html"] = 'y';
$parsed = nl2br($_REQUEST["content"]);
} else {
$info["section_html"] = 'n';
$parsed = TikiLib::lib('parser')->parse_data($_REQUEST["content"], ['is_html' => $info['section_wiki_html'] === 'y']);
}
$smarty->assign('parsed', $parsed);
if (isset($_REQUEST["section_wiki"]) && $_REQUEST["section_wiki"] == 'on') {
$info["section_wiki"] = 'y';
} else {
$info["section_wiki"] = 'n';
}
if (isset($_REQUEST["section_file_galleries"]) && $_REQUEST["section_file_galleries"] == 'on') {
$info["section_file_galleries"] = 'y';
} else {
$info["section_file_galleries"] = 'n';
}
if (isset($_REQUEST["section_newsletters"]) && $_REQUEST["section_newsletters"] == 'on') {
$info["section_newsletters"] = 'y';
} else {
$info["section_newsletters"] = 'n';
}
if (isset($_REQUEST["section_events"]) && $_REQUEST["section_events"] == 'on') {
$info["section_events"] = 'y';
} else {
$info["section_events"] = 'n';
}
if (isset($_REQUEST["section_cms"]) && $_REQUEST["section_cms"] == 'on') {
$info["section_cms"] = 'y';
} else {
$info["section_cms"] = 'n';
}
$info["content"] = $_REQUEST["content"];
$info["name"] = $_REQUEST["name"];
$info['page_name'] = $_REQUEST['page_name'];
$info['template_type'] = $_REQUEST['template_type'];
$smarty->assign('info', $info);
$cookietab = 2;
}
if (isset($_REQUEST["save"]) && $access->checkCsrf()) {
$type = $_REQUEST['template_type'];
if ($type == 'page') {
$content = 'page:' . $_REQUEST['page_name'];
} else {
$content = $_REQUEST["content"];
}
if (isset($_REQUEST["name"]) && $_REQUEST["name"] != "") {
$tid = $templateslib->replace_template($_REQUEST["templateId"], $_REQUEST["name"], $content, $type);
$smarty->assign("templateId", '0');
$info["name"] = '';
$info["content"] = '';
$info["section_cms"] = 'n';
$info["section_wiki"] = 'n';
$info["section_wiki_html"] = 'n';
$info["section_file_galleries"] = 'n';
$info["section_newsletters"] = 'n';
$info["section_events"] = 'n';
$info["section_html"] = 'n';
$smarty->assign('info', $info);
if ($tid) {
Feedback::success(tr('Template %0 created or modified', htmlspecialchars($_REQUEST["name"])));
} else {
Feedback::error(tr('Template %0 not created or modified', htmlspecialchars($_REQUEST["name"])));
}
if (isset($_REQUEST["section_cms"]) && $_REQUEST["section_cms"] == 'on') {
$templateslib->add_template_to_section($tid, 'cms');
} else {
$templateslib->remove_template_from_section($tid, 'cms');
}
if (isset($_REQUEST["section_wiki"]) && $_REQUEST["section_wiki"] == 'on') {
$templateslib->add_template_to_section($tid, 'wiki');
} else {
$templateslib->remove_template_from_section($tid, 'wiki');
}
if (isset($_REQUEST["section_wiki_html"]) && $_REQUEST["section_wiki_html"] == 'on') {
$templateslib->add_template_to_section($tid, 'wiki_html');
} else {
$templateslib->remove_template_from_section($tid, 'wiki_html');
}
if (isset($_REQUEST["section_file_galleries"]) && $_REQUEST["section_file_galleries"] == 'on') {
$templateslib->add_template_to_section($tid, 'file_galleries');
} else {
$templateslib->remove_template_from_section($tid, 'file_galleries');
}
if (isset($_REQUEST["section_newsletters"]) && $_REQUEST["section_newsletters"] == 'on') {
$templateslib->add_template_to_section($tid, 'newsletters');
} else {
$templateslib->remove_template_from_section($tid, 'newsletters');
}
if (isset($_REQUEST["section_events"]) && $_REQUEST["section_events"] == 'on') {
$templateslib->add_template_to_section($tid, 'events');
} else {
$templateslib->remove_template_from_section($tid, 'events');
}
if (isset($_REQUEST["section_html"]) && $_REQUEST["section_html"] == 'on') {
$templateslib->add_template_to_section($tid, 'html');
} else {
$templateslib->remove_template_from_section($tid, 'html');
}
$cat_type = 'template';
$cat_objid = $tid;
$cat_desc = '';
$cat_name = $_REQUEST["name"];
$cat_href = "tiki-admin_content_templates.php?templateId=" . $cat_objid;
include_once("categorize.php");
// Locking: only needed on new templates, ajax locks existing ones
if ($prefs['lock_content_templates'] === 'y' && empty($_REQUEST['templateId'])) {
if (! empty($_REQUEST['locked'])) {
TikiLib::lib('attribute')->set_attribute('template', $tid, 'tiki.object.lock', $_REQUEST['locked']);
}
}
$cookietab = 1;
} else {
$smarty->assign("templateId", '0');
$info["name"] = '';
$info["content"] = (isset($_REQUEST["content"]) && $_REQUEST["content"] != '') ? $_REQUEST["content"] : '' ;
$info["section_cms"] = (isset($_REQUEST["section_cms"]) && $_REQUEST["section_cms"] == 'on') ? 'y' : 'n';
$info["section_wiki"] = (isset($_REQUEST["section_wiki"]) && $_REQUEST["section_wiki"] == 'on') ? 'y' : 'n';
$info["section_wiki_html"] = (isset($_REQUEST["section_wiki_html"]) && $_REQUEST["section_wiki_html"] == 'on') ? 'y' : 'n';
$info["section_file_galleries"] = (isset($_REQUEST["section_file_galleries"]) && $_REQUEST["section_file_galleries"] == 'on') ? 'y' : 'n';
$info["section_newsletters"] = (isset($_REQUEST["section_newsletters"]) && $_REQUEST["section_newsletters"] == 'on') ? 'y' : 'n' ;
$info["section_events"] = (isset($_REQUEST["section_events"]) && $_REQUEST["section_events"] == 'on') ? 'y' : 'n';
$info["section_html"] = (isset($_REQUEST["section_html"]) && $_REQUEST["section_html"] == 'on') ? 'y' : 'n';
$smarty->assign('info', $info);
$smarty->assign('emptyname', "true");
$cookietab = 2;
}
}
if (! isset($_REQUEST["sort_mode"])) {
$sort_mode = 'created_desc';
} else {
$sort_mode = $_REQUEST["sort_mode"];
}
if (! isset($_REQUEST["offset"])) {
$offset = 0;
} else {
$offset = $_REQUEST["offset"];
}
$smarty->assign_by_ref('offset', $offset);
if (isset($_REQUEST["find"])) {
$find = $_REQUEST["find"];
} else {
$find = '';
}
$smarty->assign('find', $find);
$smarty->assign_by_ref('sort_mode', $sort_mode);
$channels = $templateslib->list_all_templates($offset, $maxRecords, $sort_mode, $find);
$smarty->assign_by_ref('cant_pages', $channels["cant"]);
// wysiwyg decision
if ($_REQUEST['templateId']) {
$info['is_html'] = $info['section_wiki_html'] === 'y' ? 1 : 0;
$info['wysiwyg'] = $info['section_wiki_html'];
}
include 'lib/setup/editmode.php';
$info['section_wiki_html'] = $_SESSION['wysiwyg']; //$info['is_html'] ? 'y' : 'n';
// Handles switching editor modes
$editlib = TikiLib::lib('edit');
if (isset($_REQUEST['mode_normal']) && $_REQUEST['mode_normal'] == 'y') {
// Parsing page data as first time seeing html page in normal editor
$smarty->assign('msg', "Parsing html to wiki");
$info['content'] = $editlib->parseToWiki($_REQUEST["content"]);
$smarty->assign('parsed', $parsed);
} elseif (isset($_REQUEST['mode_wysiwyg']) && $_REQUEST['mode_wysiwyg'] == 'y') {
// Parsing page data as first time seeing wiki page in wysiwyg editor
$smarty->assign('msg', "Parsing wiki to html");
$info['content'] = $editlib->parseToWysiwyg($_REQUEST["content"]);
$smarty->assign('parsed', $parsed);
}
// check edit/create perms
if ($_REQUEST['templateId']) {
$perms = Perms::get(['type' => 'template', 'object' => $_REQUEST['templateId']]);
$canEdit = $perms->edit_content_templates;
if ($prefs['lock_content_templates'] === 'y' && $canEdit) { // check for locked
$lockedby = TikiLib::lib('attribute')->get_attribute('template', $_REQUEST['templateId'], 'tiki.object.lock');
if ($lockedby && $lockedby === $user && $perms->lock_content_templates || ! $lockedby || $perms->admin_content_templates) {
$canEdit = true;
} else {
$canEdit = false;
}
}
} else {
$canEdit = ($tiki_p_admin_content_templates === 'y') || ($tiki_p_admin === 'y'); // create
}
$smarty->assign('canEdit', $canEdit);
$smarty->assign_by_ref('channels', $channels["data"]);
$wikilib = TikiLib::lib('wiki');
// disallow robots to index page:
$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
// Display the template
$smarty->assign('mid', 'tiki-admin_content_templates.tpl');
$smarty->display("tiki.tpl");