This commit is contained in:
dignajar 2015-09-20 18:46:50 -03:00
parent f3ba92527b
commit 708514fc81
9 changed files with 109 additions and 88 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

View File

@ -8,6 +8,8 @@
<title><?php echo $layout['title'] ?></title> <title><?php echo $layout['title'] ?></title>
<link rel="shortcut icon" type="image/x-icon" href="./css/favicon.png">
<link rel="stylesheet" type="text/css" href="./css/kube.min.css?version=<?php echo BLUDIT_VERSION ?>"> <link rel="stylesheet" type="text/css" href="./css/kube.min.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/default.css?version=<?php echo BLUDIT_VERSION ?>"> <link rel="stylesheet" type="text/css" href="./css/default.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/jquery.datetimepicker.css?version=<?php echo BLUDIT_VERSION ?>"> <link rel="stylesheet" type="text/css" href="./css/jquery.datetimepicker.css?version=<?php echo BLUDIT_VERSION ?>">

View File

@ -30,26 +30,21 @@ function build_page($key)
global $dbUsers; global $dbUsers;
global $Parsedown; global $Parsedown;
// Page object. // Page object, content from FILE.
$Page = new Page($key); $Page = new Page($key);
if( !$Page->isValid() ) { if( !$Page->isValid() ) {
return false; return false;
} }
// Page database. // Page database, content from DATABASE JSON.
$db = $dbPages->getDb($key); $db = $dbPages->getDb($key);
if( !$db ) { if( !$db ) {
return false; return false;
} }
// Foreach field from database. // Foreach field from DATABASE.
foreach($db as $field=>$value) foreach($db as $field=>$value) {
{ $Page->setField($field, $value);
// Not overwrite the value from file.
$Page->setField($field, $value, false);
// Overwrite the value on the db.
//$dbPages->setDb($key, $field, $value);
} }
// Content in raw format // Content in raw format

View File

@ -34,25 +34,23 @@ function buildPost($key)
global $Parsedown; global $Parsedown;
global $Site; global $Site;
// Post object, this get the content from the file. // Post object, content from FILE.
$Post = new Post($key); $Post = new Post($key);
if( !$Post->isValid() ) { if( !$Post->isValid() ) {
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from file with key: '.$key); Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from file with key: '.$key);
return false; return false;
} }
// Page database, this get the contente from the database json. // Post database, content from DATABASE JSON.
$db = $dbPosts->getDb($key); $db = $dbPosts->getDb($key);
if( !$db ) { if( !$db ) {
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from database with key: '.$key); Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from database with key: '.$key);
return false; return false;
} }
// Foreach field from database. // Foreach field from DATABASE.
foreach($db as $field=>$value) foreach($db as $field=>$value) {
{ $Post->setField($field, $value);
// Not overwrite the value from file.
$Post->setField($field, $value, false);
} }
// Content in raw format // Content in raw format
@ -119,7 +117,9 @@ function buildPostsForPage($pageNumber=0, $amount=POSTS_PER_PAGE_ADMIN, $removeU
// Search for changes on posts by the user. // Search for changes on posts by the user.
if( $Site->cliMode() ) { if( $Site->cliMode() ) {
$dbPosts->regenerateCli(); if($dbPosts->regenerateCli()) {
reIndexTagsPosts();
}
} }
// Execute the scheduler. // Execute the scheduler.

View File

@ -372,13 +372,27 @@ class dbPages extends dbJSON
// Update all fields from FILE to DATABASE. // Update all fields from FILE to DATABASE.
foreach($fields as $f=>$v) foreach($fields as $f=>$v)
{ {
if($Page->getField($f)) { // If the field exists on the FILE, update it.
// DEBUG: Validar/Sanitizar valores, ej: validar formato fecha if($Page->getField($f))
$this->db[$key][$f] = $Page->getField($f); {
$valueFromFile = $Page->getField($f);
if($f=='tags') {
// Generate tags array.
$this->db[$key]['tags'] = $this->generateTags($valueFromFile);
}
elseif($f=='date') {
// Validate Date from file
if(Valid::date($valueFromFile, DB_DATE_FORMAT)) {
$this->db[$key]['date'] = $valueFromFile;
}
}
else {
// Sanitize the values from file.
$this->db[$key][$f] = Sanitize::html($valueFromFile);
}
} }
} }
// DEBUG: Update tags
} }
// Remove old pages from db // Remove old pages from db

View File

@ -378,13 +378,15 @@ class dbPosts extends dbJSON
return $a['date']<$b['date']; return $a['date']<$b['date'];
} }
// Return TRUE if there are new posts, FALSE otherwise.
public function regenerateCli() public function regenerateCli()
{ {
$db = $this->db; $db = $this->db;
$newPaths = array(); $allPosts = array();
$fields = array(); $fields = array();
$currentDate = Date::current(DB_DATE_FORMAT);
// Default fields and value // Generate default fields and values.
foreach($this->dbFields as $field=>$options) { foreach($this->dbFields as $field=>$options) {
if(!$options['inFile']) { if(!$options['inFile']) {
$fields[$field] = $options['value']; $fields[$field] = $options['value'];
@ -392,55 +394,62 @@ class dbPosts extends dbJSON
} }
$fields['status'] = CLI_STATUS; $fields['status'] = CLI_STATUS;
$fields['date'] = Date::current(DB_DATE_FORMAT); $fields['date'] = $currentDate;
// Recovery pages from the first level of directories // Recovery posts from the first level of directories
//$tmpPaths = glob(PATH_POSTS.'*', GLOB_ONLYDIR);
$tmpPaths = Filesystem::listDirectories(PATH_POSTS); $tmpPaths = Filesystem::listDirectories(PATH_POSTS);
foreach($tmpPaths as $directory) foreach($tmpPaths as $directory)
{ {
$key = basename($directory); if(file_exists($directory.DS.'index.txt'))
if(file_exists($directory.DS.'index.txt')) {
// The key is the directory name
$newPaths[$key] = true;
}
}
foreach($newPaths as $key=>$value)
{
if(!isset($this->db[$key])) {
$this->db[$key] = $fields;
}
$Post = new Post($key);
// Update all fields from FILE to DATABASE.
foreach($fields as $f=>$v)
{ {
if($Post->getField($f)) { // The key is the directory name.
$key = basename($directory);
$valueFromFile = $Post->getField($f); // All keys posts
$allPosts[$key] = true;
// Validate values from file. // Create the new entry if not exists on DATABASE.
if($f=='tags') { if(!isset($this->db[$key])) {
$valueFromFile = array_map('trim', explode(',', $valueFromFile)); // New entry on database
$valueFromFile = implode(',', $valueFromFile); $this->db[$key] = $fields;
} }
elseif($f=='date') {
if(!Valid::date($valueFromFile,DB_DATE_FORMAT)) { // Create the post from FILE.
$valueFromFile = Date::current(DB_DATE_FORMAT); $Post = new Post($key);
// Update all fields from FILE to DATABASE.
foreach($fields as $f=>$v)
{
// If the field exists on the FILE, update it.
if($Post->getField($f))
{
$valueFromFile = $Post->getField($f);
if($f=='tags') {
// Generate tags array.
$this->db[$key]['tags'] = $this->generateTags($valueFromFile);
}
elseif($f=='date') {
// Validate Date from file
if(Valid::date($valueFromFile, DB_DATE_FORMAT)) {
$this->db[$key]['date'] = $valueFromFile;
if( $valueFromFile>$currentDate ) {
$this->db[$key]['status'] = 'scheduled';
}
}
}
else {
// Sanitize the values from file.
$this->db[$key][$f] = Sanitize::html($valueFromFile);
} }
} }
// Sanitize the values from file.
$this->db[$key][$f] = Sanitize::html($valueFromFile);
} }
} }
} }
// Remove old posts from db // Remove orphan posts from db, the orphan posts are posts deleted by hand (directory deleted).
foreach( array_diff_key($db, $newPaths) as $key=>$data ) { foreach( array_diff_key($db, $allPosts) as $key=>$data ) {
unset($this->db[$key]); unset($this->db[$key]);
} }

View File

@ -3,6 +3,8 @@
class Filesystem { class Filesystem {
// NEW // NEW
// Returns an array with the absolutes directories.
public static function listDirectories($path, $regex='*') public static function listDirectories($path, $regex='*')
{ {
$directories = glob($path.$regex, GLOB_ONLYDIR); $directories = glob($path.$regex, GLOB_ONLYDIR);

View File

@ -32,49 +32,46 @@ class pluginPages extends Plugin {
global $Language; global $Language;
global $pagesParents; global $pagesParents;
global $Site, $Url; global $Site, $Url;
$home = $Url->whereAmI()==='home';
$html = '<div class="plugin plugin-pages">'; $html = '<div class="plugin plugin-pages">';
// Print the label if it not empty. // Print the label if not empty.
$label = $this->getDbField('label'); $label = $this->getDbField('label');
if( !empty($label) ) { if( !empty($label) ) {
$html .= '<h2>'.$label.'</h2>'; $html .= '<h2>'.$label.'</h2>';
} }
$html .= '<div class="plugin-content">'; $html .= '<div class="plugin-content">';
$parents = $pagesParents[NO_PARENT_CHAR];
$html .= '<ul>'; $html .= '<ul>';
// Show home link ?
if($this->getDbField('homeLink')) { if($this->getDbField('homeLink')) {
$current = ($Site->homeLink()==$home) ? ' class="active"' : ''; $html .= '<li>';
$html .= '<li' .$current. '><a class="parent" href="'.$Site->homeLink().'">'.$Language->get('Home').'</a></li>'; $html .= '<a class="parent'.( ($Url->whereAmI()=='home')?' active':'').'" href="'.$Site->homeLink().'">'.$Language->get('Home').'</a>';
$html .= '</li>';
} }
$parents = $pagesParents[NO_PARENT_CHAR];
foreach($parents as $parent) foreach($parents as $parent)
{ {
//if($Site->homepage()!==$parent->key()) // Print the parent
$html .= '<li>';
$html .= '<a class="parent '.( ($parent->key()==$Url->slug())?' active':'').'" href="'.$parent->permalink().'">'.$parent->title().'</a>';
// Check if the parent has children
if(isset($pagesParents[$parent->key()]))
{ {
$current_parent = ($parent->slug()==$Url->slug()) ? ' class="active"' : ''; $children = $pagesParents[$parent->key()];
// Print the parent
$html .= '<li' .$current_parent. '><a class="parent" href="'.$parent->permalink().'">'.$parent->title().'</a>';
// Check if the parent has children // Print children
if(isset($pagesParents[$parent->key()])) $html .= '<ul>';
foreach($children as $child)
{ {
$children = $pagesParents[$parent->key()]; $html .= '<li>';
$html .= '<a class="children '.( ($child->key()==$Url->slug())?' active':'').'" href="'.$child->permalink().'">'.$child->title().'</a>';
// Print the children $html .= '</li>';
$html .= '<ul>';
foreach($children as $child)
{
$current_child = ($child->slug()==$Url->slug()) ? ' class="active"' : '';
$html .= '<li' .$current_child. '><a class="children" href="'.$child->permalink().'">'.$child->title().'</a></li>';
}
$html .= '</ul>';
} }
$html .= '</ul>';
} }
} }
@ -84,4 +81,4 @@ class pluginPages extends Plugin {
return $html; return $html;
} }
} }

View File

@ -268,9 +268,6 @@ div.plugin-content li {
margin-top: 5px; margin-top: 5px;
} }
div.plugin-content ul li.active a {
color: #2672ec;
}
div.plugin-content ul { div.plugin-content ul {
display: block; display: block;
list-style-type: none; list-style-type: none;
@ -292,6 +289,11 @@ div.plugin-content ul > li > ul > li > a {
color: #777; color: #777;
} }
div.plugin-content a.active {
color: #2672ec !important;
}
/* ------------------------ /* ------------------------
Responsive Responsive
------------------------ */ ------------------------ */