Add optional data-cache to internal links and data-link in bootstrap.
Made history work with cached responses too.

Check for data.history before doing success. If set, history.push(data.history)
Cache the home page for ajax requests.
Temporarily using keywords, description, and author from `posts` in head.

Soon, there will be a class for this, storing all such information in a static
object, so there will be no need for the additional queries.
Updated pages class to use _pdo, ini, and template classes
Use pages class instead of code in main.php
Only make $this->data and public. Everything else is private.
Gor rid of all redirect ajax and replaced it with pages class.

Let pages class handle all scripting related to page content. Send via json_response
Set placeholder, maxlength, and required attributes for description
Set dimensions for new_post form textarea.
New case for edit_post in form switch. And restore database in action switch

Requires login as admin and checks nonce.
If these tests pass, uses a prepared statement to update the post, similar
to the same way posts are created to begin with.

Restoring the database requires login as admin.
If admin, check if {$connect->site}.sql exists and read its content
(file_get_contents does both of these) and execute the return from this in
$DB->query.

Notify on success of failure.
$type needs to be public as well. Do not caps($tags).

$type is used to determine type of request. Allow it to be public.

$tags should be left in whichever case they are (upper/lower). Do not change
Added Edit Post and Restore Database to admin menu.
Added handlers for new admin_menu features.

Edit post converts the currently loaded article to as close as I can to the
new_post menu as I can without requiring an ajax call. Mostly just puts
the article inside of a form and adds appropriate (data-input-name,
and contenteditable) attributes.

Text Style tries to replace selected text with text inside of the appropriate
HTML tag. BUGGY.

Also, add listener to get event.target on right clicks.
New class selection and check if this is document.body in ancestor() method.

Selection class tries to get currently selected text, and has methods to replace
the text with other values and to convert the text to other styles. Does not
work so well, especially with more complex and longer text section.
New contextmenu for WYSIWYG text editing.

Uses new selection class, which is buggy.

Including as it is useful still, and I plan on working out the bugs.