Merge branch 'master' of https://github.com/bludit/bludit
Resolved merge conflict by incorporating bl-kernel/boot/variables.php
This commit is contained in:
commit
ab3ac29e7a
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -1,6 +0,0 @@
|
|||||||
[submodule "bl-themes/clean-blog"]
|
|
||||||
path = bl-themes/clean-blog
|
|
||||||
url = git@github.com:bludit-themes/clean-blog.git
|
|
||||||
[submodule "bl-themes/kernel-panic"]
|
|
||||||
path = bl-themes/kernel-panic
|
|
||||||
url = git@github.com:bludit-themes/kernel-panic.git
|
|
@ -3,88 +3,22 @@
|
|||||||
// ============================================================================
|
// ============================================================================
|
||||||
// Functions
|
// Functions
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// function updateBludit()
|
function updateBludit() {
|
||||||
// {
|
global $Site;
|
||||||
// global $Site;
|
// Check if Bludit need to be update.
|
||||||
// global $dbPosts;
|
if( ($Site->currentBuild() < BLUDIT_BUILD) || isset($_GET['update']) ) {
|
||||||
// global $dbPages;
|
Log::set('UPDATE SYSTEM - Starting.');
|
||||||
|
|
||||||
// // Check if Bludit need to be update.
|
// From Bludit v2.0.x to v2.1.x
|
||||||
// if( ($Site->currentBuild() < BLUDIT_BUILD) || isset($_GET['update']) )
|
if ($Site->currentBuild() < '20171102') {
|
||||||
// {
|
// Nothing to do
|
||||||
// // LOG
|
}
|
||||||
// Log::set('UPDATE SYSTEM - Starting...');
|
|
||||||
|
|
||||||
// // LOG
|
// Set the current build number
|
||||||
// Log::set('UPDATE SYSTEM - Checking posts.');
|
$Site->set(array('currentBuild'=>BLUDIT_BUILD));
|
||||||
|
Log::set('UPDATE SYSTEM - Finished.');
|
||||||
// // Update posts
|
}
|
||||||
// foreach($dbPosts->db as $key=>$post) {
|
}
|
||||||
|
|
||||||
// // Dates
|
|
||||||
// $date = Date::format($post['date'], 'Y-m-d H:i', DB_DATE_FORMAT);
|
|
||||||
// if($date !== false) {
|
|
||||||
// $dbPosts->setPostDb($key, 'date', $date);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Checksum
|
|
||||||
// if( empty($post['md5file']) ) {
|
|
||||||
// $checksum = md5_file(PATH_POSTS.$key.DS.FILENAME);
|
|
||||||
// $dbPosts->setPostDb($key, 'md5file', $checksum);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $dbPosts->save();
|
|
||||||
|
|
||||||
// // LOG
|
|
||||||
// Log::set('UPDATE SYSTEM - Checking pages.');
|
|
||||||
|
|
||||||
// // Update pages
|
|
||||||
// foreach($dbPages->db as $key=>$page) {
|
|
||||||
|
|
||||||
// $date = Date::format($page['date'], 'Y-m-d H:i', DB_DATE_FORMAT);
|
|
||||||
// if($date !== false) {
|
|
||||||
// $dbPages->setField($key, 'date', $date);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Checksum
|
|
||||||
// if( empty($post['md5file']) ) {
|
|
||||||
// $checksum = md5_file(PATH_PAGES.$key.DS.FILENAME);
|
|
||||||
// $dbPages->setField($key, 'md5file', $checksum);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $dbPages->save();
|
|
||||||
|
|
||||||
// // LOG
|
|
||||||
// Log::set('UPDATE SYSTEM - Checking directories.');
|
|
||||||
|
|
||||||
// // --- Update directories ---
|
|
||||||
// $directories = array(
|
|
||||||
// PATH_POSTS,
|
|
||||||
// PATH_PAGES,
|
|
||||||
// PATH_PLUGINS_DATABASES,
|
|
||||||
// PATH_UPLOADS_PROFILES,
|
|
||||||
// PATH_UPLOADS_THUMBNAILS,
|
|
||||||
// PATH_TMP
|
|
||||||
// );
|
|
||||||
|
|
||||||
// foreach($directories as $dir) {
|
|
||||||
|
|
||||||
// // Check if the directory is already created.
|
|
||||||
// if(!file_exists($dir)) {
|
|
||||||
// // Create the directory recursive.
|
|
||||||
// mkdir($dir, DIR_PERMISSIONS, true);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Set and save the database.
|
|
||||||
// $Site->set(array('currentBuild'=>BLUDIT_BUILD));
|
|
||||||
|
|
||||||
// // LOG
|
|
||||||
// Log::set('UPDATE SYSTEM - Updated...');
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// Main before POST
|
// Main before POST
|
||||||
@ -99,7 +33,7 @@
|
|||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
// Try update Bludit
|
// Try update Bludit
|
||||||
//updateBludit();
|
updateBludit();
|
||||||
|
|
||||||
// Title of the page
|
// Title of the page
|
||||||
$layout['title'] .= ' - '.$Language->g('Dashboard');
|
$layout['title'] .= ' - '.$Language->g('Dashboard');
|
2
bl-kernel/admin/themes/default/css/jquery.datetimepicker.css
Normal file → Executable file
2
bl-kernel/admin/themes/default/css/jquery.datetimepicker.css
Normal file → Executable file
@ -102,7 +102,7 @@
|
|||||||
margin-bottom: 3px
|
margin-bottom: 3px
|
||||||
}
|
}
|
||||||
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker {
|
.xdsoft_datetimepicker .xdsoft_monthpicker {
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
2093
bl-kernel/admin/themes/default/js/jquery.datetimepicker.js
Normal file → Executable file
2093
bl-kernel/admin/themes/default/js/jquery.datetimepicker.js
Normal file → Executable file
File diff suppressed because one or more lines are too long
@ -48,6 +48,7 @@ function table($status, $icon='arrow-circle-o-down') {
|
|||||||
|
|
||||||
foreach($list as $pageKey=>$fields) {
|
foreach($list as $pageKey=>$fields) {
|
||||||
$page = buildPage($pageKey);
|
$page = buildPage($pageKey);
|
||||||
|
if ($page) {
|
||||||
echo '<tr>';
|
echo '<tr>';
|
||||||
echo '<td>
|
echo '<td>
|
||||||
<a href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
<a href="'.HTML_PATH_ADMIN_ROOT.'edit-content/'.$page->key().'">'
|
||||||
@ -61,6 +62,7 @@ function table($status, $icon='arrow-circle-o-down') {
|
|||||||
echo '<td><a target="_blank" href="'.$page->permalink().'">'.$friendlyURL.'</a></td>';
|
echo '<td><a target="_blank" href="'.$page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||||
echo '</tr>';
|
echo '</tr>';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($Url->pageNumber()==1) {
|
if ($Url->pageNumber()==1) {
|
||||||
|
@ -59,112 +59,13 @@ define('DB_SYSLOG', PATH_DATABASES.'syslog.php');
|
|||||||
define('DB_USERS', PATH_DATABASES.'users.php');
|
define('DB_USERS', PATH_DATABASES.'users.php');
|
||||||
define('DB_SECURITY', PATH_DATABASES.'security.php');
|
define('DB_SECURITY', PATH_DATABASES.'security.php');
|
||||||
|
|
||||||
// Log separator
|
|
||||||
define('LOG_SEP', ' | ');
|
|
||||||
|
|
||||||
// JSON pretty print
|
// JSON pretty print
|
||||||
if(!defined('JSON_PRETTY_PRINT')) {
|
if(!defined('JSON_PRETTY_PRINT')) {
|
||||||
define('JSON_PRETTY_PRINT', 128);
|
define('JSON_PRETTY_PRINT', 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Protecting against Symlink attacks
|
// User environment variables
|
||||||
define('CHECK_SYMBOLIC_LINKS', TRUE);
|
include(PATH_KERNEL.'boot'.DS.'variables.php');
|
||||||
|
|
||||||
// Alert status ok
|
|
||||||
define('ALERT_STATUS_OK', 0);
|
|
||||||
|
|
||||||
// Alert status fail
|
|
||||||
define('ALERT_STATUS_FAIL', 1);
|
|
||||||
|
|
||||||
// Allowed file extensions
|
|
||||||
define('ALLOWED_EXTENSIONS_IMAGES','jpg,jpeg,gif,png');
|
|
||||||
define('ALLOWED_EXTENSIONS_FILES','doc,docx,xls,xlsx,ppt,pptx,rtf,pdf,zip,rar');
|
|
||||||
|
|
||||||
// Amount of thumbnails shown on Bludit Quick images
|
|
||||||
define('THUMBNAILS_AMOUNT', 6);
|
|
||||||
|
|
||||||
// Thubmnails size
|
|
||||||
define('THUMBNAILS_WIDTH', 400);
|
|
||||||
define('THUMBNAILS_HEIGHT', 400);
|
|
||||||
define('THUMBNAILS_QUALITY', 100); // 100%
|
|
||||||
|
|
||||||
// Profile image size
|
|
||||||
define('PROFILE_IMG_WIDTH', 400);
|
|
||||||
define('PROFILE_IMG_HEIGHT', 400);
|
|
||||||
define('PROFILE_IMG_QUALITY', 100); // 100%
|
|
||||||
|
|
||||||
// Password length
|
|
||||||
define('PASSWORD_LENGTH', 6);
|
|
||||||
|
|
||||||
// Password salt length
|
|
||||||
define('SALT_LENGTH', 8);
|
|
||||||
|
|
||||||
// Page brake string
|
|
||||||
define('PAGE_BREAK', '<!-- pagebreak -->');
|
|
||||||
|
|
||||||
// Parent key for the array $pagesByParents
|
|
||||||
define('PARENT', 'BLUDIT3849abb4cb7abd24c2d8dac17b216f17');
|
|
||||||
|
|
||||||
// Items per page for admin area
|
|
||||||
define('ITEMS_PER_PAGE_ADMIN', 10);
|
|
||||||
|
|
||||||
// Cli mode, status for new pages
|
|
||||||
define('CLI_STATUS', 'published');
|
|
||||||
|
|
||||||
// Cli mode, username for new pages
|
|
||||||
define('CLI_USERNAME', 'admin');
|
|
||||||
|
|
||||||
// Remember me
|
|
||||||
define('REMEMBER_COOKIE_USERNAME', 'BLUDITREMEMBERUSERNAME');
|
|
||||||
define('REMEMBER_COOKIE_TOKEN', 'BLUDITREMEMBERTOKEN');
|
|
||||||
define('REMEMBER_COOKIE_EXPIRE_IN_DAYS', 30);
|
|
||||||
|
|
||||||
// Filename
|
|
||||||
define('FILENAME', 'index.txt');
|
|
||||||
|
|
||||||
// Database date format
|
|
||||||
define('DB_DATE_FORMAT', 'Y-m-d H:i:s');
|
|
||||||
|
|
||||||
// Database date format
|
|
||||||
define('BACKUP_DATE_FORMAT', 'Y-m-d-H-i-s');
|
|
||||||
|
|
||||||
// Sitemap date format
|
|
||||||
define('SITEMAP_DATE_FORMAT', 'Y-m-d');
|
|
||||||
|
|
||||||
// Date format for Dashboard schedule posts
|
|
||||||
define('SCHEDULED_DATE_FORMAT', 'd M - h:i a');
|
|
||||||
|
|
||||||
// Notifications date format
|
|
||||||
define('NOTIFICATIONS_DATE_FORMAT', 'F j, Y, g:i a');
|
|
||||||
|
|
||||||
// Amount of items to show on notification panel
|
|
||||||
define('NOTIFICATIONS_AMOUNT', 10);
|
|
||||||
|
|
||||||
// Token time to live for login via email. The offset is defined by http://php.net/manual/en/datetime.modify.php
|
|
||||||
define('TOKEN_EMAIL_TTL', '+15 minutes');
|
|
||||||
|
|
||||||
// Charset, default UTF-8.
|
|
||||||
define('CHARSET', 'UTF-8');
|
|
||||||
|
|
||||||
// EXTREME FRIENDLY URL, TRUE for dissmiss internet standard. Experimental!
|
|
||||||
define('EXTREME_FRIENDLY_URL', FALSE);
|
|
||||||
|
|
||||||
// Permissions for new directories
|
|
||||||
define('DIR_PERMISSIONS', 0755);
|
|
||||||
|
|
||||||
// Admin URI filter to access to the admin panel
|
|
||||||
define('ADMIN_URI_FILTER', 'admin');
|
|
||||||
|
|
||||||
// Default language file, in this case is English
|
|
||||||
define('DEFAULT_LANGUAGE_FILE', 'en.json');
|
|
||||||
|
|
||||||
// Session timeout server side, gc_maxlifetime
|
|
||||||
// 3600 = 1hour
|
|
||||||
define('SESSION_GC_MAXLIFETIME', 3600);
|
|
||||||
|
|
||||||
// Session lifetime of the cookie in seconds which is sent to the browser
|
|
||||||
// The value 0 means until the browser is closed
|
|
||||||
define('SESSION_COOKIE_LIFE_TIME', 0);
|
|
||||||
|
|
||||||
// Set internal character encoding
|
// Set internal character encoding
|
||||||
mb_internal_encoding(CHARSET);
|
mb_internal_encoding(CHARSET);
|
||||||
@ -186,6 +87,8 @@ include(PATH_KERNEL.'dbsite.class.php');
|
|||||||
include(PATH_KERNEL.'dbcategories.class.php');
|
include(PATH_KERNEL.'dbcategories.class.php');
|
||||||
include(PATH_KERNEL.'dbsyslog.class.php');
|
include(PATH_KERNEL.'dbsyslog.class.php');
|
||||||
include(PATH_KERNEL.'page.class.php');
|
include(PATH_KERNEL.'page.class.php');
|
||||||
|
include(PATH_KERNEL.'category.class.php');
|
||||||
|
include(PATH_KERNEL.'tag.class.php');
|
||||||
include(PATH_KERNEL.'user.class.php');
|
include(PATH_KERNEL.'user.class.php');
|
||||||
include(PATH_KERNEL.'url.class.php');
|
include(PATH_KERNEL.'url.class.php');
|
||||||
include(PATH_KERNEL.'login.class.php');
|
include(PATH_KERNEL.'login.class.php');
|
||||||
|
108
bl-kernel/boot/variables.php
Normal file
108
bl-kernel/boot/variables.php
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
|
/*
|
||||||
|
Environment variables
|
||||||
|
If you are going to change some variable from here is recommended do it before the installation
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Log separator
|
||||||
|
define('LOG_SEP', ' | ');
|
||||||
|
|
||||||
|
// Protecting against Symlink attacks
|
||||||
|
define('CHECK_SYMBOLIC_LINKS', TRUE);
|
||||||
|
|
||||||
|
// Alert status ok
|
||||||
|
define('ALERT_STATUS_OK', 0);
|
||||||
|
|
||||||
|
// Alert status fail
|
||||||
|
define('ALERT_STATUS_FAIL', 1);
|
||||||
|
|
||||||
|
// Allowed file extensions
|
||||||
|
define('ALLOWED_EXTENSIONS_IMAGES','jpg,jpeg,gif,png');
|
||||||
|
define('ALLOWED_EXTENSIONS_FILES','doc,docx,xls,xlsx,ppt,pptx,rtf,pdf,zip,rar');
|
||||||
|
|
||||||
|
// Amount of thumbnails shown on Bludit Quick images
|
||||||
|
define('THUMBNAILS_AMOUNT', 6);
|
||||||
|
|
||||||
|
// Thubmnails size
|
||||||
|
define('THUMBNAILS_WIDTH', 400);
|
||||||
|
define('THUMBNAILS_HEIGHT', 400);
|
||||||
|
define('THUMBNAILS_QUALITY', 100); // 100%
|
||||||
|
|
||||||
|
// Profile image size
|
||||||
|
define('PROFILE_IMG_WIDTH', 400);
|
||||||
|
define('PROFILE_IMG_HEIGHT', 400);
|
||||||
|
define('PROFILE_IMG_QUALITY', 100); // 100%
|
||||||
|
|
||||||
|
// Password length
|
||||||
|
define('PASSWORD_LENGTH', 6);
|
||||||
|
|
||||||
|
// Password salt length
|
||||||
|
define('SALT_LENGTH', 8);
|
||||||
|
|
||||||
|
// Page brake string
|
||||||
|
define('PAGE_BREAK', '<!-- pagebreak -->');
|
||||||
|
|
||||||
|
// Parent key for the array $pagesByParents
|
||||||
|
define('PARENT', 'BLUDIT3849abb4cb7abd24c2d8dac17b216f17');
|
||||||
|
|
||||||
|
// Items per page for admin area
|
||||||
|
define('ITEMS_PER_PAGE_ADMIN', 10);
|
||||||
|
|
||||||
|
// Cli mode, status for new pages
|
||||||
|
define('CLI_STATUS', 'published');
|
||||||
|
|
||||||
|
// Cli mode, username for new pages
|
||||||
|
define('CLI_USERNAME', 'admin');
|
||||||
|
|
||||||
|
// Remember me
|
||||||
|
define('REMEMBER_COOKIE_USERNAME', 'BLUDITREMEMBERUSERNAME');
|
||||||
|
define('REMEMBER_COOKIE_TOKEN', 'BLUDITREMEMBERTOKEN');
|
||||||
|
define('REMEMBER_COOKIE_EXPIRE_IN_DAYS', 30);
|
||||||
|
|
||||||
|
// Filename
|
||||||
|
define('FILENAME', 'index.txt');
|
||||||
|
|
||||||
|
// Database date format
|
||||||
|
define('DB_DATE_FORMAT', 'Y-m-d H:i:s');
|
||||||
|
|
||||||
|
// Database date format
|
||||||
|
define('BACKUP_DATE_FORMAT', 'Y-m-d-H-i-s');
|
||||||
|
|
||||||
|
// Sitemap date format
|
||||||
|
define('SITEMAP_DATE_FORMAT', 'Y-m-d');
|
||||||
|
|
||||||
|
// Date format for Dashboard schedule posts
|
||||||
|
define('SCHEDULED_DATE_FORMAT', 'D, j M Y, H:i');
|
||||||
|
|
||||||
|
// Notifications date format
|
||||||
|
define('NOTIFICATIONS_DATE_FORMAT', 'D, j M Y, H:i');
|
||||||
|
|
||||||
|
// Amount of items to show on notification panel
|
||||||
|
define('NOTIFICATIONS_AMOUNT', 10);
|
||||||
|
|
||||||
|
// Token time to live for login via email. The offset is defined by http://php.net/manual/en/datetime.modify.php
|
||||||
|
define('TOKEN_EMAIL_TTL', '+15 minutes');
|
||||||
|
|
||||||
|
// Charset, default UTF-8.
|
||||||
|
define('CHARSET', 'UTF-8');
|
||||||
|
|
||||||
|
// EXTREME FRIENDLY URL, TRUE for dissmiss internet standard. Experimental!
|
||||||
|
define('EXTREME_FRIENDLY_URL', FALSE);
|
||||||
|
|
||||||
|
// Permissions for new directories
|
||||||
|
define('DIR_PERMISSIONS', 0755);
|
||||||
|
|
||||||
|
// Admin URI filter to access to the admin panel
|
||||||
|
define('ADMIN_URI_FILTER', 'admin');
|
||||||
|
|
||||||
|
// Default language file, in this case is English
|
||||||
|
define('DEFAULT_LANGUAGE_FILE', 'en.json');
|
||||||
|
|
||||||
|
// Session timeout server side, gc_maxlifetime
|
||||||
|
// 3600 = 1hour
|
||||||
|
define('SESSION_GC_MAXLIFETIME', 3600);
|
||||||
|
|
||||||
|
// Session lifetime of the cookie in seconds which is sent to the browser
|
||||||
|
// The value 0 means until the browser is closed
|
||||||
|
define('SESSION_COOKIE_LIFE_TIME', 0);
|
56
bl-kernel/category.class.php
Normal file
56
bl-kernel/category.class.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
|
class Category {
|
||||||
|
|
||||||
|
private $vars;
|
||||||
|
|
||||||
|
function __construct($key)
|
||||||
|
{
|
||||||
|
global $dbCategories;
|
||||||
|
|
||||||
|
if (isset($dbCategories->db[$key])) {
|
||||||
|
$this->vars['name'] = $dbCategories->db[$key]['name'];
|
||||||
|
$this->vars['key'] = $key;
|
||||||
|
$this->vars['permalink'] = DOMAIN_CATEGORIES . $key;
|
||||||
|
$this->vars['list'] = $dbCategories->db[$key]['list'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->vars = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns TRUE if the category is valid/exists, FALSE otherwise
|
||||||
|
public function isValid()
|
||||||
|
{
|
||||||
|
return $this->vars!==false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getValue($field)
|
||||||
|
{
|
||||||
|
if (isset($this->vars[$field])) {
|
||||||
|
return $this->vars[$field];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function key()
|
||||||
|
{
|
||||||
|
return $this->getValue('key');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function name()
|
||||||
|
{
|
||||||
|
return $this->getValue('name');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function permalink()
|
||||||
|
{
|
||||||
|
return $this->getValue('permalink');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an array with the keys of pages linked to the category
|
||||||
|
public function pages()
|
||||||
|
{
|
||||||
|
return $this->getValue('list');
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,7 @@ class dbLanguage extends dbJSON
|
|||||||
public $data;
|
public $data;
|
||||||
public $db;
|
public $db;
|
||||||
public $currentLanguage;
|
public $currentLanguage;
|
||||||
|
public $dates;
|
||||||
|
|
||||||
function __construct($currentLanguage)
|
function __construct($currentLanguage)
|
||||||
{
|
{
|
||||||
@ -30,6 +31,10 @@ class dbLanguage extends dbJSON
|
|||||||
// Language-data
|
// Language-data
|
||||||
$this->data = $this->db['language-data'];
|
$this->data = $this->db['language-data'];
|
||||||
unset($this->db['language-data']);
|
unset($this->db['language-data']);
|
||||||
|
|
||||||
|
// Dates
|
||||||
|
$this->dates = $this->db['dates'];
|
||||||
|
unset($this->db['dates']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function locale()
|
public function locale()
|
||||||
@ -114,4 +119,10 @@ class dbLanguage extends dbJSON
|
|||||||
}
|
}
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns array with all the dates and months
|
||||||
|
public function getDates()
|
||||||
|
{
|
||||||
|
return $this->dates;
|
||||||
|
}
|
||||||
}
|
}
|
@ -19,9 +19,7 @@ class dbPages extends dbJSON
|
|||||||
'category'=> array('inFile'=>false, 'value'=>''),
|
'category'=> array('inFile'=>false, 'value'=>''),
|
||||||
'md5file'=> array('inFile'=>false, 'value'=>''),
|
'md5file'=> array('inFile'=>false, 'value'=>''),
|
||||||
'uuid'=> array('inFile'=>false, 'value'=>''),
|
'uuid'=> array('inFile'=>false, 'value'=>''),
|
||||||
'allowComments'=> array('inFile'=>false, 'value'=>true),
|
'allowComments'=> array('inFile'=>false, 'value'=>true)
|
||||||
'parent'=> array('inFile'=>false, 'value'=>''),
|
|
||||||
'slug'=> array('inFile'=>false, 'value'=>'')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
function __construct()
|
function __construct()
|
||||||
@ -61,6 +59,11 @@ class dbPages extends dbJSON
|
|||||||
$args['slug'] = Text::truncate($tmpslug, 60, '');
|
$args['slug'] = Text::truncate($tmpslug, 60, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parent
|
||||||
|
if (!isset($args['parent'])) {
|
||||||
|
$args['parent'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Generate key
|
// Generate key
|
||||||
$key = $this->generateKey($args['slug'], $args['parent']);
|
$key = $this->generateKey($args['slug'], $args['parent']);
|
||||||
|
|
||||||
@ -156,6 +159,11 @@ class dbPages extends dbJSON
|
|||||||
$args[$field] = $value;
|
$args[$field] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parent
|
||||||
|
if (!isset($args['parent'])) {
|
||||||
|
$args['parent'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
$newKey = $this->generateKey($args['slug'], $args['parent'], false, $args['key']);
|
$newKey = $this->generateKey($args['slug'], $args['parent'], false, $args['key']);
|
||||||
|
|
||||||
// If the page is draft then the created time is the current
|
// If the page is draft then the created time is the current
|
||||||
@ -213,6 +221,9 @@ class dbPages extends dbJSON
|
|||||||
// Remove the old key
|
// Remove the old key
|
||||||
unset( $this->db[$args['key']] );
|
unset( $this->db[$args['key']] );
|
||||||
|
|
||||||
|
// Reindex Orphan Children
|
||||||
|
$this->reindexChildren($args['key'], $newKey);
|
||||||
|
|
||||||
// Checksum MD5
|
// Checksum MD5
|
||||||
$dataForDb['md5file'] = md5_file(PATH_PAGES.$newKey.DS.FILENAME);
|
$dataForDb['md5file'] = md5_file(PATH_PAGES.$newKey.DS.FILENAME);
|
||||||
|
|
||||||
@ -228,6 +239,19 @@ class dbPages extends dbJSON
|
|||||||
return $newKey;
|
return $newKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function reindex the orphan children with the new parent key
|
||||||
|
// If a page has subpages and the page change his key is necesarry check the children key
|
||||||
|
public function reindexChildren($oldParentKey, $newParentKey) {
|
||||||
|
$tmp = $this->db;
|
||||||
|
foreach ($tmp as $key=>$fields) {
|
||||||
|
if (Text::startsWith($key, $oldParentKey.'/')) {
|
||||||
|
$newKey = Text::replace($oldParentKey.'/', $newParentKey.'/', $key);
|
||||||
|
$this->db[$newKey] = $this->db[$key];
|
||||||
|
unset($this->db[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function delete($key)
|
public function delete($key)
|
||||||
{
|
{
|
||||||
// This is need it, because if the key is empty the Filesystem::deleteRecursive is going to delete PATH_PAGES
|
// This is need it, because if the key is empty the Filesystem::deleteRecursive is going to delete PATH_PAGES
|
||||||
|
@ -167,7 +167,6 @@ function buildPagesFor($for, $categoryKey=false, $tagKey=false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Generate the global variable $pagesByParent, defined on 69.pages.php
|
// Generate the global variable $pagesByParent, defined on 69.pages.php
|
||||||
// (boolean) $allPages, TRUE include all status, FALSE only include published status
|
|
||||||
function buildPagesByParent($publishedPages=true, $staticPages=true) {
|
function buildPagesByParent($publishedPages=true, $staticPages=true) {
|
||||||
global $dbPages;
|
global $dbPages;
|
||||||
global $pagesByParent;
|
global $pagesByParent;
|
||||||
@ -387,7 +386,7 @@ function editPage($args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// External Cover Image
|
// External Cover Image
|
||||||
if ( !empty($args['externalCoverImage']) ) {
|
if (!empty($args['externalCoverImage'])) {
|
||||||
$args['coverImage'] = $args['externalCoverImage'];
|
$args['coverImage'] = $args['externalCoverImage'];
|
||||||
unset($args['externalCoverImage']);
|
unset($args['externalCoverImage']);
|
||||||
}
|
}
|
||||||
@ -706,6 +705,41 @@ function deleteCategory($categoryKey) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns an array with all the categories
|
||||||
|
// By default, the database of categories is alphanumeric sorted
|
||||||
|
function getCategories() {
|
||||||
|
global $dbCategories;
|
||||||
|
|
||||||
|
$list = array();
|
||||||
|
foreach ($dbCategories->db as $key=>$fields) {
|
||||||
|
$category = new Category($key);
|
||||||
|
array_push($list, $category);
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns the object category if the category exists, FALSE otherwise
|
||||||
|
function getCategory($key) {
|
||||||
|
$category = new Category($key);
|
||||||
|
if (!$category->isValid()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $category;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an array with all the tags
|
||||||
|
// By default, the database of tags is alphanumeric sorted
|
||||||
|
function getTags() {
|
||||||
|
global $dbTags;
|
||||||
|
|
||||||
|
$list = array();
|
||||||
|
foreach ($dbTags->db as $key=>$fields) {
|
||||||
|
$tag = new Tag($key);
|
||||||
|
array_push($list, $tag);
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
function activateTheme($themeDirectory) {
|
function activateTheme($themeDirectory) {
|
||||||
global $Site;
|
global $Site;
|
||||||
global $Syslog;
|
global $Syslog;
|
||||||
|
@ -21,9 +21,9 @@ class Cookie {
|
|||||||
setcookie($key, $value, $expire);
|
setcookie($key, $value, $expire);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function isset($key)
|
public static function isEmpty($key)
|
||||||
{
|
{
|
||||||
return isset($_COOKIE[$key]);
|
return empty($_COOKIE[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,6 +2,21 @@
|
|||||||
|
|
||||||
class Date {
|
class Date {
|
||||||
|
|
||||||
|
// Returns string with the date translated
|
||||||
|
// Example: $date = 'Mon, 27th March' > 'Lun, 27th Marzo'
|
||||||
|
public static function translate($date)
|
||||||
|
{
|
||||||
|
global $Language;
|
||||||
|
|
||||||
|
// If English default language don't translate
|
||||||
|
if ($Language->currentLanguage()=='en') {
|
||||||
|
return $date;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dates = $Language->getDates();
|
||||||
|
return str_replace(array_keys($dates), array_values($dates), $date);
|
||||||
|
}
|
||||||
|
|
||||||
// Return current Unix timestamp, GMT+0
|
// Return current Unix timestamp, GMT+0
|
||||||
public static function unixTime()
|
public static function unixTime()
|
||||||
{
|
{
|
||||||
@ -12,14 +27,18 @@ class Date {
|
|||||||
public static function current($format)
|
public static function current($format)
|
||||||
{
|
{
|
||||||
$Date = new DateTime();
|
$Date = new DateTime();
|
||||||
return $Date->format($format);
|
$output = $Date->format($format);
|
||||||
|
|
||||||
|
return self::translate($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function currentOffset($format, $offset)
|
public static function currentOffset($format, $offset)
|
||||||
{
|
{
|
||||||
$Date = new DateTime();
|
$Date = new DateTime();
|
||||||
$Date->modify($offset);
|
$Date->modify($offset);
|
||||||
return $Date->format($format);
|
$output = $Date->format($format);
|
||||||
|
|
||||||
|
return self::translate($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Format a local time/date according to locale settings.
|
// Format a local time/date according to locale settings.
|
||||||
@ -29,7 +48,8 @@ class Date {
|
|||||||
$Date = DateTime::createFromFormat($currentFormat, $date);
|
$Date = DateTime::createFromFormat($currentFormat, $date);
|
||||||
|
|
||||||
if ($Date!==false) {
|
if ($Date!==false) {
|
||||||
return $Date->format($outputFormat);
|
$output = $Date->format($outputFormat);
|
||||||
|
return self::translate($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -39,7 +59,9 @@ class Date {
|
|||||||
{
|
{
|
||||||
$Date = DateTime::createFromFormat($currentFormat, $date);
|
$Date = DateTime::createFromFormat($currentFormat, $date);
|
||||||
$Date->setTimezone(new DateTimeZone('UTC'));
|
$Date->setTimezone(new DateTimeZone('UTC'));
|
||||||
return $Date->format($outputFormat);
|
$output = $Date->format($outputFormat);
|
||||||
|
|
||||||
|
return self::translate($output);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function timeago($time)
|
public static function timeago($time)
|
||||||
|
@ -151,6 +151,7 @@ class Text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Replace all occurrences of the search string with the replacement string.
|
// Replace all occurrences of the search string with the replacement string.
|
||||||
|
// replace("%body%", "black", "<body text='%body%'>");
|
||||||
public static function replace($search, $replace, $string)
|
public static function replace($search, $replace, $string)
|
||||||
{
|
{
|
||||||
return str_replace($search,$replace,$string);
|
return str_replace($search,$replace,$string);
|
||||||
|
@ -118,7 +118,7 @@ class Login {
|
|||||||
// Check if the user has the cookies and the correct token
|
// Check if the user has the cookies and the correct token
|
||||||
public function verifyUserByRemember()
|
public function verifyUserByRemember()
|
||||||
{
|
{
|
||||||
if (!Cookie::isset(REMEMBER_COOKIE_USERNAME) || !Cookie::isset(REMEMBER_COOKIE_TOKEN)) {
|
if (Cookie::isEmpty(REMEMBER_COOKIE_USERNAME) || Cookie::isEmpty(REMEMBER_COOKIE_TOKEN)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +399,7 @@ class Page {
|
|||||||
$explode = explode('/', $this->getValue('key'));
|
$explode = explode('/', $this->getValue('key'));
|
||||||
|
|
||||||
// Check if the page have a parent.
|
// Check if the page have a parent.
|
||||||
if(!empty($explode[1])) {
|
if (!empty($explode[1])) {
|
||||||
return $explode[1];
|
return $explode[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ class Page {
|
|||||||
public function parentKey()
|
public function parentKey()
|
||||||
{
|
{
|
||||||
$explode = explode('/', $this->getValue('key'));
|
$explode = explode('/', $this->getValue('key'));
|
||||||
if(isset($explode[1])) {
|
if (isset($explode[1])) {
|
||||||
return $explode[0];
|
return $explode[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ class Page {
|
|||||||
public function parentMethod($method)
|
public function parentMethod($method)
|
||||||
{
|
{
|
||||||
$parentKey = $this->parentKey();
|
$parentKey = $this->parentKey();
|
||||||
if( $parentKey ) {
|
if ($parentKey) {
|
||||||
$page = buildPage($parentKey);
|
$page = buildPage($parentKey);
|
||||||
return $page->{$method}();
|
return $page->{$method}();
|
||||||
}
|
}
|
||||||
@ -434,13 +434,23 @@ class Page {
|
|||||||
{
|
{
|
||||||
$tmp = array();
|
$tmp = array();
|
||||||
$paths = Filesystem::listDirectories(PATH_PAGES.$this->getValue('key').DS);
|
$paths = Filesystem::listDirectories(PATH_PAGES.$this->getValue('key').DS);
|
||||||
foreach($paths as $path) {
|
foreach ($paths as $path) {
|
||||||
array_push($tmp, basename($path));
|
array_push($tmp, basename($path));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $tmp;
|
return $tmp;
|
||||||
}
|
}
|
||||||
|
public function subpages()
|
||||||
|
{
|
||||||
|
return $this->children();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns TRUE if the page has subpages/children, FALSE otherwise
|
||||||
|
public function hasSubpages()
|
||||||
|
{
|
||||||
|
$subpages = $this->subpages();
|
||||||
|
return !empty($subpages);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Returns relative time (e.g. "1 minute ago")
|
// Returns relative time (e.g. "1 minute ago")
|
||||||
|
56
bl-kernel/tag.class.php
Normal file
56
bl-kernel/tag.class.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||||
|
|
||||||
|
class Tag {
|
||||||
|
|
||||||
|
private $vars;
|
||||||
|
|
||||||
|
function __construct($key)
|
||||||
|
{
|
||||||
|
global $dbTags;
|
||||||
|
|
||||||
|
if (isset($dbTags->db[$key])) {
|
||||||
|
$this->vars['name'] = $dbTags->db[$key]['name'];
|
||||||
|
$this->vars['key'] = $key;
|
||||||
|
$this->vars['permalink'] = DOMAIN_TAGS . $key;
|
||||||
|
$this->vars['list'] = $dbTags->db[$key]['list'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->vars = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns TRUE if the tag is valid/exists, FALSE otherwise
|
||||||
|
public function isValid()
|
||||||
|
{
|
||||||
|
return $this->vars!==false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getValue($field)
|
||||||
|
{
|
||||||
|
if (isset($this->vars[$field])) {
|
||||||
|
return $this->vars[$field];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function key()
|
||||||
|
{
|
||||||
|
return $this->getValue('key');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function name()
|
||||||
|
{
|
||||||
|
return $this->getValue('name');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function permalink()
|
||||||
|
{
|
||||||
|
return $this->getValue('permalink');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an array with the keys of pages linked to the tag
|
||||||
|
public function pages()
|
||||||
|
{
|
||||||
|
return $this->getValue('list');
|
||||||
|
}
|
||||||
|
}
|
@ -155,12 +155,12 @@ class Url
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setNotFound($notFound=true, $httpCode=404, $httpMessage='Not Found')
|
public function setNotFound()
|
||||||
{
|
{
|
||||||
$this->setWhereAmI('page');
|
$this->setWhereAmI('page');
|
||||||
$this->notFound = $notFound;
|
$this->notFound = true;
|
||||||
$this->httpCode = $httpCode;
|
$this->httpCode = 404;
|
||||||
$this->httpMessage = $httpMessage;
|
$this->httpMessage = 'Not Found';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function httpCode()
|
public function httpCode()
|
||||||
|
@ -8,6 +8,45 @@
|
|||||||
"email": "",
|
"email": "",
|
||||||
"website": "https://www.bludit.com"
|
"website": "https://www.bludit.com"
|
||||||
},
|
},
|
||||||
|
"dates": {
|
||||||
|
"Mon": "Mon",
|
||||||
|
"Tue": "Tue",
|
||||||
|
"Wed": "Wed",
|
||||||
|
"Thu": "Thu",
|
||||||
|
"Fri": "Fri",
|
||||||
|
"Sat": "Sat",
|
||||||
|
"Sun": "Sun",
|
||||||
|
"Monday": "Monday",
|
||||||
|
"Tuesday": "Tuesday",
|
||||||
|
"Wednesday": "Wednesday",
|
||||||
|
"Thursday": "Thursday",
|
||||||
|
"Friday": "Friday",
|
||||||
|
"Saturday": "Saturday",
|
||||||
|
"Sunday": "Sunday",
|
||||||
|
"Jan": "Jan",
|
||||||
|
"Feb": "Feb",
|
||||||
|
"Mar": "Mar",
|
||||||
|
"Apr": "Apr",
|
||||||
|
"Jun": "Jun",
|
||||||
|
"Jul": "Jul",
|
||||||
|
"Aug": "Aug",
|
||||||
|
"Sep": "Sep",
|
||||||
|
"Oct": "Oct",
|
||||||
|
"Nov": "Nov",
|
||||||
|
"Dec": "Dec",
|
||||||
|
"January": "January",
|
||||||
|
"February": "February",
|
||||||
|
"March": "March",
|
||||||
|
"April": "April",
|
||||||
|
"May": "May",
|
||||||
|
"June": "June",
|
||||||
|
"July": "July",
|
||||||
|
"August": "August",
|
||||||
|
"September": "September",
|
||||||
|
"October": "October",
|
||||||
|
"November": "November",
|
||||||
|
"December": "December"
|
||||||
|
},
|
||||||
"dashboard": "Dashboard",
|
"dashboard": "Dashboard",
|
||||||
"manage-users": "Manage users",
|
"manage-users": "Manage users",
|
||||||
"manage-categories": "Manage categories",
|
"manage-categories": "Manage categories",
|
||||||
|
@ -8,6 +8,45 @@
|
|||||||
"email": "",
|
"email": "",
|
||||||
"website": "https://www.bludit.com"
|
"website": "https://www.bludit.com"
|
||||||
},
|
},
|
||||||
|
"dates": {
|
||||||
|
"Mon": "Lun",
|
||||||
|
"Tue": "Mar",
|
||||||
|
"Wed": "Mier",
|
||||||
|
"Thu": "Jue",
|
||||||
|
"Fri": "Vie",
|
||||||
|
"Sat": "Sab",
|
||||||
|
"Sun": "Dom",
|
||||||
|
"Monday": "Lunes",
|
||||||
|
"Tuesday": "Martes",
|
||||||
|
"Wednesday": "Miercoles",
|
||||||
|
"Thursday": "Jueves",
|
||||||
|
"Friday": "Viernes",
|
||||||
|
"Saturday": "Sabado",
|
||||||
|
"Sunday": "Domingo",
|
||||||
|
"Jan": "Ene",
|
||||||
|
"Feb": "Feb",
|
||||||
|
"Mar": "Mar",
|
||||||
|
"Apr": "Abr",
|
||||||
|
"Jun": "Jun",
|
||||||
|
"Jul": "Jul",
|
||||||
|
"Aug": "Ago",
|
||||||
|
"Sep": "Sep",
|
||||||
|
"Oct": "Oct",
|
||||||
|
"Nov": "Nov",
|
||||||
|
"Dec": "Dic",
|
||||||
|
"January": "Enero",
|
||||||
|
"February": "Febrero",
|
||||||
|
"March": "Marzo",
|
||||||
|
"April": "Abril",
|
||||||
|
"May": "Mayo",
|
||||||
|
"June": "Junio",
|
||||||
|
"July": "Julio",
|
||||||
|
"August": "Agosto",
|
||||||
|
"September": "Septiembre",
|
||||||
|
"October": "Octubre",
|
||||||
|
"November": "Noviembre",
|
||||||
|
"December": "Diciembre"
|
||||||
|
},
|
||||||
"dashboard": "Panel",
|
"dashboard": "Panel",
|
||||||
"manage-users": "Administrar usuarios",
|
"manage-users": "Administrar usuarios",
|
||||||
"manage-categories": "Administrar categorías",
|
"manage-categories": "Administrar categorías",
|
||||||
|
@ -2,11 +2,51 @@
|
|||||||
"language-data": {
|
"language-data": {
|
||||||
"native": "Українська (Україна)",
|
"native": "Українська (Україна)",
|
||||||
"english-name": "Ukrainian",
|
"english-name": "Ukrainian",
|
||||||
"last-update": "2017-11-01",
|
"locale": "uk_UA",
|
||||||
|
"last-update": "2017-12-16",
|
||||||
"author": "Aleksei86",
|
"author": "Aleksei86",
|
||||||
"email": "",
|
"email": "",
|
||||||
"website": ""
|
"website": ""
|
||||||
},
|
},
|
||||||
|
"dates": {
|
||||||
|
"Mon": "Пн",
|
||||||
|
"Tue": "Вт",
|
||||||
|
"Wed": "Ср",
|
||||||
|
"Thu": "Чт",
|
||||||
|
"Fri": "Пт",
|
||||||
|
"Sat": "Сб",
|
||||||
|
"Sun": "Нд",
|
||||||
|
"Monday": "Понеділок",
|
||||||
|
"Tuesday": "Вівторок",
|
||||||
|
"Wednesday": "Середа",
|
||||||
|
"Thursday": "Четвер",
|
||||||
|
"Friday": "П'ятниця",
|
||||||
|
"Saturday": "Субота",
|
||||||
|
"Sunday": "Неділя",
|
||||||
|
"Jan": "Січ",
|
||||||
|
"Feb": "Лют",
|
||||||
|
"Mar": "Бер",
|
||||||
|
"Apr": "Квіт",
|
||||||
|
"Jun": "Черв",
|
||||||
|
"Jul": "Лип",
|
||||||
|
"Aug": "Серп",
|
||||||
|
"Sep": "Вер",
|
||||||
|
"Oct": "Жовт",
|
||||||
|
"Nov": "Лист",
|
||||||
|
"Dec": "Груд",
|
||||||
|
"January": "Січень",
|
||||||
|
"February": "Лютий",
|
||||||
|
"March": "Березень",
|
||||||
|
"April": "Квітень",
|
||||||
|
"May": "Травень",
|
||||||
|
"June": "Червень",
|
||||||
|
"July": "Липень",
|
||||||
|
"August": "Серпень",
|
||||||
|
"September": "Вересень",
|
||||||
|
"October": "Жовтень",
|
||||||
|
"November": "Листопад",
|
||||||
|
"December": "Грудень"
|
||||||
|
},
|
||||||
"dashboard": "Панель управління",
|
"dashboard": "Панель управління",
|
||||||
"manage-users": "Управління користувачами",
|
"manage-users": "Управління користувачами",
|
||||||
"manage-categories": "Управління категоріями",
|
"manage-categories": "Управління категоріями",
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
"plugin-data":
|
"plugin-data":
|
||||||
{
|
{
|
||||||
"name": "Backup",
|
"name": "Backup",
|
||||||
"description": ""
|
"description": "The simple way to backup your Bludit."
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@
|
|||||||
"author": "TinyMCE",
|
"author": "TinyMCE",
|
||||||
"email": "",
|
"email": "",
|
||||||
"website": "https://www.tinymce.com",
|
"website": "https://www.tinymce.com",
|
||||||
"version": "4.7.1",
|
"version": "4.7.4",
|
||||||
"releaseDate": "2017-10-09",
|
"releaseDate": "2017-12-05",
|
||||||
"license": "GPL v2",
|
"license": "GPL v2",
|
||||||
"compatible": "2.0",
|
"compatible": "2.0",
|
||||||
"notes": ""
|
"notes": ""
|
||||||
|
File diff suppressed because one or more lines are too long
26
bl-plugins/tinymce/tinymce/tinymce.min.js
vendored
26
bl-plugins/tinymce/tinymce/tinymce.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
Subproject commit 1620e2f4640cf1dfcd04e2018e6e17b81d7b7e62
|
|
@ -1 +0,0 @@
|
|||||||
Subproject commit 7ca0f82147ba197283a467fd1ada2c8e81c49cbe
|
|
131
bl-themes/kernel-panic/css/bludit.css
Executable file
131
bl-themes/kernel-panic/css/bludit.css
Executable file
@ -0,0 +1,131 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.home-title {
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li {
|
||||||
|
padding-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead {
|
||||||
|
background: #555555;
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td,
|
||||||
|
table th {
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2 {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
/* PAGES */
|
||||||
|
|
||||||
|
article.page {
|
||||||
|
margin-bottom: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article.page header {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article.page header a:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
article.page header h2 {
|
||||||
|
font-size: 2.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
article.page footer {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PAGINATION */
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination > li > a.float-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PLUGINS */
|
||||||
|
|
||||||
|
div.plugin:not(:last-child) {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.plugin > h1,
|
||||||
|
div.plugin > h2,
|
||||||
|
div.plugin > h3,
|
||||||
|
div.plugin > h4,
|
||||||
|
div.plugin > h5 {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.plugin h2.plugin-label {
|
||||||
|
border-bottom: 1px solid #ebebeb;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.plugin ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PLUGIN MENU */
|
||||||
|
|
||||||
|
div.plugin-menu li.menu:not(:last-child) {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.plugin-menu ul.submenu {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PLUGIN PAGES */
|
||||||
|
|
||||||
|
div.plugin-pages li.parent h3 {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.plugin-pages ul.child {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* VIDEO EMBED RESPONSIVE */
|
||||||
|
|
||||||
|
.video-embed {
|
||||||
|
overflow:hidden;
|
||||||
|
padding-bottom: 56.25%; /* 16:9 */
|
||||||
|
position:relative;
|
||||||
|
height:0;
|
||||||
|
}
|
||||||
|
.video-embed iframe{
|
||||||
|
left:0;
|
||||||
|
top:0;
|
||||||
|
height:100%;
|
||||||
|
width:100%;
|
||||||
|
position:absolute;
|
||||||
|
}
|
8253
bl-themes/kernel-panic/css/style.css
Executable file
8253
bl-themes/kernel-panic/css/style.css
Executable file
File diff suppressed because it is too large
Load Diff
BIN
bl-themes/kernel-panic/img/favicon.png
Normal file
BIN
bl-themes/kernel-panic/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
63
bl-themes/kernel-panic/index.php
Executable file
63
bl-themes/kernel-panic/index.php
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
|
||||||
|
<head>
|
||||||
|
<?php include(THEME_DIR_PHP.'head.php') ?>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php Theme::plugins('siteBodyBegin') ?>
|
||||||
|
|
||||||
|
<div id="fh5co-main">
|
||||||
|
<div class="fh5co-intro text-center">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8 col-md-offset-2">
|
||||||
|
<h1 class="intro-lead"><a class="home-title" href="<?php echo $Site->url() ?>"><?php echo $Site->title() ?></a></h1>
|
||||||
|
<p class=""><?php echo $Site->description() ?></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="fh5co-content">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-10 col-md-offset-1">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<?php
|
||||||
|
include(THEME_DIR_PHP.'sidebar.php');
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-9">
|
||||||
|
<?php
|
||||||
|
if ($WHERE_AM_I=='page') {
|
||||||
|
include(THEME_DIR_PHP.'page.php');
|
||||||
|
} else {
|
||||||
|
include(THEME_DIR_PHP.'home.php');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer id="fh5co-footer">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-10 col-md-offset-1 text-center">
|
||||||
|
<p><?php echo $Site->footer() ?><br>Powered by <a href="https://www.bludit.com" target="_blank">BLUDIT</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<?php Theme::plugins('siteBodyEnd') ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
6
bl-themes/kernel-panic/js/respond.min.js
vendored
Executable file
6
bl-themes/kernel-panic/js/respond.min.js
vendored
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
|
||||||
|
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
|
||||||
|
* */
|
||||||
|
|
||||||
|
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
|
7
bl-themes/kernel-panic/languages/de_CH.json
Normal file
7
bl-themes/kernel-panic/languages/de_CH.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"theme-data":
|
||||||
|
{
|
||||||
|
"name": "Kernel Panic",
|
||||||
|
"description": "Einfaches und übersichtliches Theme für Microsites und Microblogs. Das Theme unterstützt Hauptbilder."
|
||||||
|
}
|
||||||
|
}
|
7
bl-themes/kernel-panic/languages/de_DE.json
Normal file
7
bl-themes/kernel-panic/languages/de_DE.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"theme-data":
|
||||||
|
{
|
||||||
|
"name": "Kernel Panic",
|
||||||
|
"description": "Einfaches und übersichtliches Theme für Microsites und Microblogs. Das Theme unterstützt Hauptbilder."
|
||||||
|
}
|
||||||
|
}
|
7
bl-themes/kernel-panic/languages/en.json
Normal file
7
bl-themes/kernel-panic/languages/en.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"theme-data":
|
||||||
|
{
|
||||||
|
"name": "Kernel Panic",
|
||||||
|
"description": "Just a simple and clean theme for microsites or microblogs. Full support to cover images."
|
||||||
|
}
|
||||||
|
}
|
7
bl-themes/kernel-panic/languages/es.json
Normal file
7
bl-themes/kernel-panic/languages/es.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"theme-data":
|
||||||
|
{
|
||||||
|
"name": "Kernel Panic",
|
||||||
|
"description": "Tema para micro-sitios o micro-blogs. Soporte para imágenes de portada y para complementos."
|
||||||
|
}
|
||||||
|
}
|
10
bl-themes/kernel-panic/metadata.json
Normal file
10
bl-themes/kernel-panic/metadata.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"author": "Bludit",
|
||||||
|
"email": "",
|
||||||
|
"website": "https://themes.bludit.com",
|
||||||
|
"version": "1.0",
|
||||||
|
"releaseDate": "2017-10-08",
|
||||||
|
"license": "MIT",
|
||||||
|
"compatible": "2.0",
|
||||||
|
"notes": ""
|
||||||
|
}
|
24
bl-themes/kernel-panic/php/head.php
Normal file
24
bl-themes/kernel-panic/php/head.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
echo Theme::charset('utf-8');
|
||||||
|
echo Theme::viewport('width=device-width, initial-scale=1');
|
||||||
|
|
||||||
|
echo '<meta http-equiv="X-UA-Compatible" content="IE=edge">';
|
||||||
|
echo '<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&subset=cyrillic,greek,vietnamese" rel="stylesheet">';
|
||||||
|
|
||||||
|
echo Theme::headTitle();
|
||||||
|
echo Theme::headDescription();
|
||||||
|
|
||||||
|
echo Theme::favicon('img/favicon.png');
|
||||||
|
|
||||||
|
echo Theme::fontAwesome();
|
||||||
|
|
||||||
|
echo Theme::css('css/style.css');
|
||||||
|
echo Theme::css('css/bludit.css');
|
||||||
|
|
||||||
|
echo '<!--[if lt IE 9]>';
|
||||||
|
echo Theme::js('js/respond.min.js');
|
||||||
|
echo '<![endif]-->';
|
||||||
|
|
||||||
|
// Load plugins with the hook siteHead
|
||||||
|
Theme::plugins('siteHead');
|
||||||
|
?>
|
40
bl-themes/kernel-panic/php/home.php
Normal file
40
bl-themes/kernel-panic/php/home.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<!-- Section -->
|
||||||
|
<section class="content">
|
||||||
|
<?php foreach ($pages as $page): ?>
|
||||||
|
<article class="page">
|
||||||
|
<?php Theme::plugins('pageBegin') ?>
|
||||||
|
<header>
|
||||||
|
<a href="<?php echo $page->permalink() ?>">
|
||||||
|
<h2><?php echo $page->title() ?></h2>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<?php if( $page->coverImage() ) { ?>
|
||||||
|
<img src="<?php echo $page->coverImage() ?>" alt="<?php echo $page->slug() ?>">
|
||||||
|
<?php } ?>
|
||||||
|
</header>
|
||||||
|
<?php echo $page->contentBreak() ?>
|
||||||
|
<footer>
|
||||||
|
<?php if ($page->readMore() ) { ?>
|
||||||
|
<div class="readmore">
|
||||||
|
<a href="<?php echo $page->permalink() ?>">
|
||||||
|
<i class="icon-arrow-down"></i> <?php echo $Language->get('Read more') ?>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
</footer>
|
||||||
|
<?php Theme::plugins('pageEnd') ?>
|
||||||
|
</article>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Pagination -->
|
||||||
|
<ul class="pagination">
|
||||||
|
<?php
|
||||||
|
if (Paginator::showPrev()) {
|
||||||
|
echo '<li><a href="'.Paginator::prevPageUrl().'">'.$L->get('Previous page').'</a></li>';
|
||||||
|
}
|
||||||
|
if (Paginator::showNext()) {
|
||||||
|
echo '<li><a href="'.Paginator::nextPageUrl().'" class="float-right">'.$L->get('Next page').'</a></li>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</ul>
|
20
bl-themes/kernel-panic/php/page.php
Normal file
20
bl-themes/kernel-panic/php/page.php
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!-- Section -->
|
||||||
|
<section class="content">
|
||||||
|
<article class="page">
|
||||||
|
<?php Theme::plugins('pageBegin') ?>
|
||||||
|
<header>
|
||||||
|
<a href="<?php echo $page->permalink() ?>">
|
||||||
|
<h2><?php echo $page->title() ?></h2>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<?php if( $page->coverImage() ) { ?>
|
||||||
|
<img src="<?php echo $page->coverImage() ?>" alt="<?php echo $page->slug() ?>">
|
||||||
|
<?php } ?>
|
||||||
|
</header>
|
||||||
|
<?php echo $page->content() ?>
|
||||||
|
<footer>
|
||||||
|
<div class="date"><i class="fa fa-clock-o"></i> <?php echo $page->date() ?></div>
|
||||||
|
</footer>
|
||||||
|
<?php Theme::plugins('pageEnd') ?>
|
||||||
|
</article>
|
||||||
|
</section>
|
1
bl-themes/kernel-panic/php/sidebar.php
Normal file
1
bl-themes/kernel-panic/php/sidebar.php
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?php Theme::plugins('siteSidebar') ?>
|
Loading…
x
Reference in New Issue
Block a user