Merge remote-tracking branch 'refs/remotes/dignajar/master'
This commit is contained in:
commit
e0ea75d696
14
README.md
14
README.md
|
@ -1,14 +1,14 @@
|
|||
[Bludit](http://www.bludit.com/)
|
||||
[Bludit](https://www.bludit.com/)
|
||||
================================
|
||||
**Fast**, **simple**, **extensible** and **flat file** CMS.
|
||||
|
||||
Bludit is a simple web application to make your own **blog** or **site** in seconds, it's completly **free and open source**. Bludit uses flat-files (text files in JSON format) to store the posts and pages, you don't need to install or configure a database.
|
||||
|
||||
- [Documentation](http://docs.bludit.com)
|
||||
- [Help and Support](http://forum.bludit.com)
|
||||
- [Plugins](https://github.com/dignajar/bludit-plugins)
|
||||
- [Themes](https://github.com/dignajar/bludit-themes)
|
||||
- [More plugins and themes](http://forum.bludit.com/viewforum.php?f=14)
|
||||
- [Documentation](https://docs.bludit.com)
|
||||
- [Help and Support](https://forum.bludit.com)
|
||||
- [Plugins](https://plugins.bludit.com)
|
||||
- [Themes](https://themes.bludit.com)
|
||||
- [More plugins and themes](https://forum.bludit.com/viewforum.php?f=14)
|
||||
|
||||
Social networks
|
||||
---------------
|
||||
|
@ -36,7 +36,7 @@ You only need a web server with PHP support.
|
|||
Installation guide
|
||||
------------------
|
||||
|
||||
1. Download the latest version from http://www.bludit.com/bludit_latest.zip
|
||||
1. Download the latest version from https://s3.amazonaws.com/bludit-s3/bludit-builds/bludit_latest.zip
|
||||
2. Extract the zip file into a directory like `bludit`.
|
||||
3. Upload the directory `bludit` to your hosting server.
|
||||
4. Done!
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
# Bludit
|
||||
|
||||
Set the correct permissions on this directory.
|
||||
|
||||
Documentation:
|
||||
- http://docs.bludit.com/en/troubleshooting/writing-test-failure-err205
|
|
@ -11,13 +11,13 @@ class Content {
|
|||
}
|
||||
}
|
||||
|
||||
// Return true if valid
|
||||
// Return TRUE if the content is loaded correctly
|
||||
public function isValid()
|
||||
{
|
||||
return($this->vars!==false);
|
||||
}
|
||||
|
||||
// Returns the value from the $field, FALSE if the field doesn't exist.
|
||||
// Returns the value from the $field, FALSE if the field doesn't exist
|
||||
public function getField($field)
|
||||
{
|
||||
if(isset($this->vars[$field])) {
|
||||
|
@ -27,7 +27,7 @@ class Content {
|
|||
return false;
|
||||
}
|
||||
|
||||
// $notoverwrite true if you don't want to replace the value if are set previusly
|
||||
// Set a value to a field
|
||||
public function setField($field, $value, $overwrite=true)
|
||||
{
|
||||
if($overwrite || empty($this->vars[$field])) {
|
||||
|
@ -37,14 +37,15 @@ class Content {
|
|||
return true;
|
||||
}
|
||||
|
||||
// Parse the content from the file index.txt
|
||||
private function build($path)
|
||||
{
|
||||
if( !Sanitize::pathFile($path.'index.txt') ) {
|
||||
if( !Sanitize::pathFile($path.FILENAME) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$tmp = 0;
|
||||
$lines = file($path.'index.txt');
|
||||
$lines = file($path.FILENAME);
|
||||
foreach($lines as $lineNumber=>$line)
|
||||
{
|
||||
$parts = array_map('trim', explode(':', $line, 2));
|
||||
|
@ -88,17 +89,17 @@ class Content {
|
|||
|
||||
}
|
||||
|
||||
// Returns the post title.
|
||||
// Returns the title field
|
||||
public function title()
|
||||
{
|
||||
return $this->getField('title');
|
||||
}
|
||||
|
||||
// Returns the content.
|
||||
// This content is markdown parser.
|
||||
// (boolean) $fullContent, TRUE returns all content, if FALSE returns the first part of the content.
|
||||
// (boolean) $raw, TRUE returns the content without sanitized, FALSE otherwise.
|
||||
public function content($fullContent=true, $raw=true)
|
||||
// Returns the content
|
||||
// This content is markdown parser
|
||||
// (boolean) $fullContent, TRUE returns all content, if FALSE returns the first part of the content
|
||||
// (boolean) $noSanitize, TRUE returns the content without sanitized
|
||||
public function content($fullContent=true, $noSanitize=true)
|
||||
{
|
||||
// This content is not sanitized.
|
||||
$content = $this->getField('content');
|
||||
|
@ -107,55 +108,60 @@ class Content {
|
|||
$content = $this->getField('breakContent');
|
||||
}
|
||||
|
||||
if($raw) {
|
||||
if($noSanitize) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
return Sanitize::html($content);
|
||||
}
|
||||
|
||||
// Returns the content
|
||||
// This content is not markdown parser
|
||||
// (boolean) $noSanitize, TRUE returns the content without sanitized
|
||||
public function contentRaw($noSanitize=true)
|
||||
{
|
||||
// This content is not sanitized.
|
||||
$content = $this->getField('contentRaw');
|
||||
|
||||
if($noSanitize) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
return Sanitize::html($content);
|
||||
}
|
||||
|
||||
// Returns TRUE if the content has the text splited
|
||||
public function readMore()
|
||||
{
|
||||
return $this->getField('readMore');
|
||||
}
|
||||
|
||||
// Returns the content. This content is not markdown parser.
|
||||
// (boolean) $raw, TRUE returns the content without sanitized, FALSE otherwise.
|
||||
public function contentRaw($raw=true)
|
||||
{
|
||||
// This content is not sanitized.
|
||||
$content = $this->getField('contentRaw');
|
||||
|
||||
if($raw) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
return Sanitize::html($content);
|
||||
}
|
||||
|
||||
// Returns the field key
|
||||
public function key()
|
||||
{
|
||||
return $this->getField('key');
|
||||
}
|
||||
|
||||
// Returns TRUE if the post is published, FALSE otherwise.
|
||||
// Returns TRUE if the post/page is published, FALSE otherwise.
|
||||
public function published()
|
||||
{
|
||||
return ($this->getField('status')==='published');
|
||||
}
|
||||
|
||||
// Returns TRUE if the post is scheduled, FALSE otherwise.
|
||||
// Returns TRUE if the post/page is scheduled, FALSE otherwise.
|
||||
public function scheduled()
|
||||
{
|
||||
return ($this->getField('status')==='scheduled');
|
||||
}
|
||||
|
||||
// Returns TRUE if the post is draft, FALSE otherwise.
|
||||
// Returns TRUE if the post/page is draft, FALSE otherwise.
|
||||
public function draft()
|
||||
{
|
||||
return ($this->getField('status')=='draft');
|
||||
}
|
||||
|
||||
// Returns the file name of the cover image, FALSE there isn't a cover image setted
|
||||
// (boolean) $absolute, TRUE returns the absolute path and file name, FALSE just the file name
|
||||
public function coverImage($absolute=true)
|
||||
{
|
||||
$fileName = $this->getField('coverImage');
|
||||
|
@ -171,12 +177,16 @@ class Content {
|
|||
return $fileName;
|
||||
}
|
||||
|
||||
/*
|
||||
DEPRECATED ?
|
||||
|
||||
public function profilePicture()
|
||||
{
|
||||
return HTML_PATH_UPLOADS_PROFILES.$this->username().'.jpg';
|
||||
}
|
||||
|
||||
// Returns the user object if $field is false, otherwise returns the field's value.
|
||||
*/
|
||||
// Returns the user object
|
||||
// (boolean) $field, TRUE returns the value of the field, FALSE returns the object
|
||||
public function user($field=false)
|
||||
{
|
||||
// Get the user object.
|
||||
|
@ -189,23 +199,26 @@ class Content {
|
|||
return $User;
|
||||
}
|
||||
|
||||
// Returns the username who created the post/page
|
||||
public function username()
|
||||
{
|
||||
return $this->getField('username');
|
||||
}
|
||||
|
||||
// Returns the description field
|
||||
public function description()
|
||||
{
|
||||
return $this->getField('description');
|
||||
}
|
||||
|
||||
// Returns the post date according to locale settings and format settings.
|
||||
// Returns the date according to locale settings and format settings
|
||||
public function date()
|
||||
{
|
||||
return $this->getField('date');
|
||||
}
|
||||
|
||||
// Returns the post date according to locale settings and format as database stored.
|
||||
// Returns the date according to locale settings and format as database stored
|
||||
// (string) $format, you can specify the date format
|
||||
public function dateRaw($format=false)
|
||||
{
|
||||
$date = $this->getField('dateRaw');
|
||||
|
@ -217,6 +230,8 @@ class Content {
|
|||
return $date;
|
||||
}
|
||||
|
||||
// Returns the tags
|
||||
// (boolean) $returnsArray, TRUE to get the tags as an array, FALSE to get the tags separeted by comma
|
||||
public function tags($returnsArray=false)
|
||||
{
|
||||
global $Url;
|
||||
|
@ -241,6 +256,8 @@ class Content {
|
|||
}
|
||||
}
|
||||
|
||||
// Returns the permalink
|
||||
// (boolean) $absolute, TRUE returns the post/page link with the DOMAIN, FALSE without the DOMAIN
|
||||
public function permalink($absolute=false)
|
||||
{
|
||||
global $Url;
|
||||
|
@ -271,5 +288,20 @@ class Content {
|
|||
return '/'.$htmlPath.'/'.$tmp;
|
||||
}
|
||||
|
||||
public function json($returnsArray=false)
|
||||
{
|
||||
$tmp['key'] = $this->key();
|
||||
$tmp['title'] = $this->title();
|
||||
$tmp['content'] = $this->content(); // Markdown parsed
|
||||
$tmp['contentRaw'] = $this->contentRaw(); // No Markdown parsed
|
||||
$tmp['description'] = $this->description();
|
||||
$tmp['date'] = $this->dateRaw();
|
||||
$tmp['permalink'] = $this->permalink(true);
|
||||
|
||||
if($returnsArray) {
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
return json_encode($tmp);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,7 +81,13 @@ class dbJSON
|
|||
$this->dbBackup = $this->db;
|
||||
|
||||
// LOCK_EX flag to prevent anyone else writing to the file at the same time.
|
||||
return file_put_contents($this->file, $data, LOCK_EX);
|
||||
if( file_put_contents($this->file, $data, LOCK_EX) ) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a JSON encoded string on success or FALSE on failure.
|
||||
|
|
|
@ -105,7 +105,7 @@ class Plugin {
|
|||
|
||||
public function setDb($args)
|
||||
{
|
||||
$tmp = array();
|
||||
$tmp = $this->db;
|
||||
|
||||
foreach($this->dbFields as $key=>$value)
|
||||
{
|
||||
|
@ -120,10 +120,6 @@ class Plugin {
|
|||
// Set value
|
||||
$tmp[$key] = $tmpValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
$tmp[$key] = false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->db = $tmp;
|
||||
|
@ -174,6 +170,13 @@ class Plugin {
|
|||
return $this->className;
|
||||
}
|
||||
|
||||
public function isCompatible()
|
||||
{
|
||||
$explode = explode(',', $this->getMetadata('compatible'));
|
||||
|
||||
return in_array(BLUDIT_VERSION, $explode);
|
||||
}
|
||||
|
||||
public function directoryName()
|
||||
{
|
||||
return $this->directoryName;
|
||||
|
@ -186,7 +189,7 @@ class Plugin {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Create plugin directory for databases and others files.
|
||||
// Create plugin directory for databases and other files
|
||||
mkdir(PATH_PLUGINS_DATABASES.$this->directoryName, 0755, true);
|
||||
|
||||
// Create database
|
||||
|
@ -219,4 +222,4 @@ class Plugin {
|
|||
// The user can define your own dbFields.
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -43,6 +43,9 @@ if(!method_exists($_Plugin, 'form')) {
|
|||
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
|
||||
{
|
||||
$_Plugin->setDb($_POST);
|
||||
|
||||
Theme::plugins('afterFormSave');
|
||||
|
||||
Alert::set($Language->g('the-changes-have-been-saved'));
|
||||
}
|
||||
|
||||
|
|
|
@ -12,28 +12,53 @@ function updateBludit()
|
|||
// Check if Bludit need to be update.
|
||||
if( ($Site->currentBuild() < BLUDIT_BUILD) || isset($_GET['update']) )
|
||||
{
|
||||
// --- Update dates on posts ---
|
||||
foreach($dbPosts->db as $key=>$post)
|
||||
{
|
||||
// LOG
|
||||
Log::set('UPDATE SYSTEM - Starting...');
|
||||
|
||||
// LOG
|
||||
Log::set('UPDATE SYSTEM - Checking posts.');
|
||||
|
||||
// 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);
|
||||
$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();
|
||||
|
||||
// --- Update dates on pages ---
|
||||
foreach($dbPages->db as $key=>$page)
|
||||
{
|
||||
// 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->setPageDb($key,'date',$date);
|
||||
$dbPages->setPageDb($key, 'date', $date);
|
||||
}
|
||||
|
||||
// Checksum
|
||||
if( empty($post['md5file']) ) {
|
||||
$checksum = md5_file(PATH_PAGES.$key.DS.FILENAME);
|
||||
$dbPages->setPageDb($key, 'md5file', $checksum);
|
||||
}
|
||||
}
|
||||
|
||||
$dbPages->save();
|
||||
|
||||
// LOG
|
||||
Log::set('UPDATE SYSTEM - Checking directories.');
|
||||
|
||||
// --- Update directories ---
|
||||
$directories = array(
|
||||
PATH_POSTS,
|
||||
|
@ -44,8 +69,8 @@ function updateBludit()
|
|||
PATH_TMP
|
||||
);
|
||||
|
||||
foreach($directories as $dir)
|
||||
{
|
||||
foreach($directories as $dir) {
|
||||
|
||||
// Check if the directory is already created.
|
||||
if(!file_exists($dir)) {
|
||||
// Create the directory recursive.
|
||||
|
@ -56,7 +81,8 @@ function updateBludit()
|
|||
// Set and save the database.
|
||||
$Site->set(array('currentBuild'=>BLUDIT_BUILD));
|
||||
|
||||
Log::set('updateBludit'.LOG_SEP.'System updated');
|
||||
// LOG
|
||||
Log::set('UPDATE SYSTEM - Updated...');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ function checkPost($args)
|
|||
|
||||
$sent = Email::send(array(
|
||||
'from'=>$Site->emailFrom(),
|
||||
'fromName'=>$Site->title(),
|
||||
'to'=>$email,
|
||||
'subject'=>$subject,
|
||||
'message'=>$message
|
||||
|
|
|
@ -1,31 +1,172 @@
|
|||
/* ----------- UIKIT HACKs FOR BLUDIT ----------- */
|
||||
.uk-form * {
|
||||
border-radius: 2px !important;
|
||||
}
|
||||
|
||||
.uk-tab a {
|
||||
color: #2196f3 !important;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #2196f3 !important;
|
||||
}
|
||||
|
||||
/* UIKIT HACKs navbar
|
||||
---------------------------------------------------------------- */
|
||||
.uk-navbar {
|
||||
background: #EEEEEE !important;
|
||||
background: #323232 !important;
|
||||
border: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.uk-navbar-nav a {
|
||||
border: none !important;
|
||||
border-radius: none !important;
|
||||
text-shadow: none !important;
|
||||
color: #fff !important;
|
||||
font-weight: 300 !important;
|
||||
padding: 0 25px !important;
|
||||
}
|
||||
|
||||
.uk-navbar-nav > li.uk-open > a,
|
||||
.uk-navbar-nav > li:hover > a,
|
||||
.uk-navbar-nav > li:focus > a,
|
||||
.uk-navbar-nav > li > a:focus,
|
||||
.uk-navbar-nav > li > a:hover {
|
||||
background: none !important;
|
||||
border-radius: 0 !important;
|
||||
color: #BBBBBB !important;
|
||||
box-shadow: none !important;
|
||||
text-shadow: none !important;
|
||||
}
|
||||
|
||||
.uk-nav-navbar > li > a:focus,
|
||||
.uk-nav-navbar > li > a:hover {
|
||||
background: none !important;
|
||||
border-radius: 0 !important;
|
||||
color: #888 !important;
|
||||
box-shadow: none !important;
|
||||
text-shadow: none !important;
|
||||
}
|
||||
|
||||
.uk-navbar-nav > li.uk-active > a {
|
||||
background: none !important;
|
||||
color: #BBBBBB !important;
|
||||
}
|
||||
|
||||
.uk-navbar-nav .uk-border-circle {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
|
||||
.uk-dropdown-navbar {
|
||||
margin: 0 !important;
|
||||
padding: 10px 0 !important;
|
||||
position: fixed;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
border-radius: 0 !important;
|
||||
border-left: 0 !important;
|
||||
border-right: 0 !important;
|
||||
border-top: 0 !important;
|
||||
}
|
||||
|
||||
.uk-dropdown-navbar li {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.uk-dropdown-navbar a {
|
||||
color: #323232 !important;
|
||||
}
|
||||
|
||||
li.bludit-logo {
|
||||
color: #fff !important;
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
height: 41px;
|
||||
line-height: 40px;
|
||||
margin-left: -1px;
|
||||
margin-top: -1px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.bludit-user-navbar {
|
||||
background: #333 none repeat scroll 0 0;
|
||||
border-color: #ccc;
|
||||
border-radius: 0 0 5px 5px !important;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.bludit-user-navbar a {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
@media (min-width: 333px) and (max-width: 959px) {
|
||||
/* Hidden the Welcome USERNAME */
|
||||
.uk-navbar-flip {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Expand and hidden the sidebar */
|
||||
.uk-width-large-8-10 {
|
||||
width: 100% !important;
|
||||
}
|
||||
/* Hidden the sidebar */
|
||||
.uk-width-large-2-10 {
|
||||
width: 0% !important;
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
.uk-width-large-4-5,
|
||||
.uk-width-large-8-10 {
|
||||
width: 75% !important;
|
||||
}
|
||||
|
||||
.uk-width-large-1-5,
|
||||
.uk-width-large-2-10 {
|
||||
width: 25% !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* UIKIT HACKs hidden navbar
|
||||
---------------------------------------------------------------- */
|
||||
|
||||
.uk-navbar-brand {
|
||||
text-shadow: none !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.uk-navbar-toggle {
|
||||
text-shadow: none !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.uk-nav-offcanvas > li > a {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
/* UIKIT HACKs buttons
|
||||
---------------------------------------------------------------- */
|
||||
.uk-button {
|
||||
color: #ffffff;
|
||||
padding: 2px 22px;
|
||||
padding: 2px 26px;
|
||||
text-shadow: none;
|
||||
background: #888888;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.uk-button:hover,
|
||||
.uk-button:focus {
|
||||
background-color: #777777;
|
||||
color: #ffffff;
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.uk-button-primary {
|
||||
background: #2672ec;
|
||||
background: #2196f3 !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.uk-button-primary:hover {
|
||||
background: #1F5FC4;
|
||||
background: #2EA3FF;
|
||||
color: #fafafa !important;
|
||||
}
|
||||
|
||||
/* UIKIT HACKs forms
|
||||
---------------------------------------------------------------- */
|
||||
legend {
|
||||
width: 70% !important;
|
||||
margin-top: 40px !important;
|
||||
|
@ -35,16 +176,7 @@ legend.first-child {
|
|||
margin-top: 0px !important;
|
||||
}
|
||||
|
||||
.uk-navbar-nav > li > a {
|
||||
border: none;
|
||||
height: 70px;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.uk-nav-navbar > li > a:hover,
|
||||
.uk-nav-navbar > li > a:focus {
|
||||
background: #2672ec;
|
||||
}
|
||||
|
||||
.uk-form-label {
|
||||
color: #666666;
|
||||
|
@ -61,6 +193,11 @@ legend.first-child {
|
|||
padding: 15px 10px;
|
||||
}
|
||||
|
||||
.uk-table td.children {
|
||||
padding: 15px 10px 15px 25px;
|
||||
}
|
||||
|
||||
|
||||
.uk-badge {
|
||||
margin-right: 5px !important;
|
||||
font-size: 0.9em;
|
||||
|
@ -72,36 +209,15 @@ a {
|
|||
color: #2672ec;
|
||||
}
|
||||
|
||||
li.bludit-logo {
|
||||
color: #848484 !important;
|
||||
height: 70px;
|
||||
padding: 15px;
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
height: 35px;
|
||||
line-height: 40px;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
}
|
||||
|
||||
.uk-panel-box {
|
||||
background: #F9F9F9 !important;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.uk-container {
|
||||
max-width: 1280px !important;
|
||||
}
|
||||
|
||||
.uk-width-large-4-5,
|
||||
.uk-width-large-8-10 {
|
||||
width: 75% !important;
|
||||
}
|
||||
|
||||
.uk-width-large-1-5,
|
||||
.uk-width-large-2-10 {
|
||||
width: 25% !important;
|
||||
}
|
||||
|
||||
.uk-thumbnail {
|
||||
margin: 2px 3px !important;
|
||||
max-width: 30% !important;
|
||||
|
@ -116,6 +232,7 @@ li.bludit-logo {
|
|||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
|
||||
/* ----------- BLUDIT ----------- */
|
||||
|
||||
body {
|
||||
|
@ -165,23 +282,22 @@ table.statistics tr:last-child td {
|
|||
/* ----------- ALERT ----------- */
|
||||
|
||||
#alert {
|
||||
bottom: 20px;
|
||||
bottom: 0;
|
||||
color: #ffffff;
|
||||
padding: 10px;
|
||||
display: none;
|
||||
padding: 24px;
|
||||
position: fixed;
|
||||
right: 20px;
|
||||
text-align: center;
|
||||
width: 350px;
|
||||
z-index: 100;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.alert-ok {
|
||||
background: rgba(48, 102, 187, 0.91);
|
||||
background: #4374C1;
|
||||
}
|
||||
|
||||
.alert-fail {
|
||||
background: rgba(187, 48, 48, 0.91);
|
||||
background: #c14343;
|
||||
}
|
||||
|
||||
/* ----------- FORM ----------- */
|
||||
|
@ -237,7 +353,8 @@ table.statistics tr:last-child td {
|
|||
}
|
||||
|
||||
#jstagList span.select {
|
||||
color: #2672ec;
|
||||
color: #2196f3;
|
||||
padding: 2px 13px;
|
||||
}
|
||||
|
||||
/* ----------- BLUDIT IMAGES V8 ----------- */
|
||||
|
@ -541,3 +658,7 @@ div.plugin-links > span.separator {
|
|||
margin-bottom: 0px !important;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#jsformplugin p {
|
||||
margin-bottom: 0;
|
||||
}
|
|
@ -1,6 +1,10 @@
|
|||
/* ----------- UIKIT HACKs FOR BLUDIT ----------- */
|
||||
html {
|
||||
background: #f1f1f1;
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.uk-form * {
|
||||
border-radius: 2px !important;
|
||||
}
|
||||
|
||||
.uk-button-primary {
|
||||
|
@ -13,8 +17,9 @@ html {
|
|||
|
||||
input[type="text"],
|
||||
input[type="password"] {
|
||||
border-color: #FFF !important;
|
||||
background: #FFF;
|
||||
border-color: #EBEBEB !important;
|
||||
border-radius: 2px !important;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
input:disabled {
|
||||
|
@ -22,7 +27,7 @@ input:disabled {
|
|||
}
|
||||
|
||||
.uk-vertical-align-middle {
|
||||
margin-top: -100px;
|
||||
margin-top: -150px;
|
||||
}
|
||||
|
||||
.uk-panel {
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
/* ----------- UIKIT HACKs FOR BLUDIT ----------- */
|
||||
html {
|
||||
background: #f1f1f1;
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
* {
|
||||
border-radius: 2px !important;
|
||||
}
|
||||
|
||||
.uk-button-primary {
|
||||
|
@ -13,7 +17,13 @@ html {
|
|||
|
||||
input[type="text"],
|
||||
input[type="password"] {
|
||||
border-color: #FFF !important;
|
||||
border-color: #EBEBEB !important;
|
||||
border-radius: 2px !important;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.uk-alert {
|
||||
padding: 22px 0 !important;
|
||||
}
|
||||
|
||||
/* ----------- BLUDIT ----------- */
|
||||
|
@ -40,10 +50,10 @@ div.login-form > h2 {
|
|||
}
|
||||
|
||||
a.login-email {
|
||||
background: #f9f9f9 none repeat scroll 0 0;
|
||||
border: 1px solid #eeeeee;
|
||||
border: 0;
|
||||
color: #777;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
}
|
|
@ -1,2 +1,2 @@
|
|||
/*! UIkit 2.24.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
/*! UIkit 2.26.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px}
|
|
@ -1,2 +1,2 @@
|
|||
/*! UIkit 2.24.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
/*! UIkit 2.26.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
.uk-placeholder{margin-bottom:15px;padding:15px;border:1px dashed #ddd;background:#fafafa;color:#444}*+.uk-placeholder{margin-top:15px}.uk-placeholder>:last-child{margin-bottom:0}.uk-placeholder-large{padding-top:80px;padding-bottom:80px}
|
|
@ -1,2 +1,2 @@
|
|||
/*! UIkit 2.24.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
/*! UIkit 2.26.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
.uk-progress{box-sizing:border-box;height:20px;margin-bottom:15px;background:#f5f5f5;overflow:hidden;line-height:20px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06);border-radius:4px}*+.uk-progress{margin-top:15px}.uk-progress-bar{width:0;height:100%;background:#00a8e6;float:left;-webkit-transition:width .6s ease;transition:width .6s ease;font-size:12px;color:#fff;text-align:center;box-shadow:inset 0 0 5px rgba(0,0,0,.05);text-shadow:0 -1px 0 rgba(0,0,0,.1)}.uk-progress-mini{height:6px}.uk-progress-small{height:12px}.uk-progress-success .uk-progress-bar{background-color:#8cc14c}.uk-progress-warning .uk-progress-bar{background-color:#faa732}.uk-progress-danger .uk-progress-bar{background-color:#da314b}.uk-progress-striped .uk-progress-bar{background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:30px 30px}.uk-progress-striped.uk-active .uk-progress-bar{-webkit-animation:uk-progress-bar-stripes 2s linear infinite;animation:uk-progress-bar-stripes 2s linear infinite}@-webkit-keyframes uk-progress-bar-stripes{0%{background-position:0 0}100%{background-position:30px 0}}@keyframes uk-progress-bar-stripes{0%{background-position:0 0}100%{background-position:30px 0}}.uk-progress-mini,.uk-progress-small{border-radius:500px}
|
File diff suppressed because one or more lines are too long
|
@ -1,2 +1,2 @@
|
|||
/*! UIkit 2.24.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
/*! UIkit 2.26.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
.uk-dragover{box-shadow:0 0 20px rgba(100,100,100,.3)}
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<base href="<?php echo HTML_PATH_ADMIN_THEME ?>">
|
||||
<meta charset="<?php echo CHARSET ?>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
|
@ -9,23 +8,22 @@
|
|||
<title><?php echo $layout['title'] ?></title>
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="shortcut icon" type="image/x-icon" href="./img/favicon.png">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="<?php echo HTML_PATH_ADMIN_THEME.'img/favicon.png' ?>">
|
||||
|
||||
<!-- CSS -->
|
||||
<link rel="stylesheet" type="text/css" href="./css/uikit/uikit.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="./css/uikit/upload.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="./css/uikit/form-file.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="./css/uikit/placeholder.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="./css/uikit/progress.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./css/default.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="./css/jquery.datetimepicker.css?version=<?php echo BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/uikit/uikit.almost-flat.min.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/uikit/upload.almost-flat.min.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/uikit/form-file.almost-flat.min.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/uikit/placeholder.almost-flat.min.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/uikit/progress.almost-flat.min.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/default.css?version='.BLUDIT_VERSION ?>">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo HTML_PATH_ADMIN_THEME.'css/jquery.datetimepicker.css?version='.BLUDIT_VERSION ?>">
|
||||
|
||||
<!-- Javascript -->
|
||||
<script charset="utf-8" src="./js/jquery.min.js?version=<?php echo BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="./js/uikit/uikit.min.js?version=<?php echo BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="./js/uikit/upload.min.js?version=<?php echo BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="./js/jquery.datetimepicker.js?version=<?php echo BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="<?php echo HTML_PATH_ADMIN_THEME.'js/jquery.min.js?version='.BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="<?php echo HTML_PATH_ADMIN_THEME.'js/uikit/uikit.min.js?version='.BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="<?php echo HTML_PATH_ADMIN_THEME.'js/uikit/upload.min.js?version='.BLUDIT_VERSION ?>"></script>
|
||||
<script charset="utf-8" src="<?php echo HTML_PATH_ADMIN_THEME.'js/jquery.datetimepicker.js?version='.BLUDIT_VERSION ?>"></script>
|
||||
|
||||
<!-- Plugins -->
|
||||
<?php Theme::plugins('adminHead') ?>
|
||||
|
@ -43,8 +41,8 @@ $(document).ready(function() {
|
|||
echo '$("#alert").slideDown().delay(3500).slideUp();';
|
||||
}
|
||||
?>
|
||||
$("#alert").click(function() {
|
||||
$(this).hide();
|
||||
$(window).click(function() {
|
||||
$("#alert").hide();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
@ -61,12 +59,12 @@ $(document).ready(function() {
|
|||
|
||||
<ul class="uk-navbar-nav">
|
||||
<li class="bludit-logo">BLUDIT</li>
|
||||
<li <?php echo ($layout['view']=='dashboard')?'class="uk-active"':'' ?> ><a href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>"><i class="uk-icon-object-ungroup"></i> <?php $L->p('Dashboard') ?></a></li>
|
||||
<li <?php echo ($layout['view']=='new-post')?'class="uk-active"':'' ?>><a href="<?php echo HTML_PATH_ADMIN_ROOT.'new-post' ?>"><i class="uk-icon-pencil"></i> <?php $L->p('New post') ?></a></li>
|
||||
<li <?php echo ($layout['view']=='new-page')?'class="uk-active"':'' ?>><a href="<?php echo HTML_PATH_ADMIN_ROOT.'new-page' ?>"><i class="uk-icon-file-text-o"></i> <?php $L->p('New page') ?></a></li>
|
||||
<li <?php echo ($layout['view']=='dashboard')?'class="uk-active"':'' ?> ><a href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>"><?php $L->p('Dashboard') ?></a></li>
|
||||
<li <?php echo ($layout['view']=='new-post')?'class="uk-active"':'' ?>><a href="<?php echo HTML_PATH_ADMIN_ROOT.'new-post' ?>"><?php $L->p('New post') ?></a></li>
|
||||
<li <?php echo ($layout['view']=='new-page')?'class="uk-active"':'' ?>><a href="<?php echo HTML_PATH_ADMIN_ROOT.'new-page' ?>"><?php $L->p('New page') ?></a></li>
|
||||
|
||||
<li class="uk-parent" data-uk-dropdown>
|
||||
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'manage-posts' ?>"><i class="uk-icon-clone"></i> <?php $L->p('Manage') ?> ▾</a>
|
||||
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'manage-posts' ?>"><?php $L->p('Manage') ?> ▾</a>
|
||||
<div class="uk-dropdown uk-dropdown-navbar">
|
||||
<ul class="uk-nav uk-nav-navbar">
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'manage-posts' ?>"><i class="uk-icon-folder-o"></i> <?php $L->p('Posts') ?></a></li>
|
||||
|
@ -80,27 +78,30 @@ $(document).ready(function() {
|
|||
|
||||
<?php if($Login->role() == 'admin') { ?>
|
||||
<li class="uk-parent" data-uk-dropdown>
|
||||
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-general' ?>"><i class="uk-icon-cog"></i> <?php $L->p('Settings') ?> ▾</a>
|
||||
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-general' ?>"><?php $L->p('Settings') ?> ▾</a>
|
||||
<div class="uk-dropdown uk-dropdown-navbar">
|
||||
<ul class="uk-nav uk-nav-navbar">
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-general' ?>"><i class="uk-icon-th-large"></i> <?php $L->p('General') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-advanced' ?>"><i class="uk-icon-th"></i> <?php $L->p('Advanced') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-general' ?>"><i class="uk-icon-cog"></i> <?php $L->p('General') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-advanced' ?>"><i class="uk-icon-cogs"></i> <?php $L->p('Advanced') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'settings-regional' ?>"><i class="uk-icon-globe"></i> <?php $L->p('Language and timezone') ?></a></li>
|
||||
<li class="uk-nav-divider"></li>
|
||||
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'plugins' ?>"><i class="uk-icon-puzzle-piece"></i> <?php $L->p('Plugins') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'themes' ?>"><i class="uk-icon-paint-brush"></i> <?php $L->p('Themes') ?></a></li>
|
||||
<li class="uk-nav-divider"></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'about' ?>"><?php $L->p('About') ?></a></li>
|
||||
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'about' ?>"><i class="uk-icon-support"></i> <?php $L->p('About') ?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<?php } ?>
|
||||
|
||||
<li><a target="_blank" href="<?php echo HTML_PATH_ROOT ?>"><?php $L->p('Website') ?></a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<div class="uk-navbar-flip">
|
||||
<ul class="uk-navbar-nav">
|
||||
<li class="uk-parent" data-uk-dropdown>
|
||||
|
||||
<?php
|
||||
$profilePictureSrc = HTML_PATH_ADMIN_THEME_IMG.'default.png';
|
||||
if(file_exists(PATH_UPLOADS_PROFILES.$Login->username().'.png')) {
|
||||
|
@ -108,13 +109,11 @@ $(document).ready(function() {
|
|||
}
|
||||
?>
|
||||
<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() ?> ▾
|
||||
<img class="uk-border-circle" width="28px" src="<?php echo $profilePictureSrc ?>" alt=""> <?php $L->p('Welcome') ?> <?php echo $Login->username() ?>
|
||||
</a>
|
||||
<div class="uk-dropdown uk-dropdown-navbar">
|
||||
|
||||
<div class="uk-dropdown uk-dropdown-navbar bludit-user-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>
|
||||
<li class="uk-nav-divider"></li>
|
||||
<li><a target="_blank" href="<?php echo HTML_PATH_ROOT ?>"><?php $L->p('Website') ?></a></li>
|
||||
<li><a href="<?php echo HTML_PATH_ADMIN_ROOT.'logout' ?>"><?php $L->p('Logout') ?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -27,7 +27,7 @@ class HTML {
|
|||
|
||||
// Prevent the form submit when press enter key.
|
||||
$("form").keypress(function(e) {
|
||||
if (e.which == 13) {
|
||||
if( (e.which == 13) && (e.target.type !== "textarea") ) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
@ -205,11 +205,11 @@ class HTML {
|
|||
|
||||
public static function bluditCoverImage($coverImage="")
|
||||
{
|
||||
global $L;
|
||||
|
||||
// Javascript code
|
||||
include(PATH_JS.'bludit-cover-image.js');
|
||||
|
||||
global $L;
|
||||
|
||||
$style = '';
|
||||
if(!empty($coverImage)) {
|
||||
$style = 'background-image: url('.HTML_PATH_UPLOADS_THUMBNAILS.$coverImage.')';
|
||||
|
@ -263,11 +263,11 @@ class HTML {
|
|||
|
||||
public static function bluditImagesV8()
|
||||
{
|
||||
global $L;
|
||||
|
||||
// Javascript code
|
||||
include(PATH_JS.'bludit-images-v8.js');
|
||||
|
||||
global $L;
|
||||
|
||||
$html = '<!-- BLUDIT IMAGES V8 -->';
|
||||
$html .= '
|
||||
<div id="bludit-images-v8" class="uk-modal">
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,2 +1,256 @@
|
|||
/*! UIkit 2.24.3 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
!function(e){var t;window.UIkit&&(t=e(UIkit)),"function"==typeof define&&define.amd&&define("uikit-upload",["uikit"],function(){return t||e(UIkit)})}(function(e){"use strict";function t(o,a){function r(t,n){var o=new FormData,a=new XMLHttpRequest;if(n.before(n,t)!==!1){for(var r,i=0;r=t[i];i++)o.append(n.param,r);for(var l in n.params)o.append(l,n.params[l]);a.upload.addEventListener("progress",function(e){var t=e.loaded/e.total*100;n.progress(t,e)},!1),a.addEventListener("loadstart",function(e){n.loadstart(e)},!1),a.addEventListener("load",function(e){n.load(e)},!1),a.addEventListener("loadend",function(e){n.loadend(e)},!1),a.addEventListener("error",function(e){n.error(e)},!1),a.addEventListener("abort",function(e){n.abort(e)},!1),a.open(n.method,n.action,!0),"json"==n.type&&a.setRequestHeader("Accept","application/json"),a.onreadystatechange=function(){if(n.readystatechange(a),4==a.readyState){var t=a.responseText;if("json"==n.type)try{t=e.$.parseJSON(t)}catch(o){t=!1}n.complete(t,a)}},n.beforeSend(a),a.send(o)}}if(!e.support.ajaxupload)return this;if(a=e.$.extend({},t.defaults,a),o.length){if("*.*"!==a.allow)for(var i,l=0;i=o[l];l++)if(!n(a.allow,i.name))return"string"==typeof a.notallowed?alert(a.notallowed):a.notallowed(i,a),void 0;var s=a.complete;if(a.single){var d=o.length,f=0,p=!0;a.beforeAll(o),a.complete=function(e,t){f+=1,s(e,t),a.filelimit&&f>=a.filelimit&&(p=!1),p&&d>f?r([o[f]],a):a.allcomplete(e,t)},r([o[0]],a)}else a.complete=function(e,t){s(e,t),a.allcomplete(e,t)},r(o,a)}}function n(e,t){var n="^"+e.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$";return n="^"+n+"$",null!==t.match(new RegExp(n,"i"))}return e.component("uploadSelect",{init:function(){var e=this;this.on("change",function(){t(e.element[0].files,e.options);var n=e.element.clone(!0).data("uploadSelect",e);e.element.replaceWith(n),e.element=n})}}),e.component("uploadDrop",{defaults:{dragoverClass:"uk-dragover"},init:function(){var e=this,n=!1;this.on("drop",function(n){n.dataTransfer&&n.dataTransfer.files&&(n.stopPropagation(),n.preventDefault(),e.element.removeClass(e.options.dragoverClass),e.element.trigger("dropped.uk.upload",[n.dataTransfer.files]),t(n.dataTransfer.files,e.options))}).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}).on("dragover",function(t){t.stopPropagation(),t.preventDefault(),n||(e.element.addClass(e.options.dragoverClass),n=!0)}).on("dragleave",function(t){t.stopPropagation(),t.preventDefault(),e.element.removeClass(e.options.dragoverClass),n=!1})}}),e.support.ajaxupload=function(){function e(){var e=document.createElement("INPUT");return e.type="file","files"in e}function t(){var e=new XMLHttpRequest;return!!(e&&"upload"in e&&"onprogress"in e.upload)}function n(){return!!window.FormData}return e()&&t()&&n()}(),e.support.ajaxupload&&e.$.event.props.push("dataTransfer"),t.defaults={action:"",single:!0,method:"POST",param:"files[]",params:{},allow:"*.*",type:"text",filelimit:!1,before:function(){},beforeSend:function(){},beforeAll:function(){},loadstart:function(){},load:function(){},loadend:function(){},error:function(){},abort:function(){},progress:function(){},complete:function(){},allcomplete:function(){},readystatechange:function(){},notallowed:function(e,t){alert("Only the following file types are allowed: "+t.allow)}},e.Utils.xhrupload=t,t});
|
||||
(function(addon) {
|
||||
|
||||
var component;
|
||||
|
||||
if (window.UIkit) {
|
||||
component = addon(UIkit);
|
||||
}
|
||||
|
||||
if (typeof define == "function" && define.amd) {
|
||||
define("uikit-upload", ["uikit"], function(){
|
||||
return component || addon(UIkit);
|
||||
});
|
||||
}
|
||||
|
||||
})(function(UI){
|
||||
|
||||
"use strict";
|
||||
|
||||
UI.component('uploadSelect', {
|
||||
|
||||
init: function() {
|
||||
|
||||
var $this = this;
|
||||
|
||||
this.on("change", function() {
|
||||
xhrupload($this.element[0].files, $this.options);
|
||||
var twin = $this.element.clone(true).data('uploadSelect', $this);
|
||||
$this.element.replaceWith(twin);
|
||||
$this.element = twin;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
UI.component('uploadDrop', {
|
||||
|
||||
defaults: {
|
||||
'dragoverClass': 'uk-dragover'
|
||||
},
|
||||
|
||||
init: function() {
|
||||
|
||||
var $this = this, hasdragCls = false;
|
||||
|
||||
this.on("drop", function(e){
|
||||
|
||||
if (e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files) {
|
||||
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
|
||||
$this.element.removeClass($this.options.dragoverClass);
|
||||
$this.element.trigger('dropped.uk.upload', [e.originalEvent.dataTransfer.files]);
|
||||
|
||||
xhrupload(e.originalEvent.dataTransfer.files, $this.options);
|
||||
}
|
||||
|
||||
}).on("dragenter", function(e){
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}).on("dragover", function(e){
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
|
||||
if (!hasdragCls) {
|
||||
$this.element.addClass($this.options.dragoverClass);
|
||||
hasdragCls = true;
|
||||
}
|
||||
}).on("dragleave", function(e){
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
$this.element.removeClass($this.options.dragoverClass);
|
||||
hasdragCls = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
UI.support.ajaxupload = (function() {
|
||||
|
||||
function supportFileAPI() {
|
||||
var fi = document.createElement('INPUT'); fi.type = 'file'; return 'files' in fi;
|
||||
}
|
||||
|
||||
function supportAjaxUploadProgressEvents() {
|
||||
var xhr = new XMLHttpRequest(); return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
|
||||
}
|
||||
|
||||
function supportFormData() {
|
||||
return !! window.FormData;
|
||||
}
|
||||
|
||||
return supportFileAPI() && supportAjaxUploadProgressEvents() && supportFormData();
|
||||
})();
|
||||
|
||||
|
||||
function xhrupload(files, settings) {
|
||||
|
||||
if (!UI.support.ajaxupload){
|
||||
return this;
|
||||
}
|
||||
|
||||
settings = UI.$.extend({}, xhrupload.defaults, settings);
|
||||
|
||||
if (!files.length){
|
||||
return;
|
||||
}
|
||||
|
||||
if (settings.allow !== '*.*') {
|
||||
|
||||
for(var i=0,file;file=files[i];i++) {
|
||||
|
||||
if(!matchName(settings.allow, file.name)) {
|
||||
|
||||
if(typeof(settings.notallowed) == 'string') {
|
||||
alert(settings.notallowed);
|
||||
} else {
|
||||
settings.notallowed(file, settings);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var complete = settings.complete;
|
||||
|
||||
if (settings.single){
|
||||
|
||||
var count = files.length,
|
||||
uploaded = 0,
|
||||
allow = true;
|
||||
|
||||
settings.beforeAll(files);
|
||||
|
||||
settings.complete = function(response, xhr){
|
||||
|
||||
uploaded = uploaded + 1;
|
||||
|
||||
complete(response, xhr);
|
||||
|
||||
if (settings.filelimit && uploaded >= settings.filelimit){
|
||||
allow = false;
|
||||
}
|
||||
|
||||
if (allow && uploaded<count){
|
||||
upload([files[uploaded]], settings);
|
||||
} else {
|
||||
settings.allcomplete(response, xhr);
|
||||
}
|
||||
};
|
||||
|
||||
upload([files[0]], settings);
|
||||
|
||||
} else {
|
||||
|
||||
settings.complete = function(response, xhr){
|
||||
complete(response, xhr);
|
||||
settings.allcomplete(response, xhr);
|
||||
};
|
||||
|
||||
upload(files, settings);
|
||||
}
|
||||
|
||||
function upload(files, settings){
|
||||
|
||||
// upload all at once
|
||||
var formData = new FormData(), xhr = new XMLHttpRequest();
|
||||
|
||||
if (settings.before(settings, files)===false) return;
|
||||
|
||||
for (var i = 0, f; f = files[i]; i++) { formData.append(settings.param, f); }
|
||||
for (var p in settings.params) { formData.append(p, settings.params[p]); }
|
||||
|
||||
// Add any event handlers here...
|
||||
xhr.upload.addEventListener("progress", function(e){
|
||||
var percent = (e.loaded / e.total)*100;
|
||||
settings.progress(percent, e);
|
||||
}, false);
|
||||
|
||||
xhr.addEventListener("loadstart", function(e){ settings.loadstart(e); }, false);
|
||||
xhr.addEventListener("load", function(e){ settings.load(e); }, false);
|
||||
xhr.addEventListener("loadend", function(e){ settings.loadend(e); }, false);
|
||||
xhr.addEventListener("error", function(e){ settings.error(e); }, false);
|
||||
xhr.addEventListener("abort", function(e){ settings.abort(e); }, false);
|
||||
|
||||
xhr.open(settings.method, settings.action, true);
|
||||
|
||||
if (settings.type=="json") {
|
||||
xhr.setRequestHeader("Accept", "application/json");
|
||||
}
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
|
||||
settings.readystatechange(xhr);
|
||||
|
||||
if (xhr.readyState==4){
|
||||
|
||||
var response = xhr.responseText;
|
||||
|
||||
if (settings.type=="json") {
|
||||
try {
|
||||
response = UI.$.parseJSON(response);
|
||||
} catch(e) {
|
||||
response = false;
|
||||
}
|
||||
}
|
||||
|
||||
settings.complete(response, xhr);
|
||||
}
|
||||
};
|
||||
settings.beforeSend(xhr);
|
||||
xhr.send(formData);
|
||||
}
|
||||
}
|
||||
|
||||
xhrupload.defaults = {
|
||||
'action': '',
|
||||
'single': true,
|
||||
'method': 'POST',
|
||||
'param' : 'files[]',
|
||||
'params': {},
|
||||
'allow' : '*.*',
|
||||
'type' : 'text',
|
||||
'filelimit': false,
|
||||
|
||||
// events
|
||||
'before' : function(o){},
|
||||
'beforeSend' : function(xhr){},
|
||||
'beforeAll' : function(){},
|
||||
'loadstart' : function(){},
|
||||
'load' : function(){},
|
||||
'loadend' : function(){},
|
||||
'error' : function(){},
|
||||
'abort' : function(){},
|
||||
'progress' : function(){},
|
||||
'complete' : function(){},
|
||||
'allcomplete' : function(){},
|
||||
'readystatechange': function(){},
|
||||
'notallowed' : function(file, settings){ alert('Only the following file types are allowed: '+settings.allow); }
|
||||
};
|
||||
|
||||
function matchName(pattern, path) {
|
||||
|
||||
var parsedPattern = '^' + pattern.replace(/\//g, '\\/').
|
||||
replace(/\*\*/g, '(\\/[^\\/]+)*').
|
||||
replace(/\*/g, '[^\\/]+').
|
||||
replace(/((?!\\))\?/g, '$1.') + '$';
|
||||
|
||||
parsedPattern = '^' + parsedPattern + '$';
|
||||
|
||||
return (path.match(new RegExp(parsedPattern, 'i')) !== null);
|
||||
}
|
||||
|
||||
UI.Utils.xhrupload = xhrupload;
|
||||
|
||||
return xhrupload;
|
||||
});
|
|
@ -31,7 +31,7 @@
|
|||
<h1>BLUDIT</h1>
|
||||
<?php
|
||||
if(Alert::defined()) {
|
||||
echo '<div class="uk-alert uk-alert-danger">'.Alert::get().'</div>';
|
||||
echo '<div class="uk-alert">'.Alert::get().'</div>';
|
||||
}
|
||||
|
||||
if( Sanitize::pathFile(PATH_ADMIN_VIEWS, $layout['view'].'.php') ) {
|
||||
|
@ -45,4 +45,4 @@
|
|||
<?php Theme::plugins('loginBodyEnd') ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
|
@ -14,8 +14,18 @@ echo '
|
|||
';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td>Bludit</td>';
|
||||
echo '<td>'.BLUDIT_VERSION.' ('.BLUDIT_CODENAME.')</td>';
|
||||
echo '<td>Bludit version</td>';
|
||||
echo '<td>'.BLUDIT_VERSION.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td>Bludit codename</td>';
|
||||
echo '<td>'.BLUDIT_CODENAME.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td>Bludit build</td>';
|
||||
echo '<td>'.BLUDIT_BUILD.'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo '<tr>';
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
<?php if(empty($_POST)) { ?>
|
||||
|
||||
<div class="login-form">
|
||||
|
||||
<form method="post" action="" class="uk-form" autocomplete="off">
|
||||
|
@ -16,4 +18,6 @@
|
|||
|
||||
</div>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<a class="login-email" href="<?php echo HTML_PATH_ADMIN_ROOT.'login' ?>"><i class="uk-icon-chevron-left"></i> <?php $L->p('Back to login form') ?></a>
|
||||
|
|
|
@ -20,4 +20,4 @@
|
|||
|
||||
</div>
|
||||
|
||||
<a class="login-email" href="<?php echo HTML_PATH_ADMIN_ROOT.'login-email' ?>"><i class="uk-icon-envelope-o"></i> <?php $L->p('Send me a login access code') ?></a>
|
||||
<a class="login-email" href="<?php echo HTML_PATH_ADMIN_ROOT.'login-email' ?>"><i class="uk-icon-envelope-o"></i> <?php $L->p('Email access code') ?></a>
|
||||
|
|
|
@ -7,7 +7,6 @@ echo '
|
|||
<thead>
|
||||
<tr>
|
||||
<th>'.$L->g('Title').'</th>
|
||||
<th>'.$L->g('Parent').'</th>
|
||||
<th class="uk-text-center">'.$L->g('Position').'</th>
|
||||
<th>'.$L->g('Friendly URL').'</th>
|
||||
</tr>
|
||||
|
@ -15,23 +14,42 @@ echo '
|
|||
<tbody>
|
||||
';
|
||||
|
||||
foreach($pagesParents as $parentKey=>$pageList)
|
||||
foreach($pagesParents[NO_PARENT_CHAR] as $key=>$db)
|
||||
{
|
||||
foreach($pageList as $Page)
|
||||
{
|
||||
if($parentKey!==NO_PARENT_CHAR) {
|
||||
$parentTitle = $pages[$Page->parentKey()]->title();
|
||||
}
|
||||
else {
|
||||
$parentTitle = '';
|
||||
}
|
||||
// Parent page
|
||||
$Page = $pages[$key];
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td>'.($Page->parentKey()?'- ':'').'<a href="'.HTML_PATH_ADMIN_ROOT.'edit-page/'.$Page->key().'">'.($Page->published()?'':'<span class="label-draft">'.$Language->g('Draft').'</span> ').($Page->title()?$Page->title():'<span class="label-empty-title">'.$Language->g('Empty title').'</span> ').'</a></td>';
|
||||
echo '<td>'.$parentTitle.'</td>';
|
||||
echo '<td class="uk-text-center">'.$Page->position().'</td>';
|
||||
echo '<td><a target="_blank" href="'.$Page->permalink().'">'.$Url->filters('page').'/'.$Page->key().'</a></td>';
|
||||
echo '</tr>';
|
||||
$friendlyURL = Text::isEmpty($Url->filters('page')) ? '/'.$Page->key() : '/'.$Url->filters('page').'/'.$Page->key();
|
||||
|
||||
echo '<tr>';
|
||||
echo '<td>';
|
||||
echo '<a href="'.HTML_PATH_ADMIN_ROOT.'edit-page/'.$Page->key().'">'.($Page->published()?'':'<span class="label-draft">'.$Language->g('Draft').'</span> ').($Page->title()?$Page->title():'<span class="label-empty-title">'.$Language->g('Empty title').'</span> ').'</a>';
|
||||
echo '</td>';
|
||||
echo '<td class="uk-text-center">'.$Page->position().'</td>';
|
||||
echo '<td><a target="_blank" href="'.$Page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
echo '</tr>';
|
||||
|
||||
// If the page has children
|
||||
if(isset($pagesParents[$Page->key()]))
|
||||
{
|
||||
// Get the children
|
||||
$children = $pagesParents[$Page->key()];
|
||||
|
||||
foreach($children as $keyChildren=>$dbChildren)
|
||||
{
|
||||
// Parent page
|
||||
$Page = $pages[$keyChildren];
|
||||
|
||||
$friendlyURL = Text::isEmpty($Url->filters('page')) ? '/'.$Page->key() : '/'.$Url->filters('page').'/'.$Page->key();
|
||||
|
||||
echo '<tr class="children">';
|
||||
echo '<td class="children">';
|
||||
echo '<a href="'.HTML_PATH_ADMIN_ROOT.'edit-page/'.$Page->key().'">'.($Page->published()?'':'<span class="label-draft">'.$Language->g('Draft').'</span> ').($Page->title()?$Page->title():'<span class="label-empty-title">'.$Language->g('Empty title').'</span> ').'</a>';
|
||||
echo '</td>';
|
||||
echo '<td class="uk-text-center">'.$Page->position().'</td>';
|
||||
echo '<td><a target="_blank" href="'.$Page->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,10 @@ 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->dateRaw().'</td>';
|
||||
echo '<td><a target="_blank" href="'.$Post->permalink().'">'.$Url->filters('post').'/'.$Post->key().'</a></td>';
|
||||
|
||||
$friendlyURL = Text::isEmpty($Url->filters('post')) ? '/'.$Post->key() : '/'.$Url->filters('post').'/'.$Post->key();
|
||||
|
||||
echo '<td><a target="_blank" href="'.$Post->permalink().'">'.$friendlyURL.'</a></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
||||
|
|
|
@ -37,17 +37,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'tip'=>$L->g('the-url-of-your-site')
|
||||
));
|
||||
|
||||
HTML::legend(array('value'=>$L->g('Command Line Mode')));
|
||||
|
||||
HTML::formSelect(array(
|
||||
'name'=>'cliMode',
|
||||
'label'=>$L->g('Cli Mode'),
|
||||
'options'=>array('true'=>$L->g('Enabled'), 'false'=>$L->g('Disabled')),
|
||||
'selected'=>$Site->cliMode(),
|
||||
'class'=>'uk-width-1-3 uk-form-medium',
|
||||
'tip'=>$L->g('enable-the-command-line-mode-if-you-add-edit')
|
||||
));
|
||||
|
||||
HTML::legend(array('value'=>$L->g('Email account settings')));
|
||||
|
||||
HTML::formInputText(array(
|
||||
|
|
|
@ -51,7 +51,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'label'=>'Twitter',
|
||||
'value'=>$Site->twitter(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'placeholder'=>'https://twitter.com/USERNAME',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
|
@ -60,7 +59,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'label'=>'Facebook',
|
||||
'value'=>$Site->facebook(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'placeholder'=>'https://www.facebook.com/USERNAME',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
|
@ -69,16 +67,14 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'label'=>'Google+',
|
||||
'value'=>$Site->googlePlus(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'placeholder'=>'https://plus.google.com/+USERNAME',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
HTML::formInputText(array(
|
||||
'name'=>'instagram',
|
||||
'label'=>'Instagram',
|
||||
'value'=>$Site->googlePlus(),
|
||||
'value'=>$Site->instagram(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'placeholder'=>'https://www.instagram.com/USERNAME',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
|
@ -87,7 +83,6 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'label'=>'Github',
|
||||
'value'=>$Site->github(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'placeholder'=>'https://github.com/USERNAME',
|
||||
'tip'=>''
|
||||
));
|
||||
|
||||
|
@ -97,4 +92,4 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
</div>
|
||||
</div>';
|
||||
|
||||
HTML::formClose();
|
||||
HTML::formClose();
|
||||
|
|
|
@ -34,7 +34,7 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'label'=>$L->g('Locale'),
|
||||
'value'=>$Site->locale(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'tip'=>$L->g('you-can-use-this-field-to-define-a-set-off')
|
||||
'tip'=>$L->g('you-can-use-this-field-to-define-a-set-of')
|
||||
));
|
||||
|
||||
HTML::legend(array('value'=>$L->g('Date and time formats')));
|
||||
|
@ -43,7 +43,8 @@ HTML::formOpen(array('class'=>'uk-form-horizontal'));
|
|||
'name'=>'dateFormat',
|
||||
'label'=>$L->g('Date format'),
|
||||
'value'=>$Site->dateFormat(),
|
||||
'class'=>'uk-width-1-2 uk-form-medium'
|
||||
'class'=>'uk-width-1-2 uk-form-medium',
|
||||
'tip'=>$L->g('Current format').': '.Date::current($Site->dateFormat())
|
||||
));
|
||||
|
||||
echo '<div class="uk-form-row">
|
||||
|
|
|
@ -16,7 +16,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
|
|||
'value'=>$_user['username']
|
||||
));
|
||||
|
||||
HTML::legend(array('value'=>$L->g('New password')));
|
||||
HTML::legend(array('value'=>$L->g('New password'), 'class'=>'first-child'));
|
||||
|
||||
HTML::formInputText(array(
|
||||
'name'=>'usernameDisable',
|
||||
|
|
|
@ -40,15 +40,15 @@ if($type=='profilePicture')
|
|||
$username = Sanitize::html($_POST['username']);
|
||||
$tmpName = $username.'.png';
|
||||
$Image = new Image();
|
||||
$Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, '400', '400', 'crop');
|
||||
$Image->saveImage(PATH_UPLOADS_PROFILES.$tmpName, 100, false, true);
|
||||
$Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, PROFILE_IMG_WIDTH, PROFILE_IMG_HEIGHT, 'crop');
|
||||
$Image->saveImage(PATH_UPLOADS_PROFILES.$tmpName, PROFILE_IMG_QUALITY, false, true);
|
||||
}
|
||||
// --- OTHERS ---
|
||||
else {
|
||||
// Generate the thumbnail
|
||||
$Image = new Image();
|
||||
$Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, THUMBNAILS_WIDTH, THUMBNAILS_HEIGHT, 'crop');
|
||||
$Image->saveImage(PATH_UPLOADS_THUMBNAILS.$tmpName, 100, true);
|
||||
$Image->saveImage(PATH_UPLOADS_THUMBNAILS.$tmpName, THUMBNAILS_QUALITY, true);
|
||||
|
||||
// Move the original to the upload folder.
|
||||
rename(PATH_TMP.'original'.'.'.$fileExtension, PATH_UPLOADS.$tmpName);
|
||||
|
@ -64,4 +64,4 @@ exit(json_encode(array(
|
|||
'filename'=>$tmpName
|
||||
)));
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||
|
||||
// Bludit version
|
||||
define('BLUDIT_VERSION', 'githubVersion');
|
||||
define('BLUDIT_VERSION', '1.5beta');
|
||||
define('BLUDIT_CODENAME', '');
|
||||
define('BLUDIT_RELEASE_DATE', '');
|
||||
define('BLUDIT_BUILD', '20160201');
|
||||
define('BLUDIT_RELEASE_DATE', '2016-07-16');
|
||||
define('BLUDIT_BUILD', '20160716');
|
||||
|
||||
// Debug mode
|
||||
define('DEBUG_MODE', TRUE);
|
||||
|
@ -65,12 +65,20 @@ define('ALERT_STATUS_OK', 0);
|
|||
// Alert status fail
|
||||
define('ALERT_STATUS_FAIL', 1);
|
||||
|
||||
// Salt length
|
||||
define('THUMBNAILS_WIDTH', 400);
|
||||
define('THUMBNAILS_HEIGHT', 400);
|
||||
// Amount of thumbnails shown on Bludit Quick images
|
||||
define('THUMBNAILS_AMOUNT', 6);
|
||||
|
||||
// Salt length
|
||||
// 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 salt length
|
||||
define('SALT_LENGTH', 8);
|
||||
|
||||
// Page brake string
|
||||
|
@ -82,8 +90,8 @@ define('NO_PARENT_CHAR', '3849abb4cb7abd24c2d8dac17b216f17');
|
|||
// Post per page on Manage->Posts
|
||||
define('POSTS_PER_PAGE_ADMIN', 10);
|
||||
|
||||
// Check if JSON encode and decode are enabled.
|
||||
// define('JSON', function_exists('json_encode'));
|
||||
// Cli mode status for new posts/pages
|
||||
define('CLI_MODE', FALSE);
|
||||
|
||||
// Cli mode status for new posts/pages
|
||||
define('CLI_STATUS', 'published');
|
||||
|
@ -91,6 +99,9 @@ define('CLI_STATUS', 'published');
|
|||
// Cli mode username for new posts/pages
|
||||
define('CLI_USERNAME', 'admin');
|
||||
|
||||
// Filename for posts and pages, you can change for example, for index.md
|
||||
define('FILENAME', 'index.txt');
|
||||
|
||||
// Database date format
|
||||
define('DB_DATE_FORMAT', 'Y-m-d H:i:s');
|
||||
|
||||
|
@ -106,20 +117,17 @@ define('TOKEN_EMAIL_TTL', '+15 minutes');
|
|||
// Charset, default UTF-8.
|
||||
define('CHARSET', 'UTF-8');
|
||||
|
||||
// EXTREME FRIENDLY URL, TRUE for dissmiss internet standard
|
||||
define('EXTREME_FRIENDLY_URL', false);
|
||||
|
||||
// Directory permissions
|
||||
define('DIR_PERMISSIONS', 0755);
|
||||
|
||||
// Multibyte string extension loaded.
|
||||
define('MB_STRING', extension_loaded('mbstring'));
|
||||
// Set internal character encoding.
|
||||
mb_internal_encoding(CHARSET);
|
||||
|
||||
if(MB_STRING)
|
||||
{
|
||||
// Set internal character encoding.
|
||||
mb_internal_encoding(CHARSET);
|
||||
|
||||
// Set HTTP output character encoding.
|
||||
mb_http_output(CHARSET);
|
||||
}
|
||||
// Set HTTP output character encoding.
|
||||
mb_http_output(CHARSET);
|
||||
|
||||
// Inclde Abstract Classes
|
||||
include(PATH_ABSTRACT.'dbjson.class.php');
|
||||
|
@ -142,6 +150,9 @@ include(PATH_KERNEL.'parsedown.class.php');
|
|||
include(PATH_KERNEL.'parsedownextra.class.php');
|
||||
include(PATH_KERNEL.'security.class.php');
|
||||
|
||||
// Include functions
|
||||
include(PATH_KERNEL.'functions.php');
|
||||
|
||||
// Include Helpers Classes
|
||||
include(PATH_HELPERS.'text.class.php');
|
||||
include(PATH_HELPERS.'log.class.php');
|
||||
|
@ -222,6 +233,8 @@ define('JQUERY', HTML_PATH_ADMIN_THEME_JS.'jquery.min.js');
|
|||
|
||||
// --- PHP paths with dependency ---
|
||||
// This paths are absolutes for the OS.
|
||||
|
||||
// Depreacted, use THEME_DIR and THEME_DIR_XXX
|
||||
define('PATH_THEME', PATH_ROOT.'bl-themes'.DS.$Site->theme().DS);
|
||||
define('PATH_THEME_PHP', PATH_THEME.'php'.DS);
|
||||
define('PATH_THEME_CSS', PATH_THEME.'css'.DS);
|
||||
|
@ -229,6 +242,14 @@ define('PATH_THEME_JS', PATH_THEME.'js'.DS);
|
|||
define('PATH_THEME_IMG', PATH_THEME.'img'.DS);
|
||||
define('PATH_THEME_LANG', PATH_THEME.'languages'.DS);
|
||||
|
||||
define('THEME_DIR', PATH_ROOT.'bl-themes'.DS.$Site->theme().DS);
|
||||
define('THEME_DIR_PHP', PATH_THEME.'php'.DS);
|
||||
define('THEME_DIR_CSS', PATH_THEME.'css'.DS);
|
||||
define('THEME_DIR_JS', PATH_THEME.'js'.DS);
|
||||
define('THEME_DIR_IMG', PATH_THEME.'img'.DS);
|
||||
define('THEME_DIR_LANG', PATH_THEME.'languages'.DS);
|
||||
|
||||
|
||||
// --- Absolute paths with domain ---
|
||||
// This paths are absolutes for the user / web browsing.
|
||||
define('DOMAIN', $Site->domain());
|
||||
|
|
|
@ -25,6 +25,7 @@ $plugins = array(
|
|||
'afterAdminLoad'=>array(),
|
||||
|
||||
'beforeRulesLoad'=>array(),
|
||||
'afterFormSave'=>array(),
|
||||
|
||||
'afterPostCreate'=>array(),
|
||||
'afterPostModify'=>array(),
|
||||
|
@ -62,7 +63,11 @@ function buildPlugins()
|
|||
|
||||
// Load each plugin clasess
|
||||
foreach($list as $pluginPath) {
|
||||
include($pluginPath.DS.'plugin.php');
|
||||
|
||||
// Check if the directory has the plugin.php
|
||||
if(file_exists($pluginPath.DS.'plugin.php')) {
|
||||
include($pluginPath.DS.'plugin.php');
|
||||
}
|
||||
}
|
||||
|
||||
// Get plugins clasess loaded
|
||||
|
@ -91,16 +96,20 @@ function buildPlugins()
|
|||
$Language->add($database);
|
||||
}
|
||||
|
||||
// Push Plugin to array all plugins installed and not installed.
|
||||
$plugins['all'][$pluginClass] = $Plugin;
|
||||
// If the plugin is compatible with the Bludit version, add to arrays
|
||||
if($Plugin->isCompatible()) {
|
||||
|
||||
// If the plugin is installed, order by hooks.
|
||||
if($Plugin->installed())
|
||||
{
|
||||
foreach($pluginsEvents as $event=>$value)
|
||||
{
|
||||
if(method_exists($Plugin, $event)) {
|
||||
array_push($plugins[$event], $Plugin);
|
||||
// Push Plugin to array all plugins installed and not installed.
|
||||
$plugins['all'][$pluginClass] = $Plugin;
|
||||
|
||||
// If the plugin is installed, order by hooks.
|
||||
if($Plugin->installed()) {
|
||||
|
||||
foreach($pluginsEvents as $event=>$value) {
|
||||
|
||||
if(method_exists($Plugin, $event)) {
|
||||
array_push($plugins[$event], $Plugin);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,123 +8,13 @@
|
|||
// Filter by page number, by tag, etc.
|
||||
$posts = array();
|
||||
|
||||
// ============================================================================
|
||||
// Functions
|
||||
// ============================================================================
|
||||
|
||||
function reIndexTagsPosts()
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbTags;
|
||||
|
||||
// Remove unpublished.
|
||||
$dbPosts->removeUnpublished();
|
||||
|
||||
// Regenerate the tags index for posts.
|
||||
$dbTags->reindexPosts( $dbPosts->db );
|
||||
|
||||
// Restore the database, before remove the unpublished.
|
||||
$dbPosts->restoreDB();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function buildPost($key)
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbUsers;
|
||||
global $Parsedown;
|
||||
global $Site;
|
||||
|
||||
// Post object, content from FILE.
|
||||
$Post = new Post($key);
|
||||
if( !$Post->isValid() ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from file with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Post database, content from DATABASE JSON.
|
||||
$db = $dbPosts->getPostDB($key);
|
||||
if( !$db ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from database with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Foreach field from DATABASE.
|
||||
foreach($db as $field=>$value) {
|
||||
$Post->setField($field, $value);
|
||||
}
|
||||
|
||||
// Content in raw format
|
||||
$contentRaw = $Post->content();
|
||||
$Post->setField('contentRaw', $contentRaw, true);
|
||||
|
||||
// Parse the content
|
||||
$content = Text::pre2htmlentities($contentRaw); // Parse pre code with htmlentities
|
||||
$content = $Parsedown->text($content); // Parse Markdown.
|
||||
$content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute.
|
||||
$Post->setField('content', $content, true);
|
||||
|
||||
// Pagebrake
|
||||
$explode = explode(PAGE_BREAK, $content);
|
||||
$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);
|
||||
|
||||
// User object
|
||||
$username = $Post->username();
|
||||
$Post->setField('user', $dbUsers->getUser($username));
|
||||
|
||||
return $Post;
|
||||
}
|
||||
|
||||
function buildPostsForPage($pageNumber=0, $amount=POSTS_PER_PAGE_ADMIN, $removeUnpublished=true, $tagKey=false)
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbTags;
|
||||
global $Url;
|
||||
|
||||
$posts = array();
|
||||
|
||||
if($tagKey) {
|
||||
// Get the keys list from tags database, this database is optimized for this case.
|
||||
$list = $dbTags->getList($pageNumber, $amount, $tagKey);
|
||||
}
|
||||
else {
|
||||
// Get the keys list from posts database.
|
||||
$list = $dbPosts->getList($pageNumber, $amount, $removeUnpublished);
|
||||
}
|
||||
|
||||
// There are not posts for the page number then set the page notfound
|
||||
if(empty($list) && $pageNumber>0) {
|
||||
$Url->setNotFound(true);
|
||||
}
|
||||
|
||||
// Foreach post key, build the post.
|
||||
foreach($list as $postKey=>$values)
|
||||
{
|
||||
$Post = buildPost($postKey);
|
||||
if($Post!==false) {
|
||||
array_push($posts, $Post);
|
||||
}
|
||||
}
|
||||
|
||||
return $posts;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Main
|
||||
// ============================================================================
|
||||
|
||||
// Search for changes on posts by the user.
|
||||
if( $Site->cliMode() ) {
|
||||
if($dbPosts->regenerateCli()) {
|
||||
if( CLI_MODE && false) {
|
||||
if($dbPosts->cliMode()) {
|
||||
reIndexTagsPosts();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,147 +7,20 @@
|
|||
// Array with all pages.
|
||||
$pages = array();
|
||||
|
||||
$pagesPublished = array();
|
||||
|
||||
// Array with all pages, order by parent.
|
||||
$pagesParents = array(NO_PARENT_CHAR=>array());
|
||||
|
||||
// ============================================================================
|
||||
// Functions
|
||||
// ============================================================================
|
||||
|
||||
function sortPages($a, $b)
|
||||
{
|
||||
if ($a->position() == $b->position()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ($a->position() < $b->position()) ? -1 : 1;
|
||||
}
|
||||
|
||||
function buildPage($key)
|
||||
{
|
||||
global $dbPages;
|
||||
global $dbUsers;
|
||||
global $Parsedown;
|
||||
global $Site;
|
||||
|
||||
// Page object, content from FILE.
|
||||
$Page = new Page($key);
|
||||
if( !$Page->isValid() ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the page from file with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Page database, content from DATABASE JSON.
|
||||
$db = $dbPages->getPageDB($key);
|
||||
if( !$db ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the page from database with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Foreach field from DATABASE.
|
||||
foreach($db as $field=>$value) {
|
||||
$Page->setField($field, $value);
|
||||
}
|
||||
|
||||
// Content in raw format
|
||||
$contentRaw = $Page->content();
|
||||
$Page->setField('contentRaw', $Page->content(), true);
|
||||
|
||||
// Parse markdown content.
|
||||
$content = Text::pre2htmlentities($contentRaw); // Parse pre code with htmlentities
|
||||
$content = $Parsedown->text($content); // Parse Markdown.
|
||||
$content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute.
|
||||
$Page->setField('content', $content, true);
|
||||
|
||||
// Pagebrake
|
||||
$explode = explode(PAGE_BREAK, $content);
|
||||
$Page->setField('breakContent', $explode[0], true);
|
||||
$Page->setField('readMore', !empty($explode[1]), true);
|
||||
|
||||
// Date format
|
||||
$pageDate = $Page->date();
|
||||
$Page->setField('dateRaw', $pageDate, true);
|
||||
|
||||
$pageDateFormated = $Page->dateRaw( $Site->dateFormat() );
|
||||
$Page->setField('date', $pageDateFormated, true);
|
||||
|
||||
// User object
|
||||
$username = $Page->username();
|
||||
$Page->setField('user', $dbUsers->getUser($username));
|
||||
|
||||
return $Page;
|
||||
}
|
||||
|
||||
function buildAllPages()
|
||||
{
|
||||
global $pagesParents;
|
||||
global $dbPages;
|
||||
|
||||
$list = $dbPages->getDB();
|
||||
|
||||
// Clean pages array.
|
||||
$pages = array();
|
||||
|
||||
unset($list['error']);
|
||||
|
||||
foreach($list as $key=>$db)
|
||||
{
|
||||
$Page = buildPage($key);
|
||||
|
||||
if($Page!==false)
|
||||
{
|
||||
// --- Order pages by parents ---
|
||||
|
||||
// Generate all posible parents.
|
||||
if( $Page->parentKey()===false )
|
||||
{
|
||||
// Add the parent key in the dbPages
|
||||
$dbPages->addParentKey($Page->key());
|
||||
|
||||
$pagesParents[NO_PARENT_CHAR][$Page->key()] = $Page;
|
||||
}
|
||||
else
|
||||
{
|
||||
$pagesParents[$Page->parentKey()][$Page->key()] = $Page;
|
||||
}
|
||||
|
||||
// --- All pages in 1 array ---
|
||||
$pages[$Page->key()] = $Page;
|
||||
}
|
||||
}
|
||||
|
||||
// --- SORT PAGES ---
|
||||
|
||||
// Sort parents.
|
||||
$parents = $pagesParents[NO_PARENT_CHAR];
|
||||
uasort($parents, 'sortPages');
|
||||
|
||||
// Sort children.
|
||||
unset($pagesParents[NO_PARENT_CHAR]);
|
||||
$children = $pagesParents;
|
||||
$tmpPageWithParent = array();
|
||||
foreach($children as $parentKey=>$childrenPages)
|
||||
{
|
||||
// If the child doesn't have a valid parent, then doesn't included them.
|
||||
if(isset($pages[$parentKey]))
|
||||
{
|
||||
$tmpPageWithParent[$parentKey] = $childrenPages;
|
||||
uasort($tmpPageWithParent[$parentKey], 'sortPages');
|
||||
}
|
||||
}
|
||||
|
||||
$pagesParents = array(NO_PARENT_CHAR=>$parents) + $tmpPageWithParent;
|
||||
|
||||
return $pages;
|
||||
}
|
||||
$pagesParentsPublished = array();
|
||||
|
||||
// ============================================================================
|
||||
// Main
|
||||
// ============================================================================
|
||||
|
||||
// Search for changes on pages by the user.
|
||||
if( $Site->cliMode() ) {
|
||||
$dbPages->regenerateCli();
|
||||
if( CLI_MODE ) {
|
||||
$dbPages->cliMode();
|
||||
}
|
||||
|
||||
// Build specific page.
|
||||
|
@ -193,3 +66,4 @@ if($Url->notFound())
|
|||
|
||||
// Build all pages
|
||||
$pages = buildAllPages();
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ function buildThemes()
|
|||
$database = file_get_contents($languageFilename);
|
||||
$database = json_decode($database, true);
|
||||
if(empty($database)) {
|
||||
Log::set('99.themes.php'.LOG_SEP.'JSON Error on theme '.$themePath);
|
||||
Log::set('99.themes.php'.LOG_SEP.'Language file error on theme '.$themePath);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -43,15 +43,20 @@ function buildThemes()
|
|||
{
|
||||
$metadataString = file_get_contents($filenameMetadata);
|
||||
$metadata = json_decode($metadataString, true);
|
||||
if(empty($metadata)) {
|
||||
Log::set('99.themes.php'.LOG_SEP.'JSON Error on theme '.$themePath);
|
||||
break;
|
||||
|
||||
if( !empty($metadata['compatible']) ) {
|
||||
|
||||
$explode = explode(',', $metadata['compatible']);
|
||||
|
||||
if(in_array(BLUDIT_VERSION, $explode)) {
|
||||
$database = $database + $metadata;
|
||||
array_push($themes, $database);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Log::set('99.themes.php'.LOG_SEP.'Metadata file error on theme '.$themePath);
|
||||
}
|
||||
|
||||
$database = $database + $metadata;
|
||||
|
||||
// Theme data
|
||||
array_push($themes, $database);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -81,4 +86,4 @@ if( Sanitize::pathFile($languageFilename) )
|
|||
if(!empty($database)) {
|
||||
$Language->add($database);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -48,7 +48,7 @@ class dbLanguage extends dbJSON
|
|||
return $this->db[$key];
|
||||
}
|
||||
|
||||
return '';
|
||||
return $string;
|
||||
}
|
||||
|
||||
// Returns translation.
|
||||
|
@ -71,7 +71,7 @@ class dbLanguage extends dbJSON
|
|||
|
||||
public function add($array)
|
||||
{
|
||||
$this->db = array_merge($this->db, $array);
|
||||
$this->db = array_merge($array, $this->db);
|
||||
}
|
||||
|
||||
// Returns the item from plugin-data.
|
||||
|
|
|
@ -12,9 +12,9 @@ class dbPages extends dbJSON
|
|||
'tags'=> array('inFile'=>false, 'value'=>array()),
|
||||
'status'=> array('inFile'=>false, 'value'=>'draft'),
|
||||
'date'=> array('inFile'=>false, 'value'=>''),
|
||||
'dateModified'=> array('inFile'=>false, 'value'=>''),
|
||||
'position'=> array('inFile'=>false, 'value'=>0),
|
||||
'coverImage'=> array('inFile'=>false, 'value'=>''),
|
||||
'checksum'=> array('inFile'=>false, 'value'=>'')
|
||||
'coverImage'=> array('inFile'=>false, 'value'=>'')
|
||||
);
|
||||
|
||||
function __construct()
|
||||
|
@ -76,10 +76,6 @@ class dbPages extends dbJSON
|
|||
}
|
||||
}
|
||||
|
||||
// Create Hash
|
||||
$serialize = serialize($dataForDb+$dataForFile);
|
||||
$dataForDb['checksum'] = sha1($serialize);
|
||||
|
||||
// Make the directory. Recursive.
|
||||
if( Filesystem::mkdir(PATH_PAGES.$key, true) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to create the directory '.PATH_PAGES.$key);
|
||||
|
@ -88,7 +84,7 @@ class dbPages extends dbJSON
|
|||
|
||||
// Make the index.txt and save the file.
|
||||
$data = implode("\n", $dataForFile);
|
||||
if( file_put_contents(PATH_PAGES.$key.'/index.txt', $data) === false ) {
|
||||
if( file_put_contents(PATH_PAGES.$key.DS.FILENAME, $data) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to put the content in the file index.txt');
|
||||
return false;
|
||||
}
|
||||
|
@ -124,6 +120,9 @@ class dbPages extends dbJSON
|
|||
$args['date'] = $this->db[$args['key']]['date'];
|
||||
}
|
||||
|
||||
// Modified date
|
||||
$args['dateModified'] = Date::current(DB_DATE_FORMAT);
|
||||
|
||||
// Verify arguments with the database fields.
|
||||
foreach($this->dbFields as $field=>$options)
|
||||
{
|
||||
|
@ -162,10 +161,6 @@ class dbPages extends dbJSON
|
|||
}
|
||||
}
|
||||
|
||||
// Create Hash
|
||||
$serialize = serialize($dataForDb+$dataForFile);
|
||||
$dataForDb['checksum'] = sha1($serialize);
|
||||
|
||||
// Move the directory from old key to new key.
|
||||
if($newKey!==$args['key'])
|
||||
{
|
||||
|
@ -177,7 +172,7 @@ class dbPages extends dbJSON
|
|||
|
||||
// Make the index.txt and save the file.
|
||||
$data = implode("\n", $dataForFile);
|
||||
if( file_put_contents(PATH_PAGES.$newKey.DS.'index.txt', $data) === false ) {
|
||||
if( file_put_contents(PATH_PAGES.$newKey.DS.FILENAME, $data) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to put the content in the file index.txt');
|
||||
return false;
|
||||
}
|
||||
|
@ -203,7 +198,7 @@ class dbPages extends dbJSON
|
|||
}
|
||||
|
||||
// Delete the index.txt file.
|
||||
if( Filesystem::rmfile(PATH_PAGES.$key.DS.'index.txt') === false ) {
|
||||
if( Filesystem::rmfile(PATH_PAGES.$key.DS.FILENAME) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to delete the file index.txt');
|
||||
}
|
||||
|
||||
|
@ -345,6 +340,167 @@ class dbPages extends dbJSON
|
|||
return $count - 1;
|
||||
}
|
||||
|
||||
public function cliMode()
|
||||
{
|
||||
// LOG
|
||||
Log::set('CLI MODE - PAGES - Starting...');
|
||||
|
||||
$pageList = array();
|
||||
|
||||
$pagesDirectories = Filesystem::listDirectories(PATH_PAGES);
|
||||
foreach( $pagesDirectories as $directory ) {
|
||||
|
||||
if( Sanitize::pathFile($directory.DS.FILENAME) ) {
|
||||
|
||||
// The key is the directory name
|
||||
$key = basename($directory);
|
||||
|
||||
// Add the page key to the list
|
||||
$pageList[$key] = true;
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Page found, key: '.$key);
|
||||
|
||||
// Search sub-pages
|
||||
$subPaths = Filesystem::listDirectories($directory.DS);
|
||||
foreach( $subPaths as $subDirectory )
|
||||
{
|
||||
// The key of the sub-page
|
||||
$subKey = basename($subDirectory);
|
||||
|
||||
if( Sanitize::pathFile($subDirectory.DS.FILENAME) ) {
|
||||
|
||||
// Add the key of the sub-page, the key is composed by the directory/subdirectory
|
||||
$pageList[$key.'/'.$subKey] = true;
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Page found, key: '.$key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach( $pageList as $key=>$value ) {
|
||||
|
||||
if( !isset($this->db[$key]) ) {
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - The page is not in the database, key: '.$key);
|
||||
|
||||
// Insert new post
|
||||
$this->cliModeInsert($key);
|
||||
}
|
||||
else {
|
||||
$checksum = md5_file(PATH_PAGES.$key.DS.FILENAME);
|
||||
|
||||
// If checksum is different, update the post
|
||||
if( !isset($this->db[$key]['md5file']) ||
|
||||
$this->db[$key]['md5file']!==$checksum ) {
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Different md5 checksum, key: '.$key);
|
||||
|
||||
// Update the post
|
||||
$this->cliModeInsert($key, $update=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Cleaning database...');
|
||||
|
||||
foreach( array_diff_key($this->db, $pageList) as $key=>$data ) {
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Removing page from database, key: '.$key);
|
||||
|
||||
// Remove the page from database
|
||||
unset( $this->db[$key] );
|
||||
}
|
||||
|
||||
// Save the database
|
||||
$this->save();
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - PAGES - Finishing...');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function cliModeInsert($key, $update=false)
|
||||
{
|
||||
if($update) {
|
||||
// LOG
|
||||
Log::set('CLI MODE - cliModeInsert() - Updating the page, key: '.$key);
|
||||
|
||||
// Database from the current database
|
||||
$dataForDb = $this->db[$key];
|
||||
$dataForDb['dateModified'] = Date::current(DB_DATE_FORMAT);
|
||||
}
|
||||
else {
|
||||
// LOG
|
||||
Log::set('CLI MODE - cliModeInsert() - Inserting the new post, key: '.$key);
|
||||
|
||||
// Database for the new page, fields with the default values
|
||||
$dataForDb = array();
|
||||
foreach( $this->dbFields as $field=>$options ) {
|
||||
|
||||
if( !$options['inFile'] ) {
|
||||
$dataForDb[$field] = $options['value'];
|
||||
}
|
||||
}
|
||||
|
||||
// Fields and value predefined in init.php
|
||||
$dataForDb['username'] = CLI_USERNAME;
|
||||
$dataForDb['status'] = CLI_STATUS;
|
||||
$dataForDb['date'] = Date::current(DB_DATE_FORMAT);
|
||||
}
|
||||
|
||||
// MD5 checksum
|
||||
$dataForDb['md5file'] = md5_file(PATH_PAGES.$key.DS.FILENAME);
|
||||
|
||||
// Generate the Object from the file
|
||||
$Page = new Page($key);
|
||||
|
||||
foreach( $this->dbFields as $field=>$options ) {
|
||||
|
||||
if( !$options['inFile'] ) {
|
||||
|
||||
// Get the field from the file
|
||||
// If the field doesn't exist, the function returns FALSE
|
||||
$data = $Page->getField($field);
|
||||
|
||||
if( $data!==false ) {
|
||||
|
||||
$tmpValue = '';
|
||||
|
||||
if( $field=='tags' ) {
|
||||
$tmpValue = $this->generateTags($data);
|
||||
}
|
||||
elseif( $field=='date' ) {
|
||||
|
||||
// Validate format date from file
|
||||
if( Valid::date($data, DB_DATE_FORMAT) ) {
|
||||
|
||||
$tmpValue = $data;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmpValue = Sanitize::html($data);
|
||||
}
|
||||
|
||||
settype($tmpValue, gettype($options['value']));
|
||||
$dataForDb[$field] = $tmpValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert row in the database
|
||||
$this->db[$key] = $dataForDb;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function regenerateCli()
|
||||
{
|
||||
$db = $this->db;
|
||||
|
@ -364,7 +520,7 @@ class dbPages extends dbJSON
|
|||
{
|
||||
$key = basename($directory);
|
||||
|
||||
if(file_exists($directory.DS.'index.txt')) {
|
||||
if(file_exists($directory.DS.FILENAME)) {
|
||||
// The key is the directory name
|
||||
$newPaths[$key] = true;
|
||||
}
|
||||
|
@ -376,7 +532,7 @@ class dbPages extends dbJSON
|
|||
{
|
||||
$subKey = basename($subDirectory);
|
||||
|
||||
if(file_exists($subDirectory.DS.'index.txt')) {
|
||||
if(file_exists($subDirectory.DS.FILENAME)) {
|
||||
// The key is composed by the directory/subdirectory
|
||||
$newPaths[$key.'/'.$subKey] = true;
|
||||
}
|
||||
|
|
|
@ -9,31 +9,37 @@ class dbPosts extends dbJSON
|
|||
'username'=> array('inFile'=>false, 'value'=>''),
|
||||
'status'=> array('inFile'=>false, 'value'=>'draft'), // published, draft, scheduled
|
||||
'tags'=> array('inFile'=>false, 'value'=>array()),
|
||||
'allowComments'=> array('inFile'=>false, 'value'=>false),
|
||||
'allowComments'=> array('inFile'=>false, 'value'=>0),
|
||||
'date'=> array('inFile'=>false, 'value'=>''),
|
||||
'dateModified'=> array('inFile'=>false, 'value'=>''),
|
||||
'coverImage'=> array('inFile'=>false, 'value'=>''),
|
||||
'checksum'=> array('inFile'=>false, 'value'=>'')
|
||||
);
|
||||
|
||||
private $numberPosts = array(
|
||||
'total'=>0,
|
||||
'published'=>0
|
||||
'md5file'=> array('inFile'=>false, 'value'=>'')
|
||||
);
|
||||
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct(PATH_DATABASES.'posts.php');
|
||||
|
||||
$this->numberPosts['total'] = count($this->db);
|
||||
}
|
||||
|
||||
// Return the amount of posts
|
||||
// $total = TRUE, returns the total of posts
|
||||
// $total = FALSE, return the amount of published posts
|
||||
public function numberPost($total=false)
|
||||
{
|
||||
// Amount of total posts, published, scheduled and draft
|
||||
if($total) {
|
||||
return $this->numberPosts['total'];
|
||||
return count($this->db);
|
||||
}
|
||||
|
||||
return $this->numberPosts['published'];
|
||||
// Amount of published posts
|
||||
$i = 0;
|
||||
foreach($this->db as $values) {
|
||||
if($values['status']=='published') {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
return $i;
|
||||
}
|
||||
|
||||
// Returns the database
|
||||
|
@ -64,7 +70,7 @@ class dbPosts extends dbJSON
|
|||
// Return TRUE if the post exists, FALSE otherwise.
|
||||
public function postExists($key)
|
||||
{
|
||||
return isset($this->db[$key]);
|
||||
return isset( $this->db[$key] );
|
||||
}
|
||||
|
||||
// Generate a valid Key/Slug.
|
||||
|
@ -99,18 +105,21 @@ class dbPosts extends dbJSON
|
|||
{
|
||||
$dataForDb = array(); // This data will be saved in the database
|
||||
$dataForFile = array(); // This data will be saved in the file
|
||||
|
||||
// Current date, format of DB_DATE_FORMAT
|
||||
$currentDate = Date::current(DB_DATE_FORMAT);
|
||||
|
||||
// Generate the database key.
|
||||
// Generate the database key / index
|
||||
$key = $this->generateKey($args['slug']);
|
||||
|
||||
// The user is always who is loggued.
|
||||
// The user is always who is loggued
|
||||
$args['username'] = Session::get('username');
|
||||
if( Text::isEmpty($args['username']) ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Session username doesnt exists.');
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the date not valid, then set the current date.
|
||||
// If the date is not valid, then set the current date.
|
||||
if(!Valid::date($args['date'], DB_DATE_FORMAT)) {
|
||||
$args['date'] = $currentDate;
|
||||
}
|
||||
|
@ -123,7 +132,7 @@ class dbPosts extends dbJSON
|
|||
// Verify arguments with the database fields.
|
||||
foreach($this->dbFields as $field=>$options)
|
||||
{
|
||||
// If the field is in the arguments.
|
||||
// If the field is in the arguments
|
||||
if( isset($args[$field]) )
|
||||
{
|
||||
if($field=='tags') {
|
||||
|
@ -139,13 +148,13 @@ class dbPosts extends dbJSON
|
|||
}
|
||||
}
|
||||
}
|
||||
// Default value if not in the arguments.
|
||||
// Set a default value if not in the arguments
|
||||
else
|
||||
{
|
||||
$tmpValue = $options['value'];
|
||||
}
|
||||
|
||||
// Check where the field will be written, if in the file or in the database.
|
||||
// Check where the field will be written, in the file or in the database
|
||||
if($options['inFile']) {
|
||||
$dataForFile[$field] = Text::firstCharUp($field).': '.$tmpValue;
|
||||
}
|
||||
|
@ -159,10 +168,6 @@ class dbPosts extends dbJSON
|
|||
}
|
||||
}
|
||||
|
||||
// Create Hash
|
||||
$serialize = serialize($dataForDb+$dataForFile);
|
||||
$dataForDb['checksum'] = sha1($serialize);
|
||||
|
||||
// Make the directory.
|
||||
if( Filesystem::mkdir(PATH_POSTS.$key) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to create the directory '.PATH_POSTS.$key);
|
||||
|
@ -171,18 +176,27 @@ class dbPosts extends dbJSON
|
|||
|
||||
// Make the index.txt and save the file.
|
||||
$data = implode("\n", $dataForFile);
|
||||
if( file_put_contents(PATH_POSTS.$key.DS.'index.txt', $data) === false ) {
|
||||
if( file_put_contents(PATH_POSTS.$key.DS.FILENAME, $data) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to put the content in the file index.txt');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Calculate the checksum of the file
|
||||
$dataForDb['md5file'] = md5_file(PATH_POSTS.$key.DS.FILENAME);
|
||||
|
||||
// Save the database
|
||||
$this->db[$key] = $dataForDb;
|
||||
|
||||
// Sort posts before save.
|
||||
// Sort posts before save
|
||||
$this->sortByDate();
|
||||
|
||||
if( $this->save() === false ) {
|
||||
|
||||
// Trying to rollback
|
||||
Log::set(__METHOD__.LOG_SEP.'Rollback...');
|
||||
Filesystem::rmfile(PATH_POSTS.$key.DS.FILENAME);
|
||||
Filesystem::rmdir(PATH_POSTS.$key);
|
||||
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
|
||||
return false;
|
||||
}
|
||||
|
@ -193,6 +207,10 @@ class dbPosts extends dbJSON
|
|||
public function edit($args)
|
||||
{
|
||||
if( $this->delete($args['key']) ) {
|
||||
|
||||
// Modified date
|
||||
$args['dateModified'] = Date::current(DB_DATE_FORMAT);
|
||||
|
||||
return $this->add($args);
|
||||
}
|
||||
|
||||
|
@ -208,7 +226,7 @@ class dbPosts extends dbJSON
|
|||
}
|
||||
|
||||
// Delete the index.txt file.
|
||||
if( Filesystem::rmfile(PATH_POSTS.$key.DS.'index.txt') === false ) {
|
||||
if( Filesystem::rmfile(PATH_POSTS.$key.DS.FILENAME) === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to delete the file index.txt');
|
||||
}
|
||||
|
||||
|
@ -231,12 +249,12 @@ class dbPosts extends dbJSON
|
|||
// Returns an array with a list of posts keys, filtered by a page number.
|
||||
public function getList($pageNumber, $postPerPage, $removeUnpublished=true)
|
||||
{
|
||||
$totalPosts = $this->numberPosts['total'];
|
||||
$totalPosts = $this->numberPost(true);
|
||||
|
||||
// Remove the unpublished posts.
|
||||
if($removeUnpublished) {
|
||||
$this->removeUnpublished();
|
||||
$totalPosts = $this->numberPosts['published'];
|
||||
$totalPosts = $this->numberPost(true);
|
||||
}
|
||||
|
||||
$init = (int) $postPerPage * $pageNumber;
|
||||
|
@ -246,7 +264,7 @@ class dbPosts extends dbJSON
|
|||
if(!$outrange) {
|
||||
$tmp = array_slice($this->db, $init, $postPerPage, true);
|
||||
|
||||
// Restore the database because we delete the unpublished posts.
|
||||
// Restore the database because we deleted the unpublished posts.
|
||||
$this->restoreDB();
|
||||
|
||||
return $tmp;
|
||||
|
@ -255,30 +273,26 @@ class dbPosts extends dbJSON
|
|||
return array();
|
||||
}
|
||||
|
||||
// Delete all posts from an user.
|
||||
// Delete all posts from an user
|
||||
public function deletePostsByUser($username)
|
||||
{
|
||||
foreach($this->db as $key=>$value)
|
||||
{
|
||||
foreach($this->db as $key=>$value) {
|
||||
|
||||
if($value['username']==$username) {
|
||||
unset($this->db[$key]);
|
||||
$this->delete($key);
|
||||
Log::set(__METHOD__.LOG_SEP.'Post deleted: '.$key);
|
||||
}
|
||||
}
|
||||
|
||||
// Save the database.
|
||||
if( $this->save() === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
|
||||
return false;
|
||||
}
|
||||
|
||||
Log::set(__METHOD__.LOG_SEP.'Posts from the user '.$username.' were delete.');
|
||||
return true;
|
||||
}
|
||||
|
||||
// Link-up all posts from an user to another user.
|
||||
public function linkPostsToUser($oldUsername, $newUsername)
|
||||
{
|
||||
foreach($this->db as $key=>$value)
|
||||
{
|
||||
foreach($this->db as $key=>$value) {
|
||||
|
||||
if($value['username']==$oldUsername) {
|
||||
$this->db[$key]['username'] = $newUsername;
|
||||
}
|
||||
|
@ -293,28 +307,27 @@ class dbPosts extends dbJSON
|
|||
return false;
|
||||
}
|
||||
|
||||
Log::set(__METHOD__.LOG_SEP.'Posts linked to another user.');
|
||||
return true;
|
||||
}
|
||||
|
||||
// Remove unpublished posts, status != published.
|
||||
public function removeUnpublished()
|
||||
{
|
||||
foreach($this->db as $key=>$values)
|
||||
{
|
||||
foreach($this->db as $key=>$values) {
|
||||
|
||||
if($values['status']!='published') {
|
||||
unset($this->db[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->numberPosts['published'] = count($this->db);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Return TRUE if there are new posts published, FALSE otherwise.
|
||||
public function scheduler()
|
||||
{
|
||||
// Get current date.
|
||||
// Get current date
|
||||
$currentDate = Date::current(DB_DATE_FORMAT);
|
||||
|
||||
$saveDatabase = false;
|
||||
|
@ -322,10 +335,11 @@ class dbPosts extends dbJSON
|
|||
// Check scheduled posts
|
||||
foreach($this->db as $postKey=>$values)
|
||||
{
|
||||
if($values['status']=='scheduled')
|
||||
{
|
||||
// Publish post.
|
||||
if($values['status']=='scheduled') {
|
||||
|
||||
// Publish post
|
||||
if($values['date']<=$currentDate) {
|
||||
|
||||
$this->db[$postKey]['status'] = 'published';
|
||||
$saveDatabase = true;
|
||||
}
|
||||
|
@ -343,6 +357,7 @@ class dbPosts extends dbJSON
|
|||
return false;
|
||||
}
|
||||
|
||||
Log::set(__METHOD__.LOG_SEP.'New posts published from the scheduler.');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -395,92 +410,152 @@ class dbPosts extends dbJSON
|
|||
return $a['date']<$b['date'];
|
||||
}
|
||||
|
||||
// Return TRUE if there are new posts or orphan post deleted, FALSE otherwise.
|
||||
public function regenerateCli()
|
||||
public function cliMode()
|
||||
{
|
||||
$db = $this->db;
|
||||
$allPosts = array();
|
||||
$fields = array();
|
||||
$currentDate = Date::current(DB_DATE_FORMAT);
|
||||
// LOG
|
||||
Log::set('CLI MODE - POSTS - Starting...');
|
||||
|
||||
// Generate default fields and values.
|
||||
foreach($this->dbFields as $field=>$options) {
|
||||
if(!$options['inFile']) {
|
||||
$fields[$field] = $options['value'];
|
||||
}
|
||||
}
|
||||
$postList = array();
|
||||
|
||||
$fields['status'] = CLI_STATUS;
|
||||
$fields['date'] = $currentDate;
|
||||
$fields['username'] = CLI_USERNAME;
|
||||
$postsDirectories = Filesystem::listDirectories(PATH_POSTS);
|
||||
|
||||
// Get all posts from the first level of directories.
|
||||
$tmpPaths = Filesystem::listDirectories(PATH_POSTS);
|
||||
foreach($tmpPaths as $directory)
|
||||
{
|
||||
// Check if the post have the index.txt file.
|
||||
if(Sanitize::pathFile($directory.DS.'index.txt'))
|
||||
{
|
||||
// The key is the directory name.
|
||||
foreach( $postsDirectories as $directory ) {
|
||||
|
||||
if( Sanitize::pathFile($directory.DS.FILENAME) ) {
|
||||
|
||||
// The key is the directory name
|
||||
$key = basename($directory);
|
||||
|
||||
$allPosts[$key] = true;
|
||||
// Add the key to the list
|
||||
$postList[$key] = true;
|
||||
|
||||
// Create the new entry if not exist inside the DATABASE.
|
||||
if(!isset($this->db[$key])) {
|
||||
// New entry on database with the default fields and values.
|
||||
$this->db[$key] = $fields;
|
||||
// Checksum
|
||||
$checksum = md5_file($directory.DS.FILENAME);
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - Post found, key: '.$key);
|
||||
|
||||
if( !isset($this->db[$key]) ) {
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - The post is not in the database, key: '.$key);
|
||||
|
||||
// Insert new post
|
||||
$this->cliModeInsert($key);
|
||||
}
|
||||
else {
|
||||
// If checksum is different, update the post
|
||||
if( $this->db[$key]['md5file']!==$checksum ) {
|
||||
|
||||
// Create the post from FILE.
|
||||
$Post = new Post($key);
|
||||
// LOG
|
||||
Log::set('CLI MODE - Different md5 checksum, key: '.$key);
|
||||
|
||||
// Update all fields from FILE to DATABASE.
|
||||
foreach($fields as $f=>$v)
|
||||
{
|
||||
// If the field exists on the FILE, update it.
|
||||
if($Post->getField($f))
|
||||
{
|
||||
$valueFromFile = $Post->getField($f);
|
||||
|
||||
if($f=='tags') {
|
||||
// Generate tags array.
|
||||
$this->db[$key]['tags'] = $this->generateTags($valueFromFile);
|
||||
}
|
||||
elseif($f=='date') {
|
||||
// Validate Date from file
|
||||
if(Valid::date($valueFromFile, DB_DATE_FORMAT)) {
|
||||
$this->db[$key]['date'] = $valueFromFile;
|
||||
|
||||
if( $valueFromFile > $currentDate ) {
|
||||
$this->db[$key]['status'] = 'scheduled';
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Sanitize the values from file.
|
||||
$this->db[$key][$f] = Sanitize::html($valueFromFile);
|
||||
}
|
||||
// Update the post
|
||||
$this->cliModeInsert($key, $update=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove orphan posts from db, the orphan posts are posts deleted by hand (directory deleted).
|
||||
foreach( array_diff_key($db, $allPosts) as $key=>$data ) {
|
||||
unset($this->db[$key]);
|
||||
// LOG
|
||||
Log::set('CLI MODE - Cleaning database...');
|
||||
|
||||
foreach( array_diff_key($this->db, $postList) as $key=>$data ) {
|
||||
// LOG
|
||||
Log::set('CLI MODE - Removing post from database, key: '.$key);
|
||||
|
||||
// Removing the post from database
|
||||
unset( $this->db[$key] );
|
||||
}
|
||||
|
||||
// Sort posts before save.
|
||||
// Sort posts before save
|
||||
$this->sortByDate();
|
||||
|
||||
// Save the database.
|
||||
if( $this->save() === false ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying to save the database file.');
|
||||
return false;
|
||||
// Save the database
|
||||
$this->save();
|
||||
|
||||
// LOG
|
||||
Log::set('CLI MODE - POSTS - Finishing...');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function cliModeInsert($key, $update=false)
|
||||
{
|
||||
if($update) {
|
||||
// LOG
|
||||
Log::set('CLI MODE - cliModeInsert() - Updating the post, key: '.$key);
|
||||
|
||||
// Database from the current database
|
||||
$dataForDb = $this->db[$key];
|
||||
$dataForDb['dateModified'] = Date::current(DB_DATE_FORMAT);
|
||||
}
|
||||
else {
|
||||
// LOG
|
||||
Log::set('CLI MODE - cliModeInsert() - Inserting the new post, key: '.$key);
|
||||
|
||||
// Database for the new post, fields with the default values
|
||||
$dataForDb = array();
|
||||
foreach( $this->dbFields as $field=>$options ) {
|
||||
|
||||
if( !$options['inFile'] ) {
|
||||
$dataForDb[$field] = $options['value'];
|
||||
}
|
||||
}
|
||||
|
||||
// Fields and value predefined in init.php
|
||||
$dataForDb['username'] = CLI_USERNAME;
|
||||
$dataForDb['status'] = CLI_STATUS;
|
||||
$dataForDb['date'] = Date::current(DB_DATE_FORMAT);
|
||||
}
|
||||
|
||||
return $this->db!=$db;
|
||||
// MD5 checksum
|
||||
$dataForDb['md5file'] = md5_file(PATH_POSTS.$key.DS.FILENAME);
|
||||
|
||||
// Generate the Object from the file
|
||||
$Post = new Post($key);
|
||||
|
||||
foreach( $this->dbFields as $field=>$options ) {
|
||||
|
||||
if( !$options['inFile'] ) {
|
||||
|
||||
// Get the field from the file
|
||||
// If the field doesn't exist, the function returns FALSE
|
||||
$data = $Post->getField($field);
|
||||
|
||||
if( $data!==false ) {
|
||||
|
||||
$tmpValue = '';
|
||||
|
||||
if( $field=='tags' ) {
|
||||
$tmpValue = $this->generateTags($data);
|
||||
}
|
||||
elseif( $field=='date' ) {
|
||||
|
||||
// Validate format date from file
|
||||
if( Valid::date($data, DB_DATE_FORMAT) ) {
|
||||
|
||||
$tmpValue = $data;
|
||||
|
||||
if( $data > $currentDate ) {
|
||||
$dataForDb['status'] = 'scheduled';
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmpValue = Sanitize::html($data);
|
||||
}
|
||||
|
||||
settype($tmpValue, gettype($options['value']));
|
||||
$dataForDb[$field] = $tmpValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert row in the database
|
||||
$this->db[$key] = $dataForDb;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ class dbSite extends dbJSON
|
|||
'uriTag'=> array('inFile'=>false, 'value'=>'/tag/'),
|
||||
'uriBlog'=> array('inFile'=>false, 'value'=>'/blog/'),
|
||||
'url'=> array('inFile'=>false, 'value'=>''),
|
||||
'cliMode'=> array('inFile'=>false, 'value'=>true),
|
||||
'emailFrom'=> array('inFile'=>false, 'value'=>''),
|
||||
'dateFormat'=> array('inFile'=>false, 'value'=>'F j, Y'),
|
||||
'timeFormat'=> array('inFile'=>false, 'value'=>'g:i a'),
|
||||
|
@ -216,12 +215,6 @@ class dbSite extends dbJSON
|
|||
return $parse['scheme'].'://'.$domain;
|
||||
}
|
||||
|
||||
// Returns TRUE if the cli mode is enabled, otherwise FALSE.
|
||||
public function cliMode()
|
||||
{
|
||||
return $this->getField('cliMode');
|
||||
}
|
||||
|
||||
// Returns the relative home link
|
||||
public function homeLink()
|
||||
{
|
||||
|
|
|
@ -25,6 +25,10 @@ class dbTags extends dbJSON
|
|||
foreach($this->db['postsIndex'] as $tagSlug=>$tagInfo) {
|
||||
$tmp[$tagSlug] = $tagInfo['name'];
|
||||
}
|
||||
|
||||
// Sort low to high, by value.
|
||||
natcasesort($tmp);
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
|
@ -93,4 +97,4 @@ class dbTags extends dbJSON
|
|||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,240 @@
|
|||
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||
|
||||
// POST FUNCTIONS
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
function reIndexTagsPosts()
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbTags;
|
||||
|
||||
// Remove unpublished.
|
||||
$dbPosts->removeUnpublished();
|
||||
|
||||
// Regenerate the tags index for posts.
|
||||
$dbTags->reindexPosts( $dbPosts->db );
|
||||
|
||||
// Restore the database, before remove the unpublished.
|
||||
$dbPosts->restoreDB();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function buildPost($key)
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbUsers;
|
||||
global $Parsedown;
|
||||
global $Site;
|
||||
|
||||
// Post object, content from FILE.
|
||||
$Post = new Post($key);
|
||||
if( !$Post->isValid() ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from file with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Post database, content from DATABASE JSON.
|
||||
$db = $dbPosts->getPostDB($key);
|
||||
if( !$db ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the post from database with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Foreach field from DATABASE.
|
||||
foreach($db as $field=>$value) {
|
||||
$Post->setField($field, $value);
|
||||
}
|
||||
|
||||
// Content in raw format
|
||||
$contentRaw = $Post->content();
|
||||
$Post->setField('contentRaw', $contentRaw, true);
|
||||
|
||||
// Parse the content
|
||||
$content = Text::pre2htmlentities($contentRaw); // Parse pre code with htmlentities
|
||||
$content = $Parsedown->text($content); // Parse Markdown.
|
||||
$content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute.
|
||||
$Post->setField('content', $content, true);
|
||||
|
||||
// Pagebrake
|
||||
$explode = explode(PAGE_BREAK, $content);
|
||||
$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);
|
||||
|
||||
// User object
|
||||
$username = $Post->username();
|
||||
$Post->setField('user', $dbUsers->getUser($username));
|
||||
|
||||
return $Post;
|
||||
}
|
||||
|
||||
function buildPostsForPage($pageNumber=0, $amount=POSTS_PER_PAGE_ADMIN, $removeUnpublished=true, $tagKey=false)
|
||||
{
|
||||
global $dbPosts;
|
||||
global $dbTags;
|
||||
global $Url;
|
||||
|
||||
$posts = array();
|
||||
|
||||
if($tagKey) {
|
||||
// Get the keys list from tags database, this database is optimized for this case.
|
||||
$list = $dbTags->getList($pageNumber, $amount, $tagKey);
|
||||
}
|
||||
else {
|
||||
// Get the keys list from posts database.
|
||||
$list = $dbPosts->getList($pageNumber, $amount, $removeUnpublished);
|
||||
}
|
||||
|
||||
// There are not posts for the page number then set the page notfound
|
||||
if(empty($list) && $pageNumber>0) {
|
||||
$Url->setNotFound(true);
|
||||
}
|
||||
|
||||
// Foreach post key, build the post.
|
||||
foreach($list as $postKey=>$values)
|
||||
{
|
||||
$Post = buildPost($postKey);
|
||||
if($Post!==false) {
|
||||
array_push($posts, $Post);
|
||||
}
|
||||
}
|
||||
|
||||
return $posts;
|
||||
}
|
||||
|
||||
// PAGE FUNCTIONS
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
function sortPages($a, $b)
|
||||
{
|
||||
if ($a['position'] == $b['position']) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ($a['position'] < $b['position']) ? -1 : 1;
|
||||
}
|
||||
|
||||
function buildPage($key)
|
||||
{
|
||||
global $dbPages;
|
||||
global $dbUsers;
|
||||
global $Parsedown;
|
||||
global $Site;
|
||||
|
||||
// Page object, content from FILE.
|
||||
$Page = new Page($key);
|
||||
if( !$Page->isValid() ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the page from file with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Page database, content from DATABASE JSON.
|
||||
$db = $dbPages->getPageDB($key);
|
||||
if( !$db ) {
|
||||
Log::set(__METHOD__.LOG_SEP.'Error occurred when trying build the page from database with key: '.$key);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Foreach field from DATABASE.
|
||||
foreach($db as $field=>$value) {
|
||||
$Page->setField($field, $value);
|
||||
}
|
||||
|
||||
// Content in raw format
|
||||
$contentRaw = $Page->content();
|
||||
$Page->setField('contentRaw', $Page->content(), true);
|
||||
|
||||
// Parse markdown content.
|
||||
$content = Text::pre2htmlentities($contentRaw); // Parse pre code with htmlentities
|
||||
$content = $Parsedown->text($content); // Parse Markdown.
|
||||
$content = Text::imgRel2Abs($content, HTML_PATH_UPLOADS); // Parse img src relative to absolute.
|
||||
$Page->setField('content', $content, true);
|
||||
|
||||
// Pagebrake
|
||||
$explode = explode(PAGE_BREAK, $content);
|
||||
$Page->setField('breakContent', $explode[0], true);
|
||||
$Page->setField('readMore', !empty($explode[1]), true);
|
||||
|
||||
// Date format
|
||||
$pageDate = $Page->date();
|
||||
$Page->setField('dateRaw', $pageDate, true);
|
||||
|
||||
$pageDateFormated = $Page->dateRaw( $Site->dateFormat() );
|
||||
$Page->setField('date', $pageDateFormated, true);
|
||||
|
||||
// User object
|
||||
$username = $Page->username();
|
||||
$Page->setField('user', $dbUsers->getUser($username));
|
||||
|
||||
return $Page;
|
||||
}
|
||||
|
||||
function buildAllPages()
|
||||
{
|
||||
global $pagesParents;
|
||||
global $pagesParentsPublished;
|
||||
global $pagesPublished;
|
||||
global $dbPages;
|
||||
|
||||
// Get the page list
|
||||
$list = $dbPages->getDB();
|
||||
|
||||
// Clean pages array.
|
||||
$pages = array();
|
||||
|
||||
// Remove the error page
|
||||
unset($list['error']);
|
||||
|
||||
// Sorte pages
|
||||
uasort($list, 'sortPages');
|
||||
|
||||
foreach($list as $key=>$db)
|
||||
{
|
||||
$Page = buildPage($key);
|
||||
|
||||
if($Page!==false)
|
||||
{
|
||||
// Filter pages, with and without parent
|
||||
|
||||
// If the page doesn't have a father, it's a parent page :P
|
||||
if( $Page->parentKey()===false ) {
|
||||
// Add the parent key in the dbPages
|
||||
$dbPages->addParentKey($Page->key());
|
||||
|
||||
// Add the page as a parent page in the array
|
||||
$pagesParents[NO_PARENT_CHAR][$Page->key()] = $Page;
|
||||
|
||||
// If the page is published
|
||||
if($Page->published()) {
|
||||
$pagesParentsPublished[NO_PARENT_CHAR][$Page->key()] = $Page;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$pagesParents[$Page->parentKey()][$Page->key()] = $Page;
|
||||
|
||||
// If the page is published
|
||||
if($Page->published()) {
|
||||
$pagesParentsPublished[$Page->parentKey()][$Page->key()] = $Page;
|
||||
}
|
||||
}
|
||||
|
||||
// All pages in one array
|
||||
$pages[$Page->key()] = $Page;
|
||||
|
||||
// If the page is published
|
||||
if($Page->published()) {
|
||||
$pagesPublished[$Page->parentKey()][$Page->key()] = $Page;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $pages;
|
||||
}
|
|
@ -5,25 +5,38 @@ class Email {
|
|||
// Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
|
||||
public static function send($args)
|
||||
{
|
||||
// Current time in unixtimestamp
|
||||
$now = time();
|
||||
|
||||
// Domain
|
||||
$domainParse = parse_url(DOMAIN);
|
||||
|
||||
$headers = array();
|
||||
$headers[] = 'MIME-Version: 1.0';
|
||||
$headers[] = 'Content-type: text/html; charset=utf-8';
|
||||
$headers[] = 'From: '.$args['from'];
|
||||
$headers[] = 'Content-Transfer-Encoding: 8bit';
|
||||
|
||||
$headers[] = 'From: =?UTF-8?B?'.base64_encode($args['fromName']).'?= <'.$args['from'].'>';
|
||||
$headers[] = 'Reply-To: '.$args['from'];
|
||||
$headers[] = 'Return-Path: '.$args['from'];
|
||||
$headers[] = 'message-id: <'.$now.'webmaster@'.$domainParse['host'].'>';
|
||||
$headers[] = 'X-Mailer: PHP/'.phpversion();
|
||||
|
||||
$subject = '=?UTF-8?B?'.base64_encode($args['subject']).'?=';
|
||||
|
||||
$message = '<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>BLUDIT</title>
|
||||
</head>
|
||||
<body style="background-color: #f1f1f1;">
|
||||
<div style="margin: 0px auto; padding: 10px; font-size: 14px; width: 70%; max-width: 600px;">
|
||||
<div style="font-size: 26px;">BLUDIT</div>
|
||||
<body>
|
||||
<div>
|
||||
'.$args['message'].'
|
||||
</div>
|
||||
</body>
|
||||
</html>';
|
||||
|
||||
return mail($args['to'], $args['subject'], $message, implode(PHP_EOL, $headers));
|
||||
return mail($args['to'], $subject, $message, implode(PHP_EOL, $headers));
|
||||
}
|
||||
|
||||
}
|
|
@ -4,7 +4,7 @@ class Log {
|
|||
|
||||
public static function set($text, $type=0)
|
||||
{
|
||||
error_log($text, $type);
|
||||
error_log('('.BLUDIT_VERSION.')'.$text, $type);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -78,27 +78,24 @@ class Text {
|
|||
return $string;
|
||||
}
|
||||
|
||||
public static function startsWith($string, $startString)
|
||||
{
|
||||
$length = self::length($startString);
|
||||
|
||||
return( mb_substr($string, 0, $length)===$startString );
|
||||
}
|
||||
|
||||
public static function endsWith($string, $endsString)
|
||||
{
|
||||
$endsPosition = (-1)*self::length($endsString);
|
||||
$length = (-1)*self::length($endsString);
|
||||
|
||||
if(MB_STRING) {
|
||||
return( mb_substr($string, $endsPosition)===$endsString );
|
||||
}
|
||||
|
||||
return( substr($string, $endsPosition)===$endsString );
|
||||
return( mb_substr($string, $length)===$endsString );
|
||||
}
|
||||
|
||||
|
||||
public static function endsWithNumeric($string)
|
||||
{
|
||||
$endsPosition = (-1)*self::length($string);
|
||||
|
||||
if(MB_STRING) {
|
||||
return( is_numeric(mb_substr($string, -1, 1)) );
|
||||
}
|
||||
|
||||
return( is_numeric(substr($string, -1, 1)) );
|
||||
return( is_numeric(mb_substr($string, -1, 1)) );
|
||||
}
|
||||
|
||||
public static function randomText($length)
|
||||
|
@ -118,6 +115,11 @@ class Text {
|
|||
|
||||
public static function cleanUrl($string, $separator='-')
|
||||
{
|
||||
if(EXTREME_FRIENDLY_URL) {
|
||||
$string = preg_replace("/[\/_|+ -]+/", $separator, $string);
|
||||
return $string;
|
||||
}
|
||||
|
||||
// Transliterate characters to ASCII
|
||||
$string = str_replace(array_keys(self::$specialChars), self::$specialChars, $string);
|
||||
|
||||
|
@ -142,48 +144,30 @@ class Text {
|
|||
// String to lowercase
|
||||
public static function lowercase($string, $encoding='UTF-8')
|
||||
{
|
||||
if(MB_STRING) {
|
||||
return mb_strtolower($string, $encoding);
|
||||
}
|
||||
|
||||
return strtolower($string);
|
||||
return mb_strtolower($string, $encoding);
|
||||
}
|
||||
|
||||
// Make a string's first character uppercase
|
||||
public static function firstCharUp($string, $encoding='UTF-8')
|
||||
{
|
||||
// Thanks http://stackoverflow.com/questions/2517947/ucfirst-function-for-multibyte-character-encodings
|
||||
if(MB_STRING)
|
||||
{
|
||||
$strlen = mb_strlen($string, $encoding);
|
||||
$firstChar = mb_substr($string, 0, 1, $encoding);
|
||||
$then = mb_substr($string, 1, $strlen - 1, $encoding);
|
||||
$strlen = mb_strlen($string, $encoding);
|
||||
$firstChar = mb_substr($string, 0, 1, $encoding);
|
||||
$then = mb_substr($string, 1, $strlen - 1, $encoding);
|
||||
|
||||
return mb_strtoupper($firstChar, $encoding).$then;
|
||||
}
|
||||
|
||||
return ucfirst($string);
|
||||
return mb_strtoupper($firstChar, $encoding).$then;
|
||||
}
|
||||
|
||||
// Find position of first occurrence of substring in a string otherwise returns FALSE.
|
||||
public static function stringPosition($string, $substring)
|
||||
{
|
||||
if(MB_STRING) {
|
||||
return mb_strpos($string, $substring, 0, 'UTF-8');
|
||||
}
|
||||
|
||||
return strpos($string, $substring);
|
||||
return mb_strpos($string, $substring, 0, 'UTF-8');
|
||||
}
|
||||
|
||||
// Returns the portion of string specified by the start and length parameters.
|
||||
public static function cut($string, $start, $length)
|
||||
{
|
||||
if(MB_STRING) {
|
||||
$cut = mb_substr($string, $start, $length, 'UTF-8');
|
||||
}
|
||||
else {
|
||||
$cut = substr($string, $start, $length);
|
||||
}
|
||||
$cut = mb_substr($string, $start, $length, 'UTF-8');
|
||||
|
||||
if(empty($cut)) {
|
||||
return '';
|
||||
|
@ -195,17 +179,16 @@ class Text {
|
|||
// Return string length
|
||||
public static function length($string)
|
||||
{
|
||||
if(MB_STRING)
|
||||
return mb_strlen($string, 'UTF-8');
|
||||
return strlen($string);
|
||||
return mb_strlen($string, 'UTF-8');
|
||||
}
|
||||
|
||||
public static function isEmpty($string)
|
||||
{
|
||||
$string = trim($string);
|
||||
|
||||
if(empty($string))
|
||||
if(empty($string)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -227,4 +210,4 @@ class Text {
|
|||
$string);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -183,7 +183,6 @@ class Theme {
|
|||
return $tmp;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -85,7 +85,7 @@ $(document).ready(function() {
|
|||
},
|
||||
|
||||
notallowed: function(file, settings) {
|
||||
alert("'.$L->g('Supported image file types').' "+settings.allow);
|
||||
alert("<?php echo $L->g('error').'. '.$L->g('Supported image file types')?>: "+settings.allow);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ $(document).ready(function() {
|
|||
},
|
||||
|
||||
notallowed: function(file, settings) {
|
||||
alert("'.$L->g('Supported image file types').' "+settings.allow);
|
||||
alert("<?php echo $L->g('error').'. '.$L->g('Supported image file types')?>: "+settings.allow);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -47,6 +47,17 @@ var menuV8 = new function() {
|
|||
|
||||
}
|
||||
|
||||
// This function is the default to add the image to the textarea.
|
||||
// Only call when the textarea doesn't have a HTML Editor enabled.
|
||||
function editorAddImageDefault(filename) {
|
||||
|
||||
var textarea = $("#jscontent");
|
||||
var imgHTML = '<img src="'+filename+'" alt="">';
|
||||
|
||||
textarea.val(textarea.val() + imgHTML);
|
||||
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
// Click on document.
|
||||
|
@ -87,8 +98,13 @@ $(document).ready(function() {
|
|||
// Insert image
|
||||
$("body").on("click", "#bludit-menuV8-insert", function(e) {
|
||||
|
||||
// This function is defined in each editor plugin.
|
||||
editorAddImage( menuV8.getFilename() );
|
||||
if(typeof editorAddImage == 'function') {
|
||||
// This function is defined in each editor plugin.
|
||||
editorAddImage( menuV8.getFilename() );
|
||||
}
|
||||
else {
|
||||
editorAddImageDefault( menuV8.getFilename() );
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ function insertTag() {
|
|||
}
|
||||
|
||||
var findTag = $("span[data-tag]").filter(function() {
|
||||
return $(this).attr('data-tag').toLowerCase() == newTag;
|
||||
return $(this).attr('data-tag').toLowerCase() == newTag.toLowerCase();
|
||||
});
|
||||
|
||||
if( findTag.length > 0 ) {
|
||||
|
|
|
@ -13,13 +13,13 @@ class Page extends Content {
|
|||
parent::__construct(PATH_PAGES.$key.DS);
|
||||
}
|
||||
|
||||
// Returns the page position.
|
||||
// Returns the page position
|
||||
public function position()
|
||||
{
|
||||
return $this->getField('position');
|
||||
}
|
||||
|
||||
// Returns the page slug.
|
||||
// Returns the page slug
|
||||
public function slug()
|
||||
{
|
||||
$explode = explode('/', $this->getField('key'));
|
||||
|
@ -32,7 +32,7 @@ class Page extends Content {
|
|||
return $explode[0];
|
||||
}
|
||||
|
||||
// Returns the parent key, if the page doesn't have a parent returns FALSE.
|
||||
// Returns the parent key, if the page doesn't have a parent returns FALSE
|
||||
public function parentKey()
|
||||
{
|
||||
$explode = explode('/', $this->getField('key'));
|
||||
|
@ -43,7 +43,7 @@ class Page extends Content {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Returns the parent method output, if the page doesn't have a parent returns FALSE.
|
||||
// Returns the parent method output, if the page doesn't have a parent returns FALSE
|
||||
public function parentMethod($method)
|
||||
{
|
||||
global $pages;
|
||||
|
@ -55,6 +55,7 @@ class Page extends Content {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Returns an array with all children's key
|
||||
public function children()
|
||||
{
|
||||
$tmp = array();
|
||||
|
|
|
@ -13,11 +13,7 @@ class Post extends Content {
|
|||
parent::__construct(PATH_POSTS.$key.DS);
|
||||
}
|
||||
|
||||
public function key()
|
||||
{
|
||||
return $this->getField('key');
|
||||
}
|
||||
|
||||
// Returns the post slug
|
||||
public function slug()
|
||||
{
|
||||
return $this->getField('key');
|
||||
|
@ -28,4 +24,5 @@ class Post extends Content {
|
|||
{
|
||||
return ($this->getField('status')==='scheduled');
|
||||
}
|
||||
|
||||
}
|
|
@ -14,6 +14,14 @@ class Security extends dbJSON
|
|||
parent::__construct(PATH_DATABASES.'security.php');
|
||||
}
|
||||
|
||||
// Authentication key
|
||||
// --------------------------------------------------------------------
|
||||
public function key1()
|
||||
{
|
||||
return $this->db['key1'];
|
||||
}
|
||||
|
||||
|
||||
// ====================================================
|
||||
// TOKEN FOR CSRF
|
||||
// ====================================================
|
||||
|
|
|
@ -0,0 +1,242 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "Ελληνικά (Greek)",
|
||||
"english-name": "Greek",
|
||||
"last-update": "2016-06-21",
|
||||
"author": "penglezos",
|
||||
"email": "panagiotisegl@gmail.com",
|
||||
"website": "www.penglezos.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": "Μήνυμα Ηλεκτρονικού Ταχυδρομείου (e-mail)",
|
||||
"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": "URL Ιστότοπου",
|
||||
"writting-settings": "Εγγραφή Ρυθμίσεων",
|
||||
"url-filters": "Φίλτρα URL",
|
||||
"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": "To Μήνυμα Ηλεκτρονικού Ταχυδρομείου (e-mail) δεν θα εμφανιστεί δημοσίως. Προτεινόμενο για επαναφορά κωδικού και ειδοποιήσεων.",
|
||||
"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": "Εμφάνιση Ιστολογίου (blog)",
|
||||
"default-home-page": "Προεπιλεγμένη αρχική σελίδα",
|
||||
"version": "Έκδοση",
|
||||
"there-are-no-drafts": "Δεν υπάρχουν πρόχειρα.",
|
||||
"create-a-new-article-for-your-blog":"Δημιουργία νέου άρθρου για το 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": "Τι είναι επόμενο",
|
||||
|
||||
"follow-bludit-on": "Ακολουθείστε το Bludit σε: ",
|
||||
"visit-the-support-forum": "Επισκευτείτε το [forum] https://forum.bludit.com) για υποστήριξη",
|
||||
"read-the-documentation-for-more-information": "Διαβάσετε το [documentation](https://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":"Η διεύθυνση email είναι λάθος.",
|
||||
"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",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "Ενεργοποίηση της command line λειτουργίας άμα προσθέσετε, επεξεργαστείτε ή διαγράψετε δημοσιεύσεις και σελίδες απο το filesystem",
|
||||
|
||||
"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":"Ρυθμίσεις Email λογαριασμού",
|
||||
"sender-email": "Email αποστολέα",
|
||||
"emails-will-be-sent-from-this-address":"Τα Emails θα σταλθούν απο αυτή την διεύθυνση.",
|
||||
"bludit-login-access-code": "BLUDIT - Κωδικός Σύνδεσης",
|
||||
"check-your-inbox-for-your-login-access-code":"Ελέγξτε το inbox για τον Κωδικό Σύνδεσης",
|
||||
"there-was-a-problem-sending-the-email":"Υπήρχε ένα πρόβλημα για να σταλθεί το 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": "Επεξεργασία ή διαγραφή των δημοσιεύσεων του blog.",
|
||||
"general-settings": "Γενικές Ρυθμίσεις",
|
||||
"advanced-settings": "Προχωρημένες Ρυθμίσεις",
|
||||
"manage-users": "Διαχείριση Χρηστών",
|
||||
"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": "Καλώς Ορίσατε στο Βludit",
|
||||
|
||||
"site-information": "Πληροφορίες Ιστοσελίδας",
|
||||
"date-and-time-formats": "Μορφή Ημέρας και Ώρας",
|
||||
"activate": "Ενεργοποίημενο",
|
||||
"deactivate": "Απενεργοποιημένο",
|
||||
|
||||
"cover-image": "Εικόνα Εξοφύλλου",
|
||||
"blog": "Ιστολόγιο",
|
||||
"more-images": "Περισσότερς Εικόνες",
|
||||
|
||||
"click-here-to-cancel": "Επιλέξτε εδώ για να ακυρώσετε.",
|
||||
"type-the-tag-and-press-enter": "Εισάγετε την ετικέτα και πατήστε το enter.",
|
||||
"add": "Προσθήκη",
|
||||
"manage-your-bludit-from-the-admin-panel": "Διαχείριση Bludit [admin area]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"Δεν υπάρχουν εικόνες",
|
||||
|
||||
"click-on-the-image-for-options": "Επιλέξτε την εικόνα για επιλογές.",
|
||||
"set-as-cover-image": "Εφαρμογή ως εικόνα εξόφφυλο",
|
||||
"delete-image": "Διαγραφή Εικόνας",
|
||||
"image-description": "Περιγραφή Εικόνας",
|
||||
|
||||
"social-networks-links": "Συνδεσμοι κοινωνικού δικτύου",
|
||||
|
||||
"email-access-code": "Κωδικός Πρόσβασης Email",
|
||||
"current-format": "Τωρινή Μορφή"
|
||||
}
|
|
@ -0,0 +1,239 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "اللغة العربية",
|
||||
"english-name": "Arabic",
|
||||
"last-update": "2016-04-16",
|
||||
"author": "english4ar.com",
|
||||
"email": "",
|
||||
"website": "english4ar.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": "روابط محسنة",
|
||||
"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": "فلتر الرابط",
|
||||
"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": "رابط موقعك",
|
||||
"add-or-edit-description-tags-or": "إضافة أو تعديل الوصف والعلامات أو تعديل الروابط المحسنة",
|
||||
"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 حرفا.",
|
||||
"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": "ماهي الخطوة التالية",
|
||||
|
||||
"follow-bludit-on": "تابع جديدنا على",
|
||||
"visit-the-support-forum": "[forum](https://forum.bludit.com) منتدى الدعم",
|
||||
"read-the-documentation-for-more-information": "[documentation](https://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": "أكمل النموذج، إختر إسم وكلمة سر للمدير",
|
||||
"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": "وضع سطر الأوامر",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "تمكين وضع سطر الأوامر إذا قمت بإضافة، تعديل أو إزالة المشاركات والصفحات من نظام الملفات",
|
||||
|
||||
"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": "يجب أن لا تقل كلمة السر عن 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":"هذا وصف موجز لنفسك أو لموقعك، لتغيير هذا النص تذهب إلى لوحة المشرف، إعدادات، والإضافات، وتعديل في إضافة About",
|
||||
"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",
|
||||
|
||||
"site-information": "معلومات الموقع",
|
||||
"date-and-time-formats": "تنسيق التاريخ والوقت",
|
||||
"activate": "تفعيل",
|
||||
"deactivate": "تعطيل",
|
||||
|
||||
"cover-image": "صورة الغلاف",
|
||||
"blog": "المدونة",
|
||||
"more-images": "المزيد من الصور",
|
||||
|
||||
"click-here-to-cancel": ".انقر هنا إلى إلغاء",
|
||||
"type-the-tag-and-press-enter": ".أكتب العلامات وإضغظ زر الإدخال",
|
||||
"add": "أضـف",
|
||||
"manage-your-bludit-from-the-admin-panel": "إدارة الموقع[admin area]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"لا توجد صور بعد",
|
||||
|
||||
"click-on-the-image-for-options": "إضغط على الصورة للمزيد من خيارات.",
|
||||
"set-as-cover-image": "جعلها صورة للغلاف",
|
||||
"delete-image": "حذف الصورة",
|
||||
"image-description": "وصف الصورة",
|
||||
|
||||
"social-networks-links": "روابط الشبكات الإجتماعية"
|
||||
}
|
|
@ -3,12 +3,12 @@
|
|||
{
|
||||
"native": "Deutsch (Schweiz)",
|
||||
"english-name": "German",
|
||||
"last-update": "2016-02-15",
|
||||
"last-update": "2016-05-31",
|
||||
"author": "Clickwork",
|
||||
"email": "egoetschel@clickwork.ch",
|
||||
"website": "http://www.clickwork.ch"
|
||||
"website": "https://clickwork.ch"
|
||||
},
|
||||
|
||||
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort",
|
||||
"confirm-password": "Passwort wiederholen",
|
||||
|
@ -222,5 +222,12 @@
|
|||
"click-here-to-cancel": "Abbrechen",
|
||||
"type-the-tag-and-press-enter": "Schlagwort eingeben und mit \"Enter\" hinzufügen.",
|
||||
"manage-your-bludit-from-the-admin-panel": "Verwalte Bludit im [Administrationsbereich](./admin/).",
|
||||
"there-are-no-images":"Keine Bilder vorhanden"
|
||||
"there-are-no-images":"Keine Bilder vorhanden",
|
||||
"click-on-the-image-for-options": "Für die Bildoptionen auf das Bild klicken.",
|
||||
"set-as-cover-image": "Als Hauptbild verwenden",
|
||||
"delete-image": "Bild löschen",
|
||||
"image-description": "Bildbeschreibung",
|
||||
"social-networks-links": "Links zu sozialen Netzwerken",
|
||||
"email-access-code": "Zugangscode zuschicken",
|
||||
"current-format": "Aktuelles Datumsformat"
|
||||
}
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
{
|
||||
"native": "Deutsch (Deutschland)",
|
||||
"english-name": "German",
|
||||
"last-update": "2016-02-15",
|
||||
"last-update": "2016-05-31",
|
||||
"author": "Clickwork",
|
||||
"email": "egoetschel@clickwork.ch",
|
||||
"website": "http://www.clickwork.ch"
|
||||
"website": "https://clickwork.ch"
|
||||
},
|
||||
|
||||
"username": "Benutzername",
|
||||
|
@ -222,5 +222,12 @@
|
|||
"click-here-to-cancel": "Abbrechen",
|
||||
"type-the-tag-and-press-enter": "Schlagwort eingeben und mit \"Enter\" hinzufügen.",
|
||||
"manage-your-bludit-from-the-admin-panel": "Verwalte Bludit im [Administrationsbereich](./admin/).",
|
||||
"there-are-no-images":"Keine Bilder vorhanden"
|
||||
"there-are-no-images":"Keine Bilder vorhanden",
|
||||
"click-on-the-image-for-options": "Für die Bildoptionen auf das Bild klicken.",
|
||||
"set-as-cover-image": "Als Hauptbild verwenden",
|
||||
"delete-image": "Bild löschen",
|
||||
"image-description": "Bildbeschreibung",
|
||||
"social-networks-links": "Links zu sozialen Netzwerken",
|
||||
"email-access-code": "Zugangscode zuschicken",
|
||||
"current-format": "Aktuelles Datumsformat"
|
||||
}
|
||||
|
|
|
@ -235,5 +235,10 @@
|
|||
"delete-image": "Delete image",
|
||||
"image-description": "Image description",
|
||||
|
||||
"social-networks-links": "Social networks links"
|
||||
"social-networks-links": "Social networks links",
|
||||
|
||||
"email-access-code": "Email access code",
|
||||
"current-format": "Current format",
|
||||
|
||||
"welcome": "Welcome"
|
||||
}
|
|
@ -226,6 +226,7 @@
|
|||
|
||||
"click-here-to-cancel": "Clic aquí para cancelar.",
|
||||
"type-the-tag-and-press-enter": "Escriba la etiqueta y presione enter.",
|
||||
"add": "Agregar",
|
||||
"manage-your-bludit-from-the-admin-panel": "Administre su Bludit desde el [panel de administración]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"No hay imagenes",
|
||||
|
||||
|
@ -234,5 +235,10 @@
|
|||
"delete-image": "Eliminar imagen",
|
||||
"image-description": "Descripción de la imagen",
|
||||
|
||||
"social-networks-links": "Redes sociales enlaces"
|
||||
"social-networks-links": "Redes sociales enlaces",
|
||||
|
||||
"email-access-code": "Código de acceso via email",
|
||||
"current-format": "Formato actual",
|
||||
|
||||
"welcome": "Bienvenido"
|
||||
}
|
|
@ -0,0 +1,239 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "فارسی (Iran)",
|
||||
"english-name": "Persian",
|
||||
"last-update": "2016-03-13",
|
||||
"author": "Abdulhalim",
|
||||
"email": "abdulhalim.po@gmail.com",
|
||||
"website": "http://getpunbb.ir"
|
||||
},
|
||||
|
||||
"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": "آدرس وب کاربر پسند",
|
||||
"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": "فیلتر های آدرس وب",
|
||||
"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": "نسخه بلودیت",
|
||||
"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": "از این کادر برای نامگذاری سایت خود استفاده کنید ، این نام بالای تمام صفحات سایت شما نمایش داده میشود.",
|
||||
"you-can-add-a-site-description-to-provide": "میتوانید توضیحات سایت را برای ارائه یک شرح حال کوتاه در مورد سایت خود اضافه کنید.",
|
||||
"use-this-field-to-add-a-catchy-phrase": "از این کادر برای اضافه کردن یک عبارت جذاب در سایت خود استفاده کنید.",
|
||||
"you-can-add-a-small-text-on-the-bottom": "میتوانید در پایین تمام صفحات خود یک متن مختصر اضافه کنید . مثلا : حق تالیف ، دارنده سایت ، تاریخ و غیره.",
|
||||
"number-of-posts-to-show-per-page": "تعداد نوشته برای نمایش در هر صفحه.",
|
||||
"the-url-of-your-site": "آدرس وبسایت شما.",
|
||||
"add-or-edit-description-tags-or": "افزودن یا ویرایش توضیحات ، برچسب ها یا مدیریت آدرس وب کاربر پسند.",
|
||||
"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 کاراکتر بیشتر نباشد.",
|
||||
"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": "حالا چه کنیم ؟",
|
||||
|
||||
"follow-bludit-on": "بلودیت را دنبال کنید",
|
||||
"visit-the-support-forum": "برای دریافت پشتیبانی از [انجمن بلودیت](https://forum.bludit.com) دیدن کنید",
|
||||
"read-the-documentation-for-more-information": "برای کسب اطلاعات بیشتر [مستندات](https://docs.bludit.com) را مطالعه کنید",
|
||||
"share-with-your-friends-and-enjoy": "با دوستانتان به اشتراک گذاشته و لذت ببرید",
|
||||
"the-page-has-not-been-found": "صفحه مورد نظر یافت نشد.",
|
||||
"error": "خطا",
|
||||
"bludit-installer": "نصب کننده بلودیت",
|
||||
"welcome-to-the-bludit-installer": "به نصب کننده بلودیت خوش آمدید",
|
||||
"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": "حالت خط فرمان",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "اگر شما نوشته ها و صفحات خود را از طریق فایل سیستم اضافه ، ویرایش و یا حذف میکنید ، حالت خط فرمان را فعال کنید",
|
||||
|
||||
"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": "بلودیت - کد دسترسی ورود به سایت",
|
||||
"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": "پسورد حداقل باید 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": "به بلودیت خوش آمدید",
|
||||
|
||||
"site-information": "اطلاعات سایت",
|
||||
"date-and-time-formats": "فرمت تاریخ و زمان",
|
||||
"activate": "بکار انداختن",
|
||||
"deactivate": "از کار انداختن",
|
||||
|
||||
"cover-image": "تصویر کاور",
|
||||
"blog": "بلاگ",
|
||||
"more-images": "تصاویر بیشتر",
|
||||
|
||||
"click-here-to-cancel": "برای انصراف اینجا را کلیک کنید.",
|
||||
"type-the-tag-and-press-enter": "برچسب را نوشته و دکمه انتر را بزنید.",
|
||||
"add": "افزودن",
|
||||
"manage-your-bludit-from-the-admin-panel": "بلودیت خود را از [محیط مدیریت]({{ADMIN_AREA_LINK}}) کنترل کنید",
|
||||
"there-are-no-images":"هیچ تصویری وجود ندارد",
|
||||
|
||||
"click-on-the-image-for-options": "برای گزینه ها بر روی تصویر کلیک کنید.",
|
||||
"set-as-cover-image": "انتخاب بعنوان تصویر کاور",
|
||||
"delete-image": "حذف تصویر",
|
||||
"image-description": "توضیحات تصویر",
|
||||
|
||||
"social-networks-links": "لینک های شبکه های اجتماعی"
|
||||
}
|
|
@ -0,0 +1,242 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "Suomi (Suomi)",
|
||||
"english-name": "Finnish",
|
||||
"last-update": "2016-06-11",
|
||||
"author": "Tuomas K.",
|
||||
"email": "",
|
||||
"website": ""
|
||||
},
|
||||
|
||||
"username": "Käyttäjätunnus",
|
||||
"password": "Salasana",
|
||||
"confirm-password": "Vahvista salasana",
|
||||
"editor": "Kirjoittaja",
|
||||
"dashboard": "Hallintapaneeli",
|
||||
"role": "Tyyppi",
|
||||
"post": "Blogikirjoitus",
|
||||
"posts": "Blogikirjoitukset",
|
||||
"users": "Käyttäjät",
|
||||
"administrator": "Ylläpitäjä",
|
||||
"add": "Lisää",
|
||||
"cancel": "Peruuta",
|
||||
"content": "Sisältö",
|
||||
"title": "Otsikko",
|
||||
"no-parent": "Ei ole",
|
||||
"edit-page": "Muokkaa sivua",
|
||||
"edit-post": "Muokkaa blogikirjoitusta",
|
||||
"add-a-new-user": "Lisää uusi käyttäjä",
|
||||
"parent": "Onko tämä jonkun sivun alasivu?",
|
||||
"friendly-url": "Sivun osoite",
|
||||
"description": "Kuvaus",
|
||||
"posted-by": "Julkaisija",
|
||||
"tags": "Tagit",
|
||||
"position": "Sijainti navigaatiossa",
|
||||
"save": "Tallenna",
|
||||
"draft": "Luonnos",
|
||||
"delete": "Poista",
|
||||
"registered": "Käyttäjä luotu",
|
||||
"notifications": "Ilmoitukset",
|
||||
"profile": "Profiili",
|
||||
"email": "Sähköpostiosoite",
|
||||
"settings": "Asetukset",
|
||||
"general": "Yleiset",
|
||||
"advanced": "Lisäasetukset",
|
||||
"regional": "Alueellinen",
|
||||
"about": "Tietoja",
|
||||
"login": "Kirjaudu sisään",
|
||||
"logout": "Kirjaudu ulos",
|
||||
"manage": "Hallitse",
|
||||
"themes": "Teemat",
|
||||
"prev-page": "Edellinen sivu",
|
||||
"next-page": "Seuraava sivu",
|
||||
"configure-plugin": "Lisäosan asetukset",
|
||||
"confirm-delete-this-action-cannot-be-undone": "Haluatko varmasti poistaa? Tätä toimintoa ei voi perua.",
|
||||
"site-title": "Sivuston otsikko",
|
||||
"site-slogan": "Mainoslause",
|
||||
"site-description": "Sivuston kuvaus",
|
||||
"footer-text": "Alapalkin teksti",
|
||||
"posts-per-page": "Blogikirjoituksia per sivu",
|
||||
"site-url": "Sivuston URL-osoite",
|
||||
"writting-settings": "Kirjoittamisen asetukset",
|
||||
"url-filters": "Osoitteiden asetukset",
|
||||
"page": "Sivu",
|
||||
"pages": "Sivut",
|
||||
"home": "Etusivu",
|
||||
"welcome-back": "Tervetuloa takaisin",
|
||||
"language": "Kieli",
|
||||
"website": "Julkinen sivusto",
|
||||
"timezone": "Aikavyöhyke",
|
||||
"locale": "Maa/Kieli",
|
||||
"new-post": "Uusi blogikirjoitus",
|
||||
"new-page": "Uusi sivu",
|
||||
"html-and-markdown-code-supported": "HTML sekä Markdown toimivat",
|
||||
"manage-posts": "Hallitse blogikirjoituksia",
|
||||
"published-date": "Julkaisuaika",
|
||||
"modified-date": "Muokattu aika",
|
||||
"empty-title": "Tyhjä otsikko",
|
||||
"plugins": "Lisäosat",
|
||||
"install-plugin": "Asenna lisäosa",
|
||||
"uninstall-plugin": "Poista lisäosa",
|
||||
"new-password": "Uusi salasana",
|
||||
"edit-user": "Muokkaa käyttäjää",
|
||||
"publish-now": "Julkaise nyt",
|
||||
"first-name": "Etunimi",
|
||||
"last-name": "Sukunimi",
|
||||
"bludit-version": "Bludit:in versio",
|
||||
"powered-by": "Virtaa antaa: ",
|
||||
"recent-posts": "Viimeisimmät blogikirjoitukset",
|
||||
"manage-pages": "Hallitse sivuja",
|
||||
"advanced-options": "Lisäasetukset",
|
||||
"user-deleted": "Käyttäjä poistettu",
|
||||
"page-added-successfully": "Sivu lisätty onnistuneesti",
|
||||
"post-added-successfully": "Blogikirjoitus lisätty onnistuneesti",
|
||||
"the-post-has-been-deleted-successfully": "Blogikirjoitus poistettu",
|
||||
"the-page-has-been-deleted-successfully": "Sivu poistettu",
|
||||
"username-or-password-incorrect": "Käyttäjätunnus tai salasana virheellinen",
|
||||
"database-regenerated": "Tietokanta uudelleengeneroitu",
|
||||
"the-changes-have-been-saved": "Muutokset on tallennettu",
|
||||
"enable-more-features-at": "Ota käyttöön lisää ominaisuuksia",
|
||||
"username-already-exists": "Käyttäjätunnus on jo olemassa",
|
||||
"username-field-is-empty": "Käyttäjätunnus on tyhjä",
|
||||
"the-password-and-confirmation-password-do-not-match":"Salasana ja sen vahvistus eivät täsmää",
|
||||
"user-has-been-added-successfully": "Käyttäjä lisätty onnistuneesti",
|
||||
"you-do-not-have-sufficient-permissions": "Sinulla ei ole tarvittavia oikeuksia tälle sivulle. Ota yhteyttä ylläpitäjään.",
|
||||
"settings-advanced-writting-settings": "Asetukset->Lisäasetukset->Kirjoittamisen asetukset",
|
||||
"new-posts-and-pages-synchronized": "Uudet sivut ja blogikirjoitukset synkronisoitu.",
|
||||
"you-can-choose-the-users-privilege": "Voit valita käyttäjän tyypin. Kirjoittaja voi ainostaan muokata sivuja ja blogikirjoituksia, ylläpitäjä myös muuttaa asetuksia.",
|
||||
"email-will-not-be-publicly-displayed": "Sähköpostia ei näytetä julkisesti. Suositeltu salasanan palauttamiseen ja ilmoituksiin.",
|
||||
"use-this-field-to-name-your-site": "Kirjoita tähän sivusi nimi. Se näkyy jokaisen sivun yläreunassa.",
|
||||
"use-this-field-to-add-a-catchy-phrase": "Voit keksiä tähän esimerkiksi mainoslauseen tms.",
|
||||
"you-can-add-a-site-description-to-provide": "Voit lisätä lyhyen kuvauksen sivustostasi.",
|
||||
"you-can-add-a-small-text-on-the-bottom": "Voit lisätä pienen tekstinpätkän jokaisen sivun loppuun. Se voi olla vaikkapa sivuston nimi, yhteystietoja, päivämäärä, jne.",
|
||||
"number-of-posts-to-show-per-page": "Kuinka monta blogikirjoitusta yhdellä sivulla saa näkyä.",
|
||||
"the-url-of-your-site": "Sivustosi internetosoite.",
|
||||
"add-or-edit-description-tags-or": "Lisää ja muokkaa kuvausta, tageja tai sivun osoitetta.",
|
||||
"select-your-sites-language": "Valitse sivuston kieli.",
|
||||
"select-a-timezone-for-a-correct": "Valitse aikavyöhyke, jotta kellonajat ja päivämäärät näkyvät oikein.",
|
||||
"you-can-use-this-field-to-define-a-set-of": "Tällä kentällä voit määritellä joukon asetuksia liittyen kieleen, maahan ja erityisiin asetuksiin.",
|
||||
"you-can-modify-the-url-which-identifies":"Voit muokata sivun osoitetta. Enintään 150 merkkiä",
|
||||
"this-field-can-help-describe-the-content": "Kirjoita tähän kuvaus sivun sisällöstä. Kuvaus näkyy hakutuloksessa esim. Googlessa. Enintään 150 merkkiä.",
|
||||
|
||||
"delete-the-user-and-all-its-posts":"Poista käyttäjä, sekä kaikki sen blogikirjoitukset",
|
||||
"delete-the-user-and-associate-its-posts-to-admin-user": "Poista käyttäjä, ja siirrä sen blogikirjoitukset ylläpitäjän nimiin",
|
||||
"read-more": "Lue lisää...",
|
||||
"show-blog": "Näytä blogi",
|
||||
"default-home-page": "Sivuston etusivu",
|
||||
"version": "Versio",
|
||||
"there-are-no-drafts": "Ei luonnoksia.",
|
||||
"create-a-new-article-for-your-blog":"Kirjoita blogiisi.",
|
||||
"create-a-new-page-for-your-website":"Luo uusi sivu sivustollesi.",
|
||||
"invite-a-friend-to-collaborate-on-your-website":"Tee ystävällesi omat tunnukset, niin hänkin voi kirjoittaa sivustollesi",
|
||||
"change-your-language-and-region-settings":"Muuta kielen ja alueen asetuksia.",
|
||||
"language-and-timezone":"Kieli ja aikavyöhyke",
|
||||
"author": "Tekijä",
|
||||
"start-here": "Aloita tästä",
|
||||
"install-theme": "Asenna teema",
|
||||
"first-post": "Ensimmäinen blogikirjoitus",
|
||||
"congratulations-you-have-successfully-installed-your-bludit": "Onneksi olkoon! **Bludit** on nyt asennettu!",
|
||||
"whats-next": "Mitä seuraavaksi?",
|
||||
|
||||
"follow-bludit-on": "Seuraa Bludit:ia",
|
||||
"visit-the-support-forum": "Vieraile [foorumilla](https://forum.bludit.com) jos tarvitse tukea",
|
||||
"read-the-documentation-for-more-information": "[Dokumentaatiosta](https://docs.bludit.com) löydät paljon lisää tietoa",
|
||||
"share-with-your-friends-and-enjoy": "Jaa ystäviesi kanssa ja nauti!",
|
||||
"the-page-has-not-been-found": "Etsimääsi sivua ei löydy.",
|
||||
"error": "Virhe",
|
||||
"bludit-installer": "Bludit Installer",
|
||||
"welcome-to-the-bludit-installer": "Tervetuloa asentamaan Bludit!",
|
||||
"complete-the-form-choose-a-password-for-the-username-admin": "Täytä lomake, valitse salasana käyttäjälle « admin » (sivuston ylläpitäjä)",
|
||||
"password-visible-field": "Salasana, näkyvä kenttä!",
|
||||
"install": "Asenna",
|
||||
"choose-your-language": "Valitse kielesi",
|
||||
"next": "Seuraava",
|
||||
"the-password-field-is-empty": "Salasanakenttä on tyhjä",
|
||||
"your-email-address-is-invalid":"Sähköpostiosoitteesi on vääränlainen.",
|
||||
"proceed-anyway": "Jatka silti!",
|
||||
"drafts":"Luonnokset",
|
||||
"ip-address-has-been-blocked": "IP osoitteesi on estetty.",
|
||||
"try-again-in-a-few-minutes": "Yritä uudelleen muutaman minuutin päästä.",
|
||||
"date": "Päivämäärä",
|
||||
|
||||
"scheduled": "Ajastettu",
|
||||
"publish": "Julkaise",
|
||||
"please-check-your-theme-configuration": "Tarkista teeman asetukset.",
|
||||
"plugin-label": "Lisäosan nimi",
|
||||
"enabled": "Käytössä",
|
||||
"disabled": "Poissa käytöstä",
|
||||
"cli-mode": "CLI-tila",
|
||||
"command-line-mode": "Komentorivitila",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "Ota käyttöön komentorivitila, jos lisää, muokkaat tai poistat sivuja tai blogikirjoituksia suoraan tiedostojärjestemästä",
|
||||
|
||||
"configure": "Asetukset",
|
||||
"uninstall": "Poista",
|
||||
"change-password": "Muuta salasana",
|
||||
"to-schedule-the-post-just-select-the-date-and-time": "Ajastaaksesi lähetyksen, valitse päivä ja aika.",
|
||||
"write-the-tags-separated-by-commas": "Kirjoita tagit erotetuna pilkuilla.",
|
||||
"status": "Tila",
|
||||
"published": "Julkaistu",
|
||||
"scheduled-posts": "Ajastetut blogikirjoitukset",
|
||||
"statistics": "Tilastot",
|
||||
"name": "Nimi",
|
||||
"email-account-settings":"Sähköpostin asetukset",
|
||||
"sender-email": "Lähettäjän sähköpostiosoite",
|
||||
"emails-will-be-sent-from-this-address":"Sähköpostit tullaan lähettämään tästä osoitteesta.",
|
||||
"bludit-login-access-code": "BLUDIT - Kirjautumisen tunnistautumiskoodi",
|
||||
"check-your-inbox-for-your-login-access-code":"Tunnistautumiskoodi on lähetetty sinulle sähköpostilla",
|
||||
"there-was-a-problem-sending-the-email":"Sähköpostin lähettämisessä tapahtui ongelma",
|
||||
"back-to-login-form": "Takaisin",
|
||||
"send-me-a-login-access-code": "Lähetä minulle tunnistautumiskoodi",
|
||||
"get-login-access-code": "Lähetä tunnistautumiskoodi",
|
||||
"email-notification-login-access-code": "<p>Tämä on ilmoitus sivustoltasi {{WEBSITE_NAME}}</p><p>Jos pyysit kirjautumisen tunnistautumiskoodia, paina tästä linkistä:</p><p>{{LINK}}</p>",
|
||||
"there-are-no-scheduled-posts": "Ei ajastettuja blogikirjoituksia",
|
||||
"show-password": "Näytä salasana",
|
||||
"edit-or-remove-your=pages": "Lisää, muokkaa ja poista sivujasi",
|
||||
"edit-or-remove-your-blogs-posts": "Lisää, muokkaa ja poista blogikirjoituksiasi",
|
||||
"general-settings": "Yleiset asetukset",
|
||||
"advanced-settings": "Lisäasetukset",
|
||||
"manage-users": "Hallitse käyttäjiä",
|
||||
"view-and-edit-your-profile": "Näytä ja muokkaa oma profiilisi",
|
||||
|
||||
"password-must-be-at-least-6-characters-long": "Salasanan täytyy olla vähintään 6 merkkiä pitkä",
|
||||
"images": "Kuvat",
|
||||
"upload-image": "Lähetä image",
|
||||
"drag-and-drop-or-click-here": "Klikkaa tästä, tai vedä kuva tänne",
|
||||
"insert-image": "Lisää kuva",
|
||||
"supported-image-file-types": "Tuetut kuvatyypit",
|
||||
"date-format": "Päivämäärän muoto",
|
||||
"time-format": "Ajan muoto",
|
||||
"chat-with-developers-and-users-on-gitter":"Keskustele muiden kehittäjien ja käyttäjien kanssa [Gitterissä](https://gitter.im/dignajar/bludit)",
|
||||
"this-is-a-brief-description-of-yourself-our-your-site":"Tämä on lyhyt kuvaus sinusta, tai sivustostasi. Voit muuttaa tätä hallintapaneelista kohdasta Asetukset->Lisäosat, ja muokkaa lisäosan \"About\" asetuksia",
|
||||
"profile-picture": "Profiilikuva",
|
||||
"the-about-page-is-very-important": "Tietoja-sivu on tärkeä työkalu mahdollisille asiakkaillesi. Niille asiakkaille, jotka miettivät, kuka on tämän mahtavan sivuston takana, sinun Tietoja-sivu on ensimmäinen paikka josta katsoa.",
|
||||
"change-this-pages-content-on-the-admin-panel": "Voit muokata tämän sivun sisältöä hallintapaneelista, kohdasta Hallitse->Sivut, ja paina \"Tietoja\".",
|
||||
"about-your-site-or-yourself": "Sivustostasi tai sinusta.",
|
||||
"welcome-to-bludit": "Bludit toivottaa sinut tervetulleeksi!",
|
||||
|
||||
"site-information": "Sivuston tiedot",
|
||||
"date-and-time-formats": "Päivämäärän ja ajan esitysmuodot",
|
||||
"activate": "Ota käyttöön",
|
||||
"deactivate": "Poista käytöstä",
|
||||
|
||||
"cover-image": "Artikkelikuva",
|
||||
"blog": "Blogi",
|
||||
"more-images": "Lisää kuvia",
|
||||
|
||||
"click-here-to-cancel": "Paina tästä peruaksesi.",
|
||||
"type-the-tag-and-press-enter": "Kirjoita tagi, ja paina enter.",
|
||||
"add": "Lisää",
|
||||
"manage-your-bludit-from-the-admin-panel": "Voit hallita Bludit:ia [hallintapaneelista]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"Ei kuvia",
|
||||
|
||||
"click-on-the-image-for-options": "Paina kuvaa saadaksesi lisätietoja.",
|
||||
"set-as-cover-image": "Aseta artikkelikuvaksi",
|
||||
"delete-image": "Poista kuva",
|
||||
"image-description": "Kuvan kuvaus",
|
||||
|
||||
"social-networks-links": "Sosiaalisen median linkit",
|
||||
|
||||
"email-access-code": "Pyydä tunnistautumiskoodi",
|
||||
"current-format": "Nykyinen muoto"
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
{
|
||||
"native": "Français (France)",
|
||||
"english-name": "French",
|
||||
"last-update": "2016-02-13",
|
||||
"last-update": "2016-02-29",
|
||||
"author": "Frédéric K.",
|
||||
"email": "stradfred@gmail.com",
|
||||
"website": "http://flatboard.co.nf"
|
||||
|
@ -223,7 +223,7 @@
|
|||
"cover-image": "Image de couverture",
|
||||
"blog": "Blog",
|
||||
"more-images": "Plus d’images",
|
||||
"double-click-on-the-image-to-add-it": "Double-cliquez sur l’image pour l’ajouter.",
|
||||
|
||||
"click-here-to-cancel": "Cliquez ici pour annuler.",
|
||||
"type-the-tag-and-press-enter": "Saisissez le tag et appuyez sur Entrée.",
|
||||
"add": "Ajouter",
|
||||
|
@ -235,9 +235,5 @@
|
|||
"delete-image": "Supprimer l’image",
|
||||
"image-description": "Description de l’image",
|
||||
|
||||
"social-networks": "Réseaux sociaux",
|
||||
"twitter-username": "Compte utilisateur Twitter",
|
||||
"facebook-username": "Compte utilisateur Facebook",
|
||||
"google-username": "Compte utilisateur Google",
|
||||
"instagram-username": "Compte utilisateur Instagram"
|
||||
}
|
||||
"social-networks-links": "Liens vers les réseaux sociaux"
|
||||
}
|
|
@ -0,0 +1,244 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "Magyar",
|
||||
"english-name": "Hungarian",
|
||||
"last-update": "2016-06-25",
|
||||
"author": "Korfa",
|
||||
"email": "",
|
||||
"website": ""
|
||||
},
|
||||
|
||||
"username": "Felhasználónév",
|
||||
"password": "Jelszó",
|
||||
"confirm-password": "Jelszó újra",
|
||||
"editor": "WYSIWYG szerkesztő engedélyezése",
|
||||
"dashboard": "Vezérlőpult",
|
||||
"role": "Jogosultság",
|
||||
"post": "Új bejegyzés",
|
||||
"posts": "Új bejegyzés",
|
||||
"users": "Felhasználók hozzászólásainak engedélyezése",
|
||||
"administrator": "Adminisztrátor felhasználóneve",
|
||||
"add": "Kategória hozzáadása",
|
||||
"cancel": "Mégse",
|
||||
"content": "Haladó beállítások. Például: Hozzászólások engedélyezése vagy tiltása, kategóriák kiválasztása, stb.",
|
||||
"title": "Írja be a címet",
|
||||
"no-parent": "Nics szülő",
|
||||
"edit-page": "Oldal szerkesztése",
|
||||
"edit-post": "Bejegyzés szerkesztése",
|
||||
"add-a-new-user": "Új felhasználó:",
|
||||
"parent": "Szűlő",
|
||||
"friendly-url": "Keresőbarát URL",
|
||||
"description": "Rövid leírás. Maximum 150 karakter lehet.",
|
||||
"posted-by": "Szerző",
|
||||
"tags": "Címke",
|
||||
"position": "Pozíció",
|
||||
"save": "Változások mentése",
|
||||
"draft": "Piszkozat",
|
||||
"delete": "Törlés",
|
||||
"registered": "Regisztrált",
|
||||
"notifications": "Értesítések",
|
||||
"profile": "Profil",
|
||||
"email": "E-mail",
|
||||
"settings": "Beállítások",
|
||||
"general": "Általános beállítások",
|
||||
"advanced": "Bejegyzés haladó beállításai",
|
||||
"regional": "Területi beállítások",
|
||||
"about": "A blogodról",
|
||||
"login": "Belépés",
|
||||
"logout": "Kilépés",
|
||||
"manage": "Bejegyzések szerkesztése",
|
||||
"themes": "Témák",
|
||||
"prev-page": "Előző oldal",
|
||||
"next-page": "Következő oldal",
|
||||
"configure-plugin": "Bővítmény beállítása",
|
||||
"confirm-delete-this-action-cannot-be-undone": "Biztosan törli?",
|
||||
"site-title": "Oldal cím",
|
||||
"site-slogan": "Oldal szlogen",
|
||||
"site-description": "Oldal leírás",
|
||||
"footer-text": "Lábléc text",
|
||||
"posts-per-page": "Bejegyzések oldalanként",
|
||||
"site-url": "Weboldal URL",
|
||||
"writting-settings": "Írási beállítások",
|
||||
"url-filters": "URL-szűrők",
|
||||
"page": "Bejegyzések száma egy oldalon",
|
||||
"pages": "Oldal",
|
||||
"home": "Kezdőlap",
|
||||
"welcome-back": "Isten hozta újra!",
|
||||
"language": "Nyelv",
|
||||
"website": "Weboldal",
|
||||
"timezone": "Időzóna",
|
||||
"locale": "Helyi",
|
||||
"new-post": "Új bejegyzés",
|
||||
"new-page": "Új oldal",
|
||||
"html-and-markdown-code-supported": "HTML és Markdown kód használható",
|
||||
"manage-posts": "Posztok kezelése",
|
||||
"published-date": "Publikálás dátuma",
|
||||
"modified-date": "Modosítás dátuma",
|
||||
"empty-title": "Üres cím",
|
||||
"plugins": "Bővitmények kezelése",
|
||||
"install-plugin": "Bővitmény telepítése",
|
||||
"uninstall-plugin": "Bővitmény eltávolítása",
|
||||
"new-password": "Új jelszó",
|
||||
"edit-user": "Felhasználó szerkesztése",
|
||||
"publish-now": "Publikálás azonnal",
|
||||
"first-name": "Keresztnév",
|
||||
"last-name": "Vezetéknév",
|
||||
"bludit-version": "Verzió",
|
||||
"powered-by": "Mozgásban tartja",
|
||||
"recent-posts": "Friss posztok",
|
||||
"manage-pages": "Oldalak kezelése",
|
||||
"advanced-options": "További lehetőségek",
|
||||
"user-deleted": "Felhasználó törlése",
|
||||
"page-added-successfully": "Oldal hozzáadása sikerült",
|
||||
"post-added-successfully": "Bejegyzés hozzáadása sikerült",
|
||||
"the-post-has-been-deleted-successfully": "Bejegyzés törlése sikerült",
|
||||
"the-page-has-been-deleted-successfully": "Oldal törlése sikerült",
|
||||
"username-or-password-incorrect": "A felhasználónév és a jelszó nem egyezik",
|
||||
"database-regenerated": "Adatbáis újragenerálva",
|
||||
"the-changes-have-been-saved": "A változtatások elmentve",
|
||||
"enable-more-features-at": "További funkciókat itt kapcsolhat be",
|
||||
"username-already-exists": "Felhasználónév már létezik",
|
||||
"username-field-is-empty": "Felhasználónév mező üres",
|
||||
"the-password-and-confirmation-password-do-not-match":"A jelszó és megerősítése nem egyezik",
|
||||
"user-has-been-added-successfully": "Felhasználó sikeresen hozzáadva",
|
||||
"you-do-not-have-sufficient-permissions": "Nem rendelkezik megfelelő engedélyekkel az oldal eléréséhez, lépjen kapcsolatba a rendszergazdával!",
|
||||
"settings-advanced-writting-settings": "Beállítások->Haladó->Írási beállítások",
|
||||
"new-posts-and-pages-synchronized": "Új hozzászólások és oldalak szinkronizálva.",
|
||||
"you-can-choose-the-users-privilege": "Kiválaszthatja a felhasználói jogosultságokat. A szerkesztői szerepkörrel csak oldalakat és bejegyzéseket tud írni.",
|
||||
"email-will-not-be-publicly-displayed": "E-mail nem jelenik meg nyilvánosan. A jelszó helyreállításához és az értesítésekhez javasoljuk.",
|
||||
"use-this-field-to-name-your-site": "Ebben a mezőben adja meg a weboldal nevét, ez minden oldal tetején meg fog jelenni a weboldalon.",
|
||||
"use-this-field-to-add-a-catchy-phrase": "Ebben a mezőben megadhat egy szlogent a weboldalhoz.",
|
||||
"you-can-add-a-site-description-to-provide": "Itt megadhatja a weboldal leírását, egy rövid összefoglalót az oldalról.",
|
||||
"you-can-add-a-small-text-on-the-bottom": "Megadhat egy apróbetűs szöveget az oldalak aljára. Pl. jogi információk, tulajdonos, dátumok, stb.",
|
||||
"number-of-posts-to-show-per-page": "Hány bejegyzés jelenjen meg oldalanként.",
|
||||
"the-url-of-your-site": "Az oldal címe (URL)",
|
||||
"add-or-edit-description-tags-or": "Felveheti és szerkesztheti a leírást, a címkéket, vagy módosíthatja a keresőbarát URL-t.",
|
||||
"select-your-sites-language": "Válassza ki weboldala nyelvét!",
|
||||
"select-a-timezone-for-a-correct": "Válasszon időzónát a dátumok megfelelő megjelenítéséhez!",
|
||||
"you-can-use-this-field-to-define-a-set-of": "Ebben a mezőben a nyelvvel, országgal és más különleges beállításokkal kapcsolatos paramétereket veheti fel.",
|
||||
"you-can-modify-the-url-which-identifies": "Itt könnyen megjegyezhető kulcsszavak segítségével módosíthatja az oldalhoz vagy bejegyzéshez tartozó URL-t. Legfeljebb 150 karakter.",
|
||||
"this-field-can-help-describe-the-content": "Ebben a mezőben néhány szóban összefoglalhatja a tartalmat. Legfeljebb 150 karakter.",
|
||||
|
||||
"delete-the-user-and-all-its-posts": "A felhasználó törlése összes bejegyzésével együtt",
|
||||
"delete-the-user-and-associate-its-posts-to-admin-user": "A felhasználó törlése, bejegyzéseinek gazdája az adminisztrátor lesz",
|
||||
"read-more": "Tovább",
|
||||
"show-blog": "Blog megmutatása",
|
||||
"default-home-page": "Alapértelmezett kezdőoldal",
|
||||
"version": "Verziószám",
|
||||
"there-are-no-drafts": "Nincsenek vázlatok.",
|
||||
"create-a-new-article-for-your-blog": "Új cikk írása a blogba.",
|
||||
"create-a-new-page-for-your-website": "Új oldal létrehozása a weboldalra.",
|
||||
"invite-a-friend-to-collaborate-on-your-website": "Ismerős meghívása az oldalon végzendő közös munkára.",
|
||||
"change-your-language-and-region-settings": "Nyelvi és területi beállítások megváltoztatása.",
|
||||
"language-and-timezone": "Nyelv és időzóna",
|
||||
"author": "Szerző",
|
||||
"start-here": "Kezdje itt!",
|
||||
"install-theme": "Téma telepítése",
|
||||
"first-post": "Első bejegyzés",
|
||||
"congratulations-you-have-successfully-installed-your-bludit": "Gratulálunk a **Bludit** sikeres telepítéséhez!",
|
||||
"whats-next": "Mi következik?",
|
||||
|
||||
"follow-bludit-on": "Kövesse a Bluditot!",
|
||||
"visit-the-support-forum": "Látogassa meg a [fórumot](https://forum.bludit.com) ha segítségre van szüksége!",
|
||||
"read-the-documentation-for-more-information": "Olvassa el a [dokumentációt](https://docs.bludit.com) további információkért!",
|
||||
"share-with-your-friends-and-enjoy": "Ossza meg barátaival és élvezze!",
|
||||
"the-page-has-not-been-found": "Ez az oldal nem található.",
|
||||
"error": "Hiba",
|
||||
"bludit-installer": "Bludit telepítő",
|
||||
"welcome-to-the-bludit-installer": "Üdvözli a Bludit telepítő!",
|
||||
"complete-the-form-choose-a-password-for-the-username-admin": "Töltse ki az űrlapot, válasszon jelszót az « admin » felhasználónak!",
|
||||
"password-visible-field": "Jelszó, a mező tartalma látható!",
|
||||
"install": "Telepítés",
|
||||
"choose-your-language": "Válasszon nyelvet!",
|
||||
"next": "Tovább",
|
||||
"the-password-field-is-empty": "A Jelszó mező üres",
|
||||
"your-email-address-is-invalid": "Az email mező tartalma nem megfelelő.",
|
||||
"proceed-anyway": "Akkor is folytatom!",
|
||||
"drafts": "Vázlatok",
|
||||
"ip-address-has-been-blocked": "Az IP-cím le lett tiltva.",
|
||||
"try-again-in-a-few-minutes": "Próbálja újra néhány perc múlva!",
|
||||
"date": "Válasszon egy időzónát, a helyes idő megjelenítéséért!",
|
||||
|
||||
"scheduled": "Időzített",
|
||||
"publish": "Közzététel",
|
||||
"please-check-your-theme-configuration": "Kérjük, ellenőrizze a témája beállításait!",
|
||||
"plugin-label": "Bővítménycímke",
|
||||
"enabled": "Bekapcsolva",
|
||||
"disabled": "Kikapcsolva",
|
||||
"cli-mode": "Cli mód",
|
||||
"command-line-mode": "Parancssori üzemmód",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "Kapcsolja be a parancssori üzemmódot, ha a fájlrendszerből akar bejegyzéseket és oldalakat létrehozni, szerkeszteni vagy törölni!",
|
||||
|
||||
"configure": "Beállitás",
|
||||
"uninstall": "Eltávolítás",
|
||||
"change-password": "Jelszó megváltoztatása",
|
||||
"to-schedule-the-post-just-select-the-date-and-time": "A bejegyzés időzítéséhez csak válassza ki a dátumot és az időpontot!",
|
||||
"write-the-tags-separated-by-commas": "Írja be a címkéket vesszővel elválasztva!",
|
||||
"status": "Állapot",
|
||||
"published": "A bejegyzés sikeresen közzétéve",
|
||||
"scheduled-posts": "Időzített bejegyzések",
|
||||
"statistics": "Statisztika",
|
||||
"name": "Felhasználónév",
|
||||
"email-account-settings": "Levelezési beállítások",
|
||||
"sender-email": "Küldő email címe",
|
||||
"emails-will-be-sent-from-this-address": "Az emailek erről a címről kerülnek majd kiküldésre.",
|
||||
"bludit-login-access-code": "BLUDIT - Hozzáférési kód",
|
||||
"check-your-inbox-for-your-login-access-code": "Ellenőrizze postafiókjában a hozzáférési kódot tartalmazó emailt!",
|
||||
"there-was-a-problem-sending-the-email": "Nem sikerült elküldeni az emailt.",
|
||||
"back-to-login-form": "Vissza a bejelentkezési oldalra",
|
||||
"send-me-a-login-access-code": "Hozzáférési kódot kérek",
|
||||
"get-login-access-code": "Hozzáférési kód megszerzése",
|
||||
"email-notification-login-access-code": "<p>Ezt az értesítőt {{WEBSITE_NAME}} küldte Önnek.</p><p>Hozzáférési kódot kérvényezett, ehhez kattintson az alábbi linkre::</p><p>{{LINK}}</p>",
|
||||
"there-are-no-scheduled-posts": "Nincsenek időzített bejegyzések.",
|
||||
"show-password": "Mutassa a jelszót",
|
||||
"edit-or-remove-your=pages": "Oldalak szerkesztése vagy törlése.",
|
||||
"edit-or-remove-your-blogs-posts": "A blog bejegyzéseinek szerkesztése vagy törlése.",
|
||||
"general-settings": "Általános beállítások",
|
||||
"advanced-settings": "Haladó beállítások",
|
||||
"manage-users": "Felhasználók kezelése",
|
||||
"view-and-edit-your-profile": "Profiloldalának megtekintése és szerkesztése.",
|
||||
|
||||
"password-must-be-at-least-6-characters-long": "A jelszónak legalább 6 karakter hosszúnak kell lennie.",
|
||||
"images": "Képek",
|
||||
"upload-image": "Kép feltöltése",
|
||||
"drag-and-drop-or-click-here": "Húzza ide vagy kattintson ide!",
|
||||
"insert-image": "Kép beszúrása",
|
||||
"supported-image-file-types": "Támogatott képfájl-formátumok",
|
||||
"date-format": "Dátumformátum",
|
||||
"time-format": "Időformátum",
|
||||
"chat-with-developers-and-users-on-gitter": "Beszélgessen a fejlesztőkkel és a felhasználókkal a [Gitter-en](https://gitter.im/dignajar/bludit)",
|
||||
"this-is-a-brief-description-of-yourself-our-your-site": "Itt röviden bemutathatja önmagát vagy a weboldalát, a szöveg megváltoztatásához menjen az Adminlapra, Beállítások, Bővítmények, majd a Névjegy bővítmény beállításai.",
|
||||
"profile-picture": "Profilkép",
|
||||
"the-about-page-is-very-important": "A Névjegy oldal fontos és hasznos eszköz a potenciális ügyfelek és partnerek számára. Azoknak, akiket érdekel, ki áll a weboldal mögött, a Névjegy oldal jelenti az elsődleges információforrást.",
|
||||
"change-this-pages-content-on-the-admin-panel": "Ennek az oldalnak a tartalmát így változtathatja meg: Adminlap, Vezérlés, Oldalak, majd kattintás a Névjegy oldalra.",
|
||||
"about-your-site-or-yourself": "Névjegy - önmaga és a weboldal bemutatása",
|
||||
"welcome-to-bludit": "Üdvözöljük a Bluditban!",
|
||||
|
||||
"site-information": "Weboldal-információ",
|
||||
"date-and-time-formats": "Dátum- és időformátum",
|
||||
"activate": "Aktiválás",
|
||||
"deactivate": "Deaktiválás",
|
||||
|
||||
"cover-image": "Borítóképek",
|
||||
"blog": "Blog",
|
||||
"more-images": "További képek",
|
||||
|
||||
"click-here-to-cancel": "Kattintson ide a kilépéshez!",
|
||||
"type-the-tag-and-press-enter": "Írja be a címkét és nyomjon Entert!",
|
||||
"add": "Hozzáadás",
|
||||
"manage-your-bludit-from-the-admin-panel": "Vezérelje a Bluditot az [admin felületről]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images": "Nincs kép",
|
||||
|
||||
"click-on-the-image-for-options": "Kattintson a képre a beállításokhoz!",
|
||||
"set-as-cover-image": "Beállítás borítóképnek",
|
||||
"delete-image": "Kép törlése",
|
||||
"image-description": "Kép leírása",
|
||||
|
||||
"social-networks-links": "Közösségimédia-linkek",
|
||||
|
||||
"email-access-code": "Email hozzáférési kód",
|
||||
"current-format": "Jelenlegi",
|
||||
|
||||
"welcome": "Üdvözöljük a blogon!"
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
{
|
||||
"native": "Italiano (Italia)",
|
||||
"english-name": "Italian",
|
||||
"last-update": "2016-01-22",
|
||||
"last-update": "2016-02-20",
|
||||
"author": "Daniele La Pira",
|
||||
"email": "daniele.lapira@gmail.com",
|
||||
"website": "https://github.com/danielelapira"
|
||||
|
@ -119,6 +119,7 @@
|
|||
"you-can-use-this-field-to-define-a-set-of": "Puoi utilizzare questo campo per definire un set di parametri riferiti alla lingua, alla nazione e preferenze speciali.",
|
||||
"you-can-modify-the-url-which-identifies":"Puoi modificare l'indirizzo URL che identifica una pagina o un articolo utilizzando delle parole chiavi leggibili. Non più di 150 caratteri.",
|
||||
"this-field-can-help-describe-the-content": "Quì puoi descrivere il contenuto in poche parole. Non più di 150 caratteri.",
|
||||
|
||||
"delete-the-user-and-all-its-posts":"Elimina l'utente e tutti i suoi articoli",
|
||||
"delete-the-user-and-associate-its-posts-to-admin-user": "Elimina l'utente e assegna i suoi articoli all'utente admin",
|
||||
"read-more": "Leggi tutto",
|
||||
|
@ -195,7 +196,7 @@
|
|||
"edit-or-remove-your-blogs-posts": "Modifica o elimina articoli del blog.",
|
||||
"general-settings": "Impostazioni generali",
|
||||
"advanced-settings": "Impostazioni avanzate",
|
||||
"manage-users": "Gestisci utenti",
|
||||
"manage-users": "Amministra utenti",
|
||||
"view-and-edit-your-profile": "Visualizza e modifica il tuo profilo.",
|
||||
|
||||
"password-must-be-at-least-6-characters-long": "La Password deve contenere almeno 6 caratteri",
|
||||
|
@ -222,9 +223,17 @@
|
|||
"cover-image": "Immagine di copertina",
|
||||
"blog": "Blog",
|
||||
"more-images": "Più immagini",
|
||||
"double-click-on-the-image-to-add-it": "Clicca due volte sull'immagine da inserire.",
|
||||
|
||||
"click-here-to-cancel": "Clicca quì per annullare.",
|
||||
"type-the-tag-and-press-enter": "Scrivi il tag e premi invio.",
|
||||
"manage-your-bludit-from-the-admin-panel": "Gestisci Bludit dal [pannello di amministrazione]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"Non ci sono immagini"
|
||||
}
|
||||
"add": "Aggiungi",
|
||||
"manage-your-bludit-from-the-admin-panel": "Amministra Bludit dal [pannello di amministrazione]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"Non ci sono immagini",
|
||||
|
||||
"click-on-the-image-for-options": "Clicca sull'immagine per le opzioni.",
|
||||
"set-as-cover-image": "Set as cover image",
|
||||
"delete-image": "Elimima immagine",
|
||||
"image-description": "Descrizione dell'immagine",
|
||||
|
||||
"social-networks-links": "Social Networks"
|
||||
}
|
||||
|
|
|
@ -116,7 +116,6 @@
|
|||
"add-or-edit-description-tags-or": "Tambah atau sunting perihal dan tag atau ubah URL mesra.",
|
||||
"select-your-sites-language": "Pilih bahasa laman web anda.",
|
||||
"select-a-timezone-for-a-correct": "Pilih zon masa yang betul untuk paparan tarikh dan masa yang tepat.",
|
||||
"you-can-use-this-field-to-define-a-set-of": "You can use this field to define a set of parameters related to the language, country and special preferences.",
|
||||
"you-can-use-this-field-to-define-a-set-of": "Tetapkan set parameter berkaitan dengan bahasa, negara dan keutamaan istimewa.",
|
||||
"you-can-modify-the-url-which-identifies":"Anda boleh mengubah URL yang mengenalpasti sesuatu artikel atau halaman menggunakan kata kunci yang boleh dibaca oleh manusia. Tidak lebih daripada 150 aksara.",
|
||||
"this-field-can-help-describe-the-content": "Huraikan secara ringkas kandungan ini. Tidak lebih daripada 150 aksara.",
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{
|
||||
"native": "Русский (Россия)",
|
||||
"english-name": "Russian",
|
||||
"last-update": "2015-11-17",
|
||||
"last-update": "2016-06-01",
|
||||
"author": "Сергей Ворон",
|
||||
"email": "sergey@voron.pw",
|
||||
"website": "http://voron.pw"
|
||||
|
@ -235,9 +235,8 @@
|
|||
"delete-image": "Удалить изображение",
|
||||
"image-description": "Описание изображения",
|
||||
|
||||
"social-networks": "Социальные сети",
|
||||
"twitter-username": "Имя пользователя в Twitter",
|
||||
"facebook-username": "Имя пользователя в Facebook",
|
||||
"google-username": "Имя пользователя в Google",
|
||||
"instagram-username": "Имя пользователя в Instagram"
|
||||
"social-networks-links": "Социальные сети",
|
||||
|
||||
"email-access-code": "Проверочный код email",
|
||||
"current-format": "Текущий формат"
|
||||
}
|
||||
|
|
|
@ -227,5 +227,18 @@
|
|||
"click-here-to-cancel": "İptal etmek için tıklayın.",
|
||||
"type-the-tag-and-press-enter": "Etiketi girin ve enter tuşuna basın.",
|
||||
"manage-your-bludit-from-the-admin-panel": "Bludit'i [yönetici panelinden]({{ADMIN_AREA_LINK}}) yönetin.",
|
||||
"there-are-no-images":"Hiç resim yok."
|
||||
"there-are-no-images":"Hiç resim yok.",
|
||||
|
||||
"click-on-the-image-for-options": "Özellikler için resme tıklayın.",
|
||||
"set-as-cover-image": "Kapak resmi olarak ayarla",
|
||||
"delete-image": "Resmi sil",
|
||||
"image-description": "Resim açıklaması",
|
||||
|
||||
"social-networks-links": "Sosyal ağ linkleri",
|
||||
|
||||
"email-access-code": "Email erişim kodu",
|
||||
"current-format": "Geçerli format",
|
||||
|
||||
"welcome": "Hoşgeldiniz"
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{
|
||||
"native": "Українська (Україна)",
|
||||
"english-name": "Ukrainian",
|
||||
"last-update": "2016-01-23",
|
||||
"last-update": "2016-02-20",
|
||||
"author": "Allec Bernz",
|
||||
"email": "admin@allec.info",
|
||||
"website": "http://allec.info"
|
||||
|
@ -37,7 +37,7 @@
|
|||
"draft": "Чернетка",
|
||||
"delete": "Видалити",
|
||||
"registered": "Зареєстрований",
|
||||
"Notifications": "Сповіщення",
|
||||
"notifications": "Повідомлення",
|
||||
"profile": "Профіль",
|
||||
"email": "Email",
|
||||
"settings": "Параметри",
|
||||
|
@ -223,9 +223,17 @@
|
|||
"cover-image": "Зображення обкладинки",
|
||||
"blog": "Блог",
|
||||
"more-images": "Більше зображень",
|
||||
"double-click-on-the-image-to-add-it": "Двічі клацніть на зображення, щоб додати його.",
|
||||
|
||||
"click-here-to-cancel": "Натисніть тут, щоб скасувати.",
|
||||
"type-the-tag-and-press-enter": "Введіть тег і натисніть Enter.",
|
||||
"add": "Додати",
|
||||
"manage-your-bludit-from-the-admin-panel": "Керуйте вашим Bludit через [панель управління]({{ADMIN_AREA_LINK}})",
|
||||
"there-are-no-images":"Немає зображень"
|
||||
"there-are-no-images":"Немає зображень",
|
||||
|
||||
"click-on-the-image-for-options": "Натисніть на зображення, щоб переглянути параметри.",
|
||||
"set-as-cover-image": "Встановити в якості обкладинки",
|
||||
"delete-image": "Видалити зображення",
|
||||
"image-description": "Опис зображення",
|
||||
|
||||
"social-networks-links": "Лінки на соціальні мережі"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,222 @@
|
|||
{
|
||||
"language-data":
|
||||
{
|
||||
"native": "Simplified Chinese (PRC)",
|
||||
"english-name": "Simplified Chinese",
|
||||
"last-update": "2017-07-20",
|
||||
"author": "Zhou Hao",
|
||||
"email": "zhou.hao.27@gmail.com",
|
||||
"website": "http://thezeusoft.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": "友好链接",
|
||||
"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": "网址过滤器",
|
||||
"page": "页面",
|
||||
"pages": "页面",
|
||||
"home": "首页",
|
||||
"welcome-back": "欢迎回來",
|
||||
"language": "语言",
|
||||
"website": "网站",
|
||||
"timezone": "时区",
|
||||
"locale": "区域",
|
||||
"new-post": "新文章",
|
||||
"html-and-markdown-code-supported": "支持HTML与Markdown代码",
|
||||
"new-page": "新页面",
|
||||
"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": "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": "Email將不会被公开显示,建议用于复原密码或是通知",
|
||||
"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": "网站的网址",
|
||||
"add-or-edit-description-tags-or": "新增或编辑简介、标签或是修改友好网址",
|
||||
"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个字",
|
||||
"this-field-can-help-describe-the-content": "這個字段可以帮助快速理解內容,不能超过150个字",
|
||||
"write-the-tags-separated-by-comma": "撰写使用逗号分隔的标签,例如: 标签1, 标签2, 标签3",
|
||||
"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": "通过[admin area](./admin/)管理您的Bludit",
|
||||
"follow-bludit-on": "Follow Bludit on",
|
||||
"visit-the-support-forum": "访问[forum](https://forum.bludit.com)來取得支持",
|
||||
"read-the-documentation-for-more-information": "阅读[documentation](https://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":"您所输入的email是无效的",
|
||||
"proceed-anyway": "继续!",
|
||||
"drafts":"草稿",
|
||||
"ip-address-has-been-blocked": "IP 地址已被封锁",
|
||||
"try-again-in-a-few-minutes": "请过几分钟后再试",
|
||||
"date": "日期",
|
||||
"you-can-schedule-the-post-just-select-the-date-and-time": "您只需要选择一个日期与时间就可以预定什么時候再发表此文章",
|
||||
"scheduled": "已安排",
|
||||
"publish": "发表",
|
||||
"please-check-your-theme-configuration": "请检查您的主題设定",
|
||||
"plugin-label": "插件标签",
|
||||
"enabled": "启用",
|
||||
"disabled": "禁止",
|
||||
"cli-mode": "Cli模式",
|
||||
"command-line-mode": "命令行模式",
|
||||
"enable-the-command-line-mode-if-you-add-edit": "启用命令行模式,如果您需要完成新增或者编辑工作。",
|
||||
"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":"Email账户设定",
|
||||
"sender-email": "发送者email",
|
||||
"emails-will-be-sent-from-this-address":"Emails將会被从此地址发送",
|
||||
"bludit-login-access-code": "BLUDIT - 登入存取码",
|
||||
"check-your-inbox-for-your-login-access-code":"检查您的收件夹是否有收到登入存取码",
|
||||
"there-was-a-problem-sending-the-email":"发送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": "密吗长度必须在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",
|
||||
"you-can-use-this-field-to-define-a-set-off": "使用此字段定义默认语言代码",
|
||||
"More images": "更多的图片",
|
||||
"Cover image": "封面图片",
|
||||
"site-information": "网站资讯",
|
||||
"date-and-time-formats": "日期与时间格式",
|
||||
"activate": "启用",
|
||||
"deactivate": "关闭"
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://github.com/dignajar/bludit-plugins",
|
||||
"version": "1.1",
|
||||
"releaseDate": "2016-02-15",
|
||||
"website": "https://plugins.bludit.com",
|
||||
"version": "1.4",
|
||||
"releaseDate": "2016-05-28",
|
||||
"license": "MIT",
|
||||
"requires": "Bludit v1.1",
|
||||
"compatible": "1.5beta",
|
||||
"notes": ""
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "API",
|
||||
"description": "Interface to interact with Bludit using HTTP protocol."
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "API",
|
||||
"description": "Interfaz para interactuar con Bludit mediante el protocolo HTTP."
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "API",
|
||||
"description": "Интерфейс для взаимодействия с Bludit через HTTP протокол."
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://plugins.bludit.com",
|
||||
"version": "1.4",
|
||||
"releaseDate": "2016-05-28",
|
||||
"license": "MIT",
|
||||
"compatible": "1.5beta",
|
||||
"notes": ""
|
||||
}
|
|
@ -0,0 +1,213 @@
|
|||
<?php
|
||||
|
||||
class pluginAPI extends Plugin {
|
||||
|
||||
public function init()
|
||||
{
|
||||
global $Security;
|
||||
|
||||
// This key is used for request such as get the list of all posts and pages
|
||||
$authKey = md5($Security->key1().time().DOMAIN_BASE);
|
||||
|
||||
$this->dbFields = array(
|
||||
'ping'=>0, // 0 = false, 1 = true
|
||||
'authKey'=>$authKey, // Private key
|
||||
'showAllAmount'=>15 // Amount of posts and pages for return
|
||||
);
|
||||
}
|
||||
|
||||
public function form()
|
||||
{
|
||||
$html = '';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<input type="hidden" name="ping" value="0">';
|
||||
$html .= '<input name="ping" id="jsping" type="checkbox" value="1" '.($this->getDbField('ping')?'checked':'').'>';
|
||||
$html .= '<label class="forCheckbox" for="jsping">Ping Bludit.com</label>';
|
||||
$html .= '<div class="tip">Enable this feature to share your posts and pages with Bludit.com.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<p><b>Authorization Key:</b> '.$this->getDbField('authKey').'</p>';
|
||||
$html .= '<div class="tip">This key is private, do not share it with anyone.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<p><b>Show all posts:</b> <a href="'.DOMAIN_BASE.'api/show/all/posts/'.$this->getDbField('authKey').'">'.DOMAIN_BASE.'api/show/all/posts/'.$this->getDbField('authKey').'</a></p>';
|
||||
$html .= '<div class="tip">Get all posts from this site.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<p><b>Show all pages:</b> <a href="'.DOMAIN_BASE.'api/show/all/pages/'.$this->getDbField('authKey').'">'.DOMAIN_BASE.'api/show/all/pages/'.$this->getDbField('authKey').'</a></p>';
|
||||
$html .= '<div class="tip">Get all pages from this site.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<p><b>Show post:</b> <a href="'.DOMAIN_BASE.'api/show/post/{POST-NAME}">'.DOMAIN_BASE.'api/show/post/{POST-NAME}</a></p>';
|
||||
$html .= '<div class="tip">Get a particular post, change the {POST-NAME} with the post friendly url.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<p><b>Show page:</b> <a href="'.DOMAIN_BASE.'api/show/page/{PAGE-NAME}">'.DOMAIN_BASE.'api/show/page/{PAGE-NAME}</a></p>';
|
||||
$html .= '<div class="tip">Get a particular page, change the {PAGE-NAME} with the page friendly url.</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
public function afterFormSave()
|
||||
{
|
||||
$this->ping();
|
||||
}
|
||||
|
||||
private function ping()
|
||||
{
|
||||
if($this->getDbField('ping')) {
|
||||
|
||||
// Get the authentication key
|
||||
$authKey = $this->getDbField('authKey');
|
||||
|
||||
// Just a request HTTP with the website URL
|
||||
Log::set( file_get_contents('https://www.bludit.com/api.php?authKey='.$authKey) );
|
||||
}
|
||||
}
|
||||
|
||||
private function getPost($key)
|
||||
{
|
||||
// Generate the object Post
|
||||
$Post = buildPost($key);
|
||||
|
||||
if(!$Post) {
|
||||
return json_encode(array(
|
||||
'status'=>'0',
|
||||
'bludit'=>'Bludit API plugin',
|
||||
'message'=>'The post doesn\'t exist'
|
||||
));
|
||||
}
|
||||
|
||||
return $Post->json();
|
||||
}
|
||||
|
||||
private function getAllPosts()
|
||||
{
|
||||
$posts = buildPostsForPage(0, $this->getDbField('showAllAmount'), true, false);
|
||||
|
||||
$tmp = array();
|
||||
|
||||
foreach($posts as $Post) {
|
||||
array_push($tmp, $Post->json( $returnsArray=true ));
|
||||
}
|
||||
|
||||
return json_encode($tmp);
|
||||
}
|
||||
|
||||
private function getPage($key)
|
||||
{
|
||||
// Generate the object Page
|
||||
$Page = buildPage($key);
|
||||
|
||||
if(!$Page) {
|
||||
return json_encode(array(
|
||||
'status'=>'0',
|
||||
'bludit'=>'Bludit API plugin',
|
||||
'message'=>'The page doesn\'t exist'
|
||||
));
|
||||
}
|
||||
|
||||
return $Page->json();
|
||||
}
|
||||
|
||||
private function getAllPages()
|
||||
{
|
||||
$pages = buildAllPages();
|
||||
|
||||
$tmp = array();
|
||||
|
||||
foreach($pages as $Page) {
|
||||
if($Page->published()) {
|
||||
array_push($tmp, $Page->json( $returnsArray=true ));
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($tmp);
|
||||
}
|
||||
|
||||
public function beforeRulesLoad()
|
||||
{
|
||||
global $Url;
|
||||
|
||||
// The URI start with /api/
|
||||
$startString = HTML_PATH_ROOT.'api/';
|
||||
$URI = $Url->uri();
|
||||
$length = mb_strlen($startString, CHARSET);
|
||||
if( mb_substr($URI, 0, $length)!=$startString ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Remove the first part of the URI
|
||||
$URI = ltrim($URI, HTML_PATH_ROOT.'api/');
|
||||
|
||||
// Parameters
|
||||
// ------------------------------------------------------------
|
||||
// show post {post slug}
|
||||
// show page {page slug}
|
||||
// show all posts {AUTH KEY}
|
||||
// show all pages {AUTH KEY}
|
||||
|
||||
// Get parameters
|
||||
$parameters = explode('/', $URI);
|
||||
|
||||
for($i=0; $i<3; $i++) {
|
||||
if(empty($parameters[$i])) {
|
||||
return false;
|
||||
} else {
|
||||
// Sanizite
|
||||
$parameters[$i] = Sanitize::html($parameters[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Default JSON
|
||||
$json = json_encode(array(
|
||||
'status'=>'0',
|
||||
'bludit'=>'Bludit API plugin',
|
||||
'message'=>'Check the parameters'
|
||||
));
|
||||
|
||||
|
||||
|
||||
if($parameters[0]==='show') {
|
||||
|
||||
if($parameters[1]==='all') {
|
||||
|
||||
// Authentication key from the URI
|
||||
$authKey = $parameters[3];
|
||||
|
||||
// Compare keys
|
||||
if( $authKey===$this->getDbField('authKey') ) {
|
||||
|
||||
if($parameters[2] === 'posts') {
|
||||
$json = $this->getAllPosts();
|
||||
}
|
||||
elseif($parameters[2] === 'pages') {
|
||||
$json = $this->getAllPages();
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($parameters[1]==='post' || $parameters[1]==='page') {
|
||||
|
||||
$key = $parameters[2];
|
||||
|
||||
if($parameters[1] === 'post') {
|
||||
$json = $this->getPost($key);
|
||||
}
|
||||
elseif($parameters[1] === 'page') {
|
||||
$json = $this->getPage($key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Print the JSON
|
||||
header('Content-Type: application/json');
|
||||
exit($json);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Система коментарів Disqus",
|
||||
"description": "Disqus надає послуги хостингу коментарів для веб-сайтів. Необхідно зареєструватися на Disqus.com перед використанням цього плагіна."
|
||||
},
|
||||
|
||||
"disqus-shortname": "Коротке ім'я в Disqus",
|
||||
"enable-disqus-on-pages": "Включити Disqus на сторінках",
|
||||
"enable-disqus-on-posts": "Включити Disqus у публікаціях",
|
||||
"enable-disqus-on-default-home-page": "Включити Disqus на домашній сторінці"
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://github.com/dignajar/bludit-plugins",
|
||||
"version": "1.1",
|
||||
"releaseDate": "2016-02-13",
|
||||
"website": "https://plugins.bludit.com",
|
||||
"version": "1.4",
|
||||
"releaseDate": "2016-05-28",
|
||||
"license": "MIT",
|
||||
"requires": "Bludit v1.1",
|
||||
"compatible": "1.5beta",
|
||||
"notes": ""
|
||||
}
|
||||
|
|
|
@ -8,9 +8,9 @@ class pluginDisqus extends Plugin {
|
|||
{
|
||||
$this->dbFields = array(
|
||||
'shortname'=>'',
|
||||
'enablePages'=>false,
|
||||
'enablePosts'=>false,
|
||||
'enableDefaultHomePage'=>false
|
||||
'enablePages'=>0,
|
||||
'enablePosts'=>0,
|
||||
'enableDefaultHomePage'=>1
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -44,17 +44,20 @@ class pluginDisqus extends Plugin {
|
|||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<input name="enablePages" id="jsenablePages" type="checkbox" value="true" '.($this->getDbField('enablePages')?'checked':'').'>';
|
||||
$html .= '<input type="hidden" name="enablePages" value="0">';
|
||||
$html .= '<input name="enablePages" id="jsenablePages" type="checkbox" value="1" '.($this->getDbField('enablePages')?'checked':'').'>';
|
||||
$html .= '<label class="forCheckbox" for="jsenablePages">'.$Language->get('Enable Disqus on pages').'</label>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<input name="enablePosts" id="jsenablePosts" type="checkbox" value="true" '.($this->getDbField('enablePosts')?'checked':'').'>';
|
||||
$html .= '<input type="hidden" name="enablePosts" value="0">';
|
||||
$html .= '<input name="enablePosts" id="jsenablePosts" type="checkbox" value="1" '.($this->getDbField('enablePosts')?'checked':'').'>';
|
||||
$html .= '<label class="forCheckbox" for="jsenablePosts">'.$Language->get('Enable Disqus on posts').'</label>';
|
||||
$html .= '</div>';
|
||||
|
||||
$html .= '<div>';
|
||||
$html .= '<input name="enableDefaultHomePage" id="jsenableDefaultHomePage" type="checkbox" value="true" '.($this->getDbField('enableDefaultHomePage')?'checked':'').'>';
|
||||
$html .= '<input type="hidden" name="enableDefaultHomePage" value="0">';
|
||||
$html .= '<input name="enableDefaultHomePage" id="jsenableDefaultHomePage" type="checkbox" value="1" '.($this->getDbField('enableDefaultHomePage')?'checked':'').'>';
|
||||
$html .= '<label class="forCheckbox" for="jsenableDefaultHomePage">'.$Language->get('Enable Disqus on default home page').'</label>';
|
||||
$html .= '</div>';
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Інструменти Google",
|
||||
"description": "Цей плагін генерує мета-тег для перевірки вашого сайту у Google Webmasters Tools і JavaScript-код для відстеження вашого сайту з Google Analytics."
|
||||
},
|
||||
|
||||
"google-webmasters-tools": "Google Webmasters tools",
|
||||
"google-analytics-tracking-id": "КОД відстеження Google Analytics",
|
||||
"complete-this-field-with-the-google-site-verification": "Заповніть це поле для перевірки власника сайту.",
|
||||
"complete-this-field-with-the-tracking-id": "Заповніть це поле для генерації Javascript-коду відстеження у Google Analytics."
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://github.com/dignajar/bludit-plugins",
|
||||
"version": "1.1",
|
||||
"releaseDate": "2016-02-13",
|
||||
"website": "https://plugins.bludit.com",
|
||||
"version": "1.4",
|
||||
"releaseDate": "2016-05-28",
|
||||
"license": "MIT",
|
||||
"requires": "Bludit v1.1",
|
||||
"compatible": "1.5beta",
|
||||
"notes": ""
|
||||
}
|
||||
|
|
|
@ -31,13 +31,15 @@ class pluginGoogleTools extends Plugin {
|
|||
|
||||
public function siteHead()
|
||||
{
|
||||
$html = PHP_EOL.'<!-- Google Webmasters Tools -->'.PHP_EOL;
|
||||
$html .= '<meta name="google-site-verification" content="'.$this->getDbField('google-site-verification').'">'.PHP_EOL;
|
||||
global $Url;
|
||||
|
||||
if(Text::isEmpty($this->getDbField('google-site-verification'))) {
|
||||
if(Text::isEmpty($this->getDbField('google-site-verification')) || !($Url->whereAmI()=='home')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$html = PHP_EOL.'<!-- Google Webmasters Tools -->'.PHP_EOL;
|
||||
$html .= '<meta name="google-site-verification" content="'.$this->getDbField('google-site-verification').'">'.PHP_EOL;
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
@ -60,4 +62,4 @@ class pluginGoogleTools extends Plugin {
|
|||
|
||||
return $html;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Neueste Beiträge",
|
||||
"description": "Anzeige der neuesten Beiträge."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Anzahl der Beiträge"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Neueste Beiträge",
|
||||
"description": "Anzeige der neuesten Beiträge."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Anzahl der Beiträge"
|
||||
}
|
|
@ -5,6 +5,5 @@
|
|||
"description": "Shows the latest posts published."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Amount of posts",
|
||||
"show-home-link": "Show home link"
|
||||
}
|
||||
"amount-of-posts": "Amount of posts"
|
||||
}
|
||||
|
|
|
@ -5,6 +5,5 @@
|
|||
"description": "Muestra las últimas entradas publicadas."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Cantidad de entradas",
|
||||
"show-home-link": "Mostrar vínculo a inicio"
|
||||
"amount-of-posts": "Cantidad de entradas"
|
||||
}
|
||||
|
|
|
@ -5,6 +5,5 @@
|
|||
"description": "Muestra las últimas entradas publicadas."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Cantidad de entradas",
|
||||
"show-home-link": "Mostrar vínculo a inicio"
|
||||
"amount-of-posts": "Cantidad de entradas"
|
||||
}
|
||||
|
|
|
@ -5,6 +5,5 @@
|
|||
"description": "Muestra las últimas entradas publicadas."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Cantidad de entradas",
|
||||
"show-home-link": "Mostrar vínculo a inicio"
|
||||
"amount-of-posts": "Cantidad de entradas"
|
||||
}
|
||||
|
|
|
@ -5,6 +5,5 @@
|
|||
"description": "公開された最近の投稿を表示します。"
|
||||
},
|
||||
|
||||
"amount-of-posts": "投稿表示数",
|
||||
"show-home-link": "ホーム・リンクを表示"
|
||||
}
|
||||
"amount-of-posts": "投稿表示数"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Последние записи",
|
||||
"description": "Показывает последние опубликованные записи."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Количество записей"
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"plugin-data":
|
||||
{
|
||||
"name": "Останні публікації",
|
||||
"description": "Показує останні опубліковані публікації."
|
||||
},
|
||||
|
||||
"amount-of-posts": "Кількість публікацій",
|
||||
"show-home-link": "Показати лінк на домашню сторінку"
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://github.com/dignajar/bludit-plugins",
|
||||
"version": "1.1",
|
||||
"releaseDate": "2016-02-13",
|
||||
"website": "https://plugins.bludit.com",
|
||||
"version": "1.4",
|
||||
"releaseDate": "2016-05-28",
|
||||
"license": "MIT",
|
||||
"requires": "Bludit v1.1",
|
||||
"compatible": "1.5beta",
|
||||
"notes": ""
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://github.com/dignajar/bludit-plugins",
|
||||
"version": "1.1",
|
||||
"releaseDate": "2016-02-13",
|
||||
"license": "MIT",
|
||||
"requires": "Bludit v1.1",
|
||||
"notes": ""
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Поставете вашия сайт на режим на поддръжка."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Активиране режим на поддръжка ",
|
||||
"enable-maintenance-mode": "Активиране режим на поддръжка ",
|
||||
"message": "Съобщение"
|
||||
}
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Wartungsmodus für die Website mit Zugang zum Admin-Bereich."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Aktivierung des Wartungsmodus",
|
||||
"enable-maintenance-mode": "Aktivierung des Wartungsmodus",
|
||||
"message": "Auf der Website angezeigter Hinweis"
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Wartungsmodus für die Website mit Zugang zum Admin-Bereich."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Aktivierung des Wartungsmodus",
|
||||
"enable-maintenance-mode": "Aktivierung des Wartungsmodus",
|
||||
"message": "Auf der Website angezeigter Hinweis"
|
||||
}
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Set your site on maintenance mode, you can access to admin area."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Enable maintence mode",
|
||||
"enable-maintenance-mode": "Enable maintenance mode",
|
||||
"message": "Message"
|
||||
}
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Configura el sitio en modo mantenimiento, se puede acceder al panel de administración mientras tanto."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Habilitar modo mantenimiento",
|
||||
"enable-maintenance-mode": "Habilitar modo mantenimiento",
|
||||
"message": "Mensaje"
|
||||
}
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "Configurer votre site sur le mode de maintenance, vous pouvez accéder à la zone d'administration."
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "Activer le mode de maintence",
|
||||
"enable-maintenance-mode": "Activer le mode de maintenance",
|
||||
"message": "Message"
|
||||
}
|
||||
}
|
|
@ -5,6 +5,6 @@
|
|||
"description": "メンテンナンス・モードに設定します。管理エリアにはアクセスできます。"
|
||||
},
|
||||
|
||||
"enable-maintence-mode": "メンテンナンス・モードを有効にする",
|
||||
"enable-maintenance-mode": "メンテンナンス・モードを有効にする",
|
||||
"message": "メッセージ"
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue