Hehe, k

Moest het toch even vragen ^^
Oké, hier is een voorbeeldje, meer basic zie je ze bijna niet. Je kunt 't nog altijd stukken ingewikkelder maken. Natuurlijk wil je wat stijl toevoegen, maar verder kun je nog nadenken over dingen als synchronisatie. Wat gebeurt er bijvoorbeeld als twee gebruikers tegelijk nieuwe content opslaan?
index.htm
[JS]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
var Settings = {
PHP: "contentManager.php"
};
function main() {
var textarea = _("textarea", {innerHTML: getData()}, document.body);
var btn_save = _("input", {type: "button", value: "Opslaan"}, document.body);
btn_save.addEventListener("click", function() {
saveData(textarea.value);
}, false);
}
function saveData(data) {
send({
action: "SAVE",
data: data
});
}
function getData() {
return send({
action: "GET"
}).data;
}
function send(data) {
var xhr = new XMLHttpRequest();
xhr.open("POST", Settings.PHP, false);
xhr.send(JSON.stringify(data));
return JSON.parse(xhr.responseText);
}
var _ = (function() {
function extend(obj, ext) {
for (var p in ext) {
if (typeof ext[p] === "object") {
extend(obj[p], ext[p]);
}
else {
obj[p] = ext[p];
}
}
}
function _(tag, attributes, parent) {
var el = document.createElement(tag);
if (attributes) extend(el, attributes);
if (parent) parent.appendChild(el);
return el;
}
return _;
})();
window.onload = main;
</script>
<title></title>
</head>
<body></body>
</html>
[/JS]
contentManager.php
PHP:
<?php
class FileNotExistException extends Exception {
public function __construct($fileName) {
parent::__construct("File (" . $fileName . ") does not exist");
}
}
function file_get_json ($fileName) {
$content = file_get_contents($fileName);
if ($content === false && !file_exists($fileName)) {
throw new FileNotExistException($fileName);
}
$json = json_decode($content, true);
if ($json === null) {
throw new Exception("No json in (" . $fileName . ")");
}
return $json;
}
function file_put_json ($fileName, $data) {
file_put_contents($fileName, json_encode($data));
}
function info($val) {
global $_RESPONSE;
array_push($_RESPONSE["info"], $val);
}
function warn($val) {
global $_RESPONSE;
array_push($_RESPONSE["warning"], $val);
}
define(DATA, "content.json");
try {
$_POST = file_get_json("php://input");
$_DATA = $_POST["data"];
$_RESPONSE = array(
"action" => $_POST["action"],
"data" => null,
"error" => null,
"info" => array(),
"warning" => array()
);
switch ($_POST["action"])
{
case "GET":
$_RESPONSE["data"] = file_get_json(DATA);
break;
case "SAVE":
file_put_json(DATA, $_DATA);
break;
default:
throw new Exception("No such action (" . $_POST["action"] . ")");
break;
}
}
catch (Exception $e) {
$_RESPONSE["error"] = $e->getMessage();
}
echo json_encode($_RESPONSE);
?>