aboutsummaryrefslogtreecommitdiffstats
path: root/theme/admin/html
diff options
context:
space:
mode:
Diffstat (limited to 'theme/admin/html')
-rw-r--r--theme/admin/html/403.php2
-rw-r--r--theme/admin/html/404.php2
-rw-r--r--theme/admin/html/auth.php34
-rw-r--r--theme/admin/html/database.php30
-rw-r--r--theme/admin/html/home.php45
-rw-r--r--theme/admin/html/main.php52
-rw-r--r--theme/admin/html/page/delete.php4
-rw-r--r--theme/admin/html/page/form.php98
-rw-r--r--theme/admin/html/page/index.php14
-rw-r--r--theme/admin/html/page/insert.php4
-rw-r--r--theme/admin/html/page/item.php29
-rw-r--r--theme/admin/html/page/search.php17
-rw-r--r--theme/admin/html/page/update.php4
-rw-r--r--theme/admin/html/pagination.php30
-rw-r--r--theme/admin/html/post/delete.php4
-rw-r--r--theme/admin/html/post/form.php98
-rw-r--r--theme/admin/html/post/index.php14
-rw-r--r--theme/admin/html/post/insert.php4
-rw-r--r--theme/admin/html/post/item.php29
-rw-r--r--theme/admin/html/post/search.php17
-rw-r--r--theme/admin/html/post/update.php4
-rw-r--r--theme/admin/html/user/delete.php6
-rw-r--r--theme/admin/html/user/form.php104
-rw-r--r--theme/admin/html/user/index.php13
-rw-r--r--theme/admin/html/user/insert.php4
-rw-r--r--theme/admin/html/user/item.php28
-rw-r--r--theme/admin/html/user/update.php4
27 files changed, 694 insertions, 0 deletions
diff --git a/theme/admin/html/403.php b/theme/admin/html/403.php
new file mode 100644
index 0000000..6fb3d16
--- /dev/null
+++ b/theme/admin/html/403.php
@@ -0,0 +1,2 @@
+<h1><i class="fa fa-exclamation-triangle"></i><?=$Language->text('403_heading_text')?></h1>
+<p><?=$Language->text('403_heading_desc')?></p> \ No newline at end of file
diff --git a/theme/admin/html/404.php b/theme/admin/html/404.php
new file mode 100644
index 0000000..aa264cd
--- /dev/null
+++ b/theme/admin/html/404.php
@@ -0,0 +1,2 @@
+<h1><i class="fa fa-exclamation-triangle"></i><?=$Language->text('404_heading_text')?></h1>
+<p><?=$Language->text('404_heading_desc')?></p> \ No newline at end of file
diff --git a/theme/admin/html/auth.php b/theme/admin/html/auth.php
new file mode 100644
index 0000000..e6bfb1e
--- /dev/null
+++ b/theme/admin/html/auth.php
@@ -0,0 +1,34 @@
+<h1><i class="fa fa-sign-in"></i><?=$Language->text('authentication_text')?></h1>
+<p><?=$Language->text('authentication_desc')?></p>
+
+<form action="" method="POST">
+ <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" />
+
+ <?php if($FORM['INFO']): ?>
+ <div class="flex flex-direction-column">
+ <ul id="message-list">
+ <?php foreach($FORM['INFO'] as $message): ?>
+ <li><?=$message?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <?php endif; ?>
+
+ <div class="flex">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-user-secret"></i></div>
+ <div class="form-label-flex"><label for="form_username"><?=$Language->text('label_username')?></label></div>
+ <div class="form-field-flex"><input id="form_username" name="username" value="<?=escapeHTML($FORM['DATA']['USERNAME'])?>" /></div>
+ </div>
+ </div>
+ <div class="flex">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-key"></i></div>
+ <div class="form-label-flex"><label for="form_password"><?=$Language->text('label_password')?></label></div>
+ <div class="form-field-flex"><input type="password" id="form_password" name="password" /></div>
+ </div>
+ </div>
+ <div class="flex flex-padding background">
+ <input type="submit" name="auth" value="<?=$Language->text('login')?>" />
+ </div>
+</form> \ No newline at end of file
diff --git a/theme/admin/html/database.php b/theme/admin/html/database.php
new file mode 100644
index 0000000..983dee7
--- /dev/null
+++ b/theme/admin/html/database.php
@@ -0,0 +1,30 @@
+<h1><i class="fa fa-database"></i><?=$Language->text('overview_database_text')?></h1>
+<p><?=$Language->text('overview_database_desc')?></p>
+
+<form action="" method="POST">
+ <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" />
+
+ <?php if($FORM['INFO']): ?>
+ <div class="flex flex-direction-column">
+ <ul id="message-list">
+ <?php foreach($FORM['INFO'] as $message): ?>
+ <li><?=$message?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <?php endif; ?>
+
+ <div class="flex">
+ <textarea id="content-editor" placeholder="<?=$Language->text('database_warning')?>" name="command"><?=escapeHTML($FORM['COMMAND'])?></textarea>
+ </div>
+
+<?php if($FORM['RESULT']): ?>
+ <div class="flex flex-padding background flex-direction-column">
+ <pre id="database-result"><?=escapeHTML($FORM['RESULT'])?></pre>
+ </div>
+<?php endif; ?>
+
+ <div class="flex flex-padding background">
+ <input id="insert-button" type="submit" name="execute" value="Execute" />
+ </div>
+</form> \ No newline at end of file
diff --git a/theme/admin/html/home.php b/theme/admin/html/home.php
new file mode 100644
index 0000000..a8b003e
--- /dev/null
+++ b/theme/admin/html/home.php
@@ -0,0 +1,45 @@
+<h1><i class="fa fa-dashboard"></i><?=$Language->text('overview_dashboard_text')?></h1>
+<p><?=$Language->text('overview_dashboard_desc')?></p>
+
+<h2><i class="fa fa-newspaper-o"></i><?=$Language->text('last_post')?></h2>
+<p>
+ <strong><?=$Language->text('posts')?>:</strong> <?=$COUNT['POST']?>
+ | <a href="<?=Application::getAdminURL('post/insert.php')?>"><?=$Language->text('insert')?></a>
+ | <a href="<?=Application::getAdminURL('post/search.php')?>"><?=$Language->text('search')?></a>
+</p>
+<?php if(!empty($LAST['POST'])): ?>
+ <div class="item-container post">
+ <?=$LAST['POST']?>
+ </div>
+<?php else: ?>
+ <p><em><?=$Language->text('home_no_posts')?></em></p>
+<?php endif; ?>
+
+<h2><i class="fa fa-file-text-o"></i><?=$Language->text('last_page')?></h2>
+<p>
+ <strong><?=$Language->text('pages')?>:</strong> <?=$COUNT['PAGE']?>
+ | <a href="<?=Application::getAdminURL('page/insert.php')?>"><?=$Language->text('insert')?></a>
+ | <a href="<?=Application::getAdminURL('page/search.php')?>"><?=$Language->text('search')?></a>
+</p>
+
+<?php if(!empty($LAST['PAGE'])): ?>
+ <div class="item-container page">
+ <?=$LAST['PAGE']?>
+ </div>
+<?php else: ?>
+ <p><em><?=$Language->text('home_no_pages')?></em></p>
+<?php endif; ?>
+
+<h2><i class="fa fa-user"></i><?=$Language->text('last_user')?></h2>
+<p>
+ <strong><?=$Language->text('users')?>:</strong> <?=$COUNT['USER']?>
+ | <a href="<?=Application::getAdminURL('user/insert.php')?>"><?=$Language->text('insert')?></a>
+</p>
+
+<?php if(!empty($LAST['USER'])): ?>
+ <div class="item-container user">
+ <?=$LAST['USER']?>
+ </div>
+<?php else: ?>
+ <p><em><?=$Language->text('home_no_users')?></em></p>
+<?php endif; ?> \ No newline at end of file
diff --git a/theme/admin/html/main.php b/theme/admin/html/main.php
new file mode 100644
index 0000000..794f9ec
--- /dev/null
+++ b/theme/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 defer src="<?=Application::getTemplateURL('rsrc/main.js')?>"></script>
+ <title><?=escapeHTML($NAME)?> | Administration</title>
+</head>
+<body>
+ <header id="main-header">
+ <div 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>
+ </div>
+ <div class="header-line">
+ <div class="header-content">
+ <nav id="main-navi">
+ <ul>
+ <?php if(Application::isAuthenticated()): ?>
+ <li><a href="<?=Application::getAdminURL()?>" title="<?=$Language->text('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->text('overview_database_text')?>"><i class="fa fa-database"></i><span><?=$Language->text('overview_database_text')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL('auth.php?action=logout&amp;token='.Application::getSecurityToken())?>"><i class="fa fa-sign-out"></i><span><?=$Language->text('logout')?></span></a></li>
+ <?php else: ?>
+ <li><a href="<?=Application::getAdminURL('auth.php')?>"><i class="fa fa-sign-in"></i><span><?=$Language->text('login')?></span></a></li>
+ <?php endif; ?>
+ </ul>
+ </nav>
+ </div>
+ </div>
+ </header>
+ <div id="main-content">
+ <main>
+ <?=$HTML?>
+ </main>
+ <footer id="main-footer">
+ <ul>
+ <li><i class="fa fa-github-square"></i><a href="https://github.com/Nerdmind/Blog/releases" target="_blank">Releases</a></li>
+ <li><i class="fa fa-book"></i><a href="https://github.com/Nerdmind/Blog/wiki" target="_blank">Documentation</a></li>
+ <li><i class="fa fa-bug"></i><a href="https://github.com/Nerdmind/Blog/issues">Bugreport</a></li>
+ </ul>
+ </footer>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/theme/admin/html/page/delete.php b/theme/admin/html/page/delete.php
new file mode 100644
index 0000000..ccc569f
--- /dev/null
+++ b/theme/admin/html/page/delete.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_page')?></h1>
+<p><?=$Language->text('delete_page_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/page/form.php b/theme/admin/html/page/form.php
new file mode 100644
index 0000000..6a4be33
--- /dev/null
+++ b/theme/admin/html/page/form.php
@@ -0,0 +1,98 @@
+<form action="" method="POST">
+ <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" />
+
+ <?php if($FORM['INFO']): ?>
+ <div class="flex flex-direction-column">
+ <ul id="message-list">
+ <?php foreach($FORM['INFO'] as $message): ?>
+ <li><?=$message?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <?php endif; ?>
+
+<?php if($FORM['TYPE'] !== 'DELETE'): ?>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-database"></i></div>
+ <div class="form-label-flex"><label for="form_id">ID</label></div>
+ <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="form_id" name="id" type="number" placeholder="AUTO_INCREMENT" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-user"></i></div>
+ <div class="form-label-flex"><label for="form_user"><?=$Language->text('label_user')?></label></div>
+ <div class="form-field-flex">
+ <select id="form_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>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-file-text-o"></i></div>
+ <div class="form-label-flex"><label for="form_name"><?=$Language->text('label_name')?></label></div>
+ <div class="form-field-flex"><input id="form_name" name="name" value="<?=escapeHTML($FORM['DATA']['NAME'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-link"></i></div>
+ <div class="form-label-flex"><label for="form_slug"><?=$Language->text('label_slug')?></label></div>
+ <div class="form-field-flex"><input id="form_slug" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_insert"><?=$Language->text('label_insert')?></label></div>
+ <div class="form-field-flex"><input id="form_time_insert" name="time_insert" placeholder="YYYY-MM-DD HH:II:SS" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_update"><?=$Language->text('label_update')?></label></div>
+ <div class="form-field-flex"><input id="form_time_update" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : 'CURRENT_TIMESTAMP')?>" value="" /></div>
+ </div>
+ </div>
+ <div class="flex flex-direction-column">
+ <div id="button-list-wrapper">
+ <ul id="markdown-list" class="button-list markdown">
+ <li data-markdown="bold" class="fa fa-bold" title="<?=$Language->text('markdown_bold')?>"></li>
+ <li data-markdown="italic" class="fa fa-italic" title="<?=$Language->text('markdown_italic')?>"></li>
+ <li data-markdown="heading" class="fa fa-header" title="<?=$Language->text('markdown_heading')?>"></li>
+ <li data-markdown="link" class="fa fa-link" title="<?=$Language->text('markdown_link')?>"></li>
+ <li data-markdown="image" class="fa fa-picture-o" title="<?=$Language->text('markdown_image')?>"></li>
+ <li data-markdown="code" class="fa fa-code" title="<?=$Language->text('markdown_code')?>"></li>
+ <li data-markdown="quote" class="fa fa-quote-right" title="<?=$Language->text('markdown_quote')?>"></li>
+ <li data-markdown="list_ul" class="fa fa-list-ul" title="<?=$Language->text('markdown_list_ul')?>"></li>
+ <li data-markdown="list_ol" class="fa fa-list-ol" title="<?=$Language->text('markdown_list_ol')?>"></li>
+ </ul>
+ </div>
+ <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea>
+ </div>
+ <div class="flex flex-padding background flex-emoticons">
+ <ul id="emoticon-list" class="button-list emoticons">
+ <?php foreach(getUnicodeEmoticons() as $emoticon => $explanation):?>
+ <li data-emoticon="<?=$emoticon?>" title="<?=$explanation?>"><?=$emoticon?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <div class="flex flex-padding background">
+ <input id="form_argv" name="argv" maxlength="250" placeholder="[ARGUMENT_ONE=foo|ARGUMENT_TWO=bar …]" value="<?=escapeHTML($FORM['DATA']['ARGV'])?>" />
+ </div>
+<?php else: ?>
+ <div class="flex flex-padding background flex-direction-column">
+ <?=$HTML?>
+ </div>
+<?php endif; ?>
+
+ <div class="flex flex-padding background">
+ <?php if($FORM['TYPE'] === 'INSERT'): ?>
+ <input id="insert-button" type="submit" name="insert" value="<?=$Language->text('insert')?>" />
+ <?php elseif($FORM['TYPE'] === 'UPDATE'): ?>
+ <input id="update-button" type="submit" name="update" value="<?=$Language->text('update')?>" />
+ <?php elseif($FORM['TYPE'] === 'DELETE'): ?>
+ <input id="delete-button" type="submit" name="delete" value="<?=$Language->text('delete')?>" data-text="<?=$Language->text('sure')?>" />
+ <?php endif; ?>
+ </div>
+</form> \ No newline at end of file
diff --git a/theme/admin/html/page/index.php b/theme/admin/html/page/index.php
new file mode 100644
index 0000000..7067c40
--- /dev/null
+++ b/theme/admin/html/page/index.php
@@ -0,0 +1,14 @@
+<h1><i class="fa fa-file-text-o"></i><?=$Language->text('page_overview')?></h1>
+<p class="actions-before"><?=$Language->text('overview_page_desc')?></p>
+<ul class="actions">
+ <li><a href="<?=Application::getAdminURL('page/insert.php')?>" title="<?=$Language->text('insert_page')?>"><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert')?></a></li>
+ <li><a href="<?=Application::getAdminURL('page/search.php')?>" title="<?=$Language->text('search_page')?>"><i class="fa fa-search"></i><?=$Language->text('search')?></a></li>
+</ul>
+
+<div class="item-container page">
+ <?php foreach($LIST['PAGES'] as $page): ?>
+ <?php echo $page; ?>
+ <?php endforeach; ?>
+</div>
+
+<?=$PAGINATION['HTML']?> \ No newline at end of file
diff --git a/theme/admin/html/page/insert.php b/theme/admin/html/page/insert.php
new file mode 100644
index 0000000..7442200
--- /dev/null
+++ b/theme/admin/html/page/insert.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert_page')?></h1>
+<p><?=$Language->text('insert_page_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/page/item.php b/theme/admin/html/page/item.php
new file mode 100644
index 0000000..a92b2fd
--- /dev/null
+++ b/theme/admin/html/page/item.php
@@ -0,0 +1,29 @@
+<article class="item">
+ <header>
+ <h2><i class="fa fa-file-text-o"></i><?=escapeHTML($PAGE['ATTR']['NAME'])?></h2>
+ <div>
+ <span class="brackets item-id">#<?=$PAGE['ATTR']['ID']?></span>
+ <a class="brackets" href="<?=Application::getAdminURL("user/update.php?id={$USER['ATTR']['ID']}")?>" title="<?=$Language->text('update_user')?>"><?=escapeHTML($USER['ATTR']['FULLNAME'])?></a>
+ <time class="brackets" datetime="<?=$PAGE['ATTR']['TIME_INSERT']?>"><?=parseDatetime($PAGE['ATTR']['TIME_INSERT'], $Language->text('date_format'))?></time>
+ </div>
+ </header>
+ <blockquote cite="<?=$PAGE['URL']?>">
+ <p><?=excerpt($PAGE['BODY']['HTML']())?></p>
+ </blockquote>
+
+ <?php if($PAGE['ARGV']): ?>
+ <ul class="arguments">
+ <?php foreach($PAGE['ARGV'] as $argument => $value): ?>
+ <li><strong><?=$argument?>:</strong> <span><?=escapeHTML($value)?></span></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+
+ <footer>
+ <ul>
+ <li><a href="<?=$PAGE['URL']?>" target="_blank" title="<?=$Language->text('select_page')?>"><i class="fa fa-external-link"></i><span class="hidden"><?=$Language->text('select_page')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("page/update.php?id={$PAGE['ATTR']['ID']}")?>" title="<?=$Language->text('update_page')?>"><i class="fa fa-pencil-square-o"></i><span class="hidden"><?=$Language->text('update_page')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("page/delete.php?id={$PAGE['ATTR']['ID']}")?>" title="<?=$Language->text('delete_page')?>"><i class="fa fa-trash-o"></i><span class="hidden"><?=$Language->text('delete_page')?></span></a></li>
+ </ul>
+ </footer>
+</article> \ No newline at end of file
diff --git a/theme/admin/html/page/search.php b/theme/admin/html/page/search.php
new file mode 100644
index 0000000..a48f604
--- /dev/null
+++ b/theme/admin/html/page/search.php
@@ -0,0 +1,17 @@
+<h1><i class="fa fa-search"></i><?=$Language->text('title_page_search')?></h1>
+<p><?=$Language->text('search_page_desc')?></p>
+
+<form id="search-form" method="GET">
+ <div class="flex flex-padding background">
+ <input id="search-text" type="search" name="q" placeholder="<?=$Language->text('placeholder_search')?>" value="<?=escapeHTML($QUERY)?>" />
+ </div>
+ <div class="flex flex-padding background">
+ <input id="update-button" type="submit" value="<?=$Language->text('search')?>" />
+ </div>
+</form>
+
+<div class="item-container post">
+ <?php foreach($PAGES as $page): ?>
+ <?php echo $page; ?>
+ <?php endforeach; ?>
+</div> \ No newline at end of file
diff --git a/theme/admin/html/page/update.php b/theme/admin/html/page/update.php
new file mode 100644
index 0000000..77a7eb2
--- /dev/null
+++ b/theme/admin/html/page/update.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('update_page')?></h1>
+<p><?=$Language->text('update_page_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/pagination.php b/theme/admin/html/pagination.php
new file mode 100644
index 0000000..42eb378
--- /dev/null
+++ b/theme/admin/html/pagination.php
@@ -0,0 +1,30 @@
+<div id="site-navi">
+ <?php if($THIS > 1): ?>
+ <div><a id="prev-site" 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; ?>
+
+ <div>
+ <ol>
+ <?php
+ for($current = 1; $current <= $LAST; ++$current) {
+ $class = '';
+ $href = sprintf($HREF, $current);
+
+ if($current === $THIS) {
+ $class = ' class="active"';
+ }
+
+ echo "<li{$class}><a href=\"{$href}\">{$current}</a></li>";
+ }
+ ?>
+ </ol>
+ </div>
+
+ <?php if($THIS < $LAST): ?>
+ <div><a id="next-site" 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; ?>
+</div> \ No newline at end of file
diff --git a/theme/admin/html/post/delete.php b/theme/admin/html/post/delete.php
new file mode 100644
index 0000000..6654377
--- /dev/null
+++ b/theme/admin/html/post/delete.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_post')?></h1>
+<p><?=$Language->text('delete_post_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/post/form.php b/theme/admin/html/post/form.php
new file mode 100644
index 0000000..50f8fa6
--- /dev/null
+++ b/theme/admin/html/post/form.php
@@ -0,0 +1,98 @@
+<form action="" method="POST">
+ <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" />
+
+ <?php if($FORM['INFO']): ?>
+ <div class="flex flex-direction-column">
+ <ul id="message-list">
+ <?php foreach($FORM['INFO'] as $message): ?>
+ <li><?=$message?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <?php endif; ?>
+
+<?php if($FORM['TYPE'] !== 'DELETE'): ?>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-database"></i></div>
+ <div class="form-label-flex"><label for="form_id">ID</label></div>
+ <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="form_id" name="id" type="number" placeholder="AUTO_INCREMENT" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-user"></i></div>
+ <div class="form-label-flex"><label for="form_user"><?=$Language->text('label_user')?></label></div>
+ <div class="form-field-flex">
+ <select id="form_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>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-newspaper-o"></i></div>
+ <div class="form-label-flex"><label for="form_name"><?=$Language->text('label_name')?></label></div>
+ <div class="form-field-flex"><input id="form_name" name="name" value="<?=escapeHTML($FORM['DATA']['NAME'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-link"></i></div>
+ <div class="form-label-flex"><label for="form_slug"><?=$Language->text('label_slug')?></label></div>
+ <div class="form-field-flex"><input id="form_slug" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_insert"><?=$Language->text('label_insert')?></label></div>
+ <div class="form-field-flex"><input id="form_time_insert" name="time_insert" placeholder="YYYY-MM-DD HH:II:SS" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_update"><?=$Language->text('label_update')?></label></div>
+ <div class="form-field-flex"><input id="form_time_update" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : 'CURRENT_TIMESTAMP')?>" value="" /></div>
+ </div>
+ </div>
+ <div class="flex flex-direction-column">
+ <div id="button-list-wrapper">
+ <ul id="markdown-list" class="button-list markdown">
+ <li data-markdown="bold" class="fa fa-bold" title="<?=$Language->text('markdown_bold')?>"></li>
+ <li data-markdown="italic" class="fa fa-italic" title="<?=$Language->text('markdown_italic')?>"></li>
+ <li data-markdown="heading" class="fa fa-header" title="<?=$Language->text('markdown_heading')?>"></li>
+ <li data-markdown="link" class="fa fa-link" title="<?=$Language->text('markdown_link')?>"></li>
+ <li data-markdown="image" class="fa fa-picture-o" title="<?=$Language->text('markdown_image')?>"></li>
+ <li data-markdown="code" class="fa fa-code" title="<?=$Language->text('markdown_code')?>"></li>
+ <li data-markdown="quote" class="fa fa-quote-right" title="<?=$Language->text('markdown_quote')?>"></li>
+ <li data-markdown="list_ul" class="fa fa-list-ul" title="<?=$Language->text('markdown_list_ul')?>"></li>
+ <li data-markdown="list_ol" class="fa fa-list-ol" title="<?=$Language->text('markdown_list_ol')?>"></li>
+ </ul>
+ </div>
+ <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea>
+ </div>
+ <div class="flex flex-padding background flex-emoticons">
+ <ul id="emoticon-list" class="button-list emoticons">
+ <?php foreach(getUnicodeEmoticons() as $emoticon => $explanation):?>
+ <li data-emoticon="<?=$emoticon?>" title="<?=$explanation?>"><?=$emoticon?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <div class="flex flex-padding background">
+ <input id="form_argv" name="argv" maxlength="250" placeholder="[ARGUMENT_ONE=foo|ARGUMENT_TWO=bar …]" value="<?=escapeHTML($FORM['DATA']['ARGV'])?>" />
+ </div>
+<?php else: ?>
+ <div class="flex flex-padding background flex-direction-column">
+ <?=$HTML?>
+ </div>
+<?php endif; ?>
+
+ <div class="flex flex-padding background">
+ <?php if($FORM['TYPE'] === 'INSERT'): ?>
+ <input id="insert-button" type="submit" name="insert" value="<?=$Language->text('insert')?>" />
+ <?php elseif($FORM['TYPE'] === 'UPDATE'): ?>
+ <input id="update-button" type="submit" name="update" value="<?=$Language->text('update')?>" />
+ <?php elseif($FORM['TYPE'] === 'DELETE'): ?>
+ <input id="delete-button" type="submit" name="delete" value="<?=$Language->text('delete')?>" data-text="<?=$Language->text('sure')?>" />
+ <?php endif; ?>
+ </div>
+</form> \ No newline at end of file
diff --git a/theme/admin/html/post/index.php b/theme/admin/html/post/index.php
new file mode 100644
index 0000000..f884b05
--- /dev/null
+++ b/theme/admin/html/post/index.php
@@ -0,0 +1,14 @@
+<h1><i class="fa fa-newspaper-o"></i><?=$Language->text('post_overview')?></h1>
+<p class="actions-before"><?=$Language->text('overview_post_desc')?></p>
+<ul class="actions">
+ <li><a href="<?=Application::getAdminURL('post/insert.php')?>" title="<?=$Language->text('insert_post')?>"><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert')?></a></li>
+ <li><a href="<?=Application::getAdminURL('post/search.php')?>" title="<?=$Language->text('search_post')?>"><i class="fa fa-search"></i><?=$Language->text('search')?></a></li>
+</ul>
+
+<div class="item-container post">
+ <?php foreach($LIST['POSTS'] as $post): ?>
+ <?php echo $post; ?>
+ <?php endforeach; ?>
+</div>
+
+<?=$PAGINATION['HTML']?> \ No newline at end of file
diff --git a/theme/admin/html/post/insert.php b/theme/admin/html/post/insert.php
new file mode 100644
index 0000000..dc32c24
--- /dev/null
+++ b/theme/admin/html/post/insert.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert_post')?></h1>
+<p><?=$Language->text('insert_post_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/post/item.php b/theme/admin/html/post/item.php
new file mode 100644
index 0000000..8258d30
--- /dev/null
+++ b/theme/admin/html/post/item.php
@@ -0,0 +1,29 @@
+<article class="item">
+ <header>
+ <h2><i class="fa fa-newspaper-o"></i><?=escapeHTML($POST['ATTR']['NAME'])?></h2>
+ <div>
+ <span class="brackets item-id">#<?=$POST['ATTR']['ID']?></span>
+ <a class="brackets" href="<?=Application::getAdminURL("user/update.php?id={$USER['ATTR']['ID']}")?>" title="<?=$Language->text('update_user')?>"><?=escapeHTML($USER['ATTR']['FULLNAME'])?></a>
+ <time class="brackets" datetime="<?=$POST['ATTR']['TIME_INSERT']?>"><?=parseDatetime($POST['ATTR']['TIME_INSERT'], $Language->text('date_format'))?></time>
+ </div>
+ </header>
+ <blockquote cite="<?=$POST['URL']?>">
+ <p><?=excerpt($POST['BODY']['HTML']())?></p>
+ </blockquote>
+
+ <?php if($POST['ARGV']): ?>
+ <ul class="arguments">
+ <?php foreach($POST['ARGV'] as $argument => $value): ?>
+ <li><strong><?=$argument?>:</strong> <span><?=escapeHTML($value)?></span></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+
+ <footer>
+ <ul>
+ <li><a href="<?=$POST['URL']?>" target="_blank" title="<?=$Language->text('select_post')?>"><i class="fa fa-external-link"></i><span class="hidden"><?=$Language->text('select_post')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("post/update.php?id={$POST['ATTR']['ID']}")?>" title="<?=$Language->text('update_post')?>"><i class="fa fa-pencil-square-o"></i><span class="hidden"><?=$Language->text('update_post')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("post/delete.php?id={$POST['ATTR']['ID']}")?>" title="<?=$Language->text('delete_post')?>"><i class="fa fa-trash-o"></i><span class="hidden"><?=$Language->text('delete_post')?></span></a></li>
+ </ul>
+ </footer>
+</article> \ No newline at end of file
diff --git a/theme/admin/html/post/search.php b/theme/admin/html/post/search.php
new file mode 100644
index 0000000..4476786
--- /dev/null
+++ b/theme/admin/html/post/search.php
@@ -0,0 +1,17 @@
+<h1><i class="fa fa-search"></i><?=$Language->text('title_post_search')?></h1>
+<p><?=$Language->text('search_post_desc')?></p>
+
+<form id="search-form" method="GET">
+ <div class="flex flex-padding background">
+ <input id="search-text" type="search" name="q" placeholder="<?=$Language->text('placeholder_search')?>" value="<?=escapeHTML($QUERY)?>" />
+ </div>
+ <div class="flex flex-padding background">
+ <input id="update-button" type="submit" value="<?=$Language->text('search')?>" />
+ </div>
+</form>
+
+<div class="item-container post">
+ <?php foreach($POSTS as $post): ?>
+ <?php echo $post; ?>
+ <?php endforeach; ?>
+</div> \ No newline at end of file
diff --git a/theme/admin/html/post/update.php b/theme/admin/html/post/update.php
new file mode 100644
index 0000000..a577bec
--- /dev/null
+++ b/theme/admin/html/post/update.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('update_post')?></h1>
+<p><?=$Language->text('update_post_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/user/delete.php b/theme/admin/html/user/delete.php
new file mode 100644
index 0000000..01927b2
--- /dev/null
+++ b/theme/admin/html/user/delete.php
@@ -0,0 +1,6 @@
+<h1><i class="fa fa-trash-o"></i><?=$Language->text('delete_user')?></h1>
+<p><?=$Language->text('delete_user_desc')?></p>
+
+<p class="red"><?=$Language->text('delete_user_warning')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/user/form.php b/theme/admin/html/user/form.php
new file mode 100644
index 0000000..9f17cac
--- /dev/null
+++ b/theme/admin/html/user/form.php
@@ -0,0 +1,104 @@
+<form action="" method="POST">
+ <input type="hidden" name="token" value="<?=$FORM['TOKEN']?>" />
+
+ <?php if($FORM['INFO']): ?>
+ <div class="flex flex-direction-column">
+ <ul id="message-list">
+ <?php foreach($FORM['INFO'] as $message): ?>
+ <li><?=$message?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <?php endif; ?>
+
+<?php if($FORM['TYPE'] !== 'DELETE'): ?>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-database"></i></div>
+ <div class="form-label-flex"><label for="form_id">ID</label></div>
+ <div class="form-field-flex"><input<?=($FORM['TYPE'] === 'UPDATE') ? ' disabled="disabled"' : '';?> id="form_id" name="id" type="number" placeholder="AUTO_INCREMENT" value="<?=escapeHTML($FORM['DATA']['ID'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-key"></i></div>
+ <div class="form-label-flex"><label for="form_password"><?=$Language->text('label_password')?></label></div>
+ <div class="form-field-flex"><input id="form_password" name="password" placeholder="NO CHANGE" type="password" /></div>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-user"></i></div>
+ <div class="form-label-flex"><label for="form_fullname"><?=$Language->text('label_fullname')?></label></div>
+ <div class="form-field-flex"><input id="form_fullname" name="fullname" value="<?=escapeHTML($FORM['DATA']['FULLNAME'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-envelope-o"></i></div>
+ <div class="form-label-flex"><label for="form_mailaddr"><?=$Language->text('label_mailaddr')?></label></div>
+ <div class="form-field-flex"><input id="form_mailaddr" name="mailaddr" value="<?=escapeHTML($FORM['DATA']['MAILADDR'])?>" /></div>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-user-secret"></i></div>
+ <div class="form-label-flex"><label for="form_username"><?=$Language->text('label_username')?></label></div>
+ <div class="form-field-flex"><input id="form_username" name="username" value="<?=escapeHTML($FORM['DATA']['USERNAME'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-link"></i></div>
+ <div class="form-label-flex"><label for="form_slug"><?=$Language->text('label_slug')?></label></div>
+ <div class="form-field-flex"><input id="form_slug" name="slug" value="<?=escapeHTML($FORM['DATA']['SLUG'])?>" /></div>
+ </div>
+ </div>
+ <div class="flex flex-responsive">
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_insert"><?=$Language->text('label_insert')?></label></div>
+ <div class="form-field-flex"><input id="form_time_insert" name="time_insert" placeholder="YYYY-MM-DD HH:II:SS" value="<?=escapeHTML($FORM['DATA']['TIME_INSERT'])?>" /></div>
+ </div>
+ <div class="flex-item">
+ <div class="form-icon-flex"><i class="fa fa-clock-o"></i></div>
+ <div class="form-label-flex"><label for="form_time_update"><?=$Language->text('label_update')?></label></div>
+ <div class="form-field-flex"><input id="form_time_update" name="time_update" placeholder="<?=escapeHTML($FORM['DATA']['TIME_UPDATE'] ? $FORM['DATA']['TIME_UPDATE'] : 'CURRENT_TIMESTAMP')?>" value="" /></div>
+ </div>
+ </div>
+ <div class="flex flex-direction-column">
+ <div id="button-list-wrapper">
+ <ul id="markdown-list" class="button-list markdown">
+ <li data-markdown="bold" class="fa fa-bold" title="<?=$Language->text('markdown_bold')?>"></li>
+ <li data-markdown="italic" class="fa fa-italic" title="<?=$Language->text('markdown_italic')?>"></li>
+ <li data-markdown="heading" class="fa fa-header" title="<?=$Language->text('markdown_heading')?>"></li>
+ <li data-markdown="link" class="fa fa-link" title="<?=$Language->text('markdown_link')?>"></li>
+ <li data-markdown="image" class="fa fa-picture-o" title="<?=$Language->text('markdown_image')?>"></li>
+ <li data-markdown="code" class="fa fa-code" title="<?=$Language->text('markdown_code')?>"></li>
+ <li data-markdown="quote" class="fa fa-quote-right" title="<?=$Language->text('markdown_quote')?>"></li>
+ <li data-markdown="list_ul" class="fa fa-list-ul" title="<?=$Language->text('markdown_list_ul')?>"></li>
+ <li data-markdown="list_ol" class="fa fa-list-ol" title="<?=$Language->text('markdown_list_ol')?>"></li>
+ </ul>
+ </div>
+ <textarea id="content-editor" name="body" placeholder="[…]"><?=escapeHTML($FORM['DATA']['BODY'])?></textarea>
+ </div>
+ <div class="flex flex-padding background flex-emoticons">
+ <ul id="emoticon-list" class="button-list emoticons">
+ <?php foreach(getUnicodeEmoticons() as $emoticon => $explanation):?>
+ <li data-emoticon="<?=$emoticon?>" title="<?=$explanation?>"><?=$emoticon?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <div class="flex flex-padding background">
+ <input id="form_argv" name="argv" maxlength="250" placeholder="[ARGUMENT_ONE=foo|ARGUMENT_TWO=bar …]" value="<?=escapeHTML($FORM['DATA']['ARGV'])?>" />
+ </div>
+<?php else: ?>
+ <div class="flex flex-padding background flex-direction-column">
+ <?=$HTML?>
+ </div>
+<?php endif; ?>
+
+ <div class="flex flex-padding background">
+ <?php if($FORM['TYPE'] === 'INSERT'): ?>
+ <input id="insert-button" type="submit" name="insert" value="<?=$Language->text('insert')?>" />
+ <?php elseif($FORM['TYPE'] === 'UPDATE'): ?>
+ <input id="update-button" type="submit" name="update" value="<?=$Language->text('update')?>" />
+ <?php elseif($FORM['TYPE'] === 'DELETE'): ?>
+ <input id="delete-button" type="submit" name="delete" value="<?=$Language->text('delete')?>" data-text="<?=$Language->text('sure')?>" />
+ <?php endif; ?>
+ </div>
+</form> \ No newline at end of file
diff --git a/theme/admin/html/user/index.php b/theme/admin/html/user/index.php
new file mode 100644
index 0000000..aae8ee8
--- /dev/null
+++ b/theme/admin/html/user/index.php
@@ -0,0 +1,13 @@
+<h1><i class="fa fa-user"></i><?=$Language->text('user_overview')?></h1>
+<p class="actions-before"><?=$Language->text('overview_user_desc')?></p>
+<ul class="actions">
+ <li><a href="<?=Application::getAdminURL('user/insert.php')?>" title="<?=$Language->text('insert_user')?>"><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert')?></a></li>
+</ul>
+
+<div class="item-container user">
+ <?php foreach($LIST['USERS'] as $user): ?>
+ <?php echo $user; ?>
+ <?php endforeach; ?>
+</div>
+
+<?=$PAGINATION['HTML']?> \ No newline at end of file
diff --git a/theme/admin/html/user/insert.php b/theme/admin/html/user/insert.php
new file mode 100644
index 0000000..5cbdd06
--- /dev/null
+++ b/theme/admin/html/user/insert.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('insert_user')?></h1>
+<p><?=$Language->text('insert_user_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file
diff --git a/theme/admin/html/user/item.php b/theme/admin/html/user/item.php
new file mode 100644
index 0000000..d8e43cf
--- /dev/null
+++ b/theme/admin/html/user/item.php
@@ -0,0 +1,28 @@
+<article class="item">
+ <header>
+ <h2><i class="fa fa-user"></i><?=escapeHTML($USER['ATTR']['FULLNAME'])?></h2>
+ <div>
+ <span class="brackets item-id">#<?=$USER['ATTR']['ID']?></span>
+ <time class="brackets" datetime="<?=$USER['ATTR']['TIME_INSERT']?>"><?=parseDatetime($USER['ATTR']['TIME_INSERT'], $Language->text('date_format'))?></time>
+ </div>
+ </header>
+ <blockquote cite="<?=$USER['URL']?>">
+ <p><?=excerpt($USER['BODY']['HTML']())?></p>
+ </blockquote>
+
+ <?php if($USER['ARGV']): ?>
+ <ul class="arguments">
+ <?php foreach($USER['ARGV'] as $argument => $value): ?>
+ <li><strong><?=$argument?>:</strong> <span><?=escapeHTML($value)?></span></li>
+ <?php endforeach; ?>
+ </ul>
+ <?php endif; ?>
+
+ <footer>
+ <ul>
+ <li><a href="<?=$USER['URL']?>" target="_blank" title="<?=$Language->text('select_user')?>"><i class="fa fa-external-link"></i><span class="hidden"><?=$Language->text('select_user')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("user/update.php?id={$USER['ATTR']['ID']}")?>" title="<?=$Language->text('update_user')?>"><i class="fa fa-pencil-square-o"></i><span class="hidden"><?=$Language->text('update_user')?></span></a></li>
+ <li><a href="<?=Application::getAdminURL("user/delete.php?id={$USER['ATTR']['ID']}")?>" title="<?=$Language->text('delete_user')?>"><i class="fa fa-trash-o"></i><span class="hidden"><?=$Language->text('delete_user')?></span></a></li>
+ </ul>
+ </footer>
+</article> \ No newline at end of file
diff --git a/theme/admin/html/user/update.php b/theme/admin/html/user/update.php
new file mode 100644
index 0000000..e023925
--- /dev/null
+++ b/theme/admin/html/user/update.php
@@ -0,0 +1,4 @@
+<h1><i class="fa fa-pencil-square-o"></i><?=$Language->text('update_user')?></h1>
+<p><?=$Language->text('update_user_desc')?></p>
+
+<?=$HTML?> \ No newline at end of file