<?php
// This is included by the program instantiating the UpdateSite class via updatesite.class.php
// This is the AJAX PART!!!
if($_GET['ajax']) {
// The Ajax part does not need the UpdateSite class.
// This part reads the 'page' file and replaces the '// START UpdateSite ...' marker with an array that fills the $item rather
// than filling it via the $u->getItem() function.
session_start(); // Start the session for the ajax part!
// The function part of this file sets up these session variables.
$title = $_SESSION['title'];
$bodytext = $_SESSION['bodytext'];
$itemname = $_SESSION['itemname'];
$page = $_SESSION['page'];
$title = preg_replace("/'/s", "'", $title);
$bodytext = preg_replace("/'/s", "'", $bodytext);
$date = date("Y-m-d H:i:s");
$item = "array(title=>'$title', bodytext=>'$bodytext', date=>'$date');";
$data = file_get_contents("$page");
$data = preg_replace("|// START UpdateSite $itemname.*?// END UpdateSite.*?\n|s", '$item=' . $item, $data);
// Remove the Admin Notice.
// Note we have to escape the paren and the $
$data = preg_replace('/if\(\$S->isAdmin.*?}/s', "", $data, 1);
// This works using an eval!
// I want the file to actually execute the PHP in it. That is execute it just like if
// the file was loaded via the server. All of the PHP in the file is executed and the
// results is output.
ob_start();
eval('?>' . $data);
$data = ob_get_clean();
$data = preg_replace("|<!-- Google Analitics -->.*<!-- END Google Analitics -->|s", "", $data);
header("Content-type: text/html");
echo $data;
exit(); // All DONE EXIT
}
// This file is included in the site specific updatesite2.php (or whatever it is called -- the second part of the site specific
// pair of files).
// This function is then called from updatesite.class.php (UpdateSite class) 'previewpage' function. 'previewpage' check to see
// that the function exists. If it does not exist then a message is presented and the user is given the option to proceed to the
// post page without a preview option.
// If this function does exist it is passed the "$this" of the UpdateSite class, the id of the item, the page name, itemname, and
// the title and bodytext text.
// This function then starts a session and sets the session variables for the AJAX part above.
// It then presents an <iframe> that is filled via the AJAX logic and a form that has a 'create' and 'discard' button.
// The iframe has the full page of the 'page' file with the insert.
// The AJAX ifram is '<iframe id="frame" style="width: 100%; height: 100%;" src="$self?ajax=1"></iframe>'. The Javascript in the
// header handles the Ajax and the buttons.
function updatesite_preview($classthis, $id, $page, $itemname, $title, $bodytext) {
session_start();
$_SESSION['title'] = $title = stripslashes($title);
$_SESSION['bodytext'] = $bodytext = stripslashes($bodytext);
$_SESSION['itemname'] = $itemname;
$_SESSION['page'] = $page;
$self = $classthis->self; // this self is not this file but the one that called us!
// $title = str_replace("\\", "", $title);
// $bodytext = str_replace("\\", "", $bodytext);
$u_title = urlencode($title);
$u_bodytext = urlencode($bodytext);
echo <<<EOF
<html>
<head>
<title>UpdateSite Preview</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#reset").click(function() {
$("#subButton").hide();
$("#reset").hide();
$("iframe").fadeOut(1000, function() {
// The ajax needs time to do its thing so do a 1 second hide
// before doing the back
// window.history.back();
$("form input[name=page]").val("reedit");
$("form").submit();
});
return false;
});
$("#subButton").click(function() {
$("form").submit();
});
});
</script>
<style type="text/css">
#subButton {
font-size: 1.5em;
background-color: green;
color: white;
padding: 20px;
}
#reset {
font-size: 1.5em;
background-color: red;
color: white;
padding: 20px;
}
</style>
</head>
<body>
<iframe id="frame" style="width: 100%; height: 100%;" src="$self?ajax=1"></iframe>
<form action="$self" method="post">
<input type="hidden" name="title" value="$u_title"/>
<input type="hidden" name="bodytext" value="$u_bodytext"/>
<input type="hidden" name="id" value="{$id}" />
<input type="hidden" name="page" value="Post"/>
<input type="hidden" name="pagename" value="$page"/>
<input type="hidden" name="itemname" value="$itemname"/>
<button id="subButton">Create Article</button>
<button id="reset">Discard and return to editor panel</button>
</form>
</body>
</html>
EOF;
}
|