ConLite/conlite/includes/include.system_configuratio...

196 Zeilen
8.8 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* File provides a user friendly way for setting general system properties instead of using
* Systemproperties
*
* Requirements:
* @con_php_req 5.0
*
*
* @version 1.0.1
* @author Timo Trautmann
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
* @since file available since contenido release 4.8.8
*
* {@internal
* created 2008-08-19
* modified 2010-11-30, Dominik Ziegler, added check of minimum period time at update notifier check period [CON-372]
*
* }}
*
*/
if(!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
function renderBooleanProperty($sName, $aPossValues, $sValue, $sLabel) {
$aReturn = array();
if ($aPossValues[0] == $sValue) {
$bChecked = false;
} else {
$bChecked = true;
}
$oCheckbox = new cHTMLCheckbox($sName, $aPossValues[1], $sName, $bChecked);
$oCheckbox->setLabelText('&nbsp;&nbsp;'.$sLabel);
$oCheckbox->setStyle('margin:0; padding:0px;margin-left:3px;');
$aReturn['input'] = $oCheckbox->toHtml();
$aReturn['label'] = '';
return $aReturn;
}
function renderLabel($sLabel, $sName, $iWidth = 250, $sSeperator = ':') {
$oLabel = new cHTMLLabel($sLabel.$sSeperator, $sName);
$oLabel->setStyle('padding:3px;display:block;float:left;width:'.$iWidth.'px;');
return $oLabel->render();
}
function renderTextProperty($sName, $sValue, $sLabel) {
$oTextbox = new cHTMLTextbox($sName, $sValue, "50", "96");
$oTextbox->setStyle('width:320px;');
$aReturn['input'] = $oTextbox->render();
$aReturn['label'] = renderLabel($sLabel, $sName);
return $aReturn;
}
function getPostValue($aProperty) {
$sName = $aProperty['type'].'{_}'.$aProperty['name'];
if (isset($_POST[$sName])) {
if (is_array($aProperty['value'])) {
if (in_array($_POST[$sName], $aProperty['value'])) {
return $_POST[$sName];
} else {
return $aProperty['value'][0];
}
} else {
if ($aProperty['value'] == 'integer') {
return (int) $_POST[$sName];
} else {
return $_POST[$sName];
}
}
}
if (is_array($aProperty['value'])) {
return $aProperty['value'][0];
} else {
return '';
}
}
$aManagedProperties = array(
array('type' => 'versioning', 'name' => 'activated', 'value' => array('false', 'true'), 'label' => i18n('Versioning activated'), 'group' => i18n('Versioning')),
array('type' => 'versioning', 'name' => 'path', 'value' => '', 'label' => i18n('Serverpath to version files'), 'group' => i18n('Versioning')),
array('type' => 'versioning', 'name' => 'prune_limit', 'value' => 'integer', 'label' => i18n('Maximum number of stored versions'), 'group' => i18n('Versioning')),
array('type' => 'update', 'name' => 'check', 'value' => array('false', 'true'), 'label' => i18n('Check for updates'), 'group' => i18n('Update notifier')),
array('type' => 'update', 'name' => 'news_feed', 'value' => array('false', 'true'), 'label' => i18n('Get news from conlite.org'), 'group' => i18n('Update notifier')),
array('type' => 'update', 'name' => 'check_period', 'value' => 'integer', 'label' => i18n('Update check period (minutes)'), 'group' => i18n('Update notifier')),
array('type' => 'system', 'name' => 'clickmenu', 'value' => array('false', 'true'), 'label' => i18n('Clickable menu in backend'), 'group' => i18n('Backend')),
array('type' => 'pw_request', 'name' => 'enable', 'value' => array('false', 'true'), 'label' => i18n('Use passwordrequest in Backend'), 'group' => i18n('Backend')),
array('type' => 'maintenance', 'name' => 'mode', 'value' => array('disabled', 'enabled'), 'label' => i18n('Activate maintenance mode'), 'group' => i18n('Backend')),
array('type' => 'edit_area', 'name' => 'activated', 'value' => array('false', 'true'), 'label' => i18n('Use editarea for code highlighting'), 'group' => i18n('Backend')),
array('type' => 'system', 'name' => 'insight_editing_activated', 'value' => array('false', 'true'), 'label' => i18n('Use TinyMce as insight editor'), 'group' => i18n('Backend')),
array('type' => 'backend', 'name' => 'preferred_idclient', 'value' => 'integer', 'label' => i18n('Default client (ID)'), 'group' => i18n('Backend')),
array('type' => 'system', 'name' => 'mail_host', 'value' => '', 'label' => i18n('Mailserver host'), 'group' => i18n('Mailserver')),
array('type' => 'system', 'name' => 'mail_sender', 'value' => '', 'label' => i18n('Mailserver sender mail'), 'group' => i18n('Mailserver')),
array('type' => 'system', 'name' => 'mail_sender_name', 'value' => '', 'label' => i18n('Mailserver sender name'), 'group' => i18n('Mailserver')),
/*array('type' => 'generator', 'name' => 'xhtml', 'value' => array('false', 'true'), 'label' => i18n('Generate XHTML'), 'group' => i18n('Development')),*/
array('type' => 'generator', 'name' => 'basehref', 'value' => array('false', 'true'), 'label' => i18n('Generate basehref'), 'group' => i18n('Development')),
array('type' => 'imagemagick', 'name' => 'available', 'value' => array('0', '1'), 'label' => i18n('Use image magic (if available)'), 'group' => i18n('Development'))
);
$aSettings = getSystemProperties(1);
$sNotification = '';
if (isset($_POST['action']) && $_POST['action'] == 'edit_sysconf' && $perm->have_perm_area_action($area, 'edit_sysconf')) {
$bStored = false;
foreach ($aManagedProperties as $aProperty) {
$sValue = getPostValue($aProperty);
$sStoredValue = $aSettings[$aProperty['type']][$aProperty['name']]['value'];
if ($sStoredValue != $sValue && (is_array($aProperty['value']) && $sValue != '' || !is_array($aProperty['value']))) {
if ( $aProperty['type'] == 'update' && $aProperty['name'] == 'check_period' && (int) $sValue < 60 ) {
$sNotification = $notification->displayNotification("error", i18n("Update check period must be at least 60 minutes."));
$bStored = false;
break;
} else {
setSystemProperty($aProperty['type'], $aProperty['name'], $sValue);
$bStored = true;
}
}
}
if ($bStored) {
$sNotification = $notification->displayNotification("info", i18n("Changes saved"));
}
}
$aSettings = getSystemProperties(1);
$oForm = new UI_Table_Form("system_configuration");
$oForm->addHeader(i18n("System Configuration"));
$oForm ->setWidth("770");
$oForm->setVar("area", $area);
$oForm->setVar("frame", $frame);
$oForm->setVar("action", 'edit_sysconf');
$sCurGroup = '';
$sLeftContent = '';
$sRowTemplate = '<p style="margin:0; padding:3px;">%s</p>';
foreach ($aManagedProperties as $aProperty) {
$sName = $aProperty['type'].'{_}'.$aProperty['name'];
if (isset($aSettings[$aProperty['type']][$aProperty['name']]['value'])) {
$sValue = $aSettings[$aProperty['type']][$aProperty['name']]['value'];
} else {
$sValue = '';
}
if (is_array($aProperty['value'])) {
$aHtmlElement = renderBooleanProperty($sName, $aProperty['value'], $sValue, $aProperty['label']);
} else {
$aHtmlElement = renderTextProperty($sName, $sValue, $aProperty['label']);
}
if ($sCurGroup == '' || $sCurGroup == $aProperty['group']) {
if ($sCurGroup == '') {
$sCurGroup = $aProperty['group'];
}
$sLeftContent .= sprintf($sRowTemplate, $aHtmlElement['label']. $aHtmlElement['input']);
} else {
$oForm->add(renderLabel($sCurGroup, '', 150, ''), $sLeftContent);
$sCurGroup = $aProperty['group'];
$sLeftContent = sprintf($sRowTemplate, $aHtmlElement['label']. $aHtmlElement['input']);
}
}
$oForm->add(renderLabel($sCurGroup, '', 150, ''), $sLeftContent);
$sJs = '<script type="text/javascript">
if (top.content.right_top.document.getElementById(\'c_1\') ) {
menuItem = top.content.right_top.document.getElementById(\'c_1\');
top.content.right_top.sub.clicked(menuItem.firstChild);
}
</script>';
$oPage = new cPage;
if ($perm->have_perm_area_action($area, 'edit_sysconf')) {
$oPage->setContent($sNotification.$oForm->render());
} else {
$oPage->setContent($notification->returnNotification("error", i18n('Access denied'), 1));
}
$oPage->addScript('setMenu', $sJs);
$oPage->render();