diff options
author | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
---|---|---|
committer | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
commit | 52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch) | |
tree | b4205c194167e0e03e273957cdd0aab3be9fdf01 /template/admin | |
download | blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.gz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.xz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.zip |
Initial commit.v1.0
Diffstat (limited to 'template/admin')
35 files changed, 1191 insertions, 0 deletions
diff --git a/template/admin/html/403.php b/template/admin/html/403.php new file mode 100644 index 0000000..aebddb7 --- /dev/null +++ b/template/admin/html/403.php @@ -0,0 +1,2 @@ +<h1><i class="fa fa-exclamation-triangle"></i><?=$Language->template('403_heading_text')?></h1> +<p><?=$Language->template('403_heading_desc')?></p> diff --git a/template/admin/html/404.php b/template/admin/html/404.php new file mode 100644 index 0000000..4f841b6 --- /dev/null +++ b/template/admin/html/404.php @@ -0,0 +1,2 @@ +<h1><i class="fa fa-exclamation-triangle"></i><?=$Language->template('404_heading_text')?></h1> +<p><?=$Language->template('404_heading_desc')?></p>
\ No newline at end of file diff --git a/template/admin/html/auth.php b/template/admin/html/auth.php new file mode 100644 index 0000000..a33be5d --- /dev/null +++ b/template/admin/html/auth.php @@ -0,0 +1,30 @@ +<h1><?=$Language->template('authentication_text')?></h1> +<p><?=$Language->template('authentication_desc')?></p> + +<?php if(isset($FORM['INFO']['LIST'])): ?> + <?php foreach($FORM['INFO']['LIST'] as $message): ?> + <div class="red"><?=$message?></div> + <?php endforeach; ?> +<?php endif; ?> + +<form action="" method="POST"> + <input type="hidden" name="token" value="<?=Application::getSecurityToken()?>" /> + + <section class="flex"> + <section> + <div class="form-icon-flex"><i class="fa fa-user-secret"></i></div> + <div class="form-label-flex"><label for="L_USERNAME"><?=$Language->template('LABEL_USERNAME')?></label></div> + <div class="form-field-flex"><input id="L_USERNAME" name="username" value="<?=escapeHTML($FORM['DATA']['USERNAME'])?>" /></div> + </section> + </section> + <section class="flex"> + <section> + <div class="form-icon-flex"><i class="fa fa-key"></i></div> + <div class="form-label-flex"><label for="L_PASSWORD"><?=$Language->template('LABEL_PASSWORD')?></label></div> + <div class="form-field-flex"><input type="password" id="L_PASSWORD" name="password" /></div> + </section> + </section> + <section class="flex flex-padding background"> + <input type="submit" name="auth" value="Auth" /> + </section> +</form>
\ No newline at end of file diff --git a/template/admin/html/database.php b/template/admin/html/database.php new file mode 100644 index 0000000..92c5103 --- /dev/null +++ b/template/admin/html/database.php @@ -0,0 +1,26 @@ +<h1><i class="fa fa-database"></i><?=$Language->template('overview_database_text')?></h1> +<p><?=$Language->template('overview_database_desc')?></p> + +<?php if(isset($FORM['INFO'])): ?> + <?php foreach($FORM['INFO'] as $message): ?> + <div class="red"><?=$message?></div> + <?php endforeach; ?> +<?php endif; ?> + +<form action="" method="POST"> + <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" /> + + <section class="flex flex-padding"> + <textarea id="content-editor" placeholder="<?=$Language->template('database_warning')?>" name="command"><?=escapeHTML($FORM['COMMAND'])?></textarea> + </section> + +<?php if(isset($FORM['RESULT'])): ?> + <section class="flex flex-padding background flex-direction-column"> + <pre id="database-result"><?=escapeHTML($FORM['RESULT'])?></pre> + </section> +<?php endif; ?> + + <section class="flex flex-padding background"> + <input type="submit" name="execute" value="Execute" /> + </section> +</form>
\ No newline at end of file diff --git a/template/admin/html/home.php b/template/admin/html/home.php new file mode 100644 index 0000000..6701f35 --- /dev/null +++ b/template/admin/html/home.php @@ -0,0 +1,34 @@ +<h1><i class="fa fa-dashboard"></i><?=$Language->template('overview_dashboard_text')?></h1> +<p><?=$Language->template('overview_dashboard_desc')?></p> + +<h2><i class="fa fa-newspaper-o"></i><?=$Language->template('last_post')?></h2> +<p><strong><?=$Language->text('posts')?>:</strong> <?=$COUNT['POST']?> | <a href="<?=Application::getAdminURL('post/')?>"><?=$Language->text('post_overview')?></a> | <a href="<?=Application::getAdminURL('post/insert.php')?>"><?=$Language->text('insert')?></a></p> +<?php if(!empty($LAST['POST'])): ?> + <ul class="item-list"> + <?=$LAST['POST']?> + </ul> +<?php else: ?> + <p><em><?=$Language->template('home_no_posts')?></em></p> +<?php endif; ?> + +<h2><i class="fa fa-file-text-o"></i><?=$Language->template('last_page')?></h2> +<p><strong><?=$Language->text('pages')?>:</strong> <?=$COUNT['PAGE']?> | <a href="<?=Application::getAdminURL('page/')?>"><?=$Language->text('page_overview')?></a> | <a href="<?=Application::getAdminURL('page/insert.php')?>"><?=$Language->text('insert')?></a></p> + +<?php if(!empty($LAST['PAGE'])): ?> + <ul class="item-list"> + <?=$LAST['PAGE']?> + </ul> +<?php else: ?> + <p><em><?=$Language->template('home_no_pages')?></em></p> +<?php endif; ?> + +<h2><i class="fa fa-user"></i><?=$Language->template('last_user')?></h2> +<p><strong><?=$Language->text('users')?>:</strong> <?=$COUNT['USER']?> | <a href="<?=Application::getAdminURL('user/')?>"><?=$Language->text('user_overview')?></a> | <a href="<?=Application::getAdminURL('user/insert.php')?>"><?=$Language->text('insert')?></a></p> + +<?php if(!empty($LAST['USER'])): ?> + <ul class="item-list"> + <?=$LAST['USER']?> + </ul> +<?php else: ?> + <p><em><?=$Language->template('home_no_users')?></em></p> +<?php endif; ?> diff --git a/template/admin/html/main.php b/template/admin/html/main.php new file mode 100644 index 0000000..d2fba38 --- /dev/null +++ b/template/admin/html/main.php @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<html lang="<?=$BLOGMETA['LANG']?>"> +<head> + <meta charset="UTF-8" /> + <meta name="referrer" content="origin-when-crossorigin" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <link rel="stylesheet" href="<?=Application::getTemplateURL('rsrc/main.css')?>" /> + <script src="<?=Application::getTemplateURL('rsrc/main.js')?>"></script> + <title><?=escapeHTML($NAME)?> | Administration</title> +</head> +<body> + <header id="main-header"> + <section class="header-line"> + <div class="header-content"> + <a href="<?=Application::getAdminURL()?>"><img id="header-logo" src="<?=Application::getTemplateURL('rsrc/icon-public-domain.svg')?>" alt="Administration" /></a> + <div id="header-text">Administration</div> + <div id="header-desc">PHP7 blogging application by <span>Nerdmind</span>!</div> + </div> + </section> + <section class="header-line"> + <div class="header-content"> + <nav id="main-navi"> + <?php if(Application::isAuthenticated()): ?> + <ul> + <li><a href="<?=Application::getAdminURL()?>" title="<?=$Language->template('overview_dashboard_text')?>"><i class="fa fa-dashboard"></i><span>Dashboard</span></a></li> + <li><a href="<?=Application::getAdminURL('post/')?>" title="<?=$Language->text('post_overview')?>"><i class="fa fa-newspaper-o"></i><span><?=$Language->text('posts')?></span></a></li> + <li><a href="<?=Application::getAdminURL('page/')?>" title="<?=$Language->text('page_overview')?>"><i class="fa fa-file-text-o"></i><span><?=$Language->text('pages')?></span></a></li> + <li><a href="<?=Application::getAdminURL('user/')?>" title="<?=$Language->text('user_overview')?>"><i class="fa fa-user"></i><span><?=$Language->text('users')?></span></a></li> + <li><a href="<?=Application::getAdminURL('database.php')?>" title="<?=$Language->template('overview_database_text')?>"><i class="fa fa-database"></i><span><?=$Language->template('overview_database_text')?></span></a></li> + </ul> + <ul> + <li><a href="<?=Application::getAdminURL('auth.php?action=logout&token='.Application::getSecurityToken())?>"><i class="fa fa-sign-out"></i><span>Logout</span></a></li> + </ul> + <?php else: ?> + <ul> + <li><a href="<?=Application::getAdminURL('auth.php')?>"><i class="fa fa-sign-in"></i><span>Login</span></a></li> + </ul> + <?php endif; ?> + </nav> + </div> + </section> + </header> + <section id="main-content"> + <main> + <?=$HTML?> + </main> + <footer id="main-footer"> + <i class="fa fa-bug"></i> Report bugs via email to <a href="mailto:Thomas Lange <code@nerdmind.de>">code@nerdmind.de</a>! + </footer> + </section> +</body> +</html>
\ No newline at end of file diff --git a/template/admin/html/page/delete.php b/template/admin/html/page/delete.php new file mode 100644 index 0000000..95451d8 --- /dev/null +++ b/template/admin/html/page/delete.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_page')?></h1> +<p><?=$Language->template('delete_page_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/page/form.php b/template/admin/html/page/form.php new file mode 100644 index 0000000..cf87f82 --- /dev/null +++ b/template/admin/html/page/form.php @@ -0,0 +1,91 @@ +<?php if(isset($FORM['INFO'])): ?> + <?php foreach($FORM['INFO'] as $message): ?> + <div class="red"><?=$message?></div> + <?php endforeach; ?> +<?php endif; ?> + +<form action="" method="POST"> + <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" /> + +<?php if($FORM['TYPE'] !== 'DELETE'): ?> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-database"></i></div> + <div class="form-label-flex"><label for="L_ID">ID</label></div> + <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="L_ID" name="id" placeholder="[AUTO_INCREMENT]" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-user"></i></div> + <div class="form-label-flex"><label for="L_USER"><?=$Language->template('LABEL_USER')?></label></div> + <div class="form-field-flex"> + <select id="L_USER" name="user"> + <?php foreach($FORM['USER_LIST'] as $user): ?> + <option value="<?=$user['ID']?>"<?=($FORM['DATA']['USER'] === $user['ID']) ? ' selected' : '' ?>><?=escapeHTML($user['FULLNAME'])?> [<?=$user['USERNAME']?>]</option> + <?php endforeach; ?> + </select> + </div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-file-text-o"></i></div> + <div class="form-label-flex"><label for="L_NAME"><?=$Language->template('LABEL_NAME')?></label></div> + <div class="form-field-flex"><input id="L_NAME" name="name" value="<?=escapeHTML($FORM['DATA']['NAME'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-link"></i></div> + <div class="form-label-flex"><label for="L_SLUG"><?=$Language->template('LABEL_SLUG')?></label></div> + <div class="form-field-flex"><input id="L_SLUG" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_INSERT"><?=$Language->template('LABEL_INSERT')?></label></div> + <div class="form-field-flex"><input id="L_TIME_INSERT" name="time_insert" placeholder="[YYYY-MM-DD HH:II:SS]" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_UPDATE"><?=$Language->template('LABEL_UPDATE')?></label></div> + <div class="form-field-flex"><input id="L_TIME_UPDATE" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : '[CURRENT_TIMESTAMP]')?>" value="" /></div> + </section> + </section> + <section class="flex flex-padding"> + <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea> + </section> + <section class="flex flex-padding background"> + <ul class="button-list emoticons"> + <?php foreach(getEmoticons() as $emoticon => $data):?> + <li onmousedown="emoticonReplace('<?=$emoticon?>')" title="<?=$data[1]?>"><?=$data[0]?></li> + <?php endforeach; ?> + </ul> + </section> + <section class="flex flex-padding background"> + <ul class="button-list markdown"> + <li onmousedown="markdownReplace('bold');" class="fa fa-bold" title="Bold"></li> + <li onmousedown="markdownReplace('italic');" class="fa fa-italic" title="Italic"></li> + <li onmousedown="markdownReplace('header');" class="fa fa-header" title="Heading"></li> + <li onmousedown="markdownReplace('link');" class="fa fa-link" title="Link"></li> + <li onmousedown="markdownReplace('image');" class="fa fa-picture-o" title="Image"></li> + <li onmousedown="markdownReplace('code');" class="fa fa-code" title="Code"></li> + <li onmousedown="markdownReplace('quote');" class="fa fa-quote-right" title="Quote"></li> + <li onmousedown="markdownReplace('list_ul');" class="fa fa-list-ul" title="List [unordered]"></li> + <li onmousedown="markdownReplace('list_ol');" class="fa fa-list-ol" title="List [ordered]"></li> + </ul> + </section> +<?php else: ?> + <section class="flex flex-padding background flex-direction-column"> + <?=$HTML?> + </section> +<?php endif; ?> + + <section class="flex flex-padding background"> + <?php if($FORM['TYPE'] === 'INSERT'): ?> + <input type="submit" name="insert" value="<?=$Language->text('insert')?>" /> + <?php elseif($FORM['TYPE'] === 'UPDATE'): ?> + <input type="submit" name="update" value="<?=$Language->text('update')?>" /> + <?php elseif($FORM['TYPE'] === 'DELETE'): ?> + <input type="submit" name="delete" value="<?=$Language->text('delete')?>" onclick="return confirm('<?=$Language->template('sure')?>')" /> + <?php endif; ?> + </section> +</form>
\ No newline at end of file diff --git a/template/admin/html/page/index.php b/template/admin/html/page/index.php new file mode 100644 index 0000000..4d090ca --- /dev/null +++ b/template/admin/html/page/index.php @@ -0,0 +1,10 @@ +<h1><i class="fa fa-file-text-o"></i><?=$Language->text('page_overview')?><a class="brackets" href="<?=Application::getAdminURL("page/insert.php")?>"><?=$Language->text('insert')?></a></h1> +<p><?=$Language->template('overview_page_desc')?></p> + +<ul class="item-list"> + <?php foreach($LIST['PAGES'] as $page): ?> + <?php echo $page; ?> + <?php endforeach; ?> +</ul> + +<?=$PAGINATION['HTML']?>
\ No newline at end of file diff --git a/template/admin/html/page/insert.php b/template/admin/html/page/insert.php new file mode 100644 index 0000000..d45d79c --- /dev/null +++ b/template/admin/html/page/insert.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-file-text-o"></i><?=$Language->text('insert_page')?></h1> +<p><?=$Language->template('insert_page_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/page/item.php b/template/admin/html/page/item.php new file mode 100644 index 0000000..e1e67b7 --- /dev/null +++ b/template/admin/html/page/item.php @@ -0,0 +1,16 @@ +<li class="content"> + <header> + <h2><i class="fa fa-file-text-o"></i><?=escapeHTML($PAGE['ATTR']['NAME'])?><span>#<?=$PAGE['ID']?></span></h2> + <div><a class="brackets" href="<?=Application::getAdminURL("user/update.php?id={$USER['ID']}")?>"><?=escapeHTML($USER['ATTR']['FULLNAME'])?></a></div> + </header> + <article> + <p><?=excerpt($PAGE['BODY']['HTML'])?></p> + </article> + <footer> + <ul> + <li><a href="<?=$PAGE['URL']?>" target="_blank" title="<?=$Language->text('select_page')?>"><i class="fa fa-external-link"></i></a></li> + <li><a href="<?=Application::getAdminURL("page/update.php?id={$PAGE['ID']}")?>" title="<?=$Language->text('update_page')?>"><i class="fa fa-pencil-square-o"></i></a></li> + <li><a href="<?=Application::getAdminURL("page/delete.php?id={$PAGE['ID']}")?>" title="<?=$Language->text('delete_page')?>"><i class="fa fa-trash-o"></i></a></li> + </ul> + </footer> +</li>
\ No newline at end of file diff --git a/template/admin/html/page/update.php b/template/admin/html/page/update.php new file mode 100644 index 0000000..d15d784 --- /dev/null +++ b/template/admin/html/page/update.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-file-text-o"></i><?=$Language->text('update_page')?></h1> +<p><?=$Language->template('update_page_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/pagination.php b/template/admin/html/pagination.php new file mode 100644 index 0000000..31b5378 --- /dev/null +++ b/template/admin/html/pagination.php @@ -0,0 +1,45 @@ +<section id="site-navi"> + <?php if($THIS > 1): ?> + <div><a href="<?=sprintf($HREF, $THIS-1)?>"><i class="fa fa-arrow-left"></i></a></div> + <?php else: ?> + <div><a class="disabled"><i class="fa fa-arrow-left"></i></a></div> + <?php endif; ?> + + <section> + <div> + <ol> + <?php for($currentItem = 1; $currentItem <= $LAST; ++$currentItem): ?> + <?php + $href = sprintf($HREF, $currentItem); + $class = NULL; + $currentItemHTML = $currentItem; + if($currentItem === $THIS) { + $class = ' class="active"'; + } + + echo '<li'.$class.'><a href="'.$href.'">'.$currentItemHTML.'</a></li>'; + ?> + + <?php endfor; ?> + </ol> + </div> + </section> + + <?php if($THIS < $LAST): ?> + <div><a href="<?=sprintf($HREF, $THIS+1)?>"><i class="fa fa-arrow-right"></i></a></div> + <?php else: ?> + <div><a class="disabled"><i class="fa fa-arrow-right"></i></a></div> + <?php endif; ?> +</section> + +<script> + var prevPageURL = <?php echo json_encode($THIS > 1 ? sprintf($HREF, $THIS-1) : FALSE); ?>; + var nextPageURL = <?php echo json_encode($THIS < $LAST ? sprintf($HREF, $THIS+1) : FALSE); ?>; + + document.addEventListener('keyup', function(event) { + if(!event.ctrlKey && !event.shiftKey) { + (event.keyCode === 37 && prevPageURL) && (window.location.href = prevPageURL); + (event.keyCode === 39 && nextPageURL) && (window.location.href = nextPageURL); + } + }, false) +</script>
\ No newline at end of file diff --git a/template/admin/html/post/delete.php b/template/admin/html/post/delete.php new file mode 100644 index 0000000..9be4566 --- /dev/null +++ b/template/admin/html/post/delete.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_post')?></h1> +<p><?=$Language->template('delete_post_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/post/form.php b/template/admin/html/post/form.php new file mode 100644 index 0000000..cba4aa8 --- /dev/null +++ b/template/admin/html/post/form.php @@ -0,0 +1,91 @@ +<?php if(isset($FORM['INFO'])): ?> + <?php foreach($FORM['INFO'] as $message): ?> + <div class="red"><?=$message?></div> + <?php endforeach; ?> +<?php endif; ?> + +<form action="" method="POST"> + <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" /> + +<?php if($FORM['TYPE'] !== 'DELETE'): ?> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-database"></i></div> + <div class="form-label-flex"><label for="L_ID">ID</label></div> + <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="L_ID" name="id" placeholder="[AUTO_INCREMENT]" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-user"></i></div> + <div class="form-label-flex"><label for="L_USER"><?=$Language->template('LABEL_USER')?></label></div> + <div class="form-field-flex"> + <select id="L_USER" name="user"> + <?php foreach($FORM['USER_LIST'] as $user): ?> + <option value="<?=$user['ID']?>"<?=($FORM['DATA']['USER'] === $user['ID']) ? ' selected' : '' ?>><?=escapeHTML($user['FULLNAME'])?> [<?=$user['USERNAME']?>]</option> + <?php endforeach; ?> + </select> + </div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-newspaper-o"></i></div> + <div class="form-label-flex"><label for="L_NAME"><?=$Language->template('LABEL_NAME')?></label></div> + <div class="form-field-flex"><input id="L_NAME" name="name" value="<?=escapeHTML($FORM['DATA']['NAME'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-link"></i></div> + <div class="form-label-flex"><label for="L_SLUG"><?=$Language->template('LABEL_SLUG')?></label></div> + <div class="form-field-flex"><input id="L_SLUG" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_INSERT"><?=$Language->template('LABEL_INSERT')?></label></div> + <div class="form-field-flex"><input id="L_TIME_INSERT" name="time_insert" placeholder="[YYYY-MM-DD HH:II:SS]" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_UPDATE"><?=$Language->template('LABEL_UPDATE')?></label></div> + <div class="form-field-flex"><input id="L_TIME_UPDATE" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : '[CURRENT_TIMESTAMP]')?>" value="" /></div> + </section> + </section> + <section class="flex flex-padding"> + <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea> + </section> + <section class="flex flex-padding background flex-emoticons"> + <ul class="button-list emoticons"> + <?php foreach(getEmoticons() as $emoticon => $data):?> + <li onmousedown="emoticonReplace('<?=$emoticon?>')" title="<?=$data[1]?>"><?=$data[0]?></li> + <?php endforeach; ?> + </ul> + </section> + <section class="flex flex-padding background"> + <ul class="button-list markdown"> + <li onmousedown="markdownReplace('bold');" class="fa fa-bold" title="Bold"></li> + <li onmousedown="markdownReplace('italic');" class="fa fa-italic" title="Italic"></li> + <li onmousedown="markdownReplace('header');" class="fa fa-header" title="Heading"></li> + <li onmousedown="markdownReplace('link');" class="fa fa-link" title="Link"></li> + <li onmousedown="markdownReplace('image');" class="fa fa-picture-o" title="Image"></li> + <li onmousedown="markdownReplace('code');" class="fa fa-code" title="Code"></li> + <li onmousedown="markdownReplace('quote');" class="fa fa-quote-right" title="Quote"></li> + <li onmousedown="markdownReplace('list_ul');" class="fa fa-list-ul" title="List [unordered]"></li> + <li onmousedown="markdownReplace('list_ol');" class="fa fa-list-ol" title="List [ordered]"></li> + </ul> + </section> +<?php else: ?> + <section class="flex flex-padding background flex-direction-column"> + <?=$HTML?> + </section> +<?php endif; ?> + + <section class="flex flex-padding background"> + <?php if($FORM['TYPE'] === 'INSERT'): ?> + <input type="submit" name="insert" value="<?=$Language->text('insert')?>" /> + <?php elseif($FORM['TYPE'] === 'UPDATE'): ?> + <input type="submit" name="update" value="<?=$Language->text('update')?>" /> + <?php elseif($FORM['TYPE'] === 'DELETE'): ?> + <input type="submit" name="delete" value="<?=$Language->text('delete')?>" onclick="return confirm('<?=$Language->template('sure')?>')" /> + <?php endif; ?> + </section> +</form>
\ No newline at end of file diff --git a/template/admin/html/post/index.php b/template/admin/html/post/index.php new file mode 100644 index 0000000..481cafe --- /dev/null +++ b/template/admin/html/post/index.php @@ -0,0 +1,10 @@ +<h1><i class="fa fa-newspaper-o"></i><?=$Language->text('post_overview')?><a class="brackets" href="<?=Application::getAdminURL("post/insert.php")?>"><?=$Language->text('insert')?></a></h1> +<p><?=$Language->template('overview_post_desc')?></p> + +<ul class="item-list"> + <?php foreach($LIST['POSTS'] as $post): ?> + <?php echo $post; ?> + <?php endforeach; ?> +</ul> + +<?=$PAGINATION['HTML']?>
\ No newline at end of file diff --git a/template/admin/html/post/insert.php b/template/admin/html/post/insert.php new file mode 100644 index 0000000..df4b26d --- /dev/null +++ b/template/admin/html/post/insert.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-newspaper-o"></i><?=$Language->text('insert_post')?></h1> +<p><?=$Language->template('insert_post_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/post/item.php b/template/admin/html/post/item.php new file mode 100644 index 0000000..1b942bd --- /dev/null +++ b/template/admin/html/post/item.php @@ -0,0 +1,16 @@ +<li class="content"> + <header> + <h2><i class="fa fa-newspaper-o"></i><?=escapeHTML($POST['ATTR']['NAME'])?><span>#<?=$POST['ID']?></span></h2> + <div><a class="brackets" href="<?=Application::getAdminURL("user/update.php?id={$USER['ID']}")?>"><?=escapeHTML($USER['ATTR']['FULLNAME'])?></a></div> + </header> + <article> + <p><?=excerpt($POST['BODY']['HTML'])?></p> + </article> + <footer> + <ul> + <li><a href="<?=$POST['URL']?>" target="_blank" title="<?=$Language->text('select_post')?>"><i class="fa fa-external-link"></i></a></li> + <li><a href="<?=Application::getAdminURL("post/update.php?id={$POST['ID']}")?>" title="<?=$Language->text('update_post')?>"><i class="fa fa-pencil-square-o"></i></a></li> + <li><a href="<?=Application::getAdminURL("post/delete.php?id={$POST['ID']}")?>" title="<?=$Language->text('delete_post')?>"><i class="fa fa-trash-o"></i></a></li> + </ul> + </footer> +</li>
\ No newline at end of file diff --git a/template/admin/html/post/update.php b/template/admin/html/post/update.php new file mode 100644 index 0000000..baa119e --- /dev/null +++ b/template/admin/html/post/update.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-newspaper-o"></i><?=$Language->text('update_post')?></h1> +<p><?=$Language->template('update_post_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/user/delete.php b/template/admin/html/user/delete.php new file mode 100644 index 0000000..dac4185 --- /dev/null +++ b/template/admin/html/user/delete.php @@ -0,0 +1,6 @@ +<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_user')?></h1> +<p><?=$Language->template('delete_user_desc')?></p> + +<p class="red"><?=$Language->template('delete_user_warning')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/user/form.php b/template/admin/html/user/form.php new file mode 100644 index 0000000..c284187 --- /dev/null +++ b/template/admin/html/user/form.php @@ -0,0 +1,97 @@ +<?php if(isset($FORM['INFO'])): ?> + <?php foreach($FORM['INFO'] as $message): ?> + <div class="red"><?=$message?></div> + <?php endforeach; ?> +<?php endif; ?> + +<form action="" method="POST"> + <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" /> + +<?php if($FORM['TYPE'] !== 'DELETE'): ?> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-database"></i></div> + <div class="form-label-flex"><label for="L_ID">ID</label></div> + <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="L_ID" name="id" placeholder="[AUTO_INCREMENT]" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-key"></i></div> + <div class="form-label-flex"><label for="L_PASSWORD"><?=$Language->template('LABEL_PASSWORD')?></label></div> + <div class="form-field-flex"><input id="L_PASSWORD" name="password" placeholder="[NO CHANGE]" value="<?=escapeHTML($FORM['DATA']['PASSWORD'])?>" type="password" /></div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-user"></i></div> + <div class="form-label-flex"><label for="L_FULLNAME"><?=$Language->template('LABEL_FULLNAME')?></label></div> + <div class="form-field-flex"><input id="L_FULLNAME" name="fullname" value="<?=escapeHTML($FORM['DATA']['FULLNAME'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-envelope-o"></i></div> + <div class="form-label-flex"><label for="L_MAILADDR"><?=$Language->template('LABEL_MAILADDR')?></label></div> + <div class="form-field-flex"><input id="L_MAILADDR" name="mailaddr" value="<?=escapeHTML($FORM['DATA']['MAILADDR'])?>" /></div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-user-secret"></i></div> + <div class="form-label-flex"><label for="L_USERNAME"><?=$Language->template('LABEL_USERNAME')?></label></div> + <div class="form-field-flex"><input id="L_USERNAME" name="username" value="<?=escapeHTML($FORM['DATA']['USERNAME'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-link"></i></div> + <div class="form-label-flex"><label for="L_SLUG"><?=$Language->template('LABEL_SLUG')?></label></div> + <div class="form-field-flex"><input id="L_SLUG" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div> + </section> + </section> + <section class="flex flex-responsive"> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_INSERT"><?=$Language->template('LABEL_INSERT')?></label></div> + <div class="form-field-flex"><input id="L_TIME_INSERT" name="time_insert" placeholder="[YYYY-MM-DD HH:II:SS]" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div> + </section> + <section> + <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div> + <div class="form-label-flex"><label for="L_TIME_UPDATE"><?=$Language->template('LABEL_UPDATE')?></label></div> + <div class="form-field-flex"><input id="L_TIME_UPDATE" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : '[CURRENT_TIMESTAMP]')?>" value="" /></div> + </section> + </section> + <section class="flex flex-padding"> + <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea> + </section> + <section class="flex flex-padding background"> + <ul class="button-list emoticons"> + <?php foreach(getEmoticons() as $emoticon => $data):?> + <li onmousedown="emoticonReplace('<?=$emoticon?>')" title="<?=$data[1]?>"><?=$data[0]?></li> + <?php endforeach; ?> + </ul> + </section> + <section class="flex flex-padding background"> + <ul class="button-list markdown"> + <li onmousedown="markdownReplace('bold');" class="fa fa-bold" title="Bold"></li> + <li onmousedown="markdownReplace('italic');" class="fa fa-italic" title="Italic"></li> + <li onmousedown="markdownReplace('header');" class="fa fa-header" title="Heading"></li> + <li onmousedown="markdownReplace('link');" class="fa fa-link" title="Link"></li> + <li onmousedown="markdownReplace('image');" class="fa fa-picture-o" title="Image"></li> + <li onmousedown="markdownReplace('code');" class="fa fa-code" title="Code"></li> + <li onmousedown="markdownReplace('quote');" class="fa fa-quote-right" title="Quote"></li> + <li onmousedown="markdownReplace('list_ul');" class="fa fa-list-ul" title="List [unordered]"></li> + <li onmousedown="markdownReplace('list_ol');" class="fa fa-list-ol" title="List [ordered]"></li> + </ul> + </section> +<?php else: ?> + <section class="flex flex-padding background flex-direction-column"> + <?=$HTML?> + </section> +<?php endif; ?> + + <section class="flex flex-padding background"> + <?php if($FORM['TYPE'] === 'INSERT'): ?> + <input type="submit" name="insert" value="<?=$Language->text('insert')?>" /> + <?php elseif($FORM['TYPE'] === 'UPDATE'): ?> + <input type="submit" name="update" value="<?=$Language->text('update')?>" /> + <?php elseif($FORM['TYPE'] === 'DELETE'): ?> + <input type="submit" name="delete" value="<?=$Language->text('delete')?>" onclick="return confirm('<?=$Language->template('sure')?>')" /> + <?php endif; ?> + </section> +</form>
\ No newline at end of file diff --git a/template/admin/html/user/index.php b/template/admin/html/user/index.php new file mode 100644 index 0000000..6b23536 --- /dev/null +++ b/template/admin/html/user/index.php @@ -0,0 +1,10 @@ +<h1><i class="fa fa-user"></i><?=$Language->text('user_overview')?><a class="brackets" href="<?=Application::getAdminURL("user/insert.php")?>"><?=$Language->text('insert')?></a></h1> +<p><?=$Language->template('overview_user_desc')?></p> + +<ul class="item-list"> + <?php foreach($LIST['USERS'] as $user): ?> + <?php echo $user; ?> + <?php endforeach; ?> +</ul> + +<?=$PAGINATION['HTML']?>
\ No newline at end of file diff --git a/template/admin/html/user/insert.php b/template/admin/html/user/insert.php new file mode 100644 index 0000000..54598ee --- /dev/null +++ b/template/admin/html/user/insert.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-user"></i><?=$Language->text('insert_user')?></h1> +<p><?=$Language->template('insert_user_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/html/user/item.php b/template/admin/html/user/item.php new file mode 100644 index 0000000..df8e5b1 --- /dev/null +++ b/template/admin/html/user/item.php @@ -0,0 +1,15 @@ +<li class="content"> + <header> + <h2><i class="fa fa-user"></i><?=escapeHTML($USER['ATTR']['FULLNAME'])?><span>#<?=$USER['ID']?></span></h2> + </header> + <article> + <p><?=excerpt($USER['BODY']['HTML'])?></p> + </article> + <footer> + <ul> + <li><a href="<?=$USER['URL']?>" target="_blank" title="<?=$Language->text('select_user')?>"><i class="fa fa-external-link"></i></a></li> + <li><a href="<?=Application::getAdminURL("user/update.php?id={$USER['ID']}")?>" title="<?=$Language->text('update_user')?>"><i class="fa fa-pencil-square-o"></i></a></li> + <li><a href="<?=Application::getAdminURL("user/delete.php?id={$USER['ID']}")?>" title="<?=$Language->text('delete_user')?>"><i class="fa fa-trash-o"></i></a></li> + </ul> + </footer> +</li>
\ No newline at end of file diff --git a/template/admin/html/user/update.php b/template/admin/html/user/update.php new file mode 100644 index 0000000..6f7ddae --- /dev/null +++ b/template/admin/html/user/update.php @@ -0,0 +1,4 @@ +<h1><i class="fa fa-user"></i><?=$Language->text('update_user')?></h1> +<p><?=$Language->template('update_user_desc')?></p> + +<?=$HTML?>
\ No newline at end of file diff --git a/template/admin/lang/de.php b/template/admin/lang/de.php new file mode 100644 index 0000000..d9966ae --- /dev/null +++ b/template/admin/lang/de.php @@ -0,0 +1,118 @@ +<?php +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# Admin: Internationalization [DE] [Thomas Lange <code@nerdmind.de>] # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# # +# This file contains template internationalization strings for the DE language # +# and is completely independend from the core internationalization strings. # +# # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# + +#=============================================================================== +# Item last text +#=============================================================================== +$LANGUAGE['last_post'] = 'Letzter Post'; +$LANGUAGE['last_page'] = 'Letzte Seite'; +$LANGUAGE['last_user'] = 'Letzter Benutzer'; + +#=============================================================================== +# Insert item description +#=============================================================================== +$LANGUAGE['insert_page_desc'] = 'Hier kannst du eine neue Seite erstellen und veröffentlichen.'; +$LANGUAGE['insert_post_desc'] = 'Hier kannst du einen neuen Beitrag erstellen und veröffentlichen.'; +$LANGUAGE['insert_user_desc'] = 'Hier kannst du einen neuen Benutzer erstellen und veröffentlichen.'; + +#=============================================================================== +# Update item description +#=============================================================================== +$LANGUAGE['update_page_desc'] = 'Hier kannst du eine vorhandene Seite bearbeiten und die Änderungen abspeichern.'; +$LANGUAGE['update_post_desc'] = 'Hier kannst du einen vorhandenen Beitrag bearbeiten und die Änderungen abspeichern.'; +$LANGUAGE['update_user_desc'] = 'Hier kannst du deinen vorhandenen Benutzer bearbeiten und die Änderungen abspeichern.'; + +#=============================================================================== +# Delete item description +#=============================================================================== +$LANGUAGE['delete_page_desc'] = 'Falls du diese Seite nicht mehr benötigst kannst du sie über den folgenden Button permanent löschen.'; +$LANGUAGE['delete_post_desc'] = 'Falls du diesen Beitrag nicht mehr benötigst kannst du ihn über den folgenden Button permanent löschen.'; +$LANGUAGE['delete_user_desc'] = 'Falls du diesen Benutzer nicht mehr benötigst kannst du ihn über den folgenden Button permanent löschen.'; + +#=============================================================================== +# Item overview description +#=============================================================================== +$LANGUAGE['overview_page_desc'] = 'Hier siehst du alle vorhandenen Seiten.'; +$LANGUAGE['overview_post_desc'] = 'Hier siehst du alle vorhandenen Beiträge.'; +$LANGUAGE['overview_user_desc'] = 'Hier siehst du alle vorhandenen Benutzer.'; + +#=============================================================================== +# Dashboard overview text +#=============================================================================== +$LANGUAGE['overview_dashboard_text'] = 'Dashboard'; + +#=============================================================================== +# Dashboard overview text +#=============================================================================== +$LANGUAGE['overview_dashboard_desc'] = 'Willkommen im Administrationsbereich. Hier kannst du deine Inhalte verwalten.'; + +#=============================================================================== +# Database overview text +#=============================================================================== +$LANGUAGE['overview_database_text'] = 'Datenbank'; + +#=============================================================================== +# Database overview text +#=============================================================================== +$LANGUAGE['overview_database_desc'] = 'Datenbankoperationen mit SQL-Befehlen durchführen.'; + +#=============================================================================== +# Authentication +#=============================================================================== +$LANGUAGE['authentication_text'] = 'Authentifizierung'; +$LANGUAGE['authentication_desc'] = 'Um deine Inhalte zu verwalten musst du dich zuerst authentifizieren.'; + +#=============================================================================== +# No items exists +#=============================================================================== +$LANGUAGE['home_no_pages'] = 'Es gibt keine letzte Seite zum anzeigen hier. Du musst zuerst eine erstellen.'; +$LANGUAGE['home_no_posts'] = 'Es gibt keinen letzten Beitrag zum anzeigen hier. Du musst zuerst einen erstellen.'; +$LANGUAGE['home_no_users'] = 'Es gibt keinen letzten Benutzer zum anzeigen hier. Du musst zuerst einen erstellen.'; + +#=============================================================================== +# Delete user warning +#=============================================================================== +$LANGUAGE['delete_user_warning'] = '<strong>WARNUNG</strong>: Wenn du diesen Benutzer löschst werden alle ihm zugehörigen Beiträge und Seiten ebenfalls gelöscht!'; + +#=============================================================================== +# Database warning +#=============================================================================== +$LANGUAGE['database_warning'] = 'Manche Befehle können gefährliche Auswirkungen haben, wenn du nicht weißt, was du tust!'; + +#=============================================================================== +# Error 403 +#=============================================================================== +$LANGUAGE['403_heading_text'] = 'Zugriff verweigert'; +$LANGUAGE['403_heading_desc'] = 'Der Zugriff auf diese Ressource des Servers wurde dir verweigert, da du die dafür notwendigen Berechtigungen nicht besitzt.'; + +#=============================================================================== +# Error 404 +#=============================================================================== +$LANGUAGE['404_heading_text'] = 'Nicht gefunden'; +$LANGUAGE['404_heading_desc'] = 'Die angeforderte Ressource konnte auf diesem Server nicht gefunden werden.'; + +#=============================================================================== +# "Are you sure?" question +#=============================================================================== +$LANGUAGE['sure'] = 'Bist du sicher?'; + +#=============================================================================== +# Labels +#=============================================================================== +$LANGUAGE['LABEL_SLUG'] = 'Slug'; +$LANGUAGE['LABEL_USER'] = 'Benutzer'; +$LANGUAGE['LABEL_NAME'] = 'Titel'; +$LANGUAGE['LABEL_INSERT'] = 'Erstellt'; +$LANGUAGE['LABEL_UPDATE'] = 'Bearbeitet'; +$LANGUAGE['LABEL_FULLNAME'] = 'Name'; +$LANGUAGE['LABEL_MAILADDR'] = 'E-Mail'; +$LANGUAGE['LABEL_USERNAME'] = 'Username'; +$LANGUAGE['LABEL_PASSWORD'] = 'Passwort'; +?>
\ No newline at end of file diff --git a/template/admin/lang/en.php b/template/admin/lang/en.php new file mode 100644 index 0000000..d98ea44 --- /dev/null +++ b/template/admin/lang/en.php @@ -0,0 +1,118 @@ +<?php +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# Admin: Internationalization [EN] [Thomas Lange <code@nerdmind.de>] # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# +# # +# This file contains template internationalization strings for the EN language # +# and is completely independend from the core internationalization strings. # +# # +#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%# + +#=============================================================================== +# Item last text +#=============================================================================== +$LANGUAGE['last_post'] = 'Last post'; +$LANGUAGE['last_page'] = 'Last page'; +$LANGUAGE['last_user'] = 'Last user'; + +#=============================================================================== +# Insert item description +#=============================================================================== +$LANGUAGE['insert_page_desc'] = 'Here you can create and publish a new page.'; +$LANGUAGE['insert_post_desc'] = 'Here you can create and publish a new post.'; +$LANGUAGE['insert_user_desc'] = 'Here you can create and publish a new user.'; + +#=============================================================================== +# Update item description +#=============================================================================== +$LANGUAGE['update_page_desc'] = 'Here you can edit an existing page and save the changes.'; +$LANGUAGE['update_post_desc'] = 'Here you can edit an existing post and save the changes.'; +$LANGUAGE['update_user_desc'] = 'Here you can edit an existing user and save the changes.'; + +#=============================================================================== +# Delete item description +#=============================================================================== +$LANGUAGE['delete_page_desc'] = 'If you do not need this page anymore, you can permanently delete it by clicking the following button.'; +$LANGUAGE['delete_post_desc'] = 'If you do not need this post anymore, you can permanently delete it by clicking the following button.'; +$LANGUAGE['delete_user_desc'] = 'If you do not need this user anymore, you can permanently delete it by clicking the following button.'; + +#=============================================================================== +# Item overview description +#=============================================================================== +$LANGUAGE['overview_page_desc'] = 'Here you can see all existing pages.'; +$LANGUAGE['overview_post_desc'] = 'Here you can see all existing posts.'; +$LANGUAGE['overview_user_desc'] = 'Here you can see all existing users.'; + +#=============================================================================== +# Dashboard overview text +#=============================================================================== +$LANGUAGE['overview_dashboard_text'] = 'Dashboard'; + +#=============================================================================== +# Dashboard overview text +#=============================================================================== +$LANGUAGE['overview_dashboard_desc'] = 'Welcome to the administration area. Here you can manage your content.'; + +#=============================================================================== +# Database overview text +#=============================================================================== +$LANGUAGE['overview_database_text'] = 'Database'; + +#=============================================================================== +# Database overview text +#=============================================================================== +$LANGUAGE['overview_database_desc'] = 'Perform database operations with SQL commands.'; + +#=============================================================================== +# Authentication +#=============================================================================== +$LANGUAGE['authentication_text'] = 'Authentication'; +$LANGUAGE['authentication_desc'] = 'To manage your content, you have to authenticate yourself first.'; + +#=============================================================================== +# No items exists +#=============================================================================== +$LANGUAGE['home_no_pages'] = 'There is no last page to display here. You have to insert a new page first.'; +$LANGUAGE['home_no_posts'] = 'There is no last post to display here. You have to insert a new post first.'; +$LANGUAGE['home_no_users'] = 'There is no last user to display here. You have to insert a new user first.'; + +#=============================================================================== +# Delete user warning +#=============================================================================== +$LANGUAGE['delete_user_warning'] = '<strong>WARNING</strong>: If you delete this user, all posts and pages belonging to this user will also be deleted!'; + +#=============================================================================== +# Database warning +#=============================================================================== +$LANGUAGE['database_warning'] = 'Some commands can have dangerous effects if you do not know what you are doing!'; + +#=============================================================================== +# Error 403 +#=============================================================================== +$LANGUAGE['403_heading_text'] = 'Access denied'; +$LANGUAGE['403_heading_desc'] = 'You are denied to access this resource because you do not have the necessary permissions.'; + +#=============================================================================== +# Error 404 +#=============================================================================== +$LANGUAGE['404_heading_text'] = 'Not found'; +$LANGUAGE['404_heading_desc'] = 'The requested resource could not be found on this server.'; + +#=============================================================================== +# "Are you sure?" question +#=============================================================================== +$LANGUAGE['sure'] = 'Are you sure?'; + +#=============================================================================== +# Labels +#=============================================================================== +$LANGUAGE['LABEL_SLUG'] = 'Slug'; +$LANGUAGE['LABEL_USER'] = 'User'; +$LANGUAGE['LABEL_NAME'] = 'Title'; +$LANGUAGE['LABEL_INSERT'] = 'Created'; +$LANGUAGE['LABEL_UPDATE'] = 'Updated'; +$LANGUAGE['LABEL_FULLNAME'] = 'Name'; +$LANGUAGE['LABEL_MAILADDR'] = 'Email'; +$LANGUAGE['LABEL_USERNAME'] = 'Username'; +$LANGUAGE['LABEL_PASSWORD'] = 'Password'; +?>
\ No newline at end of file diff --git a/template/admin/rsrc/background.png b/template/admin/rsrc/background.png Binary files differnew file mode 100644 index 0000000..f018e81 --- /dev/null +++ b/template/admin/rsrc/background.png diff --git a/template/admin/rsrc/font/font-awesome.woff2 b/template/admin/rsrc/font/font-awesome.woff2 Binary files differnew file mode 100644 index 0000000..4d13fc6 --- /dev/null +++ b/template/admin/rsrc/font/font-awesome.woff2 diff --git a/template/admin/rsrc/font/kadwa-n-400.woff2 b/template/admin/rsrc/font/kadwa-n-400.woff2 Binary files differnew file mode 100644 index 0000000..1566426 --- /dev/null +++ b/template/admin/rsrc/font/kadwa-n-400.woff2 diff --git a/template/admin/rsrc/font/ruda-n-400.woff2 b/template/admin/rsrc/font/ruda-n-400.woff2 Binary files differnew file mode 100644 index 0000000..6435a0d --- /dev/null +++ b/template/admin/rsrc/font/ruda-n-400.woff2 diff --git a/template/admin/rsrc/font/ruda-n-700.woff2 b/template/admin/rsrc/font/ruda-n-700.woff2 Binary files differnew file mode 100644 index 0000000..0066431 --- /dev/null +++ b/template/admin/rsrc/font/ruda-n-700.woff2 diff --git a/template/admin/rsrc/icon-public-domain.svg b/template/admin/rsrc/icon-public-domain.svg new file mode 100644 index 0000000..e0f0b0f --- /dev/null +++ b/template/admin/rsrc/icon-public-domain.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 53.869999 53.509998" version="1" width="53.87" height="53.51"><rect rx="2" width="50.745" y="1.563" x="1.563" height="50.385" fill="#b3b3b3" fill-rule="evenodd" stroke="#333" stroke-width="3.125" stroke-linejoin="round"/><g transform="translate(-3.116 -3.554)" fill-rule="evenodd" stroke="#333" stroke-linecap="round" stroke-linejoin="round"><path d="M25.96 22.992c-2.403 1.28-3.964 3.706-4.993 6.316h18.198c-.944-2.547-2.39-4.947-4.593-6.316-2.478-.108-5.595 0-8.612 0z" fill="#7f7f7f" stroke-width="1.87471319"/><circle transform="matrix(.6206 0 0 .6206 17.702 3.554)" cx="19.524" cy="22.301" r="12.326" fill="#bfbfbf" stroke-width="3.021"/></g><path d="M12.76 27.584c-.84 0-1.513.674-1.513 1.512v18.116h31.72V29.096c0-.838-.674-1.512-1.51-1.512H12.758z" fill="#999" fill-rule="evenodd" stroke="#333" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M18.55 29.705l-9.617-13.27 5.385-2.694" fill="none" stroke="#333" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/><circle cx="13.934" cy="13.741" r="2.308" fill="#7f7f7f" fill-rule="evenodd" stroke="#333" stroke-width="1.25"/><rect rx="2.267" height="4.616" width="36.929" y="24.705" x="8.548" fill="#4c4c4c" fill-rule="evenodd" stroke="#333" stroke-width="2.5" stroke-linejoin="round"/><path d="M18.29 45.03c2.917-1.836 6.143-2.33 7.4-2.043.14-1.242 2.07-3.303 5.54-5.486-4.107 1.048-4.96 1.32-6.74 3.745-3.04.3-3.913 1.192-6.2 3.785zM25.543 36.904c2.02-1.27 4.253-1.612 5.122-1.415.098-.86 1.434-2.287 3.835-3.797-2.842.724-3.433.912-4.664 2.59-2.105.208-2.71.826-4.293 2.62z" fill="#4c4c4c" fill-rule="evenodd" stroke="#333" stroke-width=".625" stroke-linecap="round" stroke-linejoin="round"/></svg>
\ No newline at end of file diff --git a/template/admin/rsrc/main.css b/template/admin/rsrc/main.css new file mode 100644 index 0000000..2466b31 --- /dev/null +++ b/template/admin/rsrc/main.css @@ -0,0 +1,275 @@ +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Selection +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +::-moz-selection{background:#BBB;color:#000;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Hyperlinks +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +a{color:#0060A0;text-decoration:none;}a:focus{background:#CCC;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Paragraphs +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Icons +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +h1 .fa, h2 .fa, h3 .fa, h4 .fa, h5 .fa, h6 .fa{margin-right:0.25rem;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Headings +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +h1 > a{float:right;font-size:0.7rem;font-weight:normal;} +h1,h2,h3,h4,h5,h6{margin:0;text-transform:uppercase;} +h1{font-size:0.80rem;}h2{font-size:0.70rem;} +h3{font-size:0.65rem;}h4{font-size:0.60rem;} +h5{font-size:0.55rem;}h6{font-size:0.50rem;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Document +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +html,body{margin:0;padding:0;} +main{padding:1rem;} +html{font-size:1.25rem;color:#333;background:url(background.png) fixed center #CCC;-webkit-hyphens:auto;hyphens:auto;} +body{font-family:Ruda,sans-serif;font-size:0.7rem;line-height:1.2rem;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Main content +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#main-content{background:#FFF;border:0.05rem solid #AAA;border-top:none;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Width +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#main-content,.header-content{max-width:50rem;margin:0 auto;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Header +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#main-header{font-size:0.6rem;} +#header-text,#header-desc{text-shadow: 0 -1px #4E718F, 1px 0 #4E718F, 0 1px #4E718F, -1px 0 #4E718F;} +#header-text{font-size:0.8rem;font-weight:700;text-transform:uppercase;} +#header-desc{font-size:0.6rem;font-weight:700;line-height:1rem;} +#header-desc span{color:#CCC;} +#header-logo{display:block;max-height:5rem;float:left;margin-right:0.5rem;} +.header-line{padding:0.5rem 1rem;overflow:hidden;} +.header-line:first-child{background:#5E819F;} +.header-line:last-child{background:#EEE;border:0.05rem solid #AAA;border-left:none;border-right:none;padding:0.25rem 1rem;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Main Navigation +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#main-navi ul{list-style:none;margin:0;padding:0;float:left;} +#main-navi li{display:inline;} +#main-navi ul+ul{float:right;} +#main-navi li .fa{margin-right:0.25rem;} +#main-navi a{padding:0.1rem 0.3rem;background:#DDD;border:0.05rem solid #AAA;color:inherit;text-decoration:none;text-align:center;display:inline-block;} +#main-navi a:hover, #main-navi a:focus{text-decoration:none;background:#CCC;} +#main-navi a:focus{background:#CCC;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Footer +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#main-footer{font-size:0.6rem;background:#EEE;border-top:0.05rem solid #AAA;padding:0.75rem;text-align:center;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Content containers +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +.content{border:0.05rem solid #AAA;margin-bottom:1rem;clear:both;} +.content{background:#FFF;border:0.05rem solid #AAA;} + +.content > header{padding:0.5rem 1rem;} + +.content > header, +.content > footer{background:#EEE;overflow:hidden;} + +.content > article{padding:1rem;} +.content > header{border-bottom:0.05rem solid #AAA;} +.content > footer{border-top:0.05rem solid #AAA;} +.content > footer > ul{margin:0;padding:0;list-style:none;} +.content > footer > ul > li{display:inline-block;float:left;} +.content > footer > ul > li:last-child{float:right;} +.content > footer > ul > li > a{color:inherit;display:inline-block;padding:0.25rem 2rem;} +.content > footer > ul > li > a:hover, +.content > footer > ul > li > a:active{background:#DDD;} + +.content h2 > span{float:right;} + +.item-list{margin:0;padding:0;list-style:none;} +.item-list > li{display:block;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Site Navigation +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#site-navi{clear:both;display:flex;box-sizing:border-box;justify-content:space-between;} +#site-navi > div{display:flex;align-items:center;border:0.05rem solid #AAA;background:#EEE;} +#site-navi > div > a{display:block;} +#site-navi > section{display:flex;overflow:hidden;align-items:center;} +#site-navi > section > div{border:0.05rem solid #AAA;background:#EEE;} + +#site-navi .disabled{pointer-events:none;color:#AAA;} +#site-navi .active a{background:#CCC !important;font-weight:600;pointer-events: none;} + +#site-navi ol{list-style:none;margin:0;padding:0;} +#site-navi li{float:left;display:inline-block;} +#site-navi li+li{border-left:0.05rem solid #AAA;} +#site-navi a{padding:0 0.5rem;text-decoration:none;color:inherit;display:inline-block;} +#site-navi a:hover,#site-navi a:focus{background:#CCC;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Elements +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +pre{margin-bottom:1rem;overflow:auto;-moz-tab-size:4;tab-size:4;} +code,pre{font-family:monospace;color:#B03060;} +p{margin-top:0;} +img{border:none;max-width:100%;} +.red{color:#B03060;} +.blue{color:#40779A;} +.green{color:#008B45;} +.right{float:right;} +#database-result{color:inherit;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Table elements +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +table{width:100%;margin:0 0 1rem;}td{vertical-align:middle;} +table,td{border-spacing:0;border-collapse:collapse;padding:0.5rem;border:0.05rem solid #000;} +thead,tr:nth-child(even){background:#EEE;} +thead > tr, th{font-weight:700;font-style:italic;} +thead > tr > td, th > td{text-align:center;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Brackets +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +.brackets a,a.brackets{text-decoration:none;} +.brackets:after{content:"]"} +.brackets:before{content:"["} +a.brackets:before,a.brackets:after{color:#222;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Form flex-box +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +form{border:0.05rem solid #AAA;} + +.flex{display:flex;width:100%;justify-content:center;overflow:hidden;box-sizing:border-box;} +.flex + section{border-top:0.05rem solid #AAA;} +.flex > section {display:flex;box-sizing:padding-box;width:100%;} +.flex > section > div{display:flex;align-items:center;padding:0.5rem;box-sizing:border-box;} +.flex > section > div + div{border-left:0.05rem solid #AAA;} +.flex.flex-responsive > section{width:50%;} + +.form-icon-flex{background:#DDD;width:10%;justify-content:center;} +.form-label-flex{background:#DDD;width:30%;border-left:none !important;} +.form-field-flex{width:60%;} + +.fa + label{margin-left:0.25rem;} +.background{background:#DDD;} +.flex-padding{padding:0.5rem;} +.flex-direction-column{flex-direction:column;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Form buttons +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +.button-list {margin:0;padding:0;list-style:none;} +.button-list > li{display:inline-block;background:#EEE;padding:0.5rem;border:0.05rem solid #AAA;cursor:pointer;} +.button-list.emoticons > li {padding:0.25rem 0.5rem;} +.button-list > li:hover, +.button-list > li:active{background:#CCC;} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Form elements +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +input,select,textarea{width:100%;box-sizing:padding-box;background:#EEE;color:#404040;font-family:inherit;font-size:0.7rem;padding:0.25rem;border:0.05rem solid #AAA;} +textarea{font-family:Kadwa,sans-serif;box-sizing:border-box;display:inline-block;resize:vertical;min-height:15rem;line-height:1.4rem;padding:0.75rem;} +input[type="submit"]{text-transform:uppercase;} +input:disabled{background:#DDD;color:#888;} +input:disabled:hover{cursor:not-allowed;} +label{text-transform:uppercase;font-weight:normal;} +label:after{content:":";} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* FontAwesome Main +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +.fa{display:inline-block;font:normal normal normal 14px/1 "FontAwesome";font-size:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* FontAwesome Icons +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +.fa-rss:before{content:"\f09e"} +.fa-bug:before{content:"\f188"} +.fa-key:before{content:"\f084"} +.fa-link:before{content:"\f0c1"} +.fa-bold:before{content:"\f032"} +.fa-code:before{content:"\f121"} +.fa-bars:before{content:"\f0c9"} +.fa-user:before{content:"\f007"} +.fa-home:before{content:"\f015"} +.fa-plus:before{content:"\f067"} +.fa-italic:before{content:"\f033"} +.fa-header:before{content:"\f1dc"} +.fa-search:before{content:"\f002"} +.fa-trash-o:before{content:"\f014"} +.fa-sign-in:before{content:"\f090"} +.fa-clock-o:before{content:"\f017"} +.fa-list-ul:before{content:"\f0ca"} +.fa-list-ol:before{content:"\f0cb"} +.fa-smile-o:before{content:"\f118"} +.fa-database:before{content:"\f1c0"} +.fa-sign-out:before{content:"\f08b"} +.fa-dashboard:before{content:"\f0e4"} +.fa-picture-o:before{content:"\f03e"} +.fa-envelope-o:before{content:"\f003"} +.fa-eyedropper:before{content:"\f1fb"} +.fa-rss-square:before{content:"\f143"} +.fa-arrow-left:before{content:"\f060"} +.fa-quote-right:before{content:"\f10e"} +.fa-user-secret:before{content:"\f21b"} +.fa-file-text-o:before{content:"\f0f6"} +.fa-newspaper-o:before{content:"\f1ea"} +.fa-arrow-right:before{content:"\f061"} +.fa-external-link:before{content:"\f08e"} +.fa-pencil-square-o:before{content:"\f044"} +.fa-question-circle:before{content:"\f059"} +.fa-pencil-square-o:before{content:"\f044"} +.fa-exclamation-triangle:before{content:"\f071"} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Responsive Level #1 +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +@media only screen and (max-width:50rem) { + html{font-size:1.125rem;/*18px*/background-image:none !important;} +} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Responsive Level #2 +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +@media only screen and (max-width:37.5rem) { + .flex.flex-responsive{display:block;width:auto;} + .flex.flex-responsive > section {width:100%;} + .flex.flex-responsive > section + section{border-top:0.05rem solid #AAA;} + + #main-navi{font-size:1rem;} + #main-navi li span{display:none;} + #main-navi li .fa{margin-right:0;} + #main-navi a{padding:0.5rem;} + + .flex-emoticons{display:none !important;} +} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Font "Font Awesome" [4.7.0]: SIL Open Font License (OFL) +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +@font-face{font-family:"FontAwesome";font-weight:400;src:url("font/font-awesome.woff2") format("woff2");} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Font "Kadwa": SIL Open Font License (OFL) +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +@font-face{font-family:Kadwa;font-weight:400;src:url("font/kadwa-n-400.woff2") format("woff2");} + +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +/* Font "Ruda": SIL Open Font License (OFL) +/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +@font-face{font-family:Ruda;font-weight:400;src:url("font/ruda-n-400.woff2") format("woff2");} +@font-face{font-family:Ruda;font-weight:700;src:url("font/ruda-n-700.woff2") format("woff2");}
\ No newline at end of file diff --git a/template/admin/rsrc/main.js b/template/admin/rsrc/main.js new file mode 100644 index 0000000..3d5546f --- /dev/null +++ b/template/admin/rsrc/main.js @@ -0,0 +1,94 @@ +//============================================================================== +// Markdown tags to replace +//============================================================================== +var markdownTags = { + "bold": ["**", "**"], + "italic": ["*", "*"], + "header": ["## ", "\n"], + "link": ["[", "](href)"], + "image": ["![", "](href)"], + "code": ["\n~~~\n", "\n~~~\n"], + "quote": ["\n> ", ""], + "list_ul": ["* ", ""], + "list_ol": ["1. ", ""] +}; + +//============================================================================== +// Set caret position in editor +//============================================================================== +function setCaretPosition(position) { + window.setTimeout(function() { + document.getElementById("content-editor").focus(); + document.getElementById("content-editor").setSelectionRange(position, position); + }, 50); + +} + +//============================================================================== +// Insert markdown around text in editor +//============================================================================== +function markdownReplace(tagname) { + var element = document.activeElement; + + if(element.nodeName === 'TEXTAREA') { + var selectionStart = element.selectionStart; + var selectionEnd = element.selectionEnd; + + var selectedText = element.value.substring(selectionStart, selectionEnd); + + var content = element.value; + element.value = content.slice(0, selectionStart) + markdownTags[tagname][0] + selectedText + markdownTags[tagname][1] + content.slice(selectionEnd); + + setCaretPosition(selectionStart + markdownTags[tagname][0].length + selectedText.length + markdownTags[tagname][1].length); + } +} + +//============================================================================== +// Insert emoticon after cursor in editor +//============================================================================== +function emoticonReplace(emoticon) { + var element = document.activeElement; + + if(element.nodeName === 'TEXTAREA') { + var selectionStart = element.selectionStart; + var selectionEnd = element.selectionEnd; + + var content = element.value; + element.value = content.slice(0, selectionStart) + emoticon + content.slice(selectionEnd); + + setCaretPosition(selectionStart + emoticon.length); + } +} + +//============================================================================== +// Keep server-side session active if the user is writing a long text +//============================================================================== +addEventListener("DOMContentLoaded", function() { + setInterval(function() { + var Request = new XMLHttpRequest(); + Request.open("HEAD", "", true); + Request.send(); + }, 300000); +}, false); + +//============================================================================== +// Insert tab indent into editor if <tab> is pressed +//============================================================================== +addEventListener("DOMContentLoaded", function() { + if(document.getElementById("content-editor")) { + var element = document.getElementById("content-editor"); + element.addEventListener('keydown', function(e) { + if(e.keyCode === 9 && !e.ctrlKey && !e.shiftKey) { + var selectionStart = element.selectionStart; + var selectionEnd = element.selectionEnd; + + var content = element.value; + + element.value = content.substring(0, selectionStart) + "\t" + content.substring(selectionEnd); + + setCaretPosition(selectionStart + 1); + e.preventDefault(); + } + }, false); + } +}, false);
\ No newline at end of file |