Improvements on tags

This commit is contained in:
dignajar 2015-08-29 02:02:09 -03:00
parent 1635937225
commit 63d11a755b
18 changed files with 213 additions and 25 deletions

View File

@ -26,6 +26,8 @@ function editPage($args)
{ {
$dbPages->regenerate(); $dbPages->regenerate();
//$dbTags->reindexPages( $dbPages->db );
Alert::set($Language->g('The changes have been saved')); Alert::set($Language->g('The changes have been saved'));
Redirect::page('admin', 'edit-page/'.$args['key']); Redirect::page('admin', 'edit-page/'.$args['key']);
} }

View File

@ -7,6 +7,7 @@
function editPost($args) function editPost($args)
{ {
global $dbPosts; global $dbPosts;
global $dbTags;
global $Language; global $Language;
// Post status, published or draft. // Post status, published or draft.
@ -20,6 +21,9 @@ function editPost($args)
// Edit the post. // Edit the post.
if( $dbPosts->edit($args) ) if( $dbPosts->edit($args) )
{ {
// Regenerate the database tags
$dbTags->reindexPosts( $dbPosts->db );
Alert::set($Language->g('The changes have been saved')); Alert::set($Language->g('The changes have been saved'));
Redirect::page('admin', 'edit-post/'.$args['key']); Redirect::page('admin', 'edit-post/'.$args['key']);
} }
@ -32,10 +36,14 @@ function editPost($args)
function deletePost($key) function deletePost($key)
{ {
global $dbPosts; global $dbPosts;
global $dbTags;
global $Language; global $Language;
if( $dbPosts->delete($key) ) if( $dbPosts->delete($key) )
{ {
// Regenerate the database tags
$dbTags->reindexPosts( $dbPosts->db );
Alert::set($Language->g('The post has been deleted successfully')); Alert::set($Language->g('The post has been deleted successfully'));
Redirect::page('admin', 'manage-posts'); Redirect::page('admin', 'manage-posts');
} }

View File

@ -24,6 +24,8 @@ function addPage($args)
// Add the page. // Add the page.
if( $dbPages->add($args) ) if( $dbPages->add($args) )
{ {
//$dbTags->reindexPages( $dbPages->db );
Alert::set($Language->g('Page added successfully')); Alert::set($Language->g('Page added successfully'));
Redirect::page('admin', 'manage-pages'); Redirect::page('admin', 'manage-pages');
} }

View File

@ -11,6 +11,7 @@
function addPost($args) function addPost($args)
{ {
global $dbPosts; global $dbPosts;
global $dbTags;
global $Language; global $Language;
// Page status, published or draft. // Page status, published or draft.
@ -24,6 +25,9 @@ function addPost($args)
// Add the page. // Add the page.
if( $dbPosts->add($args) ) if( $dbPosts->add($args) )
{ {
// Regenerate the database tags
$dbTags->reindexPosts( $dbPosts->db );
Alert::set($Language->g('Post added successfully')); Alert::set($Language->g('Post added successfully'));
Redirect::page('admin', 'manage-posts'); Redirect::page('admin', 'manage-posts');
} }

View File

@ -6,10 +6,10 @@
<label> <label>
<?php $Language->p('Title') ?> <?php $Language->p('Title') ?>
<input id="jstitle" name="title" type="text" class="width-80" value="<?php echo $_Page->title() ?>"> <input id="jstitle" name="title" type="text" class="width-90" value="<?php echo $_Page->title() ?>">
</label> </label>
<label class="width-80"> <label class="width-90">
<?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span> <?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span>
<textarea id="jscontent" name="content" rows="15"><?php echo $_Page->contentRaw(false) ?></textarea> <textarea id="jscontent" name="content" rows="15"><?php echo $_Page->contentRaw(false) ?></textarea>
</label> </label>

View File

@ -6,10 +6,10 @@
<label> <label>
<?php $Language->p('Title') ?> <?php $Language->p('Title') ?>
<input id="jstitle" name="title" type="text" class="width-80" value="<?php echo $_Post->title() ?>"> <input id="jstitle" name="title" type="text" class="width-90" value="<?php echo $_Post->title() ?>">
</label> </label>
<label class="width-80"> <label class="width-90">
<?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span> <?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span>
<textarea id="jscontent" name="content" rows="15"><?php echo $_Post->contentRaw(false) ?></textarea> <textarea id="jscontent" name="content" rows="15"><?php echo $_Post->contentRaw(false) ?></textarea>
</label> </label>

View File

@ -4,10 +4,10 @@
<label> <label>
<?php $Language->p('Title') ?> <?php $Language->p('Title') ?>
<input id="jstitle" name="title" type="text" class="width-80"> <input id="jstitle" name="title" type="text" class="width-90">
</label> </label>
<label class="width-80"> <label class="width-90">
<?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span> <?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span>
<textarea id="jscontent" name="content" rows="15"></textarea> <textarea id="jscontent" name="content" rows="15"></textarea>
</label> </label>

View File

@ -4,10 +4,10 @@
<label> <label>
<?php $Language->p('Title') ?> <?php $Language->p('Title') ?>
<input id="jstitle" name="title" type="text" class="width-80"> <input id="jstitle" name="title" type="text" class="width-90">
</label> </label>
<label class="width-80"> <label class="width-90">
<?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span> <?php $Language->p('Content') ?> <span class="forms-desc"><?php $Language->p('HTML and Markdown code supported') ?></span>
<textarea id="jscontent" name="content" rows="15" ></textarea> <textarea id="jscontent" name="content" rows="15" ></textarea>
</label> </label>

View File

@ -197,6 +197,12 @@ function install($adminPassword, $email)
error_log($errorText, 0); error_log($errorText, 0);
} }
if(!mkdir(PATH_PLUGINS_DATABASES.'simplemde', $dirpermissions, true))
{
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES;
error_log($errorText, 0);
}
if(!mkdir(PATH_UPLOADS, $dirpermissions, true)) if(!mkdir(PATH_UPLOADS, $dirpermissions, true))
{ {
$errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS; $errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS;
@ -294,6 +300,24 @@ function install($adminPassword, $email)
file_put_contents(PATH_PLUGINS_DATABASES.'pages'.DS.'db.php', $dataHead.json_encode($data, JSON_PRETTY_PRINT), LOCK_EX); file_put_contents(PATH_PLUGINS_DATABASES.'pages'.DS.'db.php', $dataHead.json_encode($data, JSON_PRETTY_PRINT), LOCK_EX);
// File plugins/simplemde/db.php
file_put_contents(
PATH_PLUGINS_DATABASES.'simplemde'.DS.'db.php',
$dataHead.json_encode(
array(
'position'=>0
),
JSON_PRETTY_PRINT),
LOCK_EX
);
// File tags.php
$data = array(
'postsIndex'=>array(),
'pagesIndex'=>array()
);
file_put_contents(PATH_DATABASES.'tags.php', $dataHead.json_encode($data, JSON_PRETTY_PRINT), LOCK_EX);
// File index.txt for error page // File index.txt for error page
$data = 'Title: '.$Language->get('Error').' $data = 'Title: '.$Language->get('Error').'
@ -305,11 +329,9 @@ function install($adminPassword, $email)
$data = 'Title: '.$Language->get('First post').' $data = 'Title: '.$Language->get('First post').'
Content: Content:
'.$Language->get('Congratulations you have successfully installed your Bludit').' ## '.$Language->get('Congratulations you have successfully installed your Bludit').'
---
'.$Language->get('Whats next').' ### '.$Language->get('Whats next').'
---
- '.$Language->get('Manage your Bludit from the admin panel').' - '.$Language->get('Manage your Bludit from the admin panel').'
- '.$Language->get('Follow Bludit on').' [Twitter](https://twitter.com/bludit) / [Facebook](https://www.facebook.com/pages/Bludit/239255789455913) / [Google+](https://plus.google.com/+Bluditcms) - '.$Language->get('Follow Bludit on').' [Twitter](https://twitter.com/bludit) / [Facebook](https://www.facebook.com/pages/Bludit/239255789455913) / [Google+](https://plus.google.com/+Bluditcms)
- '.$Language->get('Visit the support forum').' - '.$Language->get('Visit the support forum').'

View File

@ -93,6 +93,7 @@ include(PATH_ABSTRACT.'plugin.class.php');
include(PATH_KERNEL.'dbposts.class.php'); include(PATH_KERNEL.'dbposts.class.php');
include(PATH_KERNEL.'dbpages.class.php'); include(PATH_KERNEL.'dbpages.class.php');
include(PATH_KERNEL.'dbusers.class.php'); include(PATH_KERNEL.'dbusers.class.php');
include(PATH_KERNEL.'dbtags.class.php');
include(PATH_KERNEL.'dblanguage.class.php'); include(PATH_KERNEL.'dblanguage.class.php');
include(PATH_KERNEL.'dbsite.class.php'); include(PATH_KERNEL.'dbsite.class.php');
include(PATH_KERNEL.'post.class.php'); include(PATH_KERNEL.'post.class.php');
@ -126,6 +127,7 @@ if(Session::started()===false) {
$dbPosts = new dbPosts(); $dbPosts = new dbPosts();
$dbPages = new dbPages(); $dbPages = new dbPages();
$dbUsers = new dbUsers(); $dbUsers = new dbUsers();
$dbTags = new dbTags();
$Site = new dbSite(); $Site = new dbSite();
$Url = new Url(); $Url = new Url();
$Parsedown = new Parsedown(); $Parsedown = new Parsedown();

67
kernel/dbtags.class.php Normal file
View File

@ -0,0 +1,67 @@
<?php defined('BLUDIT') or die('Bludit CMS.');
class dbTags extends dbJSON
{
/*
$postsIndex['tag1']['name'] = 'Tag 1';
$postsIndex['tag1']['posts'] = array('post1','post2','post3');
$postsIndex['tag2']['name'] = 'Tag 2';
$postsIndex['tag2']['posts'] = array('post1','post5');
*/
private $dbFields = array(
'postsIndex'=>array('inFile'=>false, 'value'=>array()),
'pagesIndex'=>array('inFile'=>false, 'value'=>array())
);
function __construct()
{
parent::__construct(PATH_DATABASES.'tags.php');
}
public function countPostsByTag($tagKey)
{
if( isset($this->db['postsIndex'][$tagKey]) ) {
return count($this->db['postsIndex'][$tagKey]['posts']);
}
else {
return false;
}
}
public function reindexPosts($db)
{
$tagsIndex = array();
$currentDate = Date::current(DB_DATE_FORMAT);
// Foreach post
foreach($db as $postKey=>$values)
{
if( ($values['status']==='published') && ($values['date']<=$currentDate) )
{
$explode = explode(',', $values['tags']);
// Foreach tag from post
foreach($explode as $tagName)
{
$tagName = trim($tagName);
$tagKey = Text::cleanUrl($tagName);
if( isset($tagsIndex[$tagKey]) ) {
array_push($tagsIndex[$tagKey]['posts'], $postKey);
}
else {
$tagsIndex[$tagKey]['name'] = $tagName;
$tagsIndex[$tagKey]['posts'] = array($postKey);
}
}
}
}
$this->db['postsIndex'] = $tagsIndex;
if( $this->save() === false ) {
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
return false;
}
}
}

View File

@ -1,7 +0,0 @@
body {
font-size: 0.9em;
}
*:first-child {
margin-top: 0;
}

File diff suppressed because one or more lines are too long

14
plugins/simplemde/js/simplemde.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -23,9 +23,13 @@ class pluginsimpleMDE extends Plugin {
$language = $Site->shortLanguage(); $language = $Site->shortLanguage();
$pluginPath = $this->htmlPath(); $pluginPath = $this->htmlPath();
$html = '<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css">'; $html .= '<link rel="stylesheet" href="'.$pluginPath.'css/simplemde.min.css">';
$html .= '<link rel="stylesheet" href="//cdn.jsdelivr.net/simplemde/latest/simplemde.min.css">'; $html .= '<script src="'.$pluginPath.'js/simplemde.min.js"></script>';
$html .= '<script src="//cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script>';
//$html = '<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css">';
//$html .= '<link rel="stylesheet" href="//cdn.jsdelivr.net/simplemde/latest/simplemde.min.css">';
//$html .= '<script src="//cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script>';
} }
@ -50,14 +54,14 @@ class pluginsimpleMDE extends Plugin {
$html .= $html .=
'var simplemde = new SimpleMDE({ 'var simplemde = new SimpleMDE({
element: document.getElementById("jscontent"), element: document.getElementById("jscontent"),
status: true, status: false,
toolbarTips: true, toolbarTips: true,
toolbarGuideIcon: true, toolbarGuideIcon: true,
autofocus: true, autofocus: true,
lineWrapping: false, lineWrapping: false,
indentWithTabs: true, indentWithTabs: true,
tabSize: 4, tabSize: 4,
spellChecker: true spellChecker: false
});'; });';
$html .= '}); </script>'; $html .= '}); </script>';
} }

View File

@ -0,0 +1,12 @@
{
"plugin-data":
{
"name": "Tags list",
"description": "Shows all tags.",
"author": "Bludit",
"email": "",
"website": "http://www.bludit.com",
"version": "0.1",
"releaseDate": "2015-08-02"
}
}

51
plugins/tags/plugin.php Executable file
View File

@ -0,0 +1,51 @@
<?php
class pluginTags extends Plugin {
public function init()
{
$this->dbFields = array(
'label'=>'Tags'
);
}
public function form()
{
global $Language;
$html = '<div>';
$html .= '<label>Plugin label</label>';
$html .= '<input name="label" id="jslabel" type="text" value="'.$this->getDbField('label').'">';
$html .= '</div>';
return $html;
}
public function siteSidebar()
{
global $Language;
global $dbTags;
$html = '<div class="plugin plugin-tags">';
$html .= '<h2>'.$this->getDbField('label').'</h2>';
$html .= '<div class="plugin-content">';
$db = $dbTags->db['postsIndex'];
$html .= '<ul>';
foreach($db as $tagKey=>$fields)
{
$count = $dbTags->countPostsByTag($tagKey);
// Print the parent
$html .= '<li><a href="tag/'.$tagKey.'">'.$fields['name'].' ('.$count.')</a></li>';
}
$html .= '</ul>';
$html .= '</div>';
$html .= '</div>';
return $html;
}
}