From 708514fc815fd36eafce785a664b81a737610b55 Mon Sep 17 00:00:00 2001 From: dignajar Date: Sun, 20 Sep 2015 18:46:50 -0300 Subject: [PATCH] Updates --- admin/themes/default/css/favicon.png | Bin 0 -> 1005 bytes admin/themes/default/index.php | 2 + kernel/boot/rules/70.pages.php | 15 ++--- kernel/boot/rules/70.posts.php | 16 ++--- kernel/dbpages.class.php | 24 ++++++-- kernel/dbposts.class.php | 85 +++++++++++++++------------ kernel/helpers/filesystem.class.php | 2 + plugins/pages/plugin.php | 45 +++++++------- themes/pure/css/blog.css | 8 ++- 9 files changed, 109 insertions(+), 88 deletions(-) create mode 100644 admin/themes/default/css/favicon.png diff --git a/admin/themes/default/css/favicon.png b/admin/themes/default/css/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..517c6c127f5793d143f271e7008b55c45bcb4c25 GIT binary patch literal 1005 zcmVPx&r%6OXR9FeUSIu^J=B^nFVvZj#AnEt?Ju^X9#8 z-g`T<`{r8{)7e}um$kmW-eWeKpU@H~^`>lxhgh~pE-x=X?d|P-U0Yi_hoM|EsR0KE z2M(*%+NRd6udm;lpPwHko0pu+o12^L?CeYp5y=TsPF-AF1jFI*ZxMj&@)9^cK7L^` znci`uX!QI2YRGlz2)6FpHE1>STJL*DWnAVYl0TTjaOW3GkRb z7K`P(*XzB<6@1J~fX>;*4MvZ&6An6#&xJc-;elFPTdPQZFG-R;7K<@-o6W|ms-V7V z^g^M8XxL5EF;9{wG!_f(v6A9o}t9WZ@Xb{C{LLInP0@KseY=3{h$eGXQV{L7D7ik^_ zMe5W0gvSha0A%7$2|$tBZnq2hKy`I>5mtxd*R>Ovn3&Mv zS2rYv1R~VkdY1$O0k*rls|!9pKF*v@&5tZ1fy2>V{alwv0wod&c6fNG3r>_w6NlIm z2xMbpBRHI{YKVf;-rlb1m>cWr>bNKx6NoK=y;1^Ggm@-G73z9>d)fK9F2c)dYikRa ztLIaQjdy^7z0&P8N@Cd?adL7}_!+7_b6JB=oFFD}sDupE8SEAE|7eKC>AJE52ny;< z?DYYOJz7bOjg7I>(^D--&PM)nvPxJ+EI!XA0N(C!IQqd}scbp`NT(Ir#<9vscX-}h z?*zW+$)hy(tN#&{Bj8T5+wvGd=pqr62xHpD#zvAJ>=EC3?lms~C>ItMeo&U(Brea* z%_;1dga37;uO^*Jr5=Vtp`V35a)pw6-^XI55Lx{0#iAoik$=$47T#pz$t z*V)UBJ?m=k00000NkvXXu0mjflz!ZO literal 0 HcmV?d00001 diff --git a/admin/themes/default/index.php b/admin/themes/default/index.php index e2c4f1f0..f09e96b9 100644 --- a/admin/themes/default/index.php +++ b/admin/themes/default/index.php @@ -8,6 +8,8 @@ <?php echo $layout['title'] ?> + + diff --git a/kernel/boot/rules/70.pages.php b/kernel/boot/rules/70.pages.php index d3ebd2bf..2e0400ce 100644 --- a/kernel/boot/rules/70.pages.php +++ b/kernel/boot/rules/70.pages.php @@ -30,26 +30,21 @@ function build_page($key) global $dbUsers; global $Parsedown; - // Page object. + // Page object, content from FILE. $Page = new Page($key); if( !$Page->isValid() ) { return false; } - // Page database. + // Page database, content from DATABASE JSON. $db = $dbPages->getDb($key); if( !$db ) { return false; } - // Foreach field from database. - foreach($db as $field=>$value) - { - // Not overwrite the value from file. - $Page->setField($field, $value, false); - - // Overwrite the value on the db. - //$dbPages->setDb($key, $field, $value); + // Foreach field from DATABASE. + foreach($db as $field=>$value) { + $Page->setField($field, $value); } // Content in raw format diff --git a/kernel/boot/rules/70.posts.php b/kernel/boot/rules/70.posts.php index fc01bf6f..62f6ff9e 100644 --- a/kernel/boot/rules/70.posts.php +++ b/kernel/boot/rules/70.posts.php @@ -34,25 +34,23 @@ function buildPost($key) global $Parsedown; global $Site; - // Post object, this get the content from the file. + // Post object, content from FILE. $Post = new Post($key); if( !$Post->isValid() ) { Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from file with key: '.$key); return false; } - // Page database, this get the contente from the database json. + // Post database, content from DATABASE JSON. $db = $dbPosts->getDb($key); if( !$db ) { Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from database with key: '.$key); return false; } - // Foreach field from database. - foreach($db as $field=>$value) - { - // Not overwrite the value from file. - $Post->setField($field, $value, false); + // Foreach field from DATABASE. + foreach($db as $field=>$value) { + $Post->setField($field, $value); } // 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. if( $Site->cliMode() ) { - $dbPosts->regenerateCli(); + if($dbPosts->regenerateCli()) { + reIndexTagsPosts(); + } } // Execute the scheduler. diff --git a/kernel/dbpages.class.php b/kernel/dbpages.class.php index 4be86e09..298349c5 100644 --- a/kernel/dbpages.class.php +++ b/kernel/dbpages.class.php @@ -372,13 +372,27 @@ class dbPages extends dbJSON // Update all fields from FILE to DATABASE. foreach($fields as $f=>$v) { - if($Page->getField($f)) { - // DEBUG: Validar/Sanitizar valores, ej: validar formato fecha - $this->db[$key][$f] = $Page->getField($f); + // If the field exists on the FILE, update it. + if($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 diff --git a/kernel/dbposts.class.php b/kernel/dbposts.class.php index 57d23dd4..68122961 100644 --- a/kernel/dbposts.class.php +++ b/kernel/dbposts.class.php @@ -378,13 +378,15 @@ class dbPosts extends dbJSON return $a['date']<$b['date']; } + // Return TRUE if there are new posts, FALSE otherwise. public function regenerateCli() { $db = $this->db; - $newPaths = array(); + $allPosts = array(); $fields = array(); + $currentDate = Date::current(DB_DATE_FORMAT); - // Default fields and value + // Generate default fields and values. foreach($this->dbFields as $field=>$options) { if(!$options['inFile']) { $fields[$field] = $options['value']; @@ -392,55 +394,62 @@ class dbPosts extends dbJSON } $fields['status'] = CLI_STATUS; - $fields['date'] = Date::current(DB_DATE_FORMAT); + $fields['date'] = $currentDate; - // Recovery pages from the first level of directories - //$tmpPaths = glob(PATH_POSTS.'*', GLOB_ONLYDIR); + // Recovery posts from the first level of directories $tmpPaths = Filesystem::listDirectories(PATH_POSTS); foreach($tmpPaths as $directory) { - $key = basename($directory); - - 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(file_exists($directory.DS.'index.txt')) { - 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. - if($f=='tags') { - $valueFromFile = array_map('trim', explode(',', $valueFromFile)); - $valueFromFile = implode(',', $valueFromFile); - } - elseif($f=='date') { - if(!Valid::date($valueFromFile,DB_DATE_FORMAT)) { - $valueFromFile = Date::current(DB_DATE_FORMAT); + // Create the new entry if not exists on DATABASE. + if(!isset($this->db[$key])) { + // New entry on database + $this->db[$key] = $fields; + } + + // Create the post from FILE. + $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 - foreach( array_diff_key($db, $newPaths) as $key=>$data ) { + // Remove orphan posts from db, the orphan posts are posts deleted by hand (directory deleted). + foreach( array_diff_key($db, $allPosts) as $key=>$data ) { unset($this->db[$key]); } diff --git a/kernel/helpers/filesystem.class.php b/kernel/helpers/filesystem.class.php index 3832d660..e5a3310e 100644 --- a/kernel/helpers/filesystem.class.php +++ b/kernel/helpers/filesystem.class.php @@ -3,6 +3,8 @@ class Filesystem { // NEW + + // Returns an array with the absolutes directories. public static function listDirectories($path, $regex='*') { $directories = glob($path.$regex, GLOB_ONLYDIR); diff --git a/plugins/pages/plugin.php b/plugins/pages/plugin.php index 262ad11c..a430fadf 100644 --- a/plugins/pages/plugin.php +++ b/plugins/pages/plugin.php @@ -32,49 +32,46 @@ class pluginPages extends Plugin { global $Language; global $pagesParents; global $Site, $Url; - $home = $Url->whereAmI()==='home'; $html = '
'; - // Print the label if it not empty. + // Print the label if not empty. $label = $this->getDbField('label'); if( !empty($label) ) { $html .= '

'.$label.'

'; } $html .= '
'; - - $parents = $pagesParents[NO_PARENT_CHAR]; - $html .= '
    '; + // Show home link ? if($this->getDbField('homeLink')) { - $current = ($Site->homeLink()==$home) ? ' class="active"' : ''; - $html .= ''.$Language->get('Home').''; + $html .= '
  • '; + $html .= ''.$Language->get('Home').''; + $html .= '
  • '; } + $parents = $pagesParents[NO_PARENT_CHAR]; foreach($parents as $parent) { - //if($Site->homepage()!==$parent->key()) + // Print the parent + $html .= '
  • '; + $html .= ''.$parent->title().''; + + // Check if the parent has children + if(isset($pagesParents[$parent->key()])) { - $current_parent = ($parent->slug()==$Url->slug()) ? ' class="active"' : ''; - // Print the parent - $html .= ''.$parent->title().''; + $children = $pagesParents[$parent->key()]; - // Check if the parent has children - if(isset($pagesParents[$parent->key()])) + // Print children + $html .= '
      '; + foreach($children as $child) { - $children = $pagesParents[$parent->key()]; - - // Print the children - $html .= '
        '; - foreach($children as $child) - { - $current_child = ($child->slug()==$Url->slug()) ? ' class="active"' : ''; - $html .= ''.$child->title().''; - } - $html .= '
      '; + $html .= '
    • '; + $html .= ''.$child->title().''; + $html .= '
    • '; } + $html .= '
    '; } } @@ -84,4 +81,4 @@ class pluginPages extends Plugin { return $html; } -} +} \ No newline at end of file diff --git a/themes/pure/css/blog.css b/themes/pure/css/blog.css index e08955f3..482f206b 100644 --- a/themes/pure/css/blog.css +++ b/themes/pure/css/blog.css @@ -268,9 +268,6 @@ div.plugin-content li { margin-top: 5px; } -div.plugin-content ul li.active a { - color: #2672ec; -} div.plugin-content ul { display: block; list-style-type: none; @@ -292,6 +289,11 @@ div.plugin-content ul > li > ul > li > a { color: #777; } +div.plugin-content a.active { + color: #2672ec !important; +} + + /* ------------------------ Responsive ------------------------ */