Categories++

This commit is contained in:
Diego Najar 2017-05-17 00:04:53 +02:00
parent 95e6500993
commit 63fe327fe4
12 changed files with 145 additions and 95 deletions

View File

@ -135,4 +135,15 @@ class dbList extends dbJSON
return isset( $this->db[$key] );
}
// Returns an array with a portion of the database filtered by key
// Returns array( 'name'=>'', 'list'=>array() )
public function getMap($key)
{
if( isset($this->db[$key]) ) {
return $this->db[$key];
}
return false;
}
}

View File

@ -81,10 +81,9 @@ if( $_SERVER['REQUEST_METHOD'] == 'POST' )
// Main after POST
// ============================================================================
if(!$dbPages->pageExists($layout['parameters']))
{
if( !$dbPages->exists($layout['parameters']) ) {
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to get the page: '.$layout['parameters']);
Redirect::page('admin', 'manage-pages');
Redirect::page('pages');
}
$_Page = $pages[$layout['parameters']];
$page = $pagesKey[$layout['parameters']];

View File

@ -58,21 +58,4 @@ if( $_SERVER['REQUEST_METHOD'] == 'POST' )
// Main after POST
// ============================================================================
// Default home page
$_homePageList = array(''=>$Language->g('Show blog'));
foreach($pagesParents as $parentKey=>$pageList)
{
foreach($pageList as $Page)
{
if($parentKey!==NO_PARENT_CHAR) {
$parentTitle = $pages[$Page->parentKey()]->title().'->';
}
else {
$parentTitle = '';
}
if($Page->published()) {
$_homePageList[$Page->key()] = $Language->g('Page').': '.$parentTitle.$Page->title();
}
}
}

View File

@ -70,6 +70,32 @@ class HTML {
echo $html;
}
// label, name, value, tip
public static function formInputRadio($args)
{
$id = 'js'.$args['name'];
$type = isset($args['type']) ? $args['type'] : 'text';
$class = empty($args['class']) ? '' : 'class="'.$args['class'].'"';
$placeholder = empty($args['placeholder']) ? '' : 'placeholder="'.$args['placeholder'].'"';
$disabled = empty($args['disabled']) ? '' : 'disabled';
$html = '<div class="uk-form-row">';
$html .= '<div class="uk-form-controls">';
$html .= '<label for="'.$id.'" class="uk-form-label">';
$html .= '<input id="'.$id.'" name="'.$args['name'].'" type="'.$type.'" '.$class.' '.$placeholder.' autocomplete="off" '.$disabled.' value="'.$args['value'].'">';
$html .= $args['label'].'</label>';
if(!empty($args['tip'])) {
$html .= '<p class="uk-form-help-block">'.$args['tip'].'</p>';
}
$html .= '</div>';
$html .= '</div>';
echo $html;
}
public static function tags($args)
{
global $L;

View File

@ -13,7 +13,7 @@ HTML::formOpen(array('class'=>'uk-form-stacked'));
// Key input
HTML::formInputHidden(array(
'name'=>'key',
'value'=>$_Page->key()
'value'=>$page->key()
));
// LEFT SIDE
@ -24,7 +24,7 @@ echo '<div class="bl-publish-view uk-width-8-10">';
// Title input
HTML::formInputText(array(
'name'=>'title',
'value'=>$_Page->title(),
'value'=>$page->title(),
'class'=>'uk-width-1-1 uk-form-large',
'placeholder'=>$L->g('Title')
));
@ -32,7 +32,7 @@ echo '<div class="bl-publish-view uk-width-8-10">';
// Content input
HTML::formTextarea(array(
'name'=>'content',
'value'=>$_Page->contentRaw(false),
'value'=>$page->contentRaw(false),
'class'=>'uk-width-1-1 uk-form-large',
'placeholder'=>''
));
@ -44,7 +44,7 @@ echo '<div class="bl-publish-view uk-width-8-10">';
<button class="uk-button uk-button-primary" type="button" id="jsSaveDraft">'.$L->g('Save as draft').'</button>
';
if(count($_Page->children())===0)
if(count($page->children())===0)
{
echo ' <button id="jsdelete" name="delete-page" class="uk-button" type="submit">'.$L->g('Delete').'</button>';
echo ' <a class="uk-button" href="'.HTML_PATH_ADMIN_ROOT.'manage-posts">'.$L->g('Cancel').'</a>';
@ -66,22 +66,21 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
echo '<li id="sidebar-general-view" class="sidebar-view">';
// Category
/*
HTML::formSelect(array(
'name'=>'category',
'label'=>$L->g('Category'),
'class'=>'uk-width-1-1 uk-form-medium',
'options'=>$dbCategories->getAll(),
'selected'=>$_Page->category(),
'options'=>$dbCategories->getKeyNameArray(),
'selected'=>$page->categoryKey(),
'tip'=>'',
'addEmptySpace'=>true
));
*/
// Description input
HTML::formTextarea(array(
'name'=>'description',
'label'=>$L->g('description'),
'value'=>$_Page->description(),
'value'=>$page->description(),
'rows'=>'4',
'class'=>'uk-width-1-1 uk-form-medium',
'tip'=>$L->g('this-field-can-help-describe-the-content')
@ -95,7 +94,7 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
echo '<li id="sidebar-images-view" class="sidebar-view">';
// --- BLUDIT COVER IMAGE ---
HTML::bluditCoverImage($_Page->coverImage(false));
HTML::bluditCoverImage($page->coverImage(false));
// --- BLUDIT QUICK IMAGES ---
HTML::bluditQuickImages();
@ -118,8 +117,8 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
HTML::tags(array(
'name'=>'tags',
'label'=>$L->g('Tags'),
'allTags'=>$dbTags->getAll(),
'selectedTags'=>$_Page->tags(true)
'allTags'=>$dbTags->getKeyNameArray(),
'selectedTags'=>$page->tags(true)
));
echo '</li>';
@ -135,25 +134,34 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
'label'=>$L->g('Status'),
'class'=>'uk-width-1-1 uk-form-medium',
'options'=>array('published'=>$L->g('Published'), 'draft'=>$L->g('Draft')),
'selected'=>($_Page->draft()?'draft':'published'),
'selected'=>($page->draft()?'draft':'published'),
'tip'=>''
));
// Date input
HTML::formInputText(array(
'name'=>'date',
'value'=>$page->dateRaw(),
'class'=>'uk-width-1-1 uk-form-medium',
'tip'=>$L->g('To schedule the post just select the date and time'),
'label'=>$L->g('Date')
));
// If the page is parent then doesn't can have a parent.
if(count($_Page->children())===0)
if(count($page->children())===0)
{
// Parent input
$options = array();
$options[NO_PARENT_CHAR] = '('.$Language->g('No parent').')';
$options += $dbPages->parentKeyList();
unset($options[$_Page->key()]);
unset($options[$page->key()]);
HTML::formSelect(array(
'name'=>'parent',
'label'=>$L->g('Parent'),
'class'=>'uk-width-1-1 uk-form-medium',
'options'=>$options,
'selected'=>$_Page->parentKey(),
'selected'=>$page->parentKey(),
'tip'=>''
));
}
@ -161,16 +169,16 @@ if(count($_Page->children())===0)
// Position input
HTML::formInputText(array(
'name'=>'position',
'value'=>$_Page->position(),
'class'=>'uk-width-1-1 uk-form-large',
'value'=>$page->position(),
'class'=>'uk-width-1-1 uk-form-medium',
'label'=>$L->g('Position')
));
// Slug input
HTML::formInputText(array(
'name'=>'slug',
'value'=>$_Page->slug(),
'class'=>'uk-width-1-1 uk-form-large',
'value'=>$page->slug(),
'class'=>'uk-width-1-1 uk-form-medium',
'tip'=>$L->g('you-can-modify-the-url-which-identifies'),
'label'=>$L->g('Friendly URL')
));
@ -191,6 +199,8 @@ $(document).ready(function()
{
var key = $("#jskey").val();
$("#jsdate").datetimepicker({format:"<?php echo DB_DATE_FORMAT ?>"});
$("#jsslug").keyup(function() {
var text = $(this).val();
var parent = $("#jsparent").val();

View File

@ -127,7 +127,7 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
HTML::formInputText(array(
'name'=>'date',
'value'=>Date::current(DB_DATE_FORMAT),
'class'=>'uk-width-1-1 uk-form-large',
'class'=>'uk-width-1-1 uk-form-medium',
'tip'=>$L->g('To schedule the post just select the date and time'),
'label'=>$L->g('Date')
));
@ -153,7 +153,7 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
HTML::formInputText(array(
'name'=>'position',
'value'=>'1',
'class'=>'uk-width-1-1 uk-form-large',
'class'=>'uk-width-1-1 uk-form-medium',
'label'=>$L->g('Position')
));
@ -161,7 +161,7 @@ echo '<div class="bl-publish-sidebar uk-width-2-10">';
HTML::formInputText(array(
'name'=>'slug',
'value'=>'',
'class'=>'uk-width-1-1 uk-form-large',
'class'=>'uk-width-1-1 uk-form-medium',
'tip'=>$L->g('you-can-modify-the-url-which-identifies'),
'label'=>$L->g('Friendly URL')
));

View File

@ -12,23 +12,14 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
HTML::legend(array('value'=>$L->g('General'), 'class'=>'first-child'));
HTML::formSelect(array(
'name'=>'postsperpage',
'label'=>$L->g('Posts per page'),
'name'=>'itemsPerPage',
'label'=>$L->g('Items per page'),
'options'=>array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6','7'=>'7','8'=>'8'),
'selected'=>$Site->postsPerPage(),
'selected'=>$Site->itemsPerPage(),
'class'=>'uk-width-1-3 uk-form-medium',
'tip'=>$L->g('number-of-posts-to-show-per-page')
));
HTML::formSelect(array(
'name'=>'homepage',
'label'=>$L->g('Default home page'),
'options'=>$_homePageList,
'selected'=>$Site->homepage(),
'class'=>'uk-width-1-3 uk-form-medium',
'tip'=>''
));
HTML::formInputText(array(
'name'=>'url',
'label'=>$L->g('Site URL'),
@ -37,6 +28,25 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
'tip'=>$L->g('the-url-of-your-site')
));
HTML::legend(array('value'=>$L->g('Website or Blog')));
HTML::formInputRadio(array(
'name'=>'orderBy',
'type'=>'radio',
'label'=>$L->g('Website'),
'value'=>'position',
'class'=>'',
'tip'=>'Select this option if you want to order your pages by position.'
));
HTML::formInputRadio(array(
'name'=>'orderBy',
'type'=>'radio',
'label'=>$L->g('Blog'),
'value'=>'date',
'class'=>''
));
HTML::legend(array('value'=>$L->g('Email account settings')));
HTML::formInputText(array(
@ -49,14 +59,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
HTML::legend(array('value'=>$L->g('URL Filters')));
HTML::formInputText(array(
'name'=>'uriPost',
'label'=>$L->g('Posts'),
'value'=>$Site->uriFilters('post'),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
HTML::formInputText(array(
'name'=>'uriPage',
'label'=>$L->g('Pages'),
@ -73,15 +75,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
'tip'=>''
));
HTML::formInputText(array(
'name'=>'uriBlog',
'label'=>$L->g('Blog'),
'value'=>$Site->uriFilters('blog'),
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
/*
HTML::formInputText(array(
'name'=>'uriCategory',
'label'=>$L->g('Category'),
@ -89,7 +82,7 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
'class'=>'uk-width-1-2 uk-form-medium',
'tip'=>''
));
*/
echo '<div class="uk-form-row">
<div class="uk-form-controls">
<button type="submit" class="uk-button uk-button-primary">'.$L->g('Save').'</button>

View File

@ -271,6 +271,9 @@ $Url->checkFilters( $Site->uriFilters() );
// --- Objects shortcuts ---
$L = $Language;
// --- CONSTANTS with dependency ---
define('ORDER_BY', $Site->orderBy());
// DEBUG: Print constants
// $arr = array_filter(get_defined_constants(), 'is_string');
// echo json_encode($arr);

View File

@ -214,7 +214,7 @@ class dbPages extends dbJSON
public function delete($key)
{
// Page doesn't exist in database
if(!$this->pageExists($key)) {
if(!$this->exists($key)) {
Log::set(__METHOD__.LOG_SEP.'The page does not exist. Key: '.$key);
}
@ -254,7 +254,7 @@ class dbPages extends dbJSON
// Return an array with the database for a page, FALSE otherwise.
public function getPageDB($key)
{
if( $this->pageExists($key) ) {
if( $this->exists($key) ) {
return $this->db[$key];
}
@ -316,6 +316,12 @@ class dbPages extends dbJSON
return $db;
}
// Return TRUE if the page exists, FALSE otherwise.
public function exists($key)
{
return isset( $this->db[$key] );
}
// Sort pages by date
public function sortByDate($HighToLow=true)
{
@ -340,7 +346,7 @@ class dbPages extends dbJSON
// Set a field of the database
public function setField($key, $field, $value)
{
if( $this->pageExists($key) ) {
if( $this->exists($key) ) {
settype($value, gettype($this->dbFields[$key]['value']));
$this->db[$key][$field] = $value;
}
@ -348,11 +354,7 @@ class dbPages extends dbJSON
return false;
}
// Return TRUE if the page exists, FALSE otherwise.
public function pageExists($key)
{
return isset($this->db[$key]);
}
public function parentKeyList()
{

View File

@ -26,7 +26,8 @@ class dbSite extends dbJSON
'facebook'=> array('inFile'=>false, 'value'=>''),
'googlePlus'=> array('inFile'=>false, 'value'=>''),
'instagram'=> array('inFile'=>false, 'value'=>''),
'github'=> array('inFile'=>false, 'value'=>'')
'github'=> array('inFile'=>false, 'value'=>''),
'orderBy'=> array('inFile'=>false, 'value'=>'date') // date or position
);
function __construct()
@ -123,6 +124,11 @@ class dbSite extends dbJSON
return $this->getField('googlePlus');
}
public function orderBy()
{
return $this->getField('orderBy');
}
// Returns the site title
public function title()
{

View File

@ -4,6 +4,7 @@ function buildPage($key)
{
global $dbPages;
global $dbUsers;
global $dbCategories;
global $Parsedown;
global $Site;
@ -49,6 +50,10 @@ function buildPage($key)
$username = $page->username();
$page->setField('user', $dbUsers->getUser($username));
// Category
$categoryKey = $page->categoryKey();
$page->setField('categoryMap', $dbCategories->getMap($categoryKey));
return $page;
}

View File

@ -177,7 +177,30 @@ class Page {
return '/'.$htmlPath.'/'.$tmp;
}
// ---- OLD
// Returns the category key
public function categoryKey()
{
return $this->getField('category');
}
// Returns the field from the array
// categoryMap = array( 'name'=>'', 'list'=>array() )
public function categoryMap($field)
{
$map = $this->getField('categoryMap');
if($field=='key') {
return $this->categoryKey();
}
elseif($field=='name') {
return $map['name'];
}
elseif($field=='list') {
return $map['list'];
}
return false;
}
// Returns the user object
// (boolean) $field, TRUE returns the value of the field, FALSE returns the object
@ -250,23 +273,18 @@ class Page {
// (boolean) $returnsArray, TRUE to get the tags as an array, FALSE to get the tags separeted by comma
public function tags($returnsArray=false)
{
global $Url;
$tags = $this->getField('tags');
if($returnsArray) {
if($tags==false) {
return array();
}
return $tags;
}
else {
if($tags==false) {
return false;
}
// Return string with tags separeted by comma.
return implode(', ', $tags);
}
@ -314,12 +332,6 @@ class Page {
return $this->getField('readMore');
}
//
public function category()
{
return $this->getField('category');
}
public function uuid()
{
return $this->getField('uuid');