Merge pull request #1 from dignajar/master

New pull request
This commit is contained in:
Edi 2016-06-21 02:02:23 +02:00 committed by GitHub
commit e2a8df7da0
58 changed files with 860 additions and 177 deletions

View File

@ -7,7 +7,7 @@ Bludit is a simple web application to make your own **blog** or **site** in seco
- [Documentation](https://docs.bludit.com) - [Documentation](https://docs.bludit.com)
- [Help and Support](https://forum.bludit.com) - [Help and Support](https://forum.bludit.com)
- [Plugins](https://plugins.bludit.com) - [Plugins](https://plugins.bludit.com)
- [Themes](https://github.com/dignajar/bludit-themes) - [Themes](https://themes.bludit.com)
- [More plugins and themes](https://forum.bludit.com/viewforum.php?f=14) - [More plugins and themes](https://forum.bludit.com/viewforum.php?f=14)
Social networks Social networks

View File

@ -288,7 +288,7 @@ class Content {
return '/'.$htmlPath.'/'.$tmp; return '/'.$htmlPath.'/'.$tmp;
} }
public function json() public function json($returnsArray=false)
{ {
$tmp['key'] = $this->key(); $tmp['key'] = $this->key();
$tmp['title'] = $this->title(); $tmp['title'] = $this->title();
@ -298,6 +298,10 @@ class Content {
$tmp['date'] = $this->dateRaw(); $tmp['date'] = $this->dateRaw();
$tmp['permalink'] = $this->permalink(true); $tmp['permalink'] = $this->permalink(true);
if($returnsArray) {
return $tmp;
}
return json_encode($tmp); return json_encode($tmp);
} }
} }

View File

@ -105,7 +105,7 @@ class Plugin {
public function setDb($args) public function setDb($args)
{ {
$tmp = array(); $tmp = $this->db;
foreach($this->dbFields as $key=>$value) foreach($this->dbFields as $key=>$value)
{ {
@ -120,10 +120,6 @@ class Plugin {
// Set value // Set value
$tmp[$key] = $tmpValue; $tmp[$key] = $tmpValue;
} }
else
{
$tmp[$key] = false;
}
} }
$this->db = $tmp; $this->db = $tmp;
@ -174,6 +170,13 @@ class Plugin {
return $this->className; return $this->className;
} }
public function isCompatible()
{
$explode = explode(',', $this->getMetadata('compatible'));
return in_array(BLUDIT_VERSION, $explode);
}
public function directoryName() public function directoryName()
{ {
return $this->directoryName; return $this->directoryName;
@ -186,7 +189,7 @@ class Plugin {
return false; 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); mkdir(PATH_PLUGINS_DATABASES.$this->directoryName, 0755, true);
// Create database // Create database

View File

@ -90,8 +90,15 @@ li.bludit-logo {
} }
.bludit-user-navbar { .bludit-user-navbar {
text-align: right !important; background: #333 none repeat scroll 0 0;
padding-right: 60px !important; 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) { @media (min-width: 333px) and (max-width: 959px) {
@ -275,14 +282,14 @@ table.statistics tr:last-child td {
/* ----------- ALERT ----------- */ /* ----------- ALERT ----------- */
#alert { #alert {
bottom: 0;
color: #ffffff; color: #ffffff;
display: none;
padding: 10px; padding: 10px;
display: none;
position: fixed; position: fixed;
text-align: center; text-align: center;
top: 0;
width: 100%;
z-index: 100; z-index: 100;
right: 0;
} }
.alert-ok { .alert-ok {
@ -651,3 +658,7 @@ div.plugin-links > span.separator {
margin-bottom: 0px !important; margin-bottom: 0px !important;
display: inline-block; display: inline-block;
} }
#jsformplugin p {
margin-bottom: 0;
}

View File

View File

View File

View File

View File

@ -1,2 +1,2 @@
/*! UIkit 2.26.2 | 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} .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}

View File

@ -1,2 +1,2 @@
/*! UIkit 2.26.2 | 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} .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}

View File

@ -1,2 +1,2 @@
/*! UIkit 2.26.2 | 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} .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}

4
bl-kernel/admin/themes/default/css/uikit/uikit.almost-flat.min.css vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

2
bl-kernel/admin/themes/default/css/uikit/upload.almost-flat.min.css vendored Executable file → Normal file
View File

@ -1,2 +1,2 @@
/*! UIkit 2.26.2 | 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)} .uk-dragover{box-shadow:0 0 20px rgba(100,100,100,.3)}

View File

@ -100,7 +100,8 @@ $(document).ready(function() {
<div class="uk-navbar-flip"> <div class="uk-navbar-flip">
<ul class="uk-navbar-nav"> <ul class="uk-navbar-nav">
<li> <li class="uk-parent" data-uk-dropdown>
<?php <?php
$profilePictureSrc = HTML_PATH_ADMIN_THEME_IMG.'default.png'; $profilePictureSrc = HTML_PATH_ADMIN_THEME_IMG.'default.png';
if(file_exists(PATH_UPLOADS_PROFILES.$Login->username().'.png')) { if(file_exists(PATH_UPLOADS_PROFILES.$Login->username().'.png')) {
@ -110,6 +111,12 @@ $(document).ready(function() {
<a href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$Login->username() ?>"> <a href="<?php echo HTML_PATH_ADMIN_ROOT.'edit-user/'.$Login->username() ?>">
<img class="uk-border-circle" width="28px" src="<?php echo $profilePictureSrc ?>" alt=""> Welcome <?php echo $Login->username() ?> <img class="uk-border-circle" width="28px" src="<?php echo $profilePictureSrc ?>" alt=""> Welcome <?php echo $Login->username() ?>
</a> </a>
<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.'logout' ?>"><?php $L->p('Logout') ?></a></li>
</ul>
</div>
</li> </li>
</ul> </ul>
</div> </div>

File diff suppressed because one or more lines are too long

6
bl-kernel/admin/themes/default/js/uikit/uikit.min.js vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

258
bl-kernel/admin/themes/default/js/uikit/upload.min.js vendored Executable file → Normal file
View File

@ -1,2 +1,256 @@
/*! UIkit 2.26.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ (function(addon) {
!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});
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;
});

View File

@ -16,7 +16,7 @@ HTML::formOpen(array('id'=>'edit-user-profile-form','class'=>'uk-form-horizontal
'value'=>$_user['username'] '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( HTML::formInputText(array(
'name'=>'usernameDisable', 'name'=>'usernameDisable',

View File

@ -40,15 +40,15 @@ if($type=='profilePicture')
$username = Sanitize::html($_POST['username']); $username = Sanitize::html($_POST['username']);
$tmpName = $username.'.png'; $tmpName = $username.'.png';
$Image = new Image(); $Image = new Image();
$Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, '400', '400', 'crop'); $Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, PROFILE_IMG_WIDTH, PROFILE_IMG_HEIGHT, 'crop');
$Image->saveImage(PATH_UPLOADS_PROFILES.$tmpName, 100, false, true); $Image->saveImage(PATH_UPLOADS_PROFILES.$tmpName, PROFILE_IMG_QUALITY, false, true);
} }
// --- OTHERS --- // --- OTHERS ---
else { else {
// Generate the thumbnail // Generate the thumbnail
$Image = new Image(); $Image = new Image();
$Image->setImage(PATH_TMP.'original'.'.'.$fileExtension, THUMBNAILS_WIDTH, THUMBNAILS_HEIGHT, 'crop'); $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. // Move the original to the upload folder.
rename(PATH_TMP.'original'.'.'.$fileExtension, PATH_UPLOADS.$tmpName); rename(PATH_TMP.'original'.'.'.$fileExtension, PATH_UPLOADS.$tmpName);

View File

@ -1,10 +1,10 @@
<?php defined('BLUDIT') or die('Bludit CMS.'); <?php defined('BLUDIT') or die('Bludit CMS.');
// Bludit version // Bludit version
define('BLUDIT_VERSION', 'GithubVersion'); define('BLUDIT_VERSION', '1.4');
define('BLUDIT_CODENAME', ''); define('BLUDIT_CODENAME', 'Spot');
define('BLUDIT_RELEASE_DATE', ''); define('BLUDIT_RELEASE_DATE', '2016-06-19');
define('BLUDIT_BUILD', ''); define('BLUDIT_BUILD', '20160619');
// Debug mode // Debug mode
define('DEBUG_MODE', TRUE); define('DEBUG_MODE', TRUE);
@ -65,12 +65,20 @@ define('ALERT_STATUS_OK', 0);
// Alert status fail // Alert status fail
define('ALERT_STATUS_FAIL', 1); define('ALERT_STATUS_FAIL', 1);
// Salt length // Amount of thumbnails shown on Bludit Quick images
define('THUMBNAILS_WIDTH', 400);
define('THUMBNAILS_HEIGHT', 400);
define('THUMBNAILS_AMOUNT', 6); 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); define('SALT_LENGTH', 8);
// Page brake string // Page brake string
@ -83,7 +91,7 @@ define('NO_PARENT_CHAR', '3849abb4cb7abd24c2d8dac17b216f17');
define('POSTS_PER_PAGE_ADMIN', 10); define('POSTS_PER_PAGE_ADMIN', 10);
// Cli mode status for new posts/pages // Cli mode status for new posts/pages
define('CLI_MODE', true); define('CLI_MODE', false);
// Cli mode status for new posts/pages // Cli mode status for new posts/pages
define('CLI_STATUS', 'published'); define('CLI_STATUS', 'published');
@ -106,6 +114,9 @@ define('TOKEN_EMAIL_TTL', '+15 minutes');
// Charset, default UTF-8. // Charset, default UTF-8.
define('CHARSET', 'UTF-8'); define('CHARSET', 'UTF-8');
// EXTREME FRIENDLY URL, TRUE for dissmiss internet standard
define('EXTREME_FRIENDLY_URL', false);
// Directory permissions // Directory permissions
define('DIR_PERMISSIONS', 0755); define('DIR_PERMISSIONS', 0755);

View File

@ -96,16 +96,20 @@ function buildPlugins()
$Language->add($database); $Language->add($database);
} }
// Push Plugin to array all plugins installed and not installed. // If the plugin is compatible with the Bludit version, add to arrays
$plugins['all'][$pluginClass] = $Plugin; if($Plugin->isCompatible()) {
// If the plugin is installed, order by hooks. // Push Plugin to array all plugins installed and not installed.
if($Plugin->installed()) $plugins['all'][$pluginClass] = $Plugin;
{
foreach($pluginsEvents as $event=>$value) // If the plugin is installed, order by hooks.
{ if($Plugin->installed()) {
if(method_exists($Plugin, $event)) {
array_push($plugins[$event], $Plugin); foreach($pluginsEvents as $event=>$value) {
if(method_exists($Plugin, $event)) {
array_push($plugins[$event], $Plugin);
}
} }
} }
} }

View File

@ -48,9 +48,20 @@ function buildThemes()
break; break;
} }
$database = $database + $metadata; // Check if the theme is compatible
if(empty($metadata['compatible'])) {
Log::set('99.themes.php'.LOG_SEP.'Metadata error, field compatible invalid '.$themePath);
break;
}
$explode = explode(',', $metadata['compatible']);
if(!in_array(BLUDIT_VERSION, $explode)) {
Log::set('99.themes.php'.LOG_SEP.'Theme incompatible '.$themePath);
break;
}
// Theme data // Theme data
$database = $database + $metadata;
array_push($themes, $database); array_push($themes, $database);
} }
} }

View File

@ -48,7 +48,7 @@ class dbLanguage extends dbJSON
return $this->db[$key]; return $this->db[$key];
} }
return ''; return $string;
} }
// Returns translation. // Returns translation.
@ -71,7 +71,7 @@ class dbLanguage extends dbJSON
public function add($array) public function add($array)
{ {
$this->db = array_merge($this->db, $array); $this->db = array_merge($array, $this->db);
} }
// Returns the item from plugin-data. // Returns the item from plugin-data.

View File

@ -15,25 +15,30 @@ class dbPosts extends dbJSON
'coverImage'=> array('inFile'=>false, 'value'=>'') 'coverImage'=> array('inFile'=>false, 'value'=>'')
); );
private $numberPosts = array(
'total'=>0,
'published'=>0
);
function __construct() function __construct()
{ {
parent::__construct(PATH_DATABASES.'posts.php'); 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) public function numberPost($total=false)
{ {
// Amount of posts, published, scheduled and draft
if($total) { 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 // Returns the database
@ -232,12 +237,12 @@ class dbPosts extends dbJSON
// Returns an array with a list of posts keys, filtered by a page number. // Returns an array with a list of posts keys, filtered by a page number.
public function getList($pageNumber, $postPerPage, $removeUnpublished=true) public function getList($pageNumber, $postPerPage, $removeUnpublished=true)
{ {
$totalPosts = $this->numberPosts['total']; $totalPosts = $this->numberPost(true);
// Remove the unpublished posts. // Remove the unpublished posts.
if($removeUnpublished) { if($removeUnpublished) {
$this->removeUnpublished(); $this->removeUnpublished();
$totalPosts = $this->numberPosts['published']; $totalPosts = $this->numberPost(true);
} }
$init = (int) $postPerPage * $pageNumber; $init = (int) $postPerPage * $pageNumber;
@ -247,7 +252,7 @@ class dbPosts extends dbJSON
if(!$outrange) { if(!$outrange) {
$tmp = array_slice($this->db, $init, $postPerPage, true); $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(); $this->restoreDB();
return $tmp; return $tmp;
@ -302,15 +307,12 @@ class dbPosts extends dbJSON
// Remove unpublished posts, status != published. // Remove unpublished posts, status != published.
public function removeUnpublished() public function removeUnpublished()
{ {
foreach($this->db as $key=>$values) foreach($this->db as $key=>$values) {
{
if($values['status']!='published') { if($values['status']!='published') {
unset($this->db[$key]); unset($this->db[$key]);
} }
} }
$this->numberPosts['published'] = count($this->db);
return true; return true;
} }

View File

@ -115,6 +115,11 @@ class Text {
public static function cleanUrl($string, $separator='-') public static function cleanUrl($string, $separator='-')
{ {
if(EXTREME_FRIENDLY_URL) {
$string = preg_replace("/[\/_|+ -]+/", $separator, $string);
return $string;
}
// Transliterate characters to ASCII // Transliterate characters to ASCII
$string = str_replace(array_keys(self::$specialChars), self::$specialChars, $string); $string = str_replace(array_keys(self::$specialChars), self::$specialChars, $string);

View File

@ -14,6 +14,14 @@ class Security extends dbJSON
parent::__construct(PATH_DATABASES.'security.php'); parent::__construct(PATH_DATABASES.'security.php');
} }
// Authentication key
// --------------------------------------------------------------------
public function key1()
{
return $this->db['key1'];
}
// ==================================================== // ====================================================
// TOKEN FOR CSRF // TOKEN FOR CSRF
// ==================================================== // ====================================================

View File

@ -200,7 +200,7 @@
"view-and-edit-your-profile": "Преглед и редактиране на профила ви.", "view-and-edit-your-profile": "Преглед и редактиране на профила ви.",
"password-must-be-at-least-6-characters-long": "Паролата трябва да е с дължина най-малко 6 символа", "password-must-be-at-least-6-characters-long": "Паролата трябва да е с дължина най-малко 6 символа",
"images": "Изображения", "images":"Изображения",
"upload-image": "Прикачи изображение", "upload-image": "Прикачи изображение",
"drag-and-drop-or-click-here": "Влачите и пускате или натиснете тук", "drag-and-drop-or-click-here": "Влачите и пускате или натиснете тук",
"insert-image": "Вмъкни изображение", "insert-image": "Вмъкни изображение",
@ -232,6 +232,10 @@
"click-on-the-image-for-options": "Кликнете върху изображението за опции.", "click-on-the-image-for-options": "Кликнете върху изображението за опции.",
"set-as-cover-image": "Задай като обложка ", "set-as-cover-image": "Задай като обложка ",
"delete-image": "Изтрий изображенито", "delete-image": "Изтрий изображенито",
"image-description": "Описание на изображението " "image-description": "Описание на изображението ",
"social-networks-links": "Социалните мрежи",
"email-access-code": "Имейл код за достъп",
"current-format": "Текущ формат"
} }

View File

@ -226,6 +226,7 @@
"click-here-to-cancel": "Clic aquí para cancelar.", "click-here-to-cancel": "Clic aquí para cancelar.",
"type-the-tag-and-press-enter": "Escriba la etiqueta y presione enter.", "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}})", "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", "there-are-no-images":"No hay imagenes",
@ -234,5 +235,8 @@
"delete-image": "Eliminar imagen", "delete-image": "Eliminar imagen",
"image-description": "Descripción de la 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"
} }

242
bl-languages/fi_FI.json Normal file
View File

@ -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-off": "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"
}

0
bl-languages/fr_FR.json Executable file → Normal file
View File

View File

@ -3,7 +3,7 @@
{ {
"native": "Русский (Россия)", "native": "Русский (Россия)",
"english-name": "Russian", "english-name": "Russian",
"last-update": "2015-11-17", "last-update": "2016-06-01",
"author": "Сергей Ворон", "author": "Сергей Ворон",
"email": "sergey@voron.pw", "email": "sergey@voron.pw",
"website": "http://voron.pw" "website": "http://voron.pw"
@ -235,5 +235,8 @@
"delete-image": "Удалить изображение", "delete-image": "Удалить изображение",
"image-description": "Описание изображения", "image-description": "Описание изображения",
"social-networks-links": "Социальные сети" "social-networks-links": "Социальные сети",
"email-access-code": "Проверочный код email",
"current-format": "Текущий формат"
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -4,16 +4,52 @@ class pluginAPI extends Plugin {
public function init() 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( $this->dbFields = array(
'ping'=>false 'ping'=>0, // 0 = false, 1 = true
'authKey'=>$authKey, // Private key
'showAllAmount'=>15 // Amount of posts and pages for return
); );
} }
public function form() public function form()
{ {
$html = '<div>'; $html = '';
$html .= '<input name="ping" id="jsping" type="checkbox" value="true" '.($this->getDbField('ping')?'checked':'').'>';
$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 .= '<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 post:</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>'; $html .= '</div>';
return $html; return $html;
@ -27,8 +63,12 @@ class pluginAPI extends Plugin {
private function ping() private function ping()
{ {
if($this->getDbField('ping')) { if($this->getDbField('ping')) {
// Get the authentication key
$authKey = $this->getDbField('authKey');
// Just a request HTTP with the website URL // Just a request HTTP with the website URL
Log::set( file_get_contents('https://www.bludit.com/api.php') ); Log::set( file_get_contents('https://www.bludit.com/api.php?authKey='.$authKey) );
} }
} }
@ -48,6 +88,19 @@ class pluginAPI extends Plugin {
return $Post->json(); 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) private function getPage($key)
{ {
// Generate the object Page // Generate the object Page
@ -64,6 +117,21 @@ class pluginAPI extends Plugin {
return $Page->json(); 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() public function beforeRulesLoad()
{ {
global $Url; global $Url;
@ -83,16 +151,18 @@ class pluginAPI extends Plugin {
// ------------------------------------------------------------ // ------------------------------------------------------------
// show post {post slug} // show post {post slug}
// show page {page slug} // show page {page slug}
// show all posts // show all posts {AUTH KEY}
// show all pages // show all pages {AUTH KEY}
// Get parameters // Get parameters
$parameters = explode('/', $URI); $parameters = explode('/', $URI);
// Check parameters are sended for($i=0; $i<4; $i++) {
for($i=0; $i<3; $i++) {
if(empty($parameters[$i])) { if(empty($parameters[$i])) {
return false; return false;
} else {
// Sanizite
$parameters[$i] = Sanitize::html($parameters[$i]);
} }
} }
@ -103,15 +173,34 @@ class pluginAPI extends Plugin {
'message'=>'Check the parameters' 'message'=>'Check the parameters'
)); ));
if($parameters[0] === 'show') { if($parameters[0]==='show') {
$key = $parameters[2]; if($parameters[1]==='all') {
if($parameters[1] === 'post') { // Authentication key from the URI
$json = $this->getPost($key); $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] === 'page') { elseif($parameters[1]==='post' || $parameters[1]==='page') {
$json = $this->getPage($key);
$key = $parameters[2];
if($parameters[1] === 'post') {
$json = $this->getPost($key);
}
elseif($parameters[1] === 'page') {
$json = $this->getPage($key);
}
} }
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -8,9 +8,9 @@ class pluginDisqus extends Plugin {
{ {
$this->dbFields = array( $this->dbFields = array(
'shortname'=>'', 'shortname'=>'',
'enablePages'=>false, 'enablePages'=>0,
'enablePosts'=>false, 'enablePosts'=>0,
'enableDefaultHomePage'=>false 'enableDefaultHomePage'=>1
); );
} }
@ -44,17 +44,20 @@ class pluginDisqus extends Plugin {
$html .= '</div>'; $html .= '</div>';
$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 .= '<label class="forCheckbox" for="jsenablePages">'.$Language->get('Enable Disqus on pages').'</label>';
$html .= '</div>'; $html .= '</div>';
$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 .= '<label class="forCheckbox" for="jsenablePosts">'.$Language->get('Enable Disqus on posts').'</label>';
$html .= '</div>'; $html .= '</div>';
$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 .= '<label class="forCheckbox" for="jsenableDefaultHomePage">'.$Language->get('Enable Disqus on default home page').'</label>';
$html .= '</div>'; $html .= '</div>';

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -5,7 +5,7 @@ class pluginMaintenanceMode extends Plugin {
public function init() public function init()
{ {
$this->dbFields = array( $this->dbFields = array(
'enable'=>false, 'enable'=>0,
'message'=>'Temporarily down for maintenance.' 'message'=>'Temporarily down for maintenance.'
); );
} }
@ -15,7 +15,8 @@ class pluginMaintenanceMode extends Plugin {
global $Language; global $Language;
$html = '<div>'; $html = '<div>';
$html .= '<input name="enable" id="jsenable" type="checkbox" value="true" '.($this->getDbField('enable')?'checked':'').'>'; $html .= '<input type="hidden" name="enable" value="0">';
$html .= '<input name="enable" id="jsenable" type="checkbox" value="1" '.($this->getDbField('enable')?'checked':'').'>';
$html .= '<label class="forCheckbox" for="jsenable">'.$Language->get('Enable maintenance mode').'</label>'; $html .= '<label class="forCheckbox" for="jsenable">'.$Language->get('Enable maintenance mode').'</label>';
$html .= '</div>'; $html .= '</div>';

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -2,21 +2,13 @@
class pluginOpenGraph extends Plugin { class pluginOpenGraph extends Plugin {
// Returns the first image that is in the content // Returns the first image from the HTML content
private function getImage($content) private function getImage($content)
{ {
$dom = new DOMDocument(); $dom = new DOMDocument();
$dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$content); $dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$content);
$finder = new DomXPath($dom); $finder = new DomXPath($dom);
/* DEPRECATED
$images = $finder->query("//img[contains(@class, 'bludit-img-opengraph')]");
if($images->length==0) {
$images = $finder->query("//img");
}
*/
$images = $finder->query("//img"); $images = $finder->query("//img");
if($images->length>0) if($images->length>0)
@ -49,6 +41,7 @@ class pluginOpenGraph extends Plugin {
switch($Url->whereAmI()) switch($Url->whereAmI())
{ {
// The user filter by post
case 'post': case 'post':
$og['type'] = 'article'; $og['type'] = 'article';
$og['title'] = $Post->title().' | '.$og['title']; $og['title'] = $Post->title().' | '.$og['title'];
@ -59,6 +52,7 @@ class pluginOpenGraph extends Plugin {
$content = $Post->content(); $content = $Post->content();
break; break;
// The user filter by page
case 'page': case 'page':
$og['type'] = 'article'; $og['type'] = 'article';
$og['title'] = $Page->title().' | '.$og['title']; $og['title'] = $Page->title().' | '.$og['title'];
@ -69,7 +63,9 @@ class pluginOpenGraph extends Plugin {
$content = $Page->content(); $content = $Page->content();
break; break;
// The user is in the homepage
default: default:
// The image it's from the first post
if(isset($posts[0])) { if(isset($posts[0])) {
$og['image'] = $posts[0]->coverImage(false); $og['image'] = $posts[0]->coverImage(false);
$content = $posts[0]->content(); $content = $posts[0]->content();
@ -85,21 +81,18 @@ class pluginOpenGraph extends Plugin {
$html .= '<meta property="og:url" content="'.$og['url'].'">'.PHP_EOL; $html .= '<meta property="og:url" content="'.$og['url'].'">'.PHP_EOL;
$html .= '<meta property="og:siteName" content="'.$og['siteName'].'">'.PHP_EOL; $html .= '<meta property="og:siteName" content="'.$og['siteName'].'">'.PHP_EOL;
$domain = trim($Site->domain(),'/'); // If the post o page doesn't have a coverImage try to get an image from the HTML content
$urlImage = $domain.HTML_PATH_UPLOADS; if($og['image']===false) {
// If the post o page doesn't have a coverImage try to get it from the content
if($og['image']===false)
{
// Get the image from the content // Get the image from the content
$src = $this->getImage( $content ); $src = $this->getImage( $content );
if($src!==false) { if($src!==false) {
$html .= '<meta property="og:image" content="'.$urlImage.$og['image'].'">'.PHP_EOL; $html .= '<meta property="og:image" content="'.DOMAIN.$src.'">'.PHP_EOL;
} }
} }
else else {
{ $html .= '<meta property="og:image" content="'.DOMAIN_UPLOADS.$og['image'].'">'.PHP_EOL;
$html .= '<meta property="og:image" content="'.$urlImage.$og['image'].'">'.PHP_EOL;
} }
return $html; return $html;

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -5,7 +5,7 @@ class pluginPages extends Plugin {
public function init() public function init()
{ {
$this->dbFields = array( $this->dbFields = array(
'homeLink'=>true, 'homeLink'=>1,
'label'=>'Pages' 'label'=>'Pages'
); );
} }
@ -20,7 +20,8 @@ class pluginPages extends Plugin {
$html .= '</div>'; $html .= '</div>';
$html .= '<div>'; $html .= '<div>';
$html .= '<input name="homeLink" id="jshomeLink" type="checkbox" value="true" '.($this->getDbField('homeLink')?'checked':'').'>'; $html .= '<input type="hidden" name="homeLink" value="0">';
$html .= '<input name="homeLink" id="jshomeLink" type="checkbox" value="1" '.($this->getDbField('homeLink')?'checked':'').'>';
$html .= '<label class="forCheckbox" for="jshomeLink">'.$Language->get('Show home link').'</label>'; $html .= '<label class="forCheckbox" for="jshomeLink">'.$Language->get('Show home link').'</label>';
$html .= '</div>'; $html .= '</div>';

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

4
bl-plugins/simplemde/css/simplemde.min.css vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

19
bl-plugins/simplemde/js/simplemde.min.js vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

View File

@ -2,9 +2,9 @@
"author": "NextStepWebs", "author": "NextStepWebs",
"email": "", "email": "",
"website": "https://github.com/NextStepWebs/simplemde-markdown-editor", "website": "https://github.com/NextStepWebs/simplemde-markdown-editor",
"version": "1.10.1", "version": "1.11.2",
"releaseDate": "2016-03-15", "releaseDate": "2016-06-14",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -14,7 +14,7 @@ class pluginsimpleMDE extends Plugin {
$this->dbFields = array( $this->dbFields = array(
'tabSize'=>'2', 'tabSize'=>'2',
'toolbar'=>'"bold", "italic", "heading", "|", "quote", "unordered-list", "|", "link", "image", "code", "horizontal-rule", "|", "preview", "side-by-side", "fullscreen", "guide"', 'toolbar'=>'"bold", "italic", "heading", "|", "quote", "unordered-list", "|", "link", "image", "code", "horizontal-rule", "|", "preview", "side-by-side", "fullscreen", "guide"',
'autosave'=>false 'autosave'=>0
); );
} }
@ -33,7 +33,8 @@ class pluginsimpleMDE extends Plugin {
$html .= '</div>'; $html .= '</div>';
$html .= '<div>'; $html .= '<div>';
$html .= '<input name="autosave" id="jsautosave" type="checkbox" value="true" '.($this->getDbField('autosave')?'checked':'').'>'; $html .= '<input type="hidden" name="autosave" value="0">';
$html .= '<input name="autosave" id="jsautosave" type="checkbox" value="1" '.($this->getDbField('autosave')?'checked':'').'>';
$html .= '<label class="forCheckbox" for="jsautosave">'.$Language->get('Autosave').'</label>'; $html .= '<label class="forCheckbox" for="jsautosave">'.$Language->get('Autosave').'</label>';
$html .= '</div>'; $html .= '</div>';

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -3,5 +3,9 @@
{ {
"name": "Anzeige aller Schlagwörter", "name": "Anzeige aller Schlagwörter",
"description": "Anzeige aller Schlagwörter in der Seitenleiste (bei Themes mit Seitenleiste)." "description": "Anzeige aller Schlagwörter in der Seitenleiste (bei Themes mit Seitenleiste)."
} },
"sort-the-tag-list-by": "Sortierung der Schlagwörter nach",
"alphabetical-order": "Alphabetische Reihenfolge",
"number-of-times-each-tag-has-been-used": "Anzahl der Verwendung",
"date-each-tag-was-first-used": "Datum der ersten Verwendung"
} }

View File

@ -3,9 +3,5 @@
{ {
"name": "Tags list", "name": "Tags list",
"description": "Shows all tags." "description": "Shows all tags."
}, }
"tag-sort-order": "Sort the tag list by",
"tag-sort-alphabetical": "Alphabetical order",
"tag-sort-count": "Number of times each tag has been used",
"tag-sort-date": "Date each tag was first used"
} }

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-28", "releaseDate": "2016-05-28",
"license": "MIT", "license": "MIT",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -20,9 +20,11 @@ class pluginTags extends Plugin {
$html .= '</div>'; $html .= '</div>';
$html .= '<div>'; $html .= '<div>';
$html .= $Language->get('tag-sort-order').': <select name="sort">'; $html .= $Language->get('Sort the tag list by').': <select name="sort">';
foreach(array('alpha'=>'tag-sort-alphabetical', 'count'=>'tag-sort-count', 'date'=>'tag-sort-date') as $key=>$value) { foreach(array('alpha' => 'Alphabetical order',
'count' => 'Number of times each tag has been used',
'date' => 'Date each tag was first used') as $key=>$value) {
if ($key == $this->getDbField('sort')) { if ($key == $this->getDbField('sort')) {
$html .= '<option value="'.$key.'" selected>'.$Language->get($value).'</option>'; $html .= '<option value="'.$key.'" selected>'.$Language->get($value).'</option>';
} else { } else {

View File

@ -14,6 +14,8 @@ a:hover {
h1, h2, h3, h4, h5, h6 { h1, h2, h3, h4, h5, h6 {
text-transform: none; text-transform: none;
letter-spacing: 0; letter-spacing: 0;
font-weight: normal;
margin-bottom: 0.8em;
} }
h1 { h1 {
@ -40,6 +42,27 @@ h6 {
font-size: 1em; font-size: 1em;
} }
p {
margin-bottom: 1.3em;
}
code {
border: 0;
color: #333;
margin: 0;
font-weight: bold;
}
pre code {
border: 1px solid #ffcb94;
font-weight: normal !important;
overflow-x: auto;
}
#main {
max-width: 980px;
}
#header { #header {
background-color: #f7f7f7; background-color: #f7f7f7;
border-bottom: 0; border-bottom: 0;
@ -123,7 +146,7 @@ header p {
} }
blockquote p { blockquote p {
margin: 10px; margin: 10px 0;
} }
.author .name { .author .name {
@ -135,10 +158,6 @@ blockquote p {
min-width: 0; min-width: 0;
} }
.plugin {
font-size: 0.9em !important;
}
.plugin > h2 { .plugin > h2 {
font-weight: normal !important; font-weight: normal !important;
text-transform: uppercase; text-transform: uppercase;

View File

@ -5,6 +5,6 @@
"version": "1.3", "version": "1.3",
"releaseDate": "2016-05-20", "releaseDate": "2016-05-20",
"license": "CCA 3.0", "license": "CCA 3.0",
"compatible": "1.0,1.1,1.1.2,1.3", "compatible": "1.0,1.1,1.1.2,1.3,1.4",
"notes": "" "notes": ""
} }

View File

@ -73,11 +73,11 @@
<ul class="actions pagination"> <ul class="actions pagination">
<?php <?php
if( Paginator::get('showNewer') ) { if( Paginator::get('showNewer') ) {
echo '<li><a href="'.Paginator::urlPrevPage().'" class="button big previous">Previous Page</a></li>'; echo '<li><a href="'.Paginator::urlPrevPage().'" class="button big previous">'.$Language->get('Prev page').'</a></li>';
} }
if( Paginator::get('showOlder') ) { if( Paginator::get('showOlder') ) {
echo '<li><a href="'.Paginator::urlNextPage().'" class="button big next">Next Page</a></li>'; echo '<li><a href="'.Paginator::urlNextPage().'" class="button big next">'.$Language->get('Next page').'</a></li>';
} }
?> ?>
</ul> </ul>

View File

@ -37,5 +37,5 @@
} }
?> ?>
</ul> </ul>
<p class="copyright"><?php echo $Site->footer() ?> | Design: <a href="http://html5up.net">HTML5 UP</a></p> <p class="copyright"><?php echo $Site->footer() ?> | <a href="http://www.bludit.com">BLUDIT</a></p>
</section> </section>