This commit is contained in:
indeferend
2021-05-23 06:26:34 +05:00
commit df825e3d2f
56 changed files with 24076 additions and 0 deletions

View File

@@ -0,0 +1,162 @@
<?$tpl->need_static(['-tui-editor','jquery','le_form','ckeditor5','highlight.js','txt_cont'])?>
<a href="/admin/blog">Назад к списку</a>
<h2>Редактор статьи</h2>
<div id="editor" class="txt_cont">
<h1><?=$head?></h1>
<?=$html_cont?>
</div>
<button onclick="save_cont();">Сохранить</button>
<div id="result_cont" class="txt_cont">
load
</div>
<script>
editor = false;
function save_cont()
{
cont_html = editor.getData();
//cont_body = cont_html.getTitle();
//alert(cont_body);
const formData = new FormData();
formData.append('clear', 'yes');
formData.append('ajax', 'yes');
formData.append('mod', 'save_content');
formData.append('data[html_cont]', cont_html);
formData.append('data[id]', <?=$id?>);
fetch('/admin/blog', {method: 'POST',body: formData}).then((resp)=>{return resp.json()}).then(
(resp)=>{
if (!resp.success) return false;
window.location.href="/admin/blog/";
}
);
//alert(response);
//console.log(response);
}
window.addEventListener('load', (event) =>
{
var options = {
toolbar: {
items: [
'bold',
'italic',
'underline',
'strikethrough',
'link',
'subscript',
'superscript',
'-',
'code',
'fontColor',
'removeFormat',
'undo',
'redo'
],
shouldNotGroupWhenFull: true
},
language: 'ru',
blockToolbar: [
'codeBlock',
'horizontalLine',
'htmlEmbed',
'imageUpload',
'imageInsert',
'indent',
'outdent',
'numberedList',
'bulletedList',
'blockQuote',
'mediaEmbed',
'insertTable',
'alignment'
],
image: {
toolbar: [
'imageTextAlternative',
'imageStyle:full',
'imageStyle:side',
'linkImage'
]
},
table: {
contentToolbar: [
'tableColumn',
'tableRow',
'mergeTableCells',
'tableCellProperties',
'tableProperties'
]
},
licenseKey: '',
mediaEmbed: {previewsInData:true},
simpleUpload: {uploadUrl: '/admin/blog'}
};
BalloonBlockEditor
.create( document.querySelector( '#editor' ), options )
.then( editor => {
window.editor = editor;
document.querySelector( '#result_cont' ).innerHTML=editor.getData();
editor.model.document.on( 'change:data', () =>
{
console.log( 'The data has changed!' );
document.querySelector( '#result_cont' ).innerHTML=editor.getData();
}
);
} )
.catch( error => {
console.error( 'Oops, something went wrong!' );
console.error( 'Please, report the following error on https://github.com/ckeditor/ckeditor5/issues with the build id and the error stack trace:' );
console.warn( 'Build id: 9v07c6uegbjg-a3pt58397xor' );
console.error( error );
} );
});
</script>
<style>
#editor,
.txt_cont {
border: 1px solid #d0d0d0;
padding: 20px 30px;
margin-top:40px;
}
</style>

47
TPL/admin/blog/list.tpl Normal file
View File

@@ -0,0 +1,47 @@
<?$tpl->need_static(['-tui-editor','jquery','le_form','ckeditor5','highlight.js','txt_cont','le_crud'])?>
<h2>Список статей</h2>
<a href="/admin/blog/edit:0">Создать</a>
<?foreach($cont_list as $id=>$cont):?>
<div href="/admin/blog/edit:<?=$id?>" class="el_cont" id="el_<?=$id?>">
<h3><a href="/admin/blog/edit:<?=$id?>"><?=empty($cont['head'])?"Статья ".$id: $cont['head']?></a>
<button style="" onclick="le_crud.rem(<?=$id?>,'#el_<?=$id?>')">Удалить</button>
</h3>
<div class="el_cont_content txt_cont">
<?=$cont['html']?>
</div>
</div>
<?endforeach;?>
<style>
.el_cont {
text-decoration:none;
display:block;
color:inherit;
border:1px solid #d0d0d0;
margin: 20px;
padding: 20px;
}
.el_cont:hover {background:#fafafa;}
.el_cont_content {border: 2px dotted #d9d9d9;padding:10px;}
</style>
<script>
window.addEventListener('load', (event) =>
{
document.querySelectorAll('pre code').forEach((block) => {
hljs.highlightElement(block);
});
});
</script>

16
TPL/admin/main.tpl Normal file
View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><?=$tpl->meta['title'];?></title>
<meta name="description" content="<?=$tpl->meta['description'];?>">
<meta name="keywords" content="<?=$tpl->meta['keywords'];?>">
<meta name="viewport" content="width=device-width,initial-scale=1">
<?=$tpl->head_cont;?>
</head>
<body>
<?=$tpl->cont_top;?>
<?=$tpl->fetch('main_body');?>
<?=$tpl->cont_bottom;?>
</body>
</html>

4
TPL/admin/main_body.tpl Normal file
View File

@@ -0,0 +1,4 @@
<!--тут будет шапка и меню...-->
<div class="page_cont" style="max-width:1000px; margin:20px auto;">
<?=$tpl->mod_cont;?>
</div>

66
TPL/admin/static_list.php Normal file
View File

@@ -0,0 +1,66 @@
<?php
$st_cnf = &LE::$TPL->static_list;
$st_dep = &LE::$TPL->static_dep;
$st_cnf[] = [
'mod'=>'highlight.js',
'pos'=>'top',
'type'=>'css',
'link'=>'//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/styles/default.min.css'];
$st_cnf[] = [
'mod'=>'highlight.js',
'pos'=>'bottom',
'type'=>'js',
'link'=>'//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js'];
$st_cnf[] = [
'mod'=>'le_form',
'type'=>'css',
'link'=>'/pub/css/le_form.css'];
$st_cnf[] = [
'mod'=>'ckeditor5',
'type'=>'js',
'link'=>'/pub/js/ckeditor5.js'];
$st_cnf[] = [
'mod'=>'codemirror',
'type'=>'css',
'link'=>'https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.48.4/codemirror.min.css'];
$st_cnf[] = [
'mod'=>'tui-editor',
'type'=>'css',
'link'=>'https://uicdn.toast.com/editor/latest/toastui-editor.min.css'];
$st_cnf[] = [
'mod'=>'tui-editor',
'type'=>'js',
'link'=>'https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js'
//'link'=>'/pub/js/tui-editor.js'
];
$st_cnf[] = [
'mod'=>'jquery',
'type'=>'js',
'link'=>'https://code.jquery.com/jquery-3.6.0.slim.min.js'];
$st_cnf[] = [
'mod'=>'txt_cont',
'type'=>'css',
'link'=>'/pub/css/txt_cont.css'];
$st_cnf[] = [
'mod'=>'embedly',
'type'=>'js',
'link'=>'//cdn.embedly.com/widgets/platform.js'];
$st_cnf[] = [
'mod'=>'le_crud',
'type'=>'js',
'link'=>'/pub/js/le_crud.js'];
$st_dep['tui-editor']=['codemirror','oth'];