Blocks for themes
This commit is contained in:
parent
8400d7eaba
commit
e7412d0534
|
@ -34,6 +34,7 @@ class dbJSON {
|
||||||
if (empty($array)) {
|
if (empty($array)) {
|
||||||
$this->db = array();
|
$this->db = array();
|
||||||
$this->dbBackup = array();
|
$this->dbBackup = array();
|
||||||
|
Log::set(__METHOD__.LOG_SEP.'Error trying to read the JSON file: '.$file, LOG_TYPE_ERROR);
|
||||||
} else {
|
} else {
|
||||||
$this->db = $array;
|
$this->db = $array;
|
||||||
$this->dbBackup = $array;
|
$this->dbBackup = $array;
|
||||||
|
@ -110,4 +111,11 @@ class dbJSON {
|
||||||
return $this->db;
|
return $this->db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Truncate all the rows
|
||||||
|
public function truncate()
|
||||||
|
{
|
||||||
|
$this->db = array();
|
||||||
|
return $this->save();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Check role
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
checkRole(array('admin'));
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Main after POST
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// POST Method
|
||||||
|
// ============================================================================
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
|
||||||
|
foreach ($_POST['key'] as $key=>$value) {
|
||||||
|
$blocks->add(array(
|
||||||
|
'title'=>$_POST['title'][$key],
|
||||||
|
'value'=>$_POST['value'][$key],
|
||||||
|
'key'=>$_POST['key'][$key]
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to syslog
|
||||||
|
$syslog->add(array(
|
||||||
|
'dictionaryKey'=>'blocks-configured',
|
||||||
|
'notes'=>''
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// Main after POST
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// Title of the page
|
||||||
|
$layout['title'] .= ' - '.$L->g('Blocks');
|
|
@ -220,6 +220,7 @@ EOF;
|
||||||
{
|
{
|
||||||
$name = $args['name'];
|
$name = $args['name'];
|
||||||
$disabled = empty($args['disabled'])?'':'disabled';
|
$disabled = empty($args['disabled'])?'':'disabled';
|
||||||
|
$readonly = empty($args['readonly'])?'':'readonly';
|
||||||
$placeholder = isset($args['placeholder'])?$args['placeholder']:'';
|
$placeholder = isset($args['placeholder'])?$args['placeholder']:'';
|
||||||
$value = isset($args['value'])?$args['value']:'';
|
$value = isset($args['value'])?$args['value']:'';
|
||||||
|
|
||||||
|
@ -252,7 +253,7 @@ return <<<EOF
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
$label
|
$label
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="$class" id="$id" name="$name" value="$value" placeholder="$placeholder" type="$type" $disabled>
|
<input class="$class" id="$id" name="$name" value="$value" placeholder="$placeholder" type="$type" $disabled $readonly>
|
||||||
$tip
|
$tip
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.'); ?>
|
||||||
|
|
||||||
|
<?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?>
|
||||||
|
|
||||||
|
<div class="align-middle">
|
||||||
|
<div class="float-right mt-1">
|
||||||
|
<button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button>
|
||||||
|
<a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>" role="button"><?php $L->p('Cancel') ?></a>
|
||||||
|
</div>
|
||||||
|
<?php echo Bootstrap::pageTitle(array('title'=>$L->g('Blocks'), 'icon'=>'box')); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
// Token CSRF
|
||||||
|
echo Bootstrap::formInputHidden(array(
|
||||||
|
'name'=>'tokenCSRF',
|
||||||
|
'value'=>$security->getTokenCSRF()
|
||||||
|
));
|
||||||
|
|
||||||
|
$list = $blocks->getDB();
|
||||||
|
foreach ($list as $blockKey => $blockData) {
|
||||||
|
echo Bootstrap::formTitle(array('title'=>$blockData['title']));
|
||||||
|
|
||||||
|
echo Bootstrap::formInputText(array(
|
||||||
|
'name'=>'key[]',
|
||||||
|
'label'=>$L->g('Key'),
|
||||||
|
'value'=>$blockKey,
|
||||||
|
'class'=>'',
|
||||||
|
'placeholder'=>'',
|
||||||
|
'tip'=>'',
|
||||||
|
'readonly'=>true
|
||||||
|
));
|
||||||
|
|
||||||
|
echo Bootstrap::formInputText(array(
|
||||||
|
'name'=>'title[]',
|
||||||
|
'label'=>$L->g('title'),
|
||||||
|
'value'=>$blockData['title'],
|
||||||
|
'class'=>'',
|
||||||
|
'placeholder'=>'',
|
||||||
|
'tip'=>''
|
||||||
|
));
|
||||||
|
|
||||||
|
echo Bootstrap::formTextarea(array(
|
||||||
|
'name'=>'value[]',
|
||||||
|
'label'=>$L->g('Value'),
|
||||||
|
'value'=>$blockData['value'],
|
||||||
|
'class'=>'',
|
||||||
|
'placeholder'=>'',
|
||||||
|
'tip'=>'',
|
||||||
|
'rows'=>5
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
echo Bootstrap::formClose();
|
||||||
|
|
||||||
|
?>
|
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
echo Bootstrap::pageTitle(array('title'=>$L->g('Themes'), 'icon'=>'eye'));
|
echo Bootstrap::pageTitle(array('title'=>$L->g('Themes'), 'icon'=>'eye'));
|
||||||
|
|
||||||
|
echo Bootstrap::link(array(
|
||||||
|
'title'=>$L->g('Configure Blocks'),
|
||||||
|
'href'=>HTML_PATH_ADMIN_ROOT.'blocks',
|
||||||
|
'icon'=>'box'
|
||||||
|
));
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
<table class="table mt-3">
|
<table class="table mt-3">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
|
class Blocks extends dbJSON
|
||||||
|
{
|
||||||
|
// Fields allowed for a row in the database
|
||||||
|
private $dbFields = array(
|
||||||
|
'title'=>'',
|
||||||
|
'value'=>''
|
||||||
|
);
|
||||||
|
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct(DB_BLOCKS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a row to the database
|
||||||
|
public function add($args)
|
||||||
|
{
|
||||||
|
$key = $this->generateKey($args['key']);
|
||||||
|
if (Text::isEmpty($key)) {
|
||||||
|
Log::set(__METHOD__.LOG_SEP.'Invalid key for the Block.', LOG_TYPE_ERROR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$row = array();
|
||||||
|
foreach ($this->dbFields as $field=>$defaultValue) {
|
||||||
|
if (isset($args[$field])) {
|
||||||
|
// Sanitize if will be stored on database
|
||||||
|
$value = Sanitize::html($args[$field]);
|
||||||
|
settype($value, gettype($defaultValue));
|
||||||
|
$row[$field] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Insert the row in the database
|
||||||
|
$this->db[$key] = $row;
|
||||||
|
// Save the database
|
||||||
|
return $this->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete a row from the database
|
||||||
|
public function delete($key)
|
||||||
|
{
|
||||||
|
if (!$this->exists($key)) {
|
||||||
|
Log::set(__METHOD__.LOG_SEP.'The Block does not exist. Key: '.$key, LOG_TYPE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove from database
|
||||||
|
unset($this->db[$key]);
|
||||||
|
// Save the database
|
||||||
|
return $this->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if a row exists
|
||||||
|
public function exists($key)
|
||||||
|
{
|
||||||
|
return isset ($this->db[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function generateKey($text)
|
||||||
|
{
|
||||||
|
return Text::cleanUrl($text);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -60,6 +60,7 @@ define('DB_TAGS', PATH_DATABASES.'tags.php');
|
||||||
define('DB_SYSLOG', PATH_DATABASES.'syslog.php');
|
define('DB_SYSLOG', PATH_DATABASES.'syslog.php');
|
||||||
define('DB_USERS', PATH_DATABASES.'users.php');
|
define('DB_USERS', PATH_DATABASES.'users.php');
|
||||||
define('DB_SECURITY', PATH_DATABASES.'security.php');
|
define('DB_SECURITY', PATH_DATABASES.'security.php');
|
||||||
|
define('DB_BLOCKS', PATH_DATABASES.'blocks.php');
|
||||||
|
|
||||||
// JSON pretty print
|
// JSON pretty print
|
||||||
if (!defined('JSON_PRETTY_PRINT')) {
|
if (!defined('JSON_PRETTY_PRINT')) {
|
||||||
|
@ -81,6 +82,7 @@ include(PATH_ABSTRACT.'dblist.class.php');
|
||||||
include(PATH_ABSTRACT.'plugin.class.php');
|
include(PATH_ABSTRACT.'plugin.class.php');
|
||||||
|
|
||||||
// Inclde Classes
|
// Inclde Classes
|
||||||
|
include(PATH_KERNEL.'blocks.class.php');
|
||||||
include(PATH_KERNEL.'pages.class.php');
|
include(PATH_KERNEL.'pages.class.php');
|
||||||
include(PATH_KERNEL.'users.class.php');
|
include(PATH_KERNEL.'users.class.php');
|
||||||
include(PATH_KERNEL.'tags.class.php');
|
include(PATH_KERNEL.'tags.class.php');
|
||||||
|
@ -131,6 +133,7 @@ $site = new Site();
|
||||||
$url = new Url();
|
$url = new Url();
|
||||||
$security = new Security();
|
$security = new Security();
|
||||||
$syslog = new Syslog();
|
$syslog = new Syslog();
|
||||||
|
$blocks = new Blocks();
|
||||||
|
|
||||||
// --- Relative paths ---
|
// --- Relative paths ---
|
||||||
// This paths are relative for the user / web browsing.
|
// This paths are relative for the user / web browsing.
|
||||||
|
|
|
@ -795,10 +795,19 @@ function activateTheme($themeDirectory) {
|
||||||
global $site;
|
global $site;
|
||||||
global $syslog;
|
global $syslog;
|
||||||
global $L;
|
global $L;
|
||||||
|
global $blocks;
|
||||||
|
|
||||||
if (Sanitize::pathFile(PATH_THEMES.$themeDirectory)) {
|
if (Sanitize::pathFile(PATH_THEMES.$themeDirectory)) {
|
||||||
$site->set(array('theme'=>$themeDirectory));
|
$site->set(array('theme'=>$themeDirectory));
|
||||||
|
|
||||||
|
// Remove all blocks
|
||||||
|
$blocks->truncate();
|
||||||
|
|
||||||
|
// Include Blocks for the theme
|
||||||
|
if (Sanitize::pathFile(PATH_THEMES.$themeDirectory.DS.'blocks.php')) {
|
||||||
|
include(PATH_THEMES.$themeDirectory.DS.'blocks.php');
|
||||||
|
}
|
||||||
|
|
||||||
$syslog->add(array(
|
$syslog->add(array(
|
||||||
'dictionaryKey'=>'new-theme-configured',
|
'dictionaryKey'=>'new-theme-configured',
|
||||||
'notes'=>$themeDirectory
|
'notes'=>$themeDirectory
|
||||||
|
@ -809,3 +818,7 @@ function activateTheme($themeDirectory) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteAllBlocks() {
|
||||||
|
global $blocks;
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
$blocks->add(array(
|
||||||
|
'key'=>'google-analitycs',
|
||||||
|
'title'=>'Google Analytics',
|
||||||
|
'value'=>''
|
||||||
|
));
|
||||||
|
|
||||||
|
$blocks->add(array(
|
||||||
|
'key'=>'level',
|
||||||
|
'title'=>'Level',
|
||||||
|
'value'=>''
|
||||||
|
));
|
||||||
|
?>
|
Loading…
Reference in New Issue