25 if (isset(
$_GET[
'id'])){
29 if(isset($_POST[
'save'])){
30 $page->deleteContent(
"../");
31 $page->id =
$db->quote($_POST[
'id']);
32 $page->gid =
$db->quote($_POST[
'gid']);
33 $page->title =
$db->quote($_POST[
'title']);
34 $page->alias =
$db->quote($_POST[
'alias']);
35 $page->searchstring =
$db->quote($_POST[
'searchstring']);
36 $page->published =
$db->quote($_POST[
'published']);
37 $page->date_publish =
$db->quote($_POST[
'date_publish']);
38 $page->date_unpublish =
$db->quote($_POST[
'date_unpublish']);
39 $page->bgimage =
$db->quote($_POST[
'bgimage']);
40 $page->language =
$db->quote($_POST[
'language']);
41 $page->meta_local =
$db->quote($_POST[
'meta_local']);
42 $page->meta_keywords =
$db->quote($_POST[
'meta_keywords']);
47 $_POST[
'content'] = utf8_encode($_POST[
'content']);
48 $_POST[
'content'] = utf8_decode($_POST[
'content']);
50 if (
$page->writeContent(stripslashes(str_replace(
'\r\n',
'', ($_POST[
'content']))))) {
51 print
YAWK\alert::draw(
"success",
"$lang[SUCCESS]",
"$lang[PAGE_SAVED]",
"", 800);
54 print
YAWK\alert::draw(
"warning",
"$lang[ERROR]",
"$lang[FILE] $page->alias $lang[NOT_SAVED]. $lang[CHECK_CHMOD]",
"",
"8200");
59 print
YAWK\alert::draw(
"warning",
"$lang[ERROR]",
"$lang[PAGE_DB_FAILED] $page->alias $lang[DB_WRITE_FAILED]",
"",
"8200");
69 $page->alias = str_replace(
" ",
"-",
$page->alias);
74 $page->alias = preg_replace(
"/[^a-z0-9\-\/]/i",
"",
$page->alias);
77 if (
$page->alias ===
"index") { $readonly =
"readonly"; }
80 <!-- bootstrap
date-timepicker -->
81 <link
type=
"text/css" href=
"../system/engines/datetimepicker/css/datetimepicker.min.css" rel=
"stylesheet">
82 <script
type=
"text/javascript" src=
"../system/engines/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
86 border: 1px solid #ccc;
93 #sidebar .component:hover {
94 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
95 transform: scale(1.02);
101 border: 2px dashed #ccc;
103 background-color: #f8f9fa;
106 padding-bottom: 120px;
110 border-color: #007bff;
111 background-color: #e9ecef;
124 .component-controls
i {
135 .component-controls {
145 border: 1px solid red;
147 .hovered .component-controls {
148 border: 2px solid red;
158 <!-- include summernote css/js-->
159 <!-- include codemirror (codemirror.css, codemirror.js, xml.js) -->
160 <link rel=
"stylesheet" type=
"text/css" href=
"../system/engines/codemirror/codemirror.min.css">
161 <link rel=
"stylesheet" type=
"text/css" href=
"../system/engines/codemirror/themes/<?php echo $editorSettings['editorTheme']; ?>.css">
162 <link rel=
"stylesheet" type=
"text/css" href=
"../system/engines/codemirror/show-hint.min.css">
163 <script
type=
"text/javascript" src=
"../system/engines/codemirror/codemirror-compressed.js"></script>
164 <script
type=
"text/javascript" src=
"../system/engines/codemirror/auto-refresh.js"></script>
167 <link href=
"../system/engines/summernote/dist/summernote.css" rel=
"stylesheet">
168 <script src=
"../system/engines/summernote/dist/summernote.min.js"></script>
169 <script src=
"../system/engines/summernote/dist/summernote-cleaner.js"></script>
170 <script src=
"../system/engines/summernote/dist/summernote-image-attributes.js"></script>
171 <script src=
"../system/engines/summernote/dist/summernote-floats-bs.js"></script>
173 <script
type=
"text/javascript">
174 function saveHotkey() {
177 if (!(
event.which === 115 && (navigator.platform.match(
"Mac") ?
event.metaKey :
event.ctrlKey)) && !(
event.which === 19))
return true;
178 event.preventDefault();
183 $(document).keydown(
function (
event) {
184 if (
event.which === 83 && (navigator.platform.match(
"Mac") ?
event.metaKey :
event.ctrlKey)) {
185 event.preventDefault();
186 $(
'#savebutton').click();
194 $(document).
ready(
function() {
196 var editor = (
'textarea#summernote');
197 var savebutton = (
'#savebutton');
198 var savebuttonIcon = (
'#savebuttonIcon');
201 $(savebutton).click(
function() {
202 $(savebutton).removeClass(
'btn btn-success').addClass(
'btn btn-warning');
203 $(savebuttonIcon).removeClass(
'fa fa-check').addClass(
'fa fa-spinner fa-spin fa-fw');
206 if ($(editor).summernote(
'codeview.isActivated')) {
208 $(editor).summernote(
'codeview.deactivate');
214 if ( $(editor).length) {
215 var text = $(editor).val();
217 var frontend = text.replace(/<img src=\x22..\/media/
g,
"<img src=\x22media");
219 $(editor).val(frontend);
229 if ( $(editor).length) {
230 var text = $(editor).val();
232 var
backend = text.replace(/<img src=\x22media/
g,
"<img src=\x22../media");
242 echo
"$(editor).on('summernote.init', function() {
243 // toggle editor to codeview
244 $(editor).summernote('codeview.toggle');
250 $(
"#summernote").summernote({
259 [
'imagesize', [
'imageSize100',
'imageSize50',
'imageSize25']],
261 [
'floatBS', [
'floatBSLeft',
'floatBSNone',
'floatBSRight']],
262 [
'custom', [
'imageAttributes',
'imageShape']],
263 [
'remove', [
'removeMedia']]
267 lang:
'<?php echo $lang['CURRENT_LANGUAGE
']; ?>',
271 theme:
'<?php echo $editorSettings['editorTheme
']; ?>',
276 scrollbarStyle:
null,
278 autoCloseBrackets: <?php echo
$editorSettings[
'editorCloseBrackets'];?>,
280 value:
"<html>\n " + document.documentElement.innerHTML +
"\n</html>",
282 matchTags: {bothTags: <?php echo
$editorSettings[
'editorMatchTags']; ?>},
283 extraKeys: {
"Ctrl-J":
"toMatchingTag",
"Ctrl-Space":
"autocomplete"},
306 <script
type=
"text/javascript" >
307 $(document).
ready(
function() {
309 $(
'#datetimepicker1').datetimepicker({
310 format:
'YYYY-MM-DD HH:mm:ss'
313 $(
'#datetimepicker2').datetimepicker({
314 format:
'YYYY-MM-DD HH:mm:ss'
325 <!-- Content Wrapper. Contains page content -->
326 <div class=\"content-wrapper\" id=\"content-FX\">
327 <!-- Content Header (Page header) -->
328 <section class=\"content-header\">";
330 echo backend::getTitle(
$page->title,
$lang[
'PAGE_EDIT']);
331 echo
"<ol class=\"breadcrumb\">
332 <li><a href=\"index.php\" title=\"$lang[DASHBOARD]\"><i class=\"fa fa-dashboard\"></i> $lang[DASHBOARD]</a></li>
333 <li><a href=\"index.php?page=pages\" title=\"$lang[PAGES]\"> $lang[PAGES]</a></li>
334 <li class=\"active\"><a href=\"index.php?page=page-edit\" title=\"$lang[PAGE_EDIT]\"> $lang[PAGE_EDIT]</a></li>
337 <!-- Main content -->
338 <section class=\"content\">";
342 <form
name=
"form" role=
"form" action=
"index.php?page=page-edit&site=<?php print $page->alias; ?>&id=<?php echo $page->id; ?>" method=
"post">
344 <div
class=
"col-md-8">
346 <label
for=
"summernote"></label>
347 <textarea
id=
"summernote" name=
"content"><?php print
$page->readContent(
"../"); ?> </textarea>
350 <div
class=
"text-right">
351 <button
type=
"submit" id=
"savebutton" name=
"save" class=
"btn btn-success">
352 <
i id=
"savebuttonIcon" class=
"fa fa-check"></
i> &
nbsp;<?php print
$lang[
'SAVE_CHANGES']; ?>
356 <input
type=
"hidden" name=
"searchstring" value=
"<?php print $page->alias; ?>.html" >
357 <input
type=
"hidden" name=
"id" value=
"<?php print $_GET['id']; ?>" >
362 <div
class=
"col-md-4">
364 <!-- TITLE and FILENAME -->
365 <div
class=
"box box-default">
366 <div
class=
"box-header with-border">
367 <h3
class=
"box-title"><
i class=
"fa fa-file-text-o"></
i>&
nbsp;&
nbsp;<?php echo
$lang[
'SETTINGS']; ?> <small> <?php echo
"$lang[TITLE] $lang[AND] $lang[FILENAME]"; ?></small></h3>
369 <div
class=
"box-tools pull-right">
370 <button
type=
"button" class=
"btn btn-box-tool" data-
widget=
"collapse"><
i class=
"fa fa-minus"></
i>
375 <div
class=
"box-body" style=
"display: block;">
376 <label
for=
"title"><?php print
$lang[
'TITLE']; ?>
377 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_TITLE']); ?>
379 <input
id=
"title" class=
"form-control" name=
"title" maxlength=
"255" value=
"<?php print $page->title; ?>">
381 <label
for=
"alias"><?php echo
$lang[
'FILENAME']; ?>
382 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_FILENAME']); ?>
384 <input
id=
"alias" class=
"form-control" name=
"alias" maxlength=
"255"
385 <?php
if (isset($readonly)) { print $readonly; } ?> value=
"<?php print $page->alias; ?>">
387 <label
for=
"language"><?php print
$lang[
'LANGUAGE']; ?>
388 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_LANGUAGE']); ?>
390 <select
id=
"language" name=
"language" class=
"form-control">
392 if (isset(
$page->language) && (!empty(
$page->language)))
394 echo
"<option value=".$page->language.
" selected>$page->language</option>";
396 echo \YAWK\language::drawLanguageSelectOptions();
407 <!-- CONTENT BUILDER -->
408 <div
class=
"box box-default">
409 <div
class=
"box-header with-border">
410 <h3
class=
"box-title"><
i class=
"fa fa-cubes"></
i>&
nbsp;&
nbsp;<?php echo
$lang[
'CB_HEADING']; ?> <small><?php echo
$lang[
'CB_SUBTEXT']; ?></small></h3>
412 <div
class=
"box-tools pull-right">
413 <button
type=
"button" class=
"btn btn-box-tool" data-
widget=
"collapse"><
i class=
"fa fa-minus"></
i>
418 <div
id=
"sidebar" class=
"box-body" style=
"display: block;">
419 <!-- Add draggable components here -->
420 <div
class=
"component" data-
type=
"jumbotron">Jumbotron</div>
421 <div
class=
"component" data-
type=
"accordion">Accordion</div>
422 <div
class=
"component" data-
type=
"card">Card</div>
423 <div
class=
"component" data-
type=
"cards-grid-66">2 Cards <small>(6-6 grid)</small></div>
424 <div
class=
"component" data-
type=
"cards-grid-444">3 Cards <small>(4-4-4 grid)</small></div>
425 <div
class=
"component" data-
type=
"quote">Quote</div>
430 <div
class=
"box box-default">
431 <div
class=
"box-header with-border">
432 <h3
class=
"box-title"><
i class=
"fa fa-clock-o"></
i>&
nbsp;&
nbsp;<?php echo
$lang[
'PUBLISHING']; ?> <small><?php echo
"$lang[EFFECTIVE_TIME] $lang[AND] $lang[PRIVACY]"; ?></small></h3>
434 <div
class=
"box-tools pull-right">
435 <button
type=
"button" class=
"btn btn-box-tool" data-
widget=
"collapse"><
i class=
"fa fa-minus"></
i>
440 <div
class=
"box-body">
441 <label
for=
"datetimepicker1"><?php print
$lang[
'START_PUBLISH']; ?>
442 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_PUBLISH_DATE']); ?>
444 <input
class=
"form-control" id=
"datetimepicker1" name=
"date_publish" maxlength=
"19" value=
"<?php print $page->date_publish; ?>">
446 <!-- END PUBLISH DATE -->
447 <label
for=
"datetimepicker2"><?php print
$lang[
'END_PUBLISH']; ?>
448 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_UNPUBLISH_DATE']); ?>
450 <input
type=
"text" class=
"form-control" id=
"datetimepicker2" name=
"date_unpublish" maxlength=
"19" value=
"<?php print $page->date_unpublish; ?>">
452 <label
for=
"gidselect"> <?php print
$lang[
'PAGE_VISIBLE']; ?>
453 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_USERGROUP']); ?>
455 <select
id=
"gidselect" name=
"gid" class=
"form-control">
456 <option value=
"<?php print sys::getGroupId($db, $page->id, "pages
"); ?>" selected><?php print user::getGroupNameFromID(
$db,
$page->gid); ?></option>
458 foreach(
YAWK\sys::getGroups(
$db,
"pages") as $role) {
459 print
"<option value=\"".$role[
'id'].
"\"";
460 if (isset($_POST[
'gid'])) {
461 if($_POST[
'gid'] === $role[
'id']) {
462 print
" selected=\"selected\"";
464 else if(
$page->gid === $role[
'id'] && !$_POST[
'gid']) {
465 print
" selected=\"selected\"";
468 print
">".$role[
'value'].
"</option>";
473 <!-- PAGE ON / OFF STATUS -->
474 <label
for=
"published"><?php print
$lang[
'PAGE_STATUS']; ?>
475 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_PUBLISH']); ?>
477 <?php
if(
$page->published ===
'1')
479 $publishedHtml =
"<option value=\"1\" selected=\"selected\">$lang[ONLINE]</option>";
484 $publishedHtml =
"<option value=\"0\" selected=\"selected\">$lang[OFFLINE]</option>";
488 <select
id=
"published" name=
"published" class=
"form-control">
495 <div
class=
"box box-default">
496 <div
class=
"box-header with-border">
497 <h3
class=
"box-title"><
i class=
"fa fa-google"></
i>&
nbsp;&
nbsp;<?php echo
$lang[
'META_TAGS']; ?> <small><?php echo
$lang[
'PAGE_SEO']; ?></small></h3>
499 <div
class=
"box-tools pull-right">
500 <button
type=
"button" class=
"btn btn-box-tool" data-
widget=
"collapse"><
i class=
"fa fa-minus"></
i>
505 <div
class=
"box-body" style=
"display: block;">
506 <!-- LOCAL META SITE DESCRIPTION -->
507 <label
for=
"meta_local"><?php echo
$lang[
'META_DESC']; ?>
508 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_METALOCAL']); ?>
510 <input
type=
"text" size=
"64" id=
"meta_local" class=
"form-control" maxlength=
"255" placeholder=
"<?php echo $lang['META_DESC_PLACEHOLDER']; ?>" name=
"meta_local" value=
"<?php print $page->meta_local; ?>">
511 <!-- LOCAL META SITE KEYWORDS -->
512 <label
for=
"meta_keywords"><?php echo
$lang[
'META_KEYWORDS']; ?>
513 <?php echo backend::printTooltip(
$lang[
'TT_PAGE_KEYWORDS']); ?>
515 <input
type=
"text" size=
"64" id=
"meta_keywords" class=
"form-control" placeholder=
"<?php echo $lang['META_KEYWORDS_PLACEHOLDER']; ?>" name=
"meta_keywords" value=
"<?php print $page->meta_keywords; ?>">
520 <div
class=
"box box-default">
521 <div
class=
"box-header with-border">
522 <h3
class=
"box-title"><
i class=
"fa fa-photo"></
i>&
nbsp;&
nbsp;<?php echo
$lang[
'BG_IMAGE']; ?> <small><?php echo
$lang[
'SPECIFIC_PAGE']; ?></small></h3>
524 <div
class=
"box-tools pull-right">
525 <button
type=
"button" class=
"btn btn-box-tool" data-
widget=
"collapse"><
i class=
"fa fa-minus"></
i>
530 <div
class=
"box-body" style=
"display: block;">
531 <!-- PAGE BG IMAGE -->
532 <label
for=
"bgimage"><?php echo
$lang[
'BG_IMAGE']; ?></label>
533 <input
id=
"bgimage" type=
"text" size=
"64" class=
"form-control" placeholder=
"media/images/background.jpg" name=
"bgimage" value=
"<?php print $page->bgimage; ?>">
static draw($type, $title, $text, $redirect, $delay)
Backend class serves a few useful functions for the admin backend.
static drawWidgetsOnPageBox($db, $page, $lang)
Draw a box containing all widgets that are linked with given page. Every Widget gets drawn as small b...
Mysqli database class; returns db connection object.
The language class - support multilingual backend.
The default pages class. Provide all functions to handle static pages.
Settings class: get and set YaWK system settings.
The sys class - handles yawk's system core functions.
static getDirPrefix($db)
if yawk is installed into a subdirectory, use this to get this prefix directory
static getHost($db)
get hostname (url where yawk is installed) from database
The default user class. Provide all functions to handle the user object.
This class serves methods to create backup from files.
if($page->alias==="index") $editorSettings
print $lang['SAVE_CHANGES']
if(!isset($page)) if(!isset($db)) if(!isset($lang)) if(isset($_GET['id'])) if(isset($_POST['save'])) $dirprefix
<!-- backend language -->< h3 >< i class="fa fa-language"></i > & nbsp
document ready(function() { $('a[data-confirm]').click(function(ev) { modal='#dataConfirmModal';var href=$(this).attr('href');var title=$(this).attr('title');var icon=$(this).attr('data-icon');if(!icon) { icon='fa fa-trash-o';} if(!$(modal).length) { $('body').append('< div id="dataConfirmModal" class="modal fade" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true">< div class="modal-dialog">< div class="modal-content">< div class="modal-header">< button type="button" class="close" data-dismiss="modal" aria-hidden="true">< i class="fa fa-times"></i ></button >< br >< div class="col-md-1">< h3 class="modal-title">< i class="'+icon+'"></i ></h3 ></div >< div class="col-md-11">< h3 class="modal-title" id="dataConfirmLabel">'+title+'</h3 ></div ></h3 ></div >< div class="modal-body"></div >< div class="modal-footer">< button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true">Abbrechen</button >< a type="button" class="btn btn-danger" id="dataConfirmOK">< i class="'+icon+'"></i > L öschen</a ></div ></div ></div ></div >');} $(modal).find('.modal-body').text($(this).attr('data-confirm'));$('#dataConfirmOK').attr('href', href);$(modal).modal({show:true});return false;});$('#terminateUser').click(function() { var terminate=window.confirm("ACHTUNG!\nDas wird Deinen Account permanent deaktivieren.\n"+"Bist Du Dir sicher, dass Du das tun willst?");if(terminate===true) { var terminateUser=window.confirm("Bist Du Dir wirklich ganz sicher?\n"+"Diese Aktion kann nicht rueckgaengig gemacht werden.");if(terminateUser===true) { $.get('system/templates/YaWK-bootstrap3/js/terminate-user.php', function(data) { if(data==="true") { setTimeout("window.location='logout.html'", 0);} else { alert("Fehler: "+data);} });} } });function dismissNotifications() { $.ajax({ url:'js/dismiss-notifications.php', type:'POST', success:function(data) { if(!data) { alert('Something went wrong!');return false;} } });$("#bell-label").fadeOut();$('#notification-header').html('You have 0 notifications');$('#notification-menu').fadeOut();} $("#dismiss").click(function() { dismissNotifications();});function disableButtons(delay) { $('#loginButton').removeClass().addClass('btn btn-success disabled').attr('id', 'LOGIN_FORBIDDEN');$('#resetPasswordButton').removeClass().addClass('btn btn-danger disabled');setTimeout(function() { $('#LOGIN_FORBIDDEN').attr('id', 'loginButton').removeClass().addClass('btn btn-success');$('#resetPasswordButton').removeClass().addClass('btn btn-danger');}, delay);} $("#loginButton").click(function(){ if($('#loginButton').length > 0) { if($('#loginButton').hasClass('btn') &&$('#loginButton').hasClass('btn-success') &&$('#loginButton').hasClass('disabled')) { } else { $("#loginForm").submit();disableButtons(10000);} } else if($('#LOGIN_FORBIDDEN').length > 0) { if($('#LOGIN_FORBIDDEN').hasClass('btn') &&$('#LOGIN_FORBIDDEN').hasClass('btn-success') &&$('#LOGIN_FORBIDDEN').hasClass('disabled')) { } else { } } });$("#blockedBtn").hover(function() { $("#blockedBtn").hide();$("#askBtn").fadeIn(820);});})