Merge pull request #1 from dignajar/master

New pull request
This commit is contained in:
clickwork-git 2015-11-05 20:25:02 +01:00
commit 18db825f6d
24 changed files with 272 additions and 41 deletions

View File

@ -22,14 +22,14 @@ Social
Requirements Requirements
------------ ------------
You only need a Webserver with PHP support. You only need a web server with PHP support.
- PHP 5.3 or higher. - PHP 5.3 or higher.
- PHP module [mbstring](http://php.net/manual/en/book.mbstring.php) for full UTF-8 support. - PHP [mbstring](http://php.net/manual/en/book.mbstring.php) module for full UTF-8 support.
- Webserver: - Webserver:
* Apache with module [mod_rewrite](http://httpd.apache.org/docs/current/mod/mod_rewrite.html) * Apache with [mod_rewrite](http://httpd.apache.org/docs/current/mod/mod_rewrite.html) module.
* Lighttpd with module [mod_rewrite](http://redmine.lighttpd.net/projects/1/wiki/docs_modrewrite) * Lighttpd with [mod_rewrite](http://redmine.lighttpd.net/projects/1/wiki/docs_modrewrite) module.
* Nginx with module [ngx_http_rewrite_module](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html) * Nginx with [ngx_http_rewrite_module](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html) module.
Installation guide Installation guide
------------------ ------------------

View File

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

View File

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

View File

@ -0,0 +1,2 @@
/*! UIkit 2.23.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-progress{box-sizing:border-box;height:20px;margin-bottom:15px;background:#eee;overflow:hidden;line-height:20px}*+.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}.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}}

View File

@ -0,0 +1,2 @@
/*! UIkit 2.23.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
.uk-dragover{box-shadow:0 0 20px rgba(100,100,100,.3)}

View File

@ -15,11 +15,16 @@
<link rel="stylesheet" type="text/css" href="./css/uikit.almost-flat.min.css?version=<?php echo BLUDIT_VERSION ?>"> <link rel="stylesheet" type="text/css" href="./css/uikit.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/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="./css/jquery.datetimepicker.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/upload.min.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/form-file.min.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/placeholder.min.css?version=<?php echo BLUDIT_VERSION ?>">
<link rel="stylesheet" type="text/css" href="./css/progress.min.css?version=<?php echo BLUDIT_VERSION ?>">
<!-- Javascript --> <!-- Javascript -->
<script charset="utf-8" src="./js/jquery.min.js?version=<?php echo BLUDIT_VERSION ?>"></script> <script charset="utf-8" src="./js/jquery.min.js?version=<?php echo BLUDIT_VERSION ?>"></script>
<script charset="utf-8" src="./js/uikit.min.js?version=<?php echo BLUDIT_VERSION ?>"></script> <script charset="utf-8" src="./js/uikit.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="./js/jquery.datetimepicker.js?version=<?php echo BLUDIT_VERSION ?>"></script>
<script charset="utf-8" src="./js/upload.min.js?version=<?php echo BLUDIT_VERSION ?>"></script>
<!-- Plugins --> <!-- Plugins -->
<?php Theme::plugins('adminHead') ?> <?php Theme::plugins('adminHead') ?>

View File

@ -125,4 +125,78 @@ class HTML {
$html = ''; $html = '';
} }
public static function uploader()
{
global $L;
$html = '
<div id="upload-drop" class="uk-placeholder uk-text-center">
<i class="uk-icon-cloud-upload uk-icon-medium uk-text-muted uk-margin-small-right"></i>'.$L->g('Upload Image').'<br><a class="uk-form-file">'.$L->g('Drag and drop or click here').'<input id="upload-select" type="file"></a>
</div>
<div id="progressbar" class="uk-progress uk-hidden">
<div class="uk-progress-bar" style="width: 0%;">0%</div>
</div>
';
$html .= '<select id="jsimageList" class="uk-width-1-1" size="10">';
$imagesList = Filesystem::listFiles(PATH_UPLOADS,'*','*',true);
foreach($imagesList as $file) {
$html .= '<option value="">'.basename($file).'</option>';
}
$html .= '</select>';
$html .= '
<div class="uk-form-row uk-margin-top">
<button id="jsaddImage" class="uk-button uk-button-primary" type="button"><i class="uk-icon-angle-double-left"></i> '.$L->g('Insert Image').'</button>
</div>
';
$html .= '
<script>
$(document).ready(function() {
$("#jsaddImage").on("click", function() {
var filename = $("#jsimageList option:selected").text();
var textareaValue = $("#jscontent").val();
$("#jscontent").val(textareaValue + "<img src=\""+filename+"\" alt=\"\">" + "\n");
});
$(function()
{
var progressbar = $("#progressbar");
var bar = progressbar.find(".uk-progress-bar");
var settings =
{
type: "json",
action: "'.HTML_PATH_ADMIN_ROOT.'ajax/uploader",
allow : "*.(jpg|jpeg|gif|png)",
loadstart: function() {
bar.css("width", "0%").text("0%");
progressbar.removeClass("uk-hidden");
},
progress: function(percent) {
percent = Math.ceil(percent);
bar.css("width", percent+"%").text(percent+"%");
},
allcomplete: function(response) {
bar.css("width", "100%").text("100%");
setTimeout(function() { progressbar.addClass("uk-hidden"); }, 250);
$("#jsimageList").prepend("<option value=\'"+response.filename+"\' selected=\'selected\'>"+response.filename+"</option>");
}
};
var select = UIkit.uploadSelect($("#upload-select"), settings);
var drop = UIkit.uploadDrop($("#upload-drop"), settings);
});
});
</script>';
echo $html;
}
} }

2
admin/themes/default/js/upload.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
/*! UIkit 2.23.0 | 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});

View File

@ -57,6 +57,7 @@ echo '<div class="uk-width-large-3-10">';
// Tabs, general and advanced mode // Tabs, general and advanced mode
echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">'; echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">';
echo '<li><a href="">'.$L->g('General').'</a></li>'; echo '<li><a href="">'.$L->g('General').'</a></li>';
echo '<li><a href="">'.$L->g('Images').'</a></li>';
echo '<li><a href="">'.$L->g('Advanced').'</a></li>'; echo '<li><a href="">'.$L->g('Advanced').'</a></li>';
echo '</ul>'; echo '</ul>';
@ -86,6 +87,13 @@ echo '<div class="uk-width-large-3-10">';
echo '</li>'; echo '</li>';
// ---- IMAGES TAB ----
echo '<li>';
HTML::uploader();
echo '</li>';
// ---- ADVANCED TAB ---- // ---- ADVANCED TAB ----
echo '<li>'; echo '<li>';

View File

@ -51,6 +51,7 @@ echo '<div class="uk-width-large-3-10">';
// Tabs, general and advanced mode // Tabs, general and advanced mode
echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">'; echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">';
echo '<li><a href="">'.$L->g('General').'</a></li>'; echo '<li><a href="">'.$L->g('General').'</a></li>';
echo '<li><a href="">'.$L->g('Images').'</a></li>';
echo '<li><a href="">'.$L->g('Advanced').'</a></li>'; echo '<li><a href="">'.$L->g('Advanced').'</a></li>';
echo '</ul>'; echo '</ul>';
@ -80,6 +81,13 @@ echo '<div class="uk-width-large-3-10">';
echo '</li>'; echo '</li>';
// ---- IMAGES TAB ----
echo '<li>';
HTML::uploader();
echo '</li>';
// ---- ADVANCED TAB ---- // ---- ADVANCED TAB ----
echo '<li>'; echo '<li>';

View File

@ -44,8 +44,10 @@ echo '<div class="uk-width-large-3-10">';
// Tabs, general and advanced mode // Tabs, general and advanced mode
echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">'; echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">';
echo '<li><a href="">'.$L->g('General').'</a></li>'; echo '<li><a href="">'.$L->g('General').'</a></li>';
echo '<li><a href="">'.$L->g('Images').'</a></li>';
echo '<li><a href="">'.$L->g('Advanced').'</a></li>'; echo '<li><a href="">'.$L->g('Advanced').'</a></li>';
echo '</ul>'; echo '</ul>';
echo '<ul id="tab-options" class="uk-switcher uk-margin">'; echo '<ul id="tab-options" class="uk-switcher uk-margin">';
// ---- GENERAL TAB ---- // ---- GENERAL TAB ----
@ -72,6 +74,13 @@ echo '<div class="uk-width-large-3-10">';
echo '</li>'; echo '</li>';
// ---- IMAGES TAB ----
echo '<li>';
HTML::uploader();
echo '</li>';
// ---- ADVANCED TAB ---- // ---- ADVANCED TAB ----
echo '<li>'; echo '<li>';

View File

@ -44,6 +44,7 @@ echo '<div class="uk-width-large-3-10">';
// Tabs, general and advanced mode // Tabs, general and advanced mode
echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">'; echo '<ul class="uk-tab" data-uk-tab="{connect:\'#tab-options\'}">';
echo '<li><a href="">'.$L->g('General').'</a></li>'; echo '<li><a href="">'.$L->g('General').'</a></li>';
echo '<li><a href="">Images</a></li>';
echo '<li><a href="">'.$L->g('Advanced').'</a></li>'; echo '<li><a href="">'.$L->g('Advanced').'</a></li>';
echo '</ul>'; echo '</ul>';
@ -73,6 +74,13 @@ echo '<div class="uk-width-large-3-10">';
echo '</li>'; echo '</li>';
// ---- IMAGES TAB ----
echo '<li>';
HTML::uploader();
echo '</li>';
// ---- ADVANCED TAB ---- // ---- ADVANCED TAB ----
echo '<li>'; echo '<li>';

35
kernel/ajax/uploader.php Normal file
View File

@ -0,0 +1,35 @@
<?php header('Content-Type: application/json');
// Source
$source = $_FILES['files']['tmp_name'][0];
// Filename
$filename = Text::lowercase($_FILES['files']['name'][0]);
$fileExtension = pathinfo($filename, PATHINFO_EXTENSION);
$filename = pathinfo($filename, PATHINFO_FILENAME);
$filename = Text::replace(' ', '', $filename);
$filename = Text::replace('_', '', $filename);
if( file_exists(PATH_UPLOADS.$filename.'.'.$fileExtension) )
{
$number = 0;
$tmpName = $filename.'_'.$number.'.'.$fileExtension;
while(file_exists(PATH_UPLOADS.$tmpName)) {
$number++;
$tmpName = $filename.'_'.$number.'.'.$fileExtension;
}
}
if(empty($tmpName)) {
$tmpName = $filename.'.'.$fileExtension;
}
move_uploaded_file($source, PATH_UPLOADS.$tmpName);
exit(json_encode(array(
'status'=>0,
'filename'=>$tmpName,
'date'=>date("F d Y H:i:s.", filemtime(PATH_UPLOADS.$tmpName))
)));
?>

View File

@ -16,7 +16,7 @@ class Filesystem {
return $directories; return $directories;
} }
public static function listFiles($path, $regex='*', $extension) public static function listFiles($path, $regex='*', $extension='*', $sortByDate=false)
{ {
$files = glob($path.$regex.'.'.$extension); $files = glob($path.$regex.'.'.$extension);
@ -24,6 +24,10 @@ class Filesystem {
return array(); return array();
} }
if($sortByDate) {
usort($files, create_function('$a,$b', 'return filemtime($b) - filemtime($a);'));
}
return $files; return $files;
} }

View File

@ -5,6 +5,7 @@ echo '<script>'.PHP_EOL;
echo 'var HTML_PATH_ROOT = "'.HTML_PATH_ROOT.'";'.PHP_EOL; echo 'var HTML_PATH_ROOT = "'.HTML_PATH_ROOT.'";'.PHP_EOL;
echo 'var HTML_PATH_ADMIN_ROOT = "'.HTML_PATH_ADMIN_ROOT.'";'.PHP_EOL; echo 'var HTML_PATH_ADMIN_ROOT = "'.HTML_PATH_ADMIN_ROOT.'";'.PHP_EOL;
echo 'var HTML_PATH_ADMIN_THEME = "'.HTML_PATH_ADMIN_THEME.'";'.PHP_EOL; echo 'var HTML_PATH_ADMIN_THEME = "'.HTML_PATH_ADMIN_THEME.'";'.PHP_EOL;
echo 'var HTML_PATH_UPLOADS = "'.HTML_PATH_UPLOADS.'";'.PHP_EOL;
echo 'var NO_PARENT_CHAR = "'.NO_PARENT_CHAR.'";'.PHP_EOL; echo 'var NO_PARENT_CHAR = "'.NO_PARENT_CHAR.'";'.PHP_EOL;

View File

@ -199,5 +199,9 @@
"manage-users": "Manage users", "manage-users": "Manage users",
"view-and-edit-your-profile": "View and edit your profile.", "view-and-edit-your-profile": "View and edit your profile.",
"password-must-be-at-least-6-characters-long": "Password must be at least 6 characters long" "password-must-be-at-least-6-characters-long": "Password must be at least 6 characters long",
"images": "Images",
"upload-image": "Upload image",
"drag-and-drop-or-click-here": "Drag and drop or click here",
"insert-image": "Insert image"
} }

View File

@ -3,7 +3,7 @@
{ {
"native": "Русский (Россия)", "native": "Русский (Россия)",
"english-name": "Russian", "english-name": "Russian",
"last-update": "2015-09-29", "last-update": "2015-11-05",
"author": "Сергей Ворон", "author": "Сергей Ворон",
"email": "sergey@voron.pw", "email": "sergey@voron.pw",
"website": "voron.pw" "website": "voron.pw"
@ -42,7 +42,7 @@
"email": "Email", "email": "Email",
"settings": "Настройки", "settings": "Настройки",
"general": "Основные", "general": "Основные",
"advanced": "Дополнительные", "advanced": "Расширенные",
"regional": "Региональные", "regional": "Региональные",
"about": "О системе", "about": "О системе",
"login": "Вход", "login": "Вход",
@ -70,8 +70,8 @@
"timezone": "Часовой пояс", "timezone": "Часовой пояс",
"locale": "Локализация", "locale": "Локализация",
"new-post": "Добавить запись", "new-post": "Добавить запись",
"html-and-markdown-code-supported": "Поддерживается код HTML и Markdown",
"new-page": "Добавить страницу", "new-page": "Добавить страницу",
"html-and-markdown-code-supported": "Поддерживается код HTML и Markdown",
"manage-posts": "Управление записями", "manage-posts": "Управление записями",
"published-date": "Дата публикации", "published-date": "Дата публикации",
"modified-date": "Дата изменения", "modified-date": "Дата изменения",
@ -88,7 +88,7 @@
"powered-by": "Работает на", "powered-by": "Работает на",
"recent-posts": "Последние записи", "recent-posts": "Последние записи",
"manage-pages": "Управление страницами", "manage-pages": "Управление страницами",
"advanced-options": "Дополнительные опции", "advanced-options": "Расширенные опции",
"user-deleted": "Пользователь удален", "user-deleted": "Пользователь удален",
"page-added-successfully": "Страница успешно добавлена", "page-added-successfully": "Страница успешно добавлена",
"post-added-successfully": "Запись успешно добавлена", "post-added-successfully": "Запись успешно добавлена",
@ -103,23 +103,23 @@
"the-password-and-confirmation-password-do-not-match":"Пароли не совпадают", "the-password-and-confirmation-password-do-not-match":"Пароли не совпадают",
"user-has-been-added-successfully": "Пользователь успешно добавлен", "user-has-been-added-successfully": "Пользователь успешно добавлен",
"you-do-not-have-sufficient-permissions": "У вас не достаточно прав для доступа к этой странице, обратитесь к администратору.", "you-do-not-have-sufficient-permissions": "У вас не достаточно прав для доступа к этой странице, обратитесь к администратору.",
"settings-advanced-writting-settings": "Настройки->Дополнительные->Настройки написания", "settings-advanced-writting-settings": "Настройки->Расширенные->Настройки написания",
"new-posts-and-pages-synchronized": "Новые записи и страницы синхронизированы.", "new-posts-and-pages-synchronized": "Новые записи и страницы синхронизированы.",
"you-can-choose-the-users-privilege": "Вы можете выбрать привилегию пользователя. Роль редактора позволяет только создание страниц и записей.", "you-can-choose-the-users-privilege": "Вы можете выбрать привилегию пользователя. Роль редактора позволяет только создание страниц и записей.",
"email-will-not-be-publicly-displayed": "Email не будет отображаться публично. Рекомендуется для восстановления пароля и уведомлений.", "email-will-not-be-publicly-displayed": "Email не будет отображаться публично. Рекомендуется для восстановления пароля и уведомлений.",
"use-this-field-to-name-your-site": "Используйте это поле, для названия вашего сайта, оно появится в верхней части каждой страницы сайта.", "use-this-field-to-name-your-site": "Используйте это поле, для названия сайта, оно появится в верхней части каждой страницы сайта.",
"use-this-field-to-add-a-catchy-phrase": "Используйте это поле, чтобы добавить броскую фразу на вашем сайте.", "use-this-field-to-add-a-catchy-phrase": "Используйте это поле, чтобы добавить броскую фразу на сайте.",
"you-can-add-a-site-description-to-provide": "Вы можете добавить краткое описание вашего сайта.", "you-can-add-a-site-description-to-provide": "Вы можете добавить краткое описание сайта.",
"you-can-add-a-small-text-on-the-bottom": "Вы можете добавить небольшой текст в нижней части каждой страницы. Например: авторское право, имя владельца, даты и т.д.", "you-can-add-a-small-text-on-the-bottom": "Вы можете добавить небольшой текст в нижней части каждой страницы. Например: авторское право, имя владельца, даты и т.д.",
"number-of-posts-to-show-per-page": "Количество записей для отображения на странице.", "number-of-posts-to-show-per-page": "Количество записей для отображения на странице.",
"the-url-of-your-site": "URL вашего сайта.", "the-url-of-your-site": "URL сайта.",
"add-or-edit-description-tags-or": "Добавить или редактировать описание, теги или изменить дружественный URL.", "add-or-edit-description-tags-or": "Добавить или редактировать описание, теги или изменить дружественный URL.",
"select-your-sites-language": "Выберите язык вашего сайта.", "select-your-sites-language": "Выберите язык сайта.",
"select-a-timezone-for-a-correct": "Выберите часовой пояс для корректного отображения даты и времени на вашем сайте.", "select-a-timezone-for-a-correct": "Выберите часовой пояс для корректного отображения даты и времени на сайте.",
"you-can-use-this-field-to-define-a-set-of": "Вы можете использовать это поле, чтобы определить набор параметров, связанных с языком, страной и особых предпочтений.", "you-can-use-this-field-to-define-a-set-of": "Вы можете использовать это поле, чтобы определить набор параметров, связанных с языком, страной и особых предпочтений.",
"you-can-modify-the-url-which-identifies":"Вы можете изменить URL, который идентифицирует страницу или запись с помощью удобочитаемых ключевых слов. Не более 150 символов.", "you-can-modify-the-url-which-identifies":"Вы можете изменить URL, который идентифицирует страницу или запись с помощью удобочитаемых ключевых слов. Не более 150 символов.",
"this-field-can-help-describe-the-content": "Это поле может помочь описать содержимое в нескольких словах. Не более 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-all-its-posts":"Удалить пользователя и все его записи",
"delete-the-user-and-associate-its-posts-to-admin-user": "Удалить пользователя и связать его записи с администратором", "delete-the-user-and-associate-its-posts-to-admin-user": "Удалить пользователя и связать его записи с администратором",
"read-more": "Читать далее", "read-more": "Читать далее",
@ -127,8 +127,8 @@
"default-home-page": "Домашняя страница по умолчанию", "default-home-page": "Домашняя страница по умолчанию",
"version": "Версия", "version": "Версия",
"there-are-no-drafts": "Черновиков нет", "there-are-no-drafts": "Черновиков нет",
"create-a-new-article-for-your-blog":"Создать новую запись для своего блога.", "create-a-new-article-for-your-blog":"Создать новую запись для блога.",
"create-a-new-page-for-your-website":"Создать новую страницу на вашем сайте.", "create-a-new-page-for-your-website":"Создать новую страницу на сайте.",
"invite-a-friend-to-collaborate-on-your-website":"Пригласить друга сотрудничать на вашем сайте.", "invite-a-friend-to-collaborate-on-your-website":"Пригласить друга сотрудничать на вашем сайте.",
"change-your-language-and-region-settings":"Изменить настройки языка и региона", "change-your-language-and-region-settings":"Изменить настройки языка и региона",
"language-and-timezone":"Язык и часовой пояс", "language-and-timezone":"Язык и часовой пояс",
@ -159,7 +159,7 @@
"ip-address-has-been-blocked": "IP адрес заблокирован.", "ip-address-has-been-blocked": "IP адрес заблокирован.",
"try-again-in-a-few-minutes": "Попробуйте еще раз через несколько минут.", "try-again-in-a-few-minutes": "Попробуйте еще раз через несколько минут.",
"date": "Дата", "date": "Дата",
"you-can-schedule-the-post-just-select-the-date-and-time": "Вы можете запланировать запись, просто выберите дату и время.",
"scheduled": "Запланировано", "scheduled": "Запланировано",
"publish": "Опубликовать", "publish": "Опубликовать",
"please-check-your-theme-configuration": "Пожалуйста, проверьте конфигурацию вашей темы.", "please-check-your-theme-configuration": "Пожалуйста, проверьте конфигурацию вашей темы.",
@ -168,5 +168,40 @@
"disabled": "Отключен", "disabled": "Отключен",
"cli-mode": "Режим CLI", "cli-mode": "Режим CLI",
"command-line-mode": "Режим командной строки", "command-line-mode": "Режим командной строки",
"enable-the-command-line-mode-if-you-add-edit": "Включите режим командной строки, если вы добавляете, изменяете или удаляете записи и страницы из файловой системы" "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":"Письма будут отправлены с этого адреса.",
"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": "Вставить изображение"
} }

View File

@ -3,7 +3,7 @@
{ {
"native": "Traditional Chinese (Taiwan)", "native": "Traditional Chinese (Taiwan)",
"english-name": "Traditional Chinese", "english-name": "Traditional Chinese",
"last-update": "2015-10-27", "last-update": "2015-11-05",
"author": "Ethan Chen", "author": "Ethan Chen",
"email": "ethan42411@gmail.com", "email": "ethan42411@gmail.com",
"website": "http://single4.ml" "website": "http://single4.ml"
@ -196,5 +196,11 @@
"general-settings": "一般設定", "general-settings": "一般設定",
"advanced-settings": "進階設定", "advanced-settings": "進階設定",
"manage-users": "管理使用者", "manage-users": "管理使用者",
"view-and-edit-your-profile": "查看與編輯您的個人資料。" "view-and-edit-your-profile": "查看與編輯您的個人資料。",
"password-must-be-at-least-6-characters-long": "密碼長度必須在6字元以上",
"images": "圖片",
"upload-image": "上傳圖片",
"drag-and-drop-or-click-here": "拖曳您的圖片到這裡或是點選這裡選擇圖片",
"insert-image": "插入圖片"
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
This version of SimpleMDE have a little changes for Bludit.
--- Image preview hack ---
Original
<img src="'+e+'"
Bludit hack
<img src="'+HTML_PATH_UPLOADS+e+'"

File diff suppressed because one or more lines are too long

View File

@ -46,10 +46,13 @@ class pluginsimpleMDE extends Plugin {
// Path plugin. // Path plugin.
$pluginPath = $this->htmlPath(); $pluginPath = $this->htmlPath();
// Load CSS // SimpleMDE css
$html .= '<link rel="stylesheet" href="'.$pluginPath.'css/simplemde.min.css">'; $html .= '<link rel="stylesheet" href="'.$pluginPath.'css/simplemde.min.css">';
// Load Javascript // Font-awesome is a dependency of SimpleMDE
$html .= '<link rel="stylesheet" href="'.$pluginPath.'css/font-awesome.min.css">';
// SimpleMDE js
$html .= '<script src="'.$pluginPath.'js/simplemde.min.js"></script>'; $html .= '<script src="'.$pluginPath.'js/simplemde.min.js"></script>';
// Hack for Bludit // Hack for Bludit
@ -85,11 +88,19 @@ class pluginsimpleMDE extends Plugin {
toolbarGuideIcon: true, toolbarGuideIcon: true,
autofocus: false, autofocus: false,
lineWrapping: true, lineWrapping: true,
autoDownloadFontAwesome: false,
indentWithTabs: true, indentWithTabs: true,
tabSize: '.$this->getDbField('tabSize').', tabSize: '.$this->getDbField('tabSize').',
spellChecker: false, spellChecker: false,
toolbar: ['.Sanitize::htmlDecode($this->getDbField('toolbar')).'] toolbar: ['.Sanitize::htmlDecode($this->getDbField('toolbar')).']
});'; });';
$html .= '$("#jsaddImage").on("click", function() {
var filename = $("#jsimageList option:selected" ).text();
var text = simplemde.value();
simplemde.value(text + "![alt text]("+filename+")" + "\n");
});';
$html .= '}); </script>'; $html .= '}); </script>';
} }