
LCARS is a template for the GetSimple CMS that mimics the monitor appearance in the television series Star Trek: The Next Generation
162 lines
5.0 KiB
PHP
162 lines
5.0 KiB
PHP
<?php
|
|
/**
|
|
* Components
|
|
*
|
|
* Displays and creates static components
|
|
*
|
|
* @package GetSimple
|
|
* @subpackage Components
|
|
* @link http://get-simple.info/docs/what-are-components
|
|
*/
|
|
|
|
# setup inclusions
|
|
$load['plugin'] = true;
|
|
include('inc/common.php');
|
|
|
|
# variable settings
|
|
$userid = login_cookie_check();
|
|
$file = "components.xml";
|
|
$path = GSDATAOTHERPATH;
|
|
$bakpath = GSBACKUPSPATH .'other/';
|
|
$update = ''; $table = ''; $list='';
|
|
|
|
# check to see if form was submitted
|
|
if (isset($_POST['submitted'])){
|
|
$value = $_POST['val'];
|
|
$slug = $_POST['slug'];
|
|
$title = $_POST['title'];
|
|
$ids = $_POST['id'];
|
|
|
|
// check for csrf
|
|
if (!defined('GSNOCSRF') || (GSNOCSRF == FALSE) ) {
|
|
$nonce = $_POST['nonce'];
|
|
if(!check_nonce($nonce, "modify_components")) {
|
|
die("CSRF detected!");
|
|
}
|
|
}
|
|
|
|
# create backup file for undo
|
|
createBak($file, $path, $bakpath);
|
|
|
|
# start creation of top of components.xml file
|
|
$xml = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><channel></channel>');
|
|
if (count($ids) != 0) {
|
|
|
|
$ct = 0; $coArray = array();
|
|
foreach ($ids as $id) {
|
|
if ($title[$ct] != null) {
|
|
if ( $slug[$ct] == null ) {
|
|
$slug_tmp = to7bit($title[$ct], 'UTF-8');
|
|
$slug[$ct] = clean_url($slug_tmp);
|
|
$slug_tmp = '';
|
|
}
|
|
|
|
$coArray[$ct]['id'] = $ids[$ct];
|
|
$coArray[$ct]['slug'] = $slug[$ct];
|
|
$coArray[$ct]['title'] = safe_slash_html($title[$ct]);
|
|
$coArray[$ct]['value'] = safe_slash_html($value[$ct]);
|
|
|
|
}
|
|
$ct++;
|
|
}
|
|
|
|
$ids = subval_sort($coArray,'title');
|
|
|
|
$count = 0;
|
|
foreach ($ids as $comp) {
|
|
# create the body of components.xml file
|
|
$components = $xml->addChild('item');
|
|
$c_note = $components->addChild('title');
|
|
$c_note->addCData($comp['title']);
|
|
$components->addChild('slug', $comp['slug']);
|
|
$c_note = $components->addChild('value');
|
|
$c_note->addCData($comp['value']);
|
|
$count++;
|
|
}
|
|
}
|
|
exec_action('component-save');
|
|
XMLsave($xml, $path . $file);
|
|
redirect('components.php?upd=comp-success');
|
|
}
|
|
|
|
# if undo was invoked
|
|
if (isset($_GET['undo'])) {
|
|
|
|
# check for csrf
|
|
$nonce = $_GET['nonce'];
|
|
if(!check_nonce($nonce, "undo")) {
|
|
die("CSRF detected!");
|
|
}
|
|
|
|
# perform the undo
|
|
undo($file, $path, $bakpath);
|
|
redirect('components.php?upd=comp-restored');
|
|
}
|
|
|
|
# create components form html
|
|
$data = getXML($path . $file);
|
|
$componentsec = $data->item;
|
|
$count= 0;
|
|
if (count($componentsec) != 0) {
|
|
foreach ($componentsec as $component) {
|
|
$table .= '<div class="compdiv" id="section-'.$count.'"><table class="comptable" ><tr><td><b title="'.i18n_r('DOUBLE_CLICK_EDIT').'" class="editable">'. stripslashes($component->title) .'</b></td>';
|
|
$table .= '<td style="text-align:right;" ><code><?php get_component(<span class="compslugcode">\''.$component->slug.'\'</span>); ?></code></td><td class="delete" >';
|
|
$table .= '<a href="#" title="'.i18n_r('DELETE_COMPONENT').': '. cl($component->title).'?" class="delcomponent" rel="'.$count.'" >×</a></td></tr></table>';
|
|
$table .= '<textarea name="val[]">'. stripslashes($component->value) .'</textarea>';
|
|
$table .= '<input type="hidden" class="compslug" name="slug[]" value="'. $component->slug .'" />';
|
|
$table .= '<input type="hidden" class="comptitle" name="title[]" value="'. stripslashes($component->title) .'" />';
|
|
$table .= '<input type="hidden" name="id[]" value="'. $count .'" />';
|
|
exec_action('component-extras');
|
|
$table .= '</div>';
|
|
$count++;
|
|
}
|
|
}
|
|
# create list to show on sidebar for easy access
|
|
$listc = ''; $submitclass = '';
|
|
if($count > 1) {
|
|
$item = 0;
|
|
foreach($componentsec as $component) {
|
|
$listc .= '<a id="divlist-' . $item . '" href="#section-' . $item . '" class="component">' . $component->title . '</a>';
|
|
$item++;
|
|
}
|
|
} elseif ($count == 0) {
|
|
$submitclass = 'hidden';
|
|
|
|
}
|
|
|
|
get_template('header', cl($SITENAME).' » '.i18n_r('COMPONENTS'));
|
|
|
|
?>
|
|
|
|
<?php include('template/include-nav.php'); ?>
|
|
|
|
<div class="bodycontent clearfix">
|
|
|
|
<div id="maincontent">
|
|
<div class="main">
|
|
<h3 class="floated"><?php echo i18n('EDIT_COMPONENTS');?></h3>
|
|
<div class="edit-nav" >
|
|
<a href="#" id="addcomponent" accesskey="<?php echo find_accesskey(i18n_r('ADD_COMPONENT'));?>" ><?php i18n('ADD_COMPONENT');?></a>
|
|
<div class="clear"></div>
|
|
</div>
|
|
|
|
<form class="manyinputs" action="<?php myself(); ?>" method="post" accept-charset="utf-8" >
|
|
<input type="hidden" id="id" value="<?php echo $count; ?>" />
|
|
<input type="hidden" id="nonce" name="nonce" value="<?php echo get_nonce("modify_components"); ?>" />
|
|
|
|
<div id="divTxt"></div>
|
|
<?php echo $table; ?>
|
|
<p id="submit_line" class="<?php echo $submitclass; ?>" >
|
|
<span><input type="submit" class="submit" name="submitted" id="button" value="<?php i18n('SAVE_COMPONENTS');?>" /></span> <?php i18n('OR'); ?> <a class="cancel" href="components.php?cancel"><?php i18n('CANCEL'); ?></a>
|
|
</p>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="sidebar">
|
|
<?php include('template/sidebar-theme.php'); ?>
|
|
<?php if ($listc != '') { echo '<div class="compdivlist">'.$listc .'</div>'; } ?>
|
|
</div>
|
|
|
|
</div>
|
|
<?php get_template('footer'); ?>
|