Merge pull request #8 from dignajar/master

Merge update from dignajar
This commit is contained in:
Ethan Chen 2015-11-21 10:55:13 +08:00
commit 46b867f41c
118 changed files with 1551 additions and 221 deletions

View File

@ -16,6 +16,7 @@ Social
- [Twitter](https://twitter.com/bludit)
- [Facebook](https://www.facebook.com/bluditcms)
- [Google+](https://plus.google.com/+Bluditcms)
- [Freenode IRC](https://webchat.freenode.net) channel #bludit
[![Join the chat at https://gitter.im/dignajar/bludit](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dignajar/bludit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@ -30,6 +31,7 @@ You only need a web server with PHP support.
* Apache with [mod_rewrite](http://httpd.apache.org/docs/current/mod/mod_rewrite.html) module.
* Lighttpd with [mod_rewrite](http://redmine.lighttpd.net/projects/1/wiki/docs_modrewrite) module.
* Nginx with [ngx_http_rewrite_module](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html) module.
* PHP Built-in web server
Installation guide
------------------

View File

@ -1,7 +0,0 @@
# Bludit
If you are reading this, you must enable rewrite module.
Documentation:
- http://docs.bludit.com/en/getting-started/requirements
- http://docs.bludit.com/en/troubleshooting/browser-returns-not-found

View File

@ -23,6 +23,7 @@ define('PATH_ROOT', __DIR__.DS);
define('PATH_CONTENT', PATH_ROOT.'content'.DS);
define('PATH_POSTS', PATH_CONTENT.'posts'.DS);
define('PATH_UPLOADS', PATH_CONTENT.'uploads'.DS);
define('PATH_UPLOADS_PROFILES', PATH_UPLOADS.'profiles'.DS);
define('PATH_PAGES', PATH_CONTENT.'pages'.DS);
define('PATH_DATABASES', PATH_CONTENT.'databases'.DS);
define('PATH_PLUGINS_DATABASES',PATH_CONTENT.'databases'.DS.'plugins'.DS);
@ -30,10 +31,20 @@ define('PATH_KERNEL', PATH_ROOT.'kernel'.DS);
define('PATH_HELPERS', PATH_KERNEL.'helpers'.DS);
define('PATH_LANGUAGES', PATH_ROOT.'languages'.DS);
define('PATH_ABSTRACT', PATH_KERNEL.'abstract'.DS);
define('DOMAIN', getenv('HTTP_HOST'));
define('DOMAIN', $_SERVER['HTTP_HOST']);
// HTML PATHs
$base = (dirname(getenv('SCRIPT_NAME'))==DS)?'/':dirname(getenv('SCRIPT_NAME')).'/';
$base = empty( $_SERVER['SCRIPT_NAME'] ) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$base = dirname($base);
if($base!=DS) {
$base = $base.'/';
}
else {
// Workaround for Windows Web Servers
$base = '/';
}
define('HTML_PATH_ROOT', $base);
// Log separator
@ -220,6 +231,12 @@ function install($adminPassword, $email, $timezoneOffset)
error_log($errorText, 0);
}
if(!mkdir(PATH_PAGES.'about', $dirpermissions, true))
{
$errorText = 'Error when trying to created the directory=>'.PATH_PAGES.'about';
error_log($errorText, 0);
}
if(!mkdir(PATH_PLUGINS_DATABASES.'pages', $dirpermissions, true))
{
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'pages';
@ -238,9 +255,15 @@ function install($adminPassword, $email, $timezoneOffset)
error_log($errorText, 0);
}
if(!mkdir(PATH_UPLOADS, $dirpermissions, true))
if(!mkdir(PATH_PLUGINS_DATABASES.'about', $dirpermissions, true))
{
$errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS;
$errorText = 'Error when trying to created the directory=>'.PATH_PLUGINS_DATABASES.'about';
error_log($errorText, 0);
}
if(!mkdir(PATH_UPLOADS_PROFILES, $dirpermissions, true))
{
$errorText = 'Error when trying to created the directory=>'.PATH_UPLOADS_PROFILES;
error_log($errorText, 0);
}
@ -259,6 +282,14 @@ function install($adminPassword, $email, $timezoneOffset)
'status'=>'published',
'date'=>$currentDate,
'position'=>0
),
'about'=>array(
'description'=>$Language->get('About your site or yourself'),
'username'=>'admin',
'tags'=>array(),
'status'=>'published',
'date'=>$currentDate,
'position'=>1
)
);
@ -267,7 +298,7 @@ function install($adminPassword, $email, $timezoneOffset)
// File posts.php
$data = array(
$firstPostSlug=>array(
'description'=>'Welcome to Bludit',
'description'=>$Language->get('Welcome to Bludit'),
'username'=>'admin',
'status'=>'published',
'tags'=>array('bludit'=>'Bludit','cms'=>'CMS','flat-files'=>'Flat files'),
@ -279,10 +310,10 @@ function install($adminPassword, $email, $timezoneOffset)
// File site.php
$data = array(
'title'=>'Bludit',
'slogan'=>'cms',
'title'=>'BLUDIT',
'slogan'=>'CMS',
'description'=>'',
'footer'=>Date::current('Y'),
'footer'=>'Copyright © '.Date::current('Y'),
'language'=>$Language->getCurrentLocale(),
'locale'=>$Language->getCurrentLocale(),
'timezone'=>$timezone,
@ -306,7 +337,7 @@ function install($adminPassword, $email, $timezoneOffset)
$data = array(
'admin'=>array(
'firstName'=>'',
'firstName'=>$Language->get('Administrator'),
'lastName'=>'',
'twitter'=>'',
'role'=>'admin',
@ -364,6 +395,19 @@ function install($adminPassword, $email, $timezoneOffset)
LOCK_EX
);
// File plugins/about/db.php
file_put_contents(
PATH_PLUGINS_DATABASES.'about'.DS.'db.php',
$dataHead.json_encode(
array(
'position'=>0,
'label'=>$Language->get('About'),
'text'=>$Language->get('this-is-a-brief-description-of-yourself-our-your-site')
),
JSON_PRETTY_PRINT),
LOCK_EX
);
// File plugins/simplemde/db.php
file_put_contents(
PATH_PLUGINS_DATABASES.'simplemde'.DS.'db.php',
@ -391,19 +435,27 @@ function install($adminPassword, $email, $timezoneOffset)
// File index.txt for error page
$data = 'Title: '.$Language->get('Error').'
Content: '.$Language->get('The page has not been found');
Content: '.$Language->get('The page has not been found');
file_put_contents(PATH_PAGES.'error'.DS.'index.txt', $data, LOCK_EX);
// File index.txt for about page
$data = 'Title: '.$Language->get('About').'
Content:
'.$Language->get('the-about-page-is-very-important').'
'.$Language->get('change-this-pages-content-on-the-admin-panel');
file_put_contents(PATH_PAGES.'about'.DS.'index.txt', $data, LOCK_EX);
// File index.txt for welcome post
$data = 'Title: '.$Language->get('First post').'
Content:
## '.$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('Follow Bludit on').' [Twitter](https://twitter.com/bludit) / [Facebook](https://www.facebook.com/bluditcms) / [Google+](https://plus.google.com/+Bluditcms)
- '.$Language->get('Chat with developers and users on Gitter').'
- '.$Language->get('Visit the support forum').'
- '.$Language->get('Read the documentation for more information').'
- '.$Language->get('Share with your friends and enjoy');
@ -469,7 +521,7 @@ if( $_SERVER['REQUEST_METHOD'] == 'POST' )
<!DOCTYPE HTML>
<html class="uk-height-1-1 uk-notouch">
<head>
<base href="admin/themes/default/">
<base href="kernel/admin/themes/default/">
<meta charset="<?php echo CHARSET ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

View File

@ -46,7 +46,7 @@ class dbJSON
}
}
public function restoreDb()
public function restoreDB()
{
$this->db = $this->dbBackup;
return true;
@ -58,6 +58,15 @@ class dbJSON
return count($this->db);
}
public function getField($field)
{
if(isset($this->db[$field])) {
return $this->db[$field];
}
return $this->dbFields[$field]['value'];
}
// Save the JSON file.
public function save()
{

View File

@ -3,6 +3,28 @@
// ============================================================================
// Functions
// ============================================================================
function updateBludit()
{
global $Site;
// Check if Bludit need to be update.
if($Site->currentBuild() < BLUDIT_BUILD)
{
$directories = array(PATH_POSTS, PATH_PAGES, PATH_PLUGINS_DATABASES, PATH_UPLOADS_PROFILES);
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));
}
}
// ============================================================================
// Main before POST
@ -16,6 +38,10 @@
// Main after POST
// ============================================================================
// Try update Bludit
updateBludit();
// Get draft posts and schedules
$_draftPosts = array();
$_scheduledPosts = array();
foreach($posts as $Post)
@ -28,6 +54,7 @@ foreach($posts as $Post)
}
}
// Get draft pages
$_draftPages = array();
foreach($pages as $Page)
{

View File

@ -26,6 +26,10 @@
background: #1F5FC4;
}
.uk-form legend {
width: 70% !important;
}
.uk-navbar-nav > li > a {
border: none;
height: 70px;
@ -236,9 +240,16 @@ div.plugin-links > span.separator {
color: #AAAAAA;
}
#jsformplugin textarea {
min-width: 400px;
width: 60%;
min-height: 100px;
}
#jsformplugin input[type=text] {
min-width: 400px;
width: 60%;
height: 37px;
}
#jsformplugin input[type="checkbox"] {
@ -249,6 +260,6 @@ div.plugin-links > span.separator {
#jsformplugin label.forCheckbox {
margin-left: 3px;
margin-bottom: 10px;
margin-bottom: 0px !important;
display: inline-block;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1005 B

After

Width:  |  Height:  |  Size: 1005 B

View File

@ -98,7 +98,15 @@ $(document).ready(function() {
<div class="uk-navbar-flip uk-hidden-small">
<ul class="uk-navbar-nav">
<li class="uk-parent" data-uk-dropdown>
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$Login->username() ?>"><i class="uk-icon-user"></i> <?php echo $Login->username() ?> ▾</a>
<?php
$profilePictureSrc = HTML_PATH_ADMIN_THEME_IMG.'default.jpg';
if(file_exists(PATH_UPLOADS_PROFILES.$Login->username().'.jpg')) {
$profilePictureSrc = HTML_PATH_UPLOADS_PROFILES.$Login->username().'.jpg';
}
?>
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$Login->username() ?>">
<img class="uk-border-circle" width="28px" src="<?php echo $profilePictureSrc ?>" alt=""> <?php echo $Login->username() ?>
</a>
<div class="uk-dropdown uk-dropdown-navbar">
<ul class="uk-nav uk-nav-navbar">
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$Login->username() ?>"><?php $L->p('Profile') ?></a></li>

View File

@ -207,4 +207,64 @@ class HTML {
echo $html;
}
public static function profileUploader($username)
{
global $L;
$html = '
<div id="jsprogressBar" class="uk-progress uk-hidden">
<div class="uk-progress-bar" style="width: 0%;">0%</div>
</div>
<div id="upload-drop" class="uk-placeholder uk-text-center">
<i class="uk-icon-cloud-upload uk-margin-small-right"></i>'.$L->g('Upload Image').'<br><a class="uk-form-file">'.$L->g('Drag and drop or click here').'<input id="upload-select" type="file"></a>
</div>
';
$html .= '
<script>
$(document).ready(function() {
$(function()
{
var progressbar = $("#jsprogressBar");
var bar = progressbar.find(".uk-progress-bar");
var settings =
{
type: "json",
action: "'.HTML_PATH_ADMIN_ROOT.'ajax/uploader",
allow : "*.(jpg|jpeg|gif|png)",
params: {"type":"profilePicture", "username":"'.$username.'"},
loadstart: function() {
bar.css("width", "0%").text("0%");
progressbar.removeClass("uk-hidden");
},
progress: function(percent) {
percent = Math.ceil(percent);
bar.css("width", percent+"%").text(percent+"%");
},
allcomplete: function(response) {
bar.css("width", "100%").text("100%");
progressbar.addClass("uk-hidden");
$("#jsprofilePicture").attr("src", "'.HTML_PATH_UPLOADS_PROFILES.$username.'.jpg?"+new Date().getTime());
},
notallowed: function(file, settings) {
alert("'.$L->g('Supported image file types').' "+settings.allow);
}
};
var select = UIkit.uploadSelect($("#upload-select"), settings);
var drop = UIkit.uploadDrop($("#upload-drop"), settings);
});
});
</script>';
echo $html;
}
}

View File

@ -2,6 +2,9 @@
HTML::title(array('title'=>$L->g('Edit user'), 'icon'=>'user'));
echo '<div class="uk-grid">';
echo '<div class="uk-width-7-10">';
HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal'));
// Security token
@ -92,6 +95,13 @@ if( ($Login->role()==='admin') && ($_user['username']!='admin') ) {
HTML::formClose();
echo '</div>';
echo '<div class="uk-width-3-10" style="margin-top: 50px; text-align: center;">';
echo '<img id="jsprofilePicture" class="uk-border-rounded" src="'.HTML_PATH_UPLOADS_PROFILES.$_user['username'].'.jpg" alt="'.$L->g('Profile picture').'">';
HTML::profileUploader($_user['username']);
echo '</div>';
echo '</div>';
?>
<script>

View File

@ -1,6 +1,6 @@
<div class="login-form">
<form method="post" action="<?php echo HTML_PATH_ADMIN_ROOT.'login-email' ?>" class="uk-form" autocomplete="off">
<form method="post" action="" class="uk-form" autocomplete="off">
<input type="hidden" id="jstoken" name="tokenCSRF" value="<?php $Security->printToken() ?>">

View File

@ -1,6 +1,6 @@
<div class="login-form">
<form method="post" action="<?php echo HTML_PATH_ADMIN_ROOT.'login' ?>" class="uk-form" autocomplete="off">
<form method="post" action="" class="uk-form" autocomplete="off">
<input type="hidden" id="jstoken" name="tokenCSRF" value="<?php $Security->printToken() ?>">

View File

@ -26,7 +26,7 @@ echo '
echo '<tr>';
echo '<td><a href="'.HTML_PATH_ADMIN_ROOT.'edit-post/'.$Post->key().'">'.($status?'<span class="label-draft">'.$status.'</span>':'').($Post->title()?$Post->title():'<span class="label-empty-title">'.$Language->g('Empty title').'</span> ').'</a></td>';
echo '<td class="uk-text-center">'.$Post->date().'</td>';
echo '<td class="uk-text-center">'.$Post->dateRaw().'</td>';
echo '<td><a target="_blank" href="'.$Post->permalink().'">'.$Url->filters('post').'/'.$Post->key().'</a></td>';
echo '</tr>';
}

View File

@ -35,6 +35,13 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
'tip'=>$L->g('you-can-use-this-field-to-define-a-set-off')
));
HTML::formInputText(array(
'name'=>'dateFormat',
'label'=>$L->g('Date format'),
'value'=>$Site->dateFormat(),
'class'=>'uk-width-1-2 uk-form-medium'
));
echo '<div class="uk-form-row">
<div class="uk-form-controls">
<button type="submit" class="uk-button uk-button-primary">'.$L->g('Save').'</button>

View File

@ -1,4 +1,12 @@
<?php header('Content-Type: application/json');
<?php defined('BLUDIT') or die('Bludit CMS.');
header('Content-Type: application/json');
// Type
$type = 'other';
if(!empty($_POST['type'])) {
$type = Sanitize::html($_POST['type']);
}
// Source
$source = $_FILES['files']['tmp_name'][0];
@ -24,12 +32,30 @@ if(empty($tmpName)) {
$tmpName = $filename.'.'.$fileExtension;
}
move_uploaded_file($source, PATH_UPLOADS.$tmpName);
// --- PROFILE PICTURE ---
if($type=='profilePicture')
{
// Move to tmp file
move_uploaded_file($source, PATH_UPLOADS_PROFILES.'tmp'.'.'.$fileExtension);
// Resize and crop profile image.
$username = Sanitize::html($_POST['username']);
$tmpName = $username.'.jpg';
$Image = new Image();
$Image->setImage(PATH_UPLOADS_PROFILES.'tmp'.'.'.$fileExtension, '200', '200', 'crop');
$Image->saveImage(PATH_UPLOADS_PROFILES.$tmpName, 100, true);
// Remove tmp file
unlink(PATH_UPLOADS_PROFILES.'tmp'.'.'.$fileExtension);
}
// --- OTHERS ---
else {
move_uploaded_file($source, PATH_UPLOADS.$tmpName);
}
exit(json_encode(array(
'status'=>0,
'filename'=>$tmpName,
'date'=>date("F d Y H:i:s.", filemtime(PATH_UPLOADS.$tmpName))
'filename'=>$tmpName
)));
?>

View File

@ -4,6 +4,7 @@
define('BLUDIT_VERSION', 'githubVersion');
define('BLUDIT_CODENAME', '');
define('BLUDIT_RELEASE_DATE', '');
define('BLUDIT_BUILD', '20151119');
// Debug mode
define('DEBUG_MODE', TRUE);
@ -35,7 +36,8 @@ define('PATH_PAGES', PATH_CONTENT.'pages'.DS);
define('PATH_DATABASES', PATH_CONTENT.'databases'.DS);
define('PATH_PLUGINS_DATABASES', PATH_CONTENT.'databases'.DS.'plugins'.DS);
define('PATH_UPLOADS', PATH_CONTENT.'uploads'.DS);
define('PATH_ADMIN', PATH_ROOT.'admin'.DS);
define('PATH_UPLOADS_PROFILES', PATH_UPLOADS.'profiles'.DS);
define('PATH_ADMIN', PATH_KERNEL.'admin'.DS);
define('PATH_ADMIN_THEMES', PATH_ADMIN.'themes'.DS);
define('PATH_ADMIN_CONTROLLERS', PATH_ADMIN.'controllers'.DS);
define('PATH_ADMIN_VIEWS', PATH_ADMIN.'views'.DS);
@ -75,7 +77,7 @@ define('CLI_STATUS', 'published');
// Database format date
define('DB_DATE_FORMAT', 'Y-m-d H:i');
// Database format date
// Date format for Dashboard schedule posts
define('SCHEDULED_DATE_FORMAT', 'd M - h:i a');
// Token time to live for login via email. The offset is defined by http://php.net/manual/en/datetime.modify.php
@ -84,6 +86,9 @@ define('TOKEN_EMAIL_TTL', '+15 minutes');
// Charset, default UTF-8.
define('CHARSET', 'UTF-8');
// Directory permissions
define('DIR_PERMISSIONS', '0755');
// Multibyte string extension loaded.
define('MB_STRING', extension_loaded('mbstring'));
@ -113,6 +118,7 @@ include(PATH_KERNEL.'page.class.php');
include(PATH_KERNEL.'url.class.php');
include(PATH_KERNEL.'login.class.php');
include(PATH_KERNEL.'parsedown.class.php');
include(PATH_KERNEL.'parsedownextra.class.php');
include(PATH_KERNEL.'security.class.php');
// Include Helpers Classes
@ -128,6 +134,7 @@ include(PATH_HELPERS.'email.class.php');
include(PATH_HELPERS.'filesystem.class.php');
include(PATH_HELPERS.'alert.class.php');
include(PATH_HELPERS.'paginator.class.php');
include(PATH_HELPERS.'image.class.php');
// Session
Session::start();
@ -143,17 +150,20 @@ $dbUsers = new dbUsers();
$dbTags = new dbTags();
$Site = new dbSite();
$Url = new Url();
$Parsedown = new Parsedown();
$Parsedown = new ParsedownExtra();
$Security = new Security();
// HTML PATHs
//$base = (dirname(getenv('SCRIPT_NAME'))==DS)?'/':dirname(getenv('SCRIPT_NAME')).'/';
$base = empty( $_SERVER['SCRIPT_NAME'] ) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$base = dirname($base);
if($base!=DS) {
$base = $base.'/';
}
else {
// Workaround for Windows Web Servers
$base = '/';
}
define('HTML_PATH_ROOT', $base);
@ -164,16 +174,20 @@ define('HTML_PATH_THEME_CSS', HTML_PATH_THEME.'css/');
define('HTML_PATH_THEME_JS', HTML_PATH_THEME.'js/');
define('HTML_PATH_THEME_IMG', HTML_PATH_THEME.'img/');
define('HTML_PATH_ADMIN_THEME', HTML_PATH_ROOT.'admin/themes/'.$Site->adminTheme().'/');
define('HTML_PATH_ADMIN_THEME_JS', HTML_PATH_ADMIN_THEME.'js/');
define('HTML_PATH_ADMIN_ROOT', HTML_PATH_ROOT.'admin/');
define('HTML_PATH_ADMIN_THEME', HTML_PATH_ROOT.'kernel/admin/themes/'.$Site->adminTheme().'/');
define('HTML_PATH_ADMIN_THEME_JS', HTML_PATH_ADMIN_THEME.'js/');
define('HTML_PATH_ADMIN_THEME_CSS', HTML_PATH_ADMIN_THEME.'css/');
define('HTML_PATH_ADMIN_THEME_IMG', HTML_PATH_ADMIN_THEME.'img/');
define('HTML_PATH_UPLOADS', HTML_PATH_ROOT.'content/uploads/');
define('HTML_PATH_UPLOADS_PROFILES', HTML_PATH_UPLOADS.'profiles/');
define('HTML_PATH_PLUGINS', HTML_PATH_ROOT.'plugins/');
define('JQUERY', HTML_PATH_ADMIN_THEME_JS.'jquery.min.js');
// PHP paths with dependency
define('PATH_THEME', PATH_ROOT.'themes/'.$Site->theme().'/');
define('PATH_THEME', PATH_ROOT.'themes'.DS.$Site->theme().DS);
define('PATH_THEME_PHP', PATH_THEME.'php'.DS);
define('PATH_THEME_CSS', PATH_THEME.'css'.DS);
define('PATH_THEME_JS', PATH_THEME.'js'.DS);

View File

@ -22,7 +22,7 @@ function reIndexTagsPosts()
$dbTags->reindexPosts( $dbPosts->db );
// Restore de db on dbPost
$dbPosts->restoreDb();
$dbPosts->restoreDB();
return true;
}
@ -68,6 +68,13 @@ function buildPost($key)
$Post->setField('breakContent', $explode[0], true);
$Post->setField('readMore', !empty($explode[1]), true);
// Date format
$postDate = $Post->date();
$Post->setField('dateRaw', $postDate, true);
$postDateFormated = $Post->dateRaw( $Site->dateFormat() );
$Post->setField('date', $postDateFormated, true);
// Parse username for the post.
if( $dbUsers->userExists( $Post->username() ) )
{

View File

@ -93,14 +93,17 @@ class dbLanguage extends dbJSON
foreach($files as $file)
{
$t = new dbJSON($file, false);
$native = $t->db['language-data']['native'];
$locale = basename($file, '.json');
$tmp[$locale] = $native;
// Check if the JSON is complete.
if(isset($t->db['language-data']['native']))
{
$native = $t->db['language-data']['native'];
$locale = basename($file, '.json');
$tmp[$locale] = $native;
}
}
return $tmp;
}
}

View File

@ -11,7 +11,7 @@ class dbPages extends dbJSON
'username'=> array('inFile'=>false, 'value'=>''),
'tags'=> array('inFile'=>false, 'value'=>array()),
'status'=> array('inFile'=>false, 'value'=>'draft'),
'date'=> array('inFile'=>false, 'value'=>0),
'date'=> array('inFile'=>false, 'value'=>''),
'position'=> array('inFile'=>false, 'value'=>0)
);
@ -34,9 +34,7 @@ class dbPages extends dbJSON
}
// Current date.
if(empty($args['date'])) {
$args['date'] = Date::current(DB_DATE_FORMAT);
}
$args['date'] = Date::current(DB_DATE_FORMAT);
// Verify arguments with the database fields.
foreach($this->dbFields as $field=>$options)

View File

@ -2,7 +2,7 @@
class dbSite extends dbJSON
{
private $dbFields = array(
public $dbFields = array(
'title'=> array('inFile'=>false, 'value'=>'I am Guybrush Threepwood, mighty developer'),
'slogan'=> array('inFile'=>false, 'value'=>''),
'description'=> array('inFile'=>false, 'value'=>''),
@ -19,7 +19,10 @@ class dbSite extends dbJSON
'uriTag'=> array('inFile'=>false, 'value'=>'/tag/'),
'url'=> array('inFile'=>false, 'value'=>''),
'cliMode'=> array('inFile'=>false, 'value'=>true),
'emailFrom'=> array('inFile'=>false, 'value'=>'')
'emailFrom'=> array('inFile'=>false, 'value'=>''),
'dateFormat'=> array('inFile'=>false, 'value'=>'F j, Y'),
'timeFormat'=> array('inFile'=>false, 'value'=>'g:i a'),
'currentBuild'=> array('inFile'=>false, 'value'=>0)
);
function __construct()
@ -61,9 +64,9 @@ class dbSite extends dbJSON
public function uriFilters($filter='')
{
$filters['admin'] = '/admin/';
$filters['post'] = $this->db['uriPost'];
$filters['page'] = $this->db['uriPage'];
$filters['tag'] = $this->db['uriTag'];
$filters['post'] = $this->getField('uriPost');
$filters['page'] = $this->getField('uriPage');
$filters['tag'] = $this->getField('uriTag');
if(empty($filter)) {
return $filters;
@ -74,70 +77,83 @@ class dbSite extends dbJSON
public function urlPost()
{
return $this->url().ltrim($this->db['uriPost'], '/');
$filter = $this->getField('uriPost');
return $this->url().ltrim($filter, '/');
}
public function urlPage()
{
return $this->url().ltrim($this->db['uriPage'], '/');
$filter = $this->getField('uriPage');
return $this->url().ltrim($filter, '/');
}
public function urlTag()
{
return $this->url().ltrim($this->db['uriTag'], '/');
$filter = $this->getField('uriTag');
return $this->url().ltrim($filter, '/');
}
// Returns the site title.
public function title()
{
return $this->db['title'];
return $this->getField('title');
}
public function emailFrom()
{
return $this->db['emailFrom'];
return $this->getField('emailFrom');
}
public function dateFormat()
{
return $this->getField('dateFormat');
}
public function timeFormat()
{
return $this->getField('timeFormat');
}
// Returns the site slogan.
public function slogan()
{
return $this->db['slogan'];
return $this->getField('slogan');
}
// Returns the site description.
public function description()
{
return $this->db['description'];
return $this->getField('description');
}
// Returns the site theme name.
public function theme()
{
return $this->db['theme'];
return $this->getField('theme');
}
// Returns the admin theme name.
public function adminTheme()
{
return $this->db['adminTheme'];
return $this->getField('adminTheme');
}
// Returns the footer text.
public function footer()
{
return $this->db['footer'];
return $this->getField('footer');
}
// Returns the url site.
public function url()
{
return $this->db['url'];
return $this->getField('url');
}
// Returns TRUE if the cli mode is enabled, otherwise FALSE.
public function cliMode()
{
return $this->db['cliMode'];
return $this->getField('cliMode');
}
// Returns the relative home link
@ -149,25 +165,31 @@ class dbSite extends dbJSON
// Returns the timezone.
public function timezone()
{
return $this->db['timezone'];
return $this->getField('timezone');
}
// Returns the current build / version of Bludit.
public function currentBuild()
{
return $this->getField('currentBuild');
}
// Returns posts per page.
public function postsPerPage()
{
return $this->db['postsperpage'];
return $this->getField('postsperpage');
}
// Returns the current language.
public function language()
{
return $this->db['language'];
return $this->getField('language');
}
// Returns the current locale.
public function locale()
{
return $this->db['locale'];
return $this->getField('locale');
}
// Returns the current language in short format.
@ -183,7 +205,7 @@ class dbSite extends dbJSON
// Returns the current homepage.
public function homepage()
{
return $this->db['homepage'];
return $this->getField('homepage');
}
// Set the locale.

View File

@ -8,7 +8,7 @@ class dbTags extends dbJSON
$postsIndex['tag2']['name'] = 'Tag 2';
$postsIndex['tag2']['posts'] = array('post1','post5');
*/
private $dbFields = array(
public $dbFields = array(
'postsIndex'=>array('inFile'=>false, 'value'=>array()),
'pagesIndex'=>array('inFile'=>false, 'value'=>array())
);

View File

@ -2,17 +2,17 @@
class dbUsers extends dbJSON
{
private $dbFields = array(
'firstName'=> array('inFile'=>false, 'value'=>''),
'lastName'=> array('inFile'=>false, 'value'=>''),
'username'=> array('inFile'=>false, 'value'=>''),
'role'=> array('inFile'=>false, 'value'=>'editor'),
'password'=> array('inFile'=>false, 'value'=>''),
'salt'=> array('inFile'=>false, 'value'=>'!Pink Floyd!Welcome to the machine!'),
'email'=> array('inFile'=>false, 'value'=>''),
'registered'=> array('inFile'=>false, 'value'=>'1985-03-15 10:00'),
'tokenEmail'=> array('inFile'=>false, 'value'=>''),
'tokenEmailTTL'=>array('inFile'=>false, 'value'=>'2009-03-15 14:00')
public $dbFields = array(
'firstName'=> array('inFile'=>false, 'value'=>''),
'lastName'=> array('inFile'=>false, 'value'=>''),
'username'=> array('inFile'=>false, 'value'=>''),
'role'=> array('inFile'=>false, 'value'=>'editor'),
'password'=> array('inFile'=>false, 'value'=>''),
'salt'=> array('inFile'=>false, 'value'=>'!Pink Floyd!Welcome to the machine!'),
'email'=> array('inFile'=>false, 'value'=>''),
'registered'=> array('inFile'=>false, 'value'=>'1985-03-15 10:00'),
'tokenEmail'=> array('inFile'=>false, 'value'=>''),
'tokenEmailTTL'=> array('inFile'=>false, 'value'=>'2009-03-15 14:00')
);
function __construct()
@ -20,6 +20,11 @@ class dbUsers extends dbJSON
parent::__construct(PATH_DATABASES.'users.php');
}
public function getAll()
{
return $this->db;
}
// Return an array with the username databases, filtered by username.
public function getDb($username)
{
@ -51,11 +56,6 @@ class dbUsers extends dbJSON
return isset($this->db[$username]);
}
public function getAll()
{
return $this->db;
}
public function generateTokenEmail($username)
{
// Random hash

View File

@ -0,0 +1,231 @@
<?php defined('BLUDIT') or die('Bludit CMS.');
class Image {
private $image;
private $width;
private $height;
private $imageResized;
public function setImage($fileName, $newWidth, $newHeight, $option="auto")
{
// *** Open up the file
$this->image = $this->openImage($fileName);
// *** Get width and height
$this->width = imagesx($this->image);
$this->height = imagesy($this->image);
$this->resizeImage($newWidth, $newHeight, $option);
}
public function saveImage($savePath, $imageQuality="100", $forceJPG=false)
{
$extension = strtolower(pathinfo($savePath, PATHINFO_EXTENSION));
// Remove the extension
$filename = substr($savePath, 0,strrpos($savePath,'.'));
$path_complete = $filename.'.'.$extension;
if($forceJPG) {
imagejpeg($this->imageResized, $filename.'.jpg', $imageQuality);
}
else
{
switch($extension)
{
case 'jpg':
case 'jpeg':
if (imagetypes() & IMG_JPG) {
imagejpeg($this->imageResized, $path_complete, $imageQuality);
}
break;
case 'gif':
if (imagetypes() & IMG_GIF) {
imagegif($this->imageResized, $path_complete);
}
break;
case 'png':
// *** Scale quality from 0-100 to 0-9
$scaleQuality = round(($imageQuality/100) * 9);
// *** Invert quality setting as 0 is best, not 9
$invertScaleQuality = 9 - $scaleQuality;
if (imagetypes() & IMG_PNG) {
imagepng($this->imageResized, $path_complete, $invertScaleQuality);
}
break;
default:
// *** No extension - No save.
break;
}
}
imagedestroy($this->imageResized);
}
private function openImage($file)
{
// *** Get extension
$extension = strtolower(strrchr($file, '.'));
switch($extension)
{
case '.jpg':
case '.jpeg':
$img = imagecreatefromjpeg($file);
break;
case '.gif':
$img = imagecreatefromgif($file);
break;
case '.png':
$img = imagecreatefrompng($file);
break;
default:
$img = false;
break;
}
return $img;
}
private function resizeImage($newWidth, $newHeight, $option)
{
// *** Get optimal width and height - based on $option
$optionArray = $this->getDimensions($newWidth, $newHeight, $option);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
// *** Resample - create image canvas of x, y size
$this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight);
imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height);
// *** if option is 'crop', then crop too
if ($option == 'crop') {
$this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight);
}
}
private function getDimensions($newWidth, $newHeight, $option)
{
if( ($this->width < $newWidth) and ($this->height < $newHeight) )
{
return array('optimalWidth' => $this->width, 'optimalHeight' => $this->height);
}
switch ($option)
{
case 'exact':
$optimalWidth = $newWidth;
$optimalHeight= $newHeight;
break;
case 'portrait':
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
break;
case 'landscape':
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
break;
case 'auto':
$optionArray = $this->getSizeByAuto($newWidth, $newHeight);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
break;
case 'crop':
$optionArray = $this->getOptimalCrop($newWidth, $newHeight);
$optimalWidth = $optionArray['optimalWidth'];
$optimalHeight = $optionArray['optimalHeight'];
break;
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
private function getSizeByFixedHeight($newHeight)
{
$ratio = $this->width / $this->height;
$newWidth = $newHeight * $ratio;
return $newWidth;
}
private function getSizeByFixedWidth($newWidth)
{
$ratio = $this->height / $this->width;
$newHeight = $newWidth * $ratio;
return $newHeight;
}
private function getSizeByAuto($newWidth, $newHeight)
{
if ($this->height < $this->width)
// *** Image to be resized is wider (landscape)
{
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
}
elseif ($this->height > $this->width)
// *** Image to be resized is taller (portrait)
{
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
}
else
// *** Image to be resizerd is a square
{
if ($newHeight < $newWidth) {
$optimalWidth = $newWidth;
$optimalHeight= $this->getSizeByFixedWidth($newWidth);
} else if ($newHeight > $newWidth) {
$optimalWidth = $this->getSizeByFixedHeight($newHeight);
$optimalHeight= $newHeight;
} else {
// *** Sqaure being resized to a square
$optimalWidth = $newWidth;
$optimalHeight= $newHeight;
}
}
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
private function getOptimalCrop($newWidth, $newHeight)
{
$heightRatio = $this->height / $newHeight;
$widthRatio = $this->width / $newWidth;
if ($heightRatio < $widthRatio) {
$optimalRatio = $heightRatio;
} else {
$optimalRatio = $widthRatio;
}
$optimalHeight = $this->height / $optimalRatio;
$optimalWidth = $this->width / $optimalRatio;
return array('optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight);
}
private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight)
{
// *** Find center - this will be used for the crop
$cropStartX = ( $optimalWidth / 2) - ( $newWidth /2 );
$cropStartY = ( $optimalHeight/ 2) - ( $newHeight/2 );
$crop = $this->imageResized;
//imagedestroy($this->imageResized);
// *** Now crop from center to exact requested size
$this->imageResized = imagecreatetruecolor($newWidth , $newHeight);
imagecopyresampled($this->imageResized, $crop , 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight , $newWidth, $newHeight);
}
}

View File

@ -0,0 +1,526 @@
<?php
#
#
# Parsedown Extra
# https://github.com/erusev/parsedown-extra
#
# (c) Emanuil Rusev
# http://erusev.com
#
# For the full license information, view the LICENSE file that was distributed
# with this source code.
#
#
class ParsedownExtra extends Parsedown
{
# ~
const version = '0.7.0';
# ~
function __construct()
{
if (parent::version < '1.5.0')
{
throw new Exception('ParsedownExtra requires a later version of Parsedown');
}
$this->BlockTypes[':'] []= 'DefinitionList';
$this->BlockTypes['*'] []= 'Abbreviation';
# identify footnote definitions before reference definitions
array_unshift($this->BlockTypes['['], 'Footnote');
# identify footnote markers before before links
array_unshift($this->InlineTypes['['], 'FootnoteMarker');
}
#
# ~
function text($text)
{
$markup = parent::text($text);
# merge consecutive dl elements
$markup = preg_replace('/<\/dl>\s+<dl>\s+/', '', $markup);
# add footnotes
if (isset($this->DefinitionData['Footnote']))
{
$Element = $this->buildFootnoteElement();
$markup .= "\n" . $this->element($Element);
}
return $markup;
}
#
# Blocks
#
#
# Abbreviation
protected function blockAbbreviation($Line)
{
if (preg_match('/^\*\[(.+?)\]:[ ]*(.+?)[ ]*$/', $Line['text'], $matches))
{
$this->DefinitionData['Abbreviation'][$matches[1]] = $matches[2];
$Block = array(
'hidden' => true,
);
return $Block;
}
}
#
# Footnote
protected function blockFootnote($Line)
{
if (preg_match('/^\[\^(.+?)\]:[ ]?(.*)$/', $Line['text'], $matches))
{
$Block = array(
'label' => $matches[1],
'text' => $matches[2],
'hidden' => true,
);
return $Block;
}
}
protected function blockFootnoteContinue($Line, $Block)
{
if ($Line['text'][0] === '[' and preg_match('/^\[\^(.+?)\]:/', $Line['text']))
{
return;
}
if (isset($Block['interrupted']))
{
if ($Line['indent'] >= 4)
{
$Block['text'] .= "\n\n" . $Line['text'];
return $Block;
}
}
else
{
$Block['text'] .= "\n" . $Line['text'];
return $Block;
}
}
protected function blockFootnoteComplete($Block)
{
$this->DefinitionData['Footnote'][$Block['label']] = array(
'text' => $Block['text'],
'count' => null,
'number' => null,
);
return $Block;
}
#
# Definition List
protected function blockDefinitionList($Line, $Block)
{
if ( ! isset($Block) or isset($Block['type']))
{
return;
}
$Element = array(
'name' => 'dl',
'handler' => 'elements',
'text' => array(),
);
$terms = explode("\n", $Block['element']['text']);
foreach ($terms as $term)
{
$Element['text'] []= array(
'name' => 'dt',
'handler' => 'line',
'text' => $term,
);
}
$Block['element'] = $Element;
$Block = $this->addDdElement($Line, $Block);
return $Block;
}
protected function blockDefinitionListContinue($Line, array $Block)
{
if ($Line['text'][0] === ':')
{
$Block = $this->addDdElement($Line, $Block);
return $Block;
}
else
{
if (isset($Block['interrupted']) and $Line['indent'] === 0)
{
return;
}
if (isset($Block['interrupted']))
{
$Block['dd']['handler'] = 'text';
$Block['dd']['text'] .= "\n\n";
unset($Block['interrupted']);
}
$text = substr($Line['body'], min($Line['indent'], 4));
$Block['dd']['text'] .= "\n" . $text;
return $Block;
}
}
#
# Header
protected function blockHeader($Line)
{
$Block = parent::blockHeader($Line);
if (preg_match('/[ #]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
{
$attributeString = $matches[1][0];
$Block['element']['attributes'] = $this->parseAttributeData($attributeString);
$Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
}
return $Block;
}
#
# Markup
protected function blockMarkupComplete($Block)
{
if ( ! isset($Block['void']))
{
$Block['markup'] = $this->processTag($Block['markup']);
}
return $Block;
}
#
# Setext
protected function blockSetextHeader($Line, array $Block = null)
{
$Block = parent::blockSetextHeader($Line, $Block);
if (preg_match('/[ ]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
{
$attributeString = $matches[1][0];
$Block['element']['attributes'] = $this->parseAttributeData($attributeString);
$Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
}
return $Block;
}
#
# Inline Elements
#
#
# Footnote Marker
protected function inlineFootnoteMarker($Excerpt)
{
if (preg_match('/^\[\^(.+?)\]/', $Excerpt['text'], $matches))
{
$name = $matches[1];
if ( ! isset($this->DefinitionData['Footnote'][$name]))
{
return;
}
$this->DefinitionData['Footnote'][$name]['count'] ++;
if ( ! isset($this->DefinitionData['Footnote'][$name]['number']))
{
$this->DefinitionData['Footnote'][$name]['number'] = ++ $this->footnoteCount; # » &
}
$Element = array(
'name' => 'sup',
'attributes' => array('id' => 'fnref'.$this->DefinitionData['Footnote'][$name]['count'].':'.$name),
'handler' => 'element',
'text' => array(
'name' => 'a',
'attributes' => array('href' => '#fn:'.$name, 'class' => 'footnote-ref'),
'text' => $this->DefinitionData['Footnote'][$name]['number'],
),
);
return array(
'extent' => strlen($matches[0]),
'element' => $Element,
);
}
}
private $footnoteCount = 0;
#
# Link
protected function inlineLink($Excerpt)
{
$Link = parent::inlineLink($Excerpt);
$remainder = substr($Excerpt['text'], $Link['extent']);
if (preg_match('/^[ ]*{('.$this->regexAttribute.'+)}/', $remainder, $matches))
{
$Link['element']['attributes'] += $this->parseAttributeData($matches[1]);
$Link['extent'] += strlen($matches[0]);
}
return $Link;
}
#
# ~
#
protected function unmarkedText($text)
{
$text = parent::unmarkedText($text);
if (isset($this->DefinitionData['Abbreviation']))
{
foreach ($this->DefinitionData['Abbreviation'] as $abbreviation => $meaning)
{
$pattern = '/\b'.preg_quote($abbreviation, '/').'\b/';
$text = preg_replace($pattern, '<abbr title="'.$meaning.'">'.$abbreviation.'</abbr>', $text);
}
}
return $text;
}
#
# Util Methods
#
protected function addDdElement(array $Line, array $Block)
{
$text = substr($Line['text'], 1);
$text = trim($text);
unset($Block['dd']);
$Block['dd'] = array(
'name' => 'dd',
'handler' => 'line',
'text' => $text,
);
if (isset($Block['interrupted']))
{
$Block['dd']['handler'] = 'text';
unset($Block['interrupted']);
}
$Block['element']['text'] []= & $Block['dd'];
return $Block;
}
protected function buildFootnoteElement()
{
$Element = array(
'name' => 'div',
'attributes' => array('class' => 'footnotes'),
'handler' => 'elements',
'text' => array(
array(
'name' => 'hr',
),
array(
'name' => 'ol',
'handler' => 'elements',
'text' => array(),
),
),
);
uasort($this->DefinitionData['Footnote'], 'self::sortFootnotes');
foreach ($this->DefinitionData['Footnote'] as $definitionId => $DefinitionData)
{
if ( ! isset($DefinitionData['number']))
{
continue;
}
$text = $DefinitionData['text'];
$text = parent::text($text);
$numbers = range(1, $DefinitionData['count']);
$backLinksMarkup = '';
foreach ($numbers as $number)
{
$backLinksMarkup .= ' <a href="#fnref'.$number.':'.$definitionId.'" rev="footnote" class="footnote-backref">&#8617;</a>';
}
$backLinksMarkup = substr($backLinksMarkup, 1);
if (substr($text, - 4) === '</p>')
{
$backLinksMarkup = '&#160;'.$backLinksMarkup;
$text = substr_replace($text, $backLinksMarkup.'</p>', - 4);
}
else
{
$text .= "\n".'<p>'.$backLinksMarkup.'</p>';
}
$Element['text'][1]['text'] []= array(
'name' => 'li',
'attributes' => array('id' => 'fn:'.$definitionId),
'text' => "\n".$text."\n",
);
}
return $Element;
}
# ~
protected function parseAttributeData($attributeString)
{
$Data = array();
$attributes = preg_split('/[ ]+/', $attributeString, - 1, PREG_SPLIT_NO_EMPTY);
foreach ($attributes as $attribute)
{
if ($attribute[0] === '#')
{
$Data['id'] = substr($attribute, 1);
}
else # "."
{
$classes []= substr($attribute, 1);
}
}
if (isset($classes))
{
$Data['class'] = implode(' ', $classes);
}
return $Data;
}
# ~
protected function processTag($elementMarkup) # recursive
{
# http://stackoverflow.com/q/1148928/200145
libxml_use_internal_errors(true);
$DOMDocument = new DOMDocument;
# http://stackoverflow.com/q/11309194/200145
$elementMarkup = mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8');
# http://stackoverflow.com/q/4879946/200145
$DOMDocument->loadHTML($elementMarkup);
$DOMDocument->removeChild($DOMDocument->doctype);
$DOMDocument->replaceChild($DOMDocument->firstChild->firstChild->firstChild, $DOMDocument->firstChild);
$elementText = '';
if ($DOMDocument->documentElement->getAttribute('markdown') === '1')
{
foreach ($DOMDocument->documentElement->childNodes as $Node)
{
$elementText .= $DOMDocument->saveHTML($Node);
}
$DOMDocument->documentElement->removeAttribute('markdown');
$elementText = "\n".$this->text($elementText)."\n";
}
else
{
foreach ($DOMDocument->documentElement->childNodes as $Node)
{
$nodeMarkup = $DOMDocument->saveHTML($Node);
if ($Node instanceof DOMElement and ! in_array($Node->nodeName, $this->textLevelElements))
{
$elementText .= $this->processTag($nodeMarkup);
}
else
{
$elementText .= $nodeMarkup;
}
}
}
# because we don't want for markup to get encoded
$DOMDocument->documentElement->nodeValue = 'placeholder\x1A';
$markup = $DOMDocument->saveHTML($DOMDocument->documentElement);
$markup = str_replace('placeholder\x1A', $elementText, $markup);
return $markup;
}
# ~
protected function sortFootnotes($A, $B) # callback
{
return $A['number'] - $B['number'];
}
#
# Fields
#
protected $regexAttribute = '(?:[#.][-\w]+[ ]*)';
}

View File

@ -83,6 +83,11 @@ class Post extends fileContent
return $this->getField('username');
}
public function profilePicture()
{
return HTML_PATH_UPLOADS_PROFILES.$this->username().'.jpg';
}
public function authorFirstName()
{
return $this->getField('authorFirstName');
@ -101,7 +106,13 @@ class Post extends fileContent
// Returns the post date according to locale settings and format settings.
public function date($format=false)
{
$date = $this->getField('date');
return $this->getField('date');
}
// Returns the post date according to locale settings and format as database stored.
public function dateRaw($format=false)
{
$date = $this->getField('dateRaw');
if($format) {
return Date::format($date, DB_DATE_FORMAT, $format);

View File

@ -1,9 +1,10 @@
{
"language-data":
{
"native": "Български (България)",
"english-name": "Bulgarian",
"last-update": "2015-11-09",
"last-update": "2015-11-18",
"author": "Христо Дипчиков",
"email": "",
"website": "www.hristodipchikov.tk"
@ -36,7 +37,7 @@
"save": "Запази",
"draft": "Чернова",
"delete": "Изтриване",
"registered": "Препоръчано",
"registered": "Добавен",
"Notifications": "Известия",
"profile": "Профил",
"email": "Имейл адрес",
@ -70,7 +71,7 @@
"timezone": "Часова зона",
"locale": "Местоположение",
"new-post": "Нова публикация",
"html-and-markdown-code-supported": "Поддръжан код HTML и Markdown ",
"html-and-markdown-code-supported": "Поддръжан код HTML и Markdown ",
"new-page": "Нова страница",
"manage-posts": "Управление на публикациите",
"published-date": "Дата на побликуване",
@ -116,8 +117,8 @@
"add-or-edit-description-tags-or": "Добавяне или редактиране на описание, eтикети или модифициране URL.",
"select-your-sites-language": "Изберете системен език.",
"select-a-timezone-for-a-correct": "Изберете часова зона за правилтото показване на дата / час.",
"you-can-use-this-field-to-define-a-set-of": "Можете да използвате това поле, за набор на параметри, свързани с език, страната и специални преференции.",
"you-can-modify-the-url-which-identifies":"Можете да промените адреса, на дадената страница или публикация използвайки ключови думи, но с обща дължина не повече от 150 символа.",
"you-can-use-this-field-to-define-a-set-of": "Можете да използвате това поле за избар на параметри свързани с езика, страната и специални преференции.",
"you-can-modify-the-url-which-identifies":"Можете да промените URL адреса , който идентифицира страницата или публикацията използвайки ключови думи, но с обща дължина не повече от 150 символа.",
"this-field-can-help-describe-the-content": " В това поле може да опишете съдържанието с няколко думи, но с обща дължина не повече от 150 символа.",
"write-the-tags-separeted-by-comma": "Добавянето на етикети става чрез добавянето на запетая. Например: TAG1, tag2, tag3",
"delete-the-user-and-all-its-posts":"Изтриване на потребителя и всички негови публикации.",
@ -172,7 +173,7 @@
"configure": "Конфигориране",
"uninstall": "Премахване",
"change-password": "Промяна на парола:",
"to-schedule-the-post-just-select-the-date-and-time": "За да планирате поста, просто изберете датата и часа.",
"to-schedule-the-post-just-select-the-date-and-time": "За да планирате поста, просто изберете дата и час.",
"write-the-tags-separated-by-commas": "Напишете етикети, разделени със запетая.",
"status": "Статус",
"published": "Пубиликуван",
@ -202,5 +203,16 @@
"images": "Снимки",
"upload-image": "Прикачи снимка",
"drag-and-drop-or-click-here": "Влачите и пускате или натиснете тук",
"insert-image": "Вмъкни снимка"
"insert-image": "Вмъкни снимка",
"supported-image-file-types": "Поддържани файлови формати за снимки",
"date-format": "Формат за дата",
"time-format": "Формат за време",
"chat-with-developers-and-users-on-gitter":"Чат с разработчици и потребители на [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"Това е кратко описание на вашия сайт, за да се промени този текст отидете в админ панела, настройки плъгини, конфигуриране на плъгин About.",
"profile-picture": "Снимка на профила",
"the-about-page-is-very-important": "The about page is an important and powerful tool for potential clients and partners. For those who wonder who is behind the website, your About page is the first source of information.",
"change-this-pages-content-on-the-admin-panel": "Промяна на съдържанието на страницата се извършва от админ панела, управление, страници и кликнете върху страницата.",
"about-your-site-or-yourself": "За твоя сайт или за теб",
"welcome-to-bludit": "Добре дошли в Bludit"
}

View File

@ -3,7 +3,7 @@
{
"native": "Deutsch (Deutschland)",
"english-name": "German",
"last-update": "2015-11-10",
"last-update": "2015-11-18",
"author": "Edi Goetschel",
"email": "egoetschel@clickwork.ch",
"website": "http://www.clickwork.ch"
@ -193,13 +193,23 @@
"show-password": "Passwort zeigen",
"edit-or-remove-your=pages": "Seiten bearbeiten oder löschen.",
"edit-or-remove-your-blogs-posts": "Beiträge bearbeiten oder löschen.",
"general-settings": "Allgemeine Einnstellungen",
"advanced-settings": "Erweiterte Einnstellungen",
"general-settings": "Allgemein",
"advanced-settings": "Erweitert",
"manage-users": "Benutzerverwaltung",
"view-and-edit-your-profile": "Profil anschauen und bearbeiten.",
"password-must-be-at-least-6-characters-long": "Das Passwort muss mindestens 6 Zeichen lang sein",
"images": "Bilder",
"upload-image": "Bild hochladen",
"drag-and-drop-or-click-here": "Drag and Drop oder klicke hier",
"insert-image": "Bild einfügen"
"insert-image": "Bild einfügen",
"supported-image-file-types": "Unterstützte Datei-Formate",
"date-format": "Datumsformat",
"time-format": "Zeitformat",
"chat-with-developers-and-users-on-gitter":"Chatte mit Entwicklern und Benutzern bei [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"Dies ist eine kurze Beschreibung, wer du bist, oder Deiner Website. Um diesen Text zu ändern, gehe im Admin-Panel zu den Einstellunge und konfiguriere unter \"Plugins\" das Plugin \"Über\".",
"profile-picture": "Profil-Bild",
"the-about-page-is-very-important": "Die Seite \"Über mich\" ist ein wichtig und wirkungsvoll beispielsweise für zukünfige Kunden und Partner. Für alle, die wissen möchten, wer hinter der Website steht, ist die \"Über mich\"-Seite die erste Informationsquelle.",
"change-this-pages-content-on-the-admin-panel": "Den Inhalt dieser Seite kann im Admin-Panel unter \"Verwaltung\" > \"Seiten\" geändert werden.",
"about-your-site-or-yourself": "Über dich oder deine Website",
"welcome-to-bludit": "Willkommen bei Bludit"
}

View File

@ -204,5 +204,14 @@
"upload-image": "Upload image",
"drag-and-drop-or-click-here": "Drag and drop or click here",
"insert-image": "Insert image",
"supported-image-file-types": "Supported image file types"
"supported-image-file-types": "Supported image file types",
"date-format": "Date format",
"time-format": "Time format",
"chat-with-developers-and-users-on-gitter":"Chat with developers and users on [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"This is a brief description of yourself or your site, to change this text go to the admin panel, settings, plugins, and configure the plugin about.",
"profile-picture": "Profile picture",
"the-about-page-is-very-important": "The about page is an important and powerful tool for potential clients and partners. For those who wonder who is behind the website, your About page is the first source of information.",
"change-this-pages-content-on-the-admin-panel": "Change this page's content on the admin panel, manage, pages and click on the about page.",
"about-your-site-or-yourself": "About your site or yourself",
"welcome-to-bludit": "Welcome to Bludit"
}

View File

@ -51,7 +51,7 @@
"themes": "Temas",
"prev-page": "Pag. anterior",
"next-page": "Pag. siguiente",
"configure-plugin": "Configurar plugin",
"configure-plugin": "Configurar complemento",
"confirm-delete-this-action-cannot-be-undone": "Confirmar eliminación, esta operación no se puede deshacer.",
"site-title": "Titulo del sitio",
"site-slogan": "Slogan del sitio",
@ -76,9 +76,9 @@
"published-date": "Fecha de publicación",
"modified-date": "Fecha de modificación",
"empty-title": "Titulo vacío",
"plugins": "Plugins",
"install-plugin": "Instalar plugin",
"uninstall-plugin": "Desinstalar plugin",
"plugins": "Complementos",
"install-plugin": "Instalar complemento",
"uninstall-plugin": "Desinstalar complemento",
"new-password": "Nueva contraseña",
"edit-user": "Editar usuario",
"publish-now": "Publicar",
@ -163,7 +163,7 @@
"scheduled": "Programado",
"publish": "Publicar",
"please-check-your-theme-configuration": "Verifique la configuración del tema.",
"plugin-label": "Titulo del plugin",
"plugin-label": "Titulo del complemento",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"cli-mode": "Modo Cli",
@ -199,5 +199,19 @@
"manage-users": "Administrar usuarios",
"view-and-edit-your-profile": "Modifique su perfil.",
"password-must-be-at-least-6-characters-long": "La contraseña debe tener al menos 6 carácteres."
"password-must-be-at-least-6-characters-long": "La contraseña debe tener al menos 6 carácteres.",
"images": "Imagenes",
"upload-image": "Subir imagen",
"drag-and-drop-or-click-here": "Arrastre y suelte, o haga clic aquí",
"insert-image": "Insertar imagen",
"supported-image-file-types": "Tipo de imagen soportados",
"date-format": "Formato de fecha",
"time-format": "Formato de hora",
"chat-with-developers-and-users-on-gitter":"Charla con los desarrolladores y usuarios en [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"Breve descripción de ti o de tu sitio, para cambiar este texto, vaya al panel de administración, ajustes, complementos, y configurar el complemento Acerca de",
"profile-picture": "Imagen de perfil",
"the-about-page-is-very-important": "La página acerca es una herramienta importante y de gran alcance para los clientes y socios potenciales. Para aquellos que quieren saber quien esta detras de este sitio, su pagina Acerca de es la primera fuente de información.",
"change-this-pages-content-on-the-admin-panel": "Modifique el contenido de esta pagina en el panel de administración, administrar, paginas, y luego clic en la pagina Acerca de.",
"about-your-site-or-yourself": "Acerca de ti o de tu sitio",
"welcome-to-bludit": "Bienvenido a Bludit"
}

View File

@ -3,7 +3,7 @@
{
"native": "Français (France)",
"english-name": "French",
"last-update": "2015-11-08",
"last-update": "2015-11-15",
"author": "Frédéric K.",
"email": "stradfred@gmail.com",
"website": ""
@ -169,6 +169,7 @@
"cli-mode": "Mode Cli",
"command-line-mode": "Mode ligne de commande",
"enable-the-command-line-mode-if-you-add-edit": "Activer le mode ligne de commande si vous créez, modifiez ou supprimez des articles ou des pages du système de fichiers.",
"configure": "Configuration",
"uninstall": "Désinstaller",
"change-password": "Modifier le mot de passe",
@ -202,6 +203,15 @@
"images": "Images",
"upload-image": "Envoyer une image",
"drag-and-drop-or-click-here": "Glissez et déposez ou cliquez ici",
"insert-image": "Insérer limage sélectionnée"
"insert-image": "Insérer limage sélectionnée",
"supported-image-file-types": "Extensions des images prises en charge",
"date-format": "Format de la Date",
"time-format": "Format de lheure",
"chat-with-developers-and-users-on-gitter":"Chattez avec les développeurs et les utilisateurs sur [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"Ceci est une brève description de vous-même ou de votre site, pour modifier ce texte aller dans le panneau dadministration, paramètres -> plugins et configurer le plugin « à propos ».",
"profile-picture": "Image de profil",
"the-about-page-is-very-important": "Votre page **à propos** est très utile. Elle fournit à vos visiteurs des informations importantes sur vous, elle crée un rapport de confiance entre vous et votre visiteur, elle présente votre société et votre site et elle vous différencie de tous les autres sites de votre niche.",
"change-this-pages-content-on-the-admin-panel": "Changer le contenu de cette page à partir du panneau dadministration, Gestion de contenu -> Pages et cliquez sur la page « à propos » pour léditer.",
"about-your-site-or-yourself": "À propos de vous",
"welcome-to-bludit": "Bienvenue sur Bludit"
}

214
languages/he_IL.json Normal file
View File

@ -0,0 +1,214 @@
{
"language-data":
{
"native": "עברית",
"english-name": "Hebrew",
"last-update": "2015-11-16",
"author": "hxii",
"email": "paul@paulglushak.com",
"website": "http://paulglushak.com"
},
"username": "שם משתמש",
"password": "סיסמא",
"confirm-password": "אימות סיסמא",
"editor": "עורך",
"dashboard": "לוח מחוונים",
"role": "תפקיד",
"post": "הודעה",
"posts": "הודעות",
"users": "משתמשים",
"administrator": "מנהל",
"add": "הוסף",
"cancel": "ביטול",
"content": "תוכן",
"title": "כותרת",
"no-parent": "אין הורה",
"edit-page": "ערוך דף",
"edit-post": "ערוך הודעה",
"add-a-new-user": "הוספת משתמש חדש",
"parent": "הורה",
"friendly-url": "כתובת URL",
"description": "תאור",
"posted-by": "נכתב על ידי",
"tags": "תגיות",
"position": "מיקום",
"save": "שמור",
"draft": "טיוטה",
"delete": "מחק",
"registered": "רשום",
"Notifications": "התראות",
"profile": "פרופיל",
"email": "דואל",
"settings": "הגדרות",
"general": "כללי",
"advanced": "מתקדם",
"regional": "אזורי",
"about": "אודות",
"login": "כניסה",
"logout": "יציאה",
"manage": "ניהול",
"themes": "ערכות נושא",
"prev-page": "דף קודם",
"next-page": "דף הבא",
"configure-plugin": "הגדרת תוסף",
"confirm-delete-this-action-cannot-be-undone": "אתה בטוח שברצונך למחוק? לא ניתן לבטל פעולה זו.",
"site-title": "כותרת האתר",
"site-slogan": "סלוגן האתר",
"site-description": "תאור האתר",
"footer-text": "טקסט תחתון",
"posts-per-page": "הודעות לדף",
"site-url": "כתובת האתר",
"writting-settings": "הגדרות כתיבה",
"url-filters": "URL filters",
"page": "דף",
"pages": "דפים",
"home": "בית",
"welcome-back": "ברוכ\\ה השב\\ה",
"language": "שפה",
"website": "אתר",
"timezone": "אזור זמן",
"locale": "שפה",
"new-post": "הודעה חדשה",
"new-page": "דף חדש",
"html-and-markdown-code-supported": "HTML ו-Markdown נתמך",
"manage-posts": "ניהול הודעות",
"published-date": "תאריך פרסום",
"modified-date": "תאריך שינוי",
"empty-title": "כותרת ריקה",
"plugins": "תוספים",
"install-plugin": "התקנת תוסף",
"uninstall-plugin": "מחיקת תוסף",
"new-password": "סיסמא חדשה",
"edit-user": "עריכת משתמש",
"publish-now": "פרסם עכשיו",
"first-name": "שם פרטי",
"last-name": "שם משפחה",
"bludit-version": "גרסת Bludit",
"powered-by": "מופעל על ידי",
"recent-posts": "הודעות אחרונות",
"manage-pages": "ניהול דפים",
"advanced-options": "הגדרות מתקדמות",
"user-deleted": "המשתמש נמחק",
"page-added-successfully": "הדף הוסף בהצלחה",
"post-added-successfully": "ההודעה הוספה בהצלחה",
"the-post-has-been-deleted-successfully": "ההודעה נמחקה",
"the-page-has-been-deleted-successfully": "הדף נמחק",
"username-or-password-incorrect": "שם משתמש או סיסמא אינם נכונים",
"database-regenerated": "מסד הנתונים חודש",
"the-changes-have-been-saved": "ההגדרות נשמרו",
"enable-more-features-at": "אפשר יותר תכונות ב",
"username-already-exists": "שם משתמש כבר קיים",
"username-field-is-empty": "שדה שם המשתמש ריק",
"the-password-and-confirmation-password-do-not-match":"הסיסמאות אינן זהות",
"user-has-been-added-successfully": "המשתמש הוסף בהצלחה",
"you-do-not-have-sufficient-permissions": "אין לך הרשאות מתאימות לצפייה בדף זה. אנא צור קשר עם המנהל.",
"settings-advanced-writting-settings": "הגדרות->מתקדם->הגדרות כתיבה",
"new-posts-and-pages-synchronized": "הודעות ודפים חדשים סונכרנו.",
"you-can-choose-the-users-privilege": "באפשרותך להגדיר את הרשאות המשתמש. רק העורך יכול לכתוב הודעות וליצור דפים.",
"email-will-not-be-publicly-displayed": "כתובת הדואל לא תוצג. נדרשת עבור איפוס הסיסמא ועבור התראות.",
"use-this-field-to-name-your-site": "השתמש בשדה זה בכדי לתת שם לאתר שלך. השם יופיע בראשו של כל דף.",
"use-this-field-to-add-a-catchy-phrase": "השתמש בשדה זה בכדי לתת לאתרך סלוגן.",
"you-can-add-a-site-description-to-provide": "השתמש בשדה זה בכדי לספר בקצרה על אתרך.",
"you-can-add-a-small-text-on-the-bottom": "באפשרותך להוסיף טקסט קצר בתחתית העמוד.",
"number-of-posts-to-show-per-page": "מספר ההודעות שיש להראות בכל עמוד",
"the-url-of-your-site": "כתובת ה-URL של האתר",
"add-or-edit-description-tags-or": "הוסף או שנה את התאור, תגיות ואת כתובת ה-URL.",
"select-your-sites-language": "בחר את שפת האתר",
"select-a-timezone-for-a-correct": "בחר את אזור הזמן בו אתה נמצא",
"you-can-use-this-field-to-define-a-set-of": "באפשרותך להתמש בשדה זה בכדי להגדיר פרמטרים הקשורים לשפה, מדינה והגדרות נוספות.",
"you-can-modify-the-url-which-identifies":"באפשרותך לשנות את כתובת ה-URL של הודעה או דף בכדי שיהיו קריאים. עד 150 תוים.",
"this-field-can-help-describe-the-content": "בשדה זה ניתן לרשום תאור קצר של התוכן. עד 150 תוים.",
"delete-the-user-and-all-its-posts":"מחק את המשתמש ואת כל הודעותיו",
"delete-the-user-and-associate-its-posts-to-admin-user": "מחק את המשתמש והעבר את כל הודעותיו למנהל",
"read-more": "המשך לקרוא",
"show-blog": "הראה בלוג",
"default-home-page": "דף בית ברירת מחדל",
"version": "גרסא",
"there-are-no-drafts": "לא נמצא טיוטות.",
"create-a-new-article-for-your-blog":"צור הודעה חדשה לבלוג שלך.",
"create-a-new-page-for-your-website":"צור דף חדש לאתר שלך.",
"invite-a-friend-to-collaborate-on-your-website":"הזמן חבר להשתתף באתרך.",
"change-your-language-and-region-settings":"שינוי הגדרות שפה ומיקום.",
"language-and-timezone":"שפה ואזור זמן",
"author": "כותב",
"start-here": "התחל כאן",
"install-theme": "התקנת ערכת נושא",
"first-post": "הודעה ראשונה",
"congratulations-you-have-successfully-installed-your-bludit": "**Bludit** הותקן בהצלחה!",
"whats-next": "מה הלאה?",
"manage-your-bludit-from-the-admin-panel": "נהל את Bludit מ[דף הניהול](./admin/)",
"follow-bludit-on": "עקוב אחר Bludit",
"visit-the-support-forum": "בקר ב[פורום](http://forum.bludit.com) לתמיכה",
"read-the-documentation-for-more-information": "קרא את ה[מסמכים](http://docs.bludit.com) למידע נוסף",
"share-with-your-friends-and-enjoy": "שתף עם חבריך",
"the-page-has-not-been-found": "הדף לא נמצא.",
"error": "שגיאה",
"bludit-installer": "התקנת Bludit",
"welcome-to-the-bludit-installer": "ברוכים הבאים להתקנת Bludit",
"complete-the-form-choose-a-password-for-the-username-admin": "מלא את הפרטים ובחר סיסמא למשתמש « admin »",
"password-visible-field": "סיסמא, שדה גלוי",
"install": "התקנה",
"choose-your-language": "בחר שאת שפתך",
"next": "הבא",
"the-password-field-is-empty": "שדה הסיסמא ריק",
"your-email-address-is-invalid":"כתובת הדואל אינה נכונה",
"proceed-anyway": "המשך בכל זאת",
"drafts":"טיוטות",
"ip-address-has-been-blocked": "כתובת IP נחסמה",
"try-again-in-a-few-minutes": "אנא נסה בעוד מספר דקות",
"date": "תאריך",
"scheduled": "מתוכנן",
"publish": "פרסם",
"please-check-your-theme-configuration": "אנא בדוק את הגדרות ערכת הנושא.",
"plugin-label": "תווית תוסף",
"enabled": "מאופשר",
"disabled": "מבוטל",
"cli-mode": "מצב CLI",
"command-line-mode": "Command Line Mode",
"enable-the-command-line-mode-if-you-add-edit": "אפשר את מצב CLI אם ברצונך ליצור, לשנות ולמחוק הודעות ודפים דרך המערכת",
"configure": "הגדרה",
"uninstall": "ביטול התקנה",
"change-password": "שינוי סיסמא",
"to-schedule-the-post-just-select-the-date-and-time": "בכדי לתכנן הודעה, הגדר את הזמן והתאריך.",
"write-the-tags-separated-by-commas": "רשום תוויות מופרדות בפסיק",
"status": "סטטוס",
"published": "מפורסם",
"scheduled-posts": "הודעות מתוכננות",
"statistics": "סטטיסטיקה",
"name": "שם",
"email-account-settings":"הגדרות חשבון דואל",
"sender-email": "דואל שולח",
"emails-will-be-sent-from-this-address":"הודעות דואל ישלחו מכתובת זו",
"bludit-login-access-code": "BLUDIT - קוד גישת כניסה",
"check-your-inbox-for-your-login-access-code":"אנא בדוק בתיבת הדואל שלך לקוד גישה",
"there-was-a-problem-sending-the-email":"הייתה בעיה בשליחת המייל",
"back-to-login-form": "חזרה לדף כניסה",
"send-me-a-login-access-code": "שלח לי קוד גישה",
"get-login-access-code": "קבל קוד גישה",
"email-notification-login-access-code": "<p>זוהי התראה מאתרך {{WEBSITE_NAME}}</p><p>לקבלת קוד גישה, אנא לחץ על הקישור:</p><p>{{LINK}}</p>",
"there-are-no-scheduled-posts": "אין הודעות מתוכננות.",
"show-password": "הראה סיסמא",
"edit-or-remove-your=pages": "ערוך או מחק דפים",
"edit-or-remove-your-blogs-posts": "ערוך או מחק הודעות.",
"general-settings": "הגדרות כלליות",
"advanced-settings": "הגדרות מתקדמות",
"manage-users": "ניהול משתמשים",
"view-and-edit-your-profile": "ראה וערוך פרופיל אישי",
"password-must-be-at-least-6-characters-long": "הסיסמא חייבת להיות בעלת 5 תויים לפחות",
"images": "תמונות",
"upload-image": "העלה תמונה",
"drag-and-drop-or-click-here": "גרור תמונה או לחץ כאן",
"insert-image": "הכנס תמונה",
"supported-image-file-types": "סוגי קבצי תמונה נתמכים",
"date-format": "פורמט תאריך",
"time-format": "פורמט שעה",
"chat-with-developers-and-users-on-gitter":"שוחח עם מפתחים ומשתמשים ב[Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-blog":"זהו תאור קצר עליך או על אתרך. בכדי לשנות אותו נווט לדף הניהול->הגדרות->תוספים והגדר את תוסף about",
"profile-picture": "תמונת פרופיל"
}

View File

@ -3,7 +3,7 @@
{
"native": "Українська (Україна)",
"english-name": "Ukrainian",
"last-update": "2015-10-30",
"last-update": "2015-11-19",
"author": "Allec Bernz",
"email": "admin@allec.info",
"website": "allec.info"
@ -86,7 +86,7 @@
"last-name": "Прізвище",
"bludit-version": "Версія Bludit",
"powered-by": "Працює на",
"recent-posts": "Останні повідомлення",
"recent-posts": "Останні публікації",
"manage-pages": "Керування сторінками",
"advanced-options": "Додаткові параметри",
"user-deleted": "Користувач видалений",
@ -119,14 +119,15 @@
"you-can-use-this-field-to-define-a-set-of": "Ви можете використовувати це поле для визначення набору параметрів, що відносяться до мови, країни та особливих переваг.",
"you-can-modify-the-url-which-identifies":"Ви можете змінити URL, який ідентифікує сторінку чи публікацію за допомогою легких для розуміння ключових слів. Не більше 150 символів.",
"this-field-can-help-describe-the-content": "Це поле може допомогти описати зміст у декількох словах. Не більше 150 символів.",
"delete-the-user-and-all-its-posts":"Видалити користувача та всі його публікації",
"delete-the-user-and-associate-its-posts-to-admin-user": "Видалити користувача та зв'язати його публікації з користувачем admin",
"read-more": "Читати далі",
"show-blog": "Показати блог",
"default-home-page": "Домашня сторінка за промовчанням",
"default-home-page": "Домашня сторінка за замовчуванням",
"version": "Версія",
"there-are-no-drafts": "Немає чернеток.",
"create-a-new-article-for-your-blog":"Створити нову статтю для свого блогу.",
"create-a-new-article-for-your-blog":"Створити нову публікацію для вашого блогу.",
"create-a-new-page-for-your-website":"Створити нову сторінку для вашого сайту.",
"invite-a-friend-to-collaborate-on-your-website":"Запросити друга співпрацювати на вашому сайті.",
"change-your-language-and-region-settings":"Змінити Вашу мову та регіональні налаштування.",
@ -134,7 +135,7 @@
"author": "Автор",
"start-here": "Почніть тут",
"install-theme": "Встановити тему",
"first-post": "Перша стаття",
"first-post": "Перша публікація",
"congratulations-you-have-successfully-installed-your-bludit": "Вітаємо, Ви успішно встановили ваш **Bludit**",
"whats-next": "Що далі",
"manage-your-bludit-from-the-admin-panel": "Керуйте вашим Bludit через [панель управління](./admin/)",
@ -158,6 +159,7 @@
"ip-address-has-been-blocked": "IP-адресу заблоковано.",
"try-again-in-a-few-minutes": "Повторіть спробу через декілька хвилин.",
"date": "Дата",
"scheduled": "Заплановано",
"publish": "Опублікувати",
"please-check-your-theme-configuration": "Будь ласка, перевірте конфігурацію вашої теми.",
@ -167,6 +169,7 @@
"cli-mode": "Режим CLI",
"command-line-mode": "Режим командного рядка",
"enable-the-command-line-mode-if-you-add-edit": "Увімкніть режим командного рядка, якщо ви додаєте, редагуєте або видаляєте публікації та сторінки з файлової системи",
"configure": "Налаштування",
"uninstall": "Видалити",
"change-password": "Зміна пароля",
@ -194,5 +197,21 @@
"general-settings": "Загальні налаштування",
"advanced-settings": "Додаткові налаштування",
"manage-users": "Управління користувачами",
"view-and-edit-your-profile": "Перегляд і редагування свого профілю."
"view-and-edit-your-profile": "Перегляд і редагування свого профілю.",
"password-must-be-at-least-6-characters-long": "Пароль повинен містити не менше 6 символів",
"images": "Зображення",
"upload-image": "Завантажити зображення",
"drag-and-drop-or-click-here": "Перетягніть або натисніть тут",
"insert-image": "Вставити зображення",
"supported-image-file-types": "Підтримувані типи файлів зображень",
"date-format": "Формат дати",
"time-format": "Формат часу",
"chat-with-developers-and-users-on-gitter":"Чат з розробниками і користувачами [Gitter](https://gitter.im/dignajar/bludit)",
"this-is-a-brief-description-of-yourself-our-your-site":"Це короткий опис про себе або про сайт, щоб змінити цей текст зайдіть в панель адміністратора, налаштування, плагіни, і налаштуйте плагін про сайт.",
"profile-picture": "Зображення профілю",
"the-about-page-is-very-important": "Сторінка про сайт є важливим і потужним інструментом для потенційних клієнтів і партнерів. Для тих, кому цікаво, хто стоїть за сайтом, ваша сторінка про сайт є першим джерелом інформації.",
"change-this-pages-content-on-the-admin-panel": "Щоб змінити зміст цієї сторінки зайдіть в панель адміністратора, керування, сторінки та натисніть кнопку Про сайт.",
"about-your-site-or-yourself": "Про Ваш сайт або про Вас",
"welcome-to-bludit": "Ласкаво просимо до Bludit"
}

View File

@ -0,0 +1,12 @@
{
"plugin-data":
{
"name": "About",
"description": "Little description about your site or yourself.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.6",
"releaseDate": "2015-11-13"
}
}

47
plugins/about/plugin.php Normal file
View File

@ -0,0 +1,47 @@
<?php
class pluginAbout extends Plugin {
public function init()
{
$this->dbFields = array(
'label'=>'About',
'text'=>''
);
}
public function form()
{
global $Language;
$html = '<div>';
$html .= '<label>'.$Language->get('Plugin label').'</label>';
$html .= '<input name="label" id="jslabel" type="text" value="'.$this->getDbField('label').'">';
$html .= '</div>';
$html .= '<div>';
$html .= '<label>'.$Language->get('About').'</label>';
$html .= '<textarea name="text" id="jstext">'.$this->getDbField('text').'</textarea>';
$html .= '</div>';
return $html;
}
public function siteSidebar()
{
global $Language;
global $dbTags;
global $Url;
$filter = $Url->filters('tag');
$html = '<div class="plugin plugin-about">';
$html .= '<h2>'.$this->getDbField('label').'</h2>';
$html .= '<div class="plugin-content">';
$html .= $this->getDbField('text');
$html .= '</div>';
$html .= '</div>';
return $html;
}
}

View File

@ -8,4 +8,4 @@
"enable-disqus-on-pages": "Disqus auf Seiten verwenden",
"enable-disqus-on-posts": "Disqus bei Beiträgen verwenden",
"enable-disqus-on-default-home-page": "Disqus auf der Hauptseite verwenden"
}
}

View File

@ -6,8 +6,8 @@
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"version": "0.6",
"releaseDate": "2015-11-13"
},
"disqus-shortname": "Disqus shortname",
"enable-disqus-on-pages": "Enable Disqus on pages",

View File

@ -2,12 +2,7 @@
"plugin-data":
{
"name": "System komentarzy - Disqus",
"description": "System komentarzy Disqus przechowuje komentarze dla serwisów internetowych. Korzystanie z tej wtyczki wymaga rejestracji w serwisie disqus.com.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"description": "System komentarzy Disqus przechowuje komentarze dla serwisów internetowych. Korzystanie z tej wtyczki wymaga rejestracji w serwisie disqus.com."
},
"disqus-shortname": "Nazwa użytkownika Disqus",
"enable-disqus-on-pages": "Włącz Disqus na wszystkich stronach",

View File

@ -2,15 +2,10 @@
"plugin-data":
{
"name": "Google-Tools",
"description": "Dieses Plugin erzeugt den Meta-Tag, um deine Website mit den Google Webmasters Tools zu verbinden, und den Code für das JavaScript, der benötigt wird, um Google Analytics verwenden zu können.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"description": "Dieses Plugin erzeugt den Meta-Tag, um deine Website mit den Google Webmasters Tools zu verbinden, und den Code für das JavaScript, der benötigt wird, um Google Analytics verwenden zu können."
},
"google-webmasters-tools": "Google Webmasters Tools",
"google-analytics-tracking-id": "Google Analytics ID",
"complete-this-field-with-the-google-site-verification": "Gib hier den Google Analytics-Tracking-Code ein, um zu bestätigen, dass die Website Dir gehört.",
"complete-this-field-with-the-tracking-id": "Gib hier die Tracking ID ein."
}
}

View File

@ -6,8 +6,8 @@
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"version": "0.6",
"releaseDate": "2015-11-13"
},
"google-webmasters-tools": "Google Webmasters tools",
"google-analytics-tracking-id": "Google Analytics Tracking ID",

View File

@ -2,12 +2,7 @@
"plugin-data":
{
"name": "Narzędzia Google",
"description": "Wtyczka ta generuje kod metatagów pozwalający zweryfikować stronę z serwisem Narzędzia Google Dla Webmasterów oraz wygenerować kod JavaScript monitorujący ruch z usługą Google Analytics.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"description": "Wtyczka ta generuje kod metatagów pozwalający zweryfikować stronę z serwisem Narzędzia Google Dla Webmasterów oraz wygenerować kod JavaScript monitorujący ruch z usługą Google Analytics."
},
"google-webmasters-tools": "Google Webmasters tools",
"google-analytics-tracking-id": "Google Analytics Tracking ID",

View File

@ -6,8 +6,8 @@
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"version": "0.6",
"releaseDate": "2015-11-13"
},
"enable-maintence-mode": "Enable maintence mode",

View File

@ -2,12 +2,7 @@
"plugin-data":
{
"name": "Tryb konserwacji",
"description": "Przełącz stronę w tryb konwersacji (wówczas działać będzie tylko kokpit).",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"description": "Przełącz stronę w tryb konwersacji (wówczas działać będzie tylko kokpit)."
},
"enable-maintence-mode": "Włącz tryb konwersacji",

View File

@ -6,7 +6,7 @@
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"version": "0.6",
"releaseDate": "2015-11-13"
}
}

View File

@ -2,11 +2,6 @@
"plugin-data":
{
"name": "Open Graph",
"description": "Protokół Open Graph zezwala stronie na stosowanie meta tagów używanych w serwisach społecznościowych.",
"author": "Bludit",
"email": "",
"website": "https://github.com/dignajar/bludit-plugins",
"version": "0.3",
"releaseDate": "2015-10-02"
"description": "Protokół Open Graph zezwala stronie na stosowanie meta tagów używanych w serwisach społecznościowych."
}
}

Some files were not shown because too many files have changed in this diff Show More