diff --git a/bl-kernel/admin/views/settings-advanced.php b/bl-kernel/admin/views/settings-advanced.php
index 6d728111..110f7ce6 100644
--- a/bl-kernel/admin/views/settings-advanced.php
+++ b/bl-kernel/admin/views/settings-advanced.php
@@ -97,6 +97,14 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
'tip'=>DOMAIN_CATEGORIES
));
+ HTML::formInputText(array(
+ 'name'=>'uriBlog',
+ 'label'=>$L->g('Blog'),
+ 'value'=>$Site->uriFilters('blog'),
+ 'class'=>'uk-width-1-2 uk-form-medium',
+ 'tip'=>DOMAIN_BLOG
+ ));
+
echo '
diff --git a/bl-kernel/boot/init.php b/bl-kernel/boot/init.php
index 55102701..a90fde60 100644
--- a/bl-kernel/boot/init.php
+++ b/bl-kernel/boot/init.php
@@ -3,8 +3,8 @@
// Bludit version
define('BLUDIT_VERSION', '2.0');
define('BLUDIT_CODENAME', '');
-define('BLUDIT_RELEASE_DATE', '2017-10-10');
-define('BLUDIT_BUILD', '20171010');
+define('BLUDIT_RELEASE_DATE', '2017-09-11');
+define('BLUDIT_BUILD', '20170911');
// Debug mode
// Change to FALSE, for prevent warning or errors on browser
@@ -280,6 +280,9 @@ define('CATEGORY_URI_FILTER', $Url->filters('category'));
// Page URI filter
define('PAGE_URI_FILTER', $Url->filters('page'));
+// Blog URI filter
+define('BLOG_URI_FILTER', $Url->filters('blog'));
+
// Content order by: date / position
define('ORDER_BY', $Site->orderBy());
@@ -309,6 +312,7 @@ define('DOMAIN_UPLOADS_THUMBNAILS', DOMAIN.HTML_PATH_UPLOADS_THUMBNAILS);
define('DOMAIN_TAGS', Text::addSlashes(DOMAIN_BASE.TAG_URI_FILTER, false, true));
define('DOMAIN_CATEGORIES', Text::addSlashes(DOMAIN_BASE.CATEGORY_URI_FILTER, false, true));
define('DOMAIN_PAGES', Text::addSlashes(DOMAIN_BASE.PAGE_URI_FILTER, false, true));
+define('DOMAIN_BLOG', Text::addSlashes(DOMAIN_BASE.BLOG_URI_FILTER, false, true));
$ADMIN_CONTROLLER = '';
$ADMIN_VIEW = '';
diff --git a/bl-kernel/boot/rules/69.pages.php b/bl-kernel/boot/rules/69.pages.php
index 685cdabc..5542c122 100644
--- a/bl-kernel/boot/rules/69.pages.php
+++ b/bl-kernel/boot/rules/69.pages.php
@@ -99,6 +99,10 @@ if ($Site->homepage() && $Url->whereAmI()==='home') {
}
}
+if ($Url->whereAmI()==='blog') {
+ $Url->setWhereAmI('home');
+}
+
// Build specific page
if ($Url->whereAmI()==='page') {
buildThePage();
diff --git a/bl-kernel/dbsite.class.php b/bl-kernel/dbsite.class.php
index 51be3195..f6078e24 100644
--- a/bl-kernel/dbsite.class.php
+++ b/bl-kernel/dbsite.class.php
@@ -18,6 +18,7 @@ class dbSite extends dbJSON
'uriPage'=> array('inFile'=>false, 'value'=>'/'),
'uriTag'=> array('inFile'=>false, 'value'=>'/tag/'),
'uriCategory'=> array('inFile'=>false, 'value'=>'/category/'),
+ 'uriBlog'=> array('inFile'=>false, 'value'=>'/blog/'),
'url'=> array('inFile'=>false, 'value'=>''),
'emailFrom'=> array('inFile'=>false, 'value'=>''),
'dateFormat'=> array('inFile'=>false, 'value'=>'F j, Y'),
@@ -67,6 +68,7 @@ class dbSite extends dbJSON
$filters['page'] = $this->getField('uriPage');
$filters['tag'] = $this->getField('uriTag');
$filters['category'] = $this->getField('uriCategory');
+ $filters['blog'] = $this->getField('uriBlog');
if(empty($filter)) {
return $filters;
@@ -91,7 +93,12 @@ class dbSite extends dbJSON
{
$filter = $this->getField('uriCategory');
return $this->url().ltrim($filter, '/');
+ }
+ public function urlBlog()
+ {
+ $filter = $this->getField('uriBlog');
+ return $this->url().ltrim($filter, '/');
}
// Returns the URL of the rss.xml file
diff --git a/bl-kernel/functions.php b/bl-kernel/functions.php
index 14bc8a46..09c47c6c 100644
--- a/bl-kernel/functions.php
+++ b/bl-kernel/functions.php
@@ -561,6 +561,10 @@ function editSettings($args) {
$args['uriCategory'] = Text::addSlashes($args['uriCategory']);
}
+ if (isset($args['uriBlog'])) {
+ $args['uriBlog'] = Text::addSlashes($args['uriBlog']);
+ }
+
if ($Site->set($args)) {
// Check current order-by if changed it reorder the content
if ($Site->orderBy()!=ORDER_BY) {
diff --git a/bl-kernel/url.class.php b/bl-kernel/url.class.php
index a977d123..1c6341b6 100644
--- a/bl-kernel/url.class.php
+++ b/bl-kernel/url.class.php
@@ -37,47 +37,34 @@ class Url
// Ex (English): Array('post'=>'/post/', 'tag'=>'/tag/', ....)
public function checkFilters($filters)
{
- // Store the admin filter and remove
+ // Put the "admin" filter first
$adminFilter['admin'] = $filters['admin'];
unset($filters['admin']);
-
- // Sort filters by length
uasort($filters, array($this, 'sortByLength'));
+ $this->filters = $adminFilter + $filters;
- // Push the admin filter first
- $filters = $adminFilter + $filters;
- $this->filters = $filters;
+ foreach ($this->filters as $filterName=>$filterURI) {
+ // $filterName = 'category'
+ // $filterURI = '/category/'
- foreach($filters as $filterName=>$filterURI) {
+ $filterFull = ltrim($filterURI, '/');
+ $filterFull = HTML_PATH_ROOT.$filterFull;
+ $filterLenght = mb_strlen($filterFull, CHARSET);
- // $slug will be FALSE if the filter is not included in the URI
- $slug = $this->getSlugAfterFilter($filterURI);
-
- if($slug!==false) {
- $this->slug = $slug;
+ if (mb_substr($this->uri, 0, $filterLenght, CHARSET)==$filterURI) {
+ $this->slug = mb_substr($this->uri, $filterLenght+1);
$this->whereAmI = $filterName;
$this->activeFilter = $filterURI;
- // If the slug is empty
- if( Text::isEmpty($slug) ) {
-
- if($filterURI==='/') {
- $this->whereAmI = 'home';
- break;
- }
-
- if($filterURI===$adminFilter['admin']) {
- $this->whereAmI = 'admin';
- $this->slug = 'dashboard';
- break;
- }
-
- $this->setNotFound();
+ if (empty($this->slug) && (($filterName=='blog') || ($filterURI=='/')) ) {
+ $this->whereAmI = 'home';
}
- break;
+ return true;
}
}
+
+ $this->setNotFound();
}
public function slug()
@@ -170,52 +157,6 @@ class Url
$this->httpMessage = $msg;
}
- // Returns the slug after the $filter, the slug could be an empty string
- // If the filter is not included in the uri, returns FALSE
- // ex: http://domain.com/cms/$filter/slug123 => slug123
- // ex: http://domain.com/cms/$filter/name/lastname => name/lastname
- // ex: http://domain.com/cms/$filter/ => empty string
- // ex: http://domain.com/cms/$filter => empty string
- private function getSlugAfterFilter($filter)
- {
- // Remove both slash from the filter
- $filter = trim($filter, '/');
-
- // Add to the filter the root directory
- $filter = HTML_PATH_ROOT.$filter;
-
- // Check if the filter is in the uri.
- $position = Text::stringPosition($this->uri, $filter);
-
- // If the position is FALSE, the filter isn't in the URI.
- if($position===false) {
- return false;
- }
-
- // Start position to cut
- $start = $position + Text::length($filter);
-
- // End position to cut
- $end = $this->uriStrlen;
-
- // Get the slug from the URI
- $slug = Text::cut($this->uri, $start, $end);
-
- if(Text::isEmpty($slug)) {
- return '';
- }
-
- if($slug[0]=='/') {
- return ltrim($slug, '/');
- }
-
- if($filter==HTML_PATH_ROOT) {
- return $slug;
- }
-
- return false;
- }
-
private function sortByLength($a, $b)
{
return strlen($b)-strlen($a);
diff --git a/bl-languages/en.json b/bl-languages/en.json
index cfb571c0..91afbae4 100644
--- a/bl-languages/en.json
+++ b/bl-languages/en.json
@@ -201,5 +201,7 @@
"ip-address-has-been-blocked": "IP address has been blocked",
"try-again-in-a-few-minutes": "Try again in a few minutes",
"page-published-from-scheduler": "Page published from scheduler",
- "installer-page-about-content": "The about page is an important and powerful for potential clients and partners. For those who wonder who is behind the website, your About page is the first source of information."
+ "installer-page-about-content": "The about page is an important and powerful for potential clients and partners. For those who wonder who is behind the website, your About page is the first source of information.",
+ "blog": "Blog",
+ "complete-all-fields": "Complete all fields"
}
\ No newline at end of file
diff --git a/install.php b/install.php
index 5dfc636e..f99cd884 100644
--- a/install.php
+++ b/install.php
@@ -356,6 +356,7 @@ function install($adminPassword, $email, $timezone)
'uriPage'=>'/',
'uriTag'=>'/tag/',
'uriCategory'=>'/category/',
+ 'uriBlog'=>'/blog/',
'url'=>$siteUrl,
'emailFrom'=>'no-reply@'.DOMAIN,
'orderBy'=>'date'