| 
<?php// This is included by the program instantiating the UpdateSite class via updatesite.class.php
 // 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.
 // It presents an <iframe> that is filled via blob-datauri logic and a form that has a 'create' and 'discard' button.
 // The form's action is $classthis->self so the form goes back to updatesite.class.php with
 // page=Post so updatesite.class.php performs the Post.
 // The iframe has the full page of the 'page' file with the insert (that is $item has our new text).
 // The iframe is '<iframe id="frame" style="width: 100%; height: 100%;"
 // src="a-data-uri"></iframe>'.
 
 function updatesite_preview($classthis, $id, $page, $itemname, $title, $bodytext) {
 $title = stripslashes($title);
 $bodytext = stripslashes($bodytext);
 $self = $classthis->self; // this self is not this file but the one that called us!
 
 $u_title = urlencode($title);
 $u_bodytext = urlencode($bodytext);
 
 $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");
 
 // Every UpdateSite section in a webpage is delimited with a START/END marker.
 // We remove the START/END section that would normally load the info via $item = $u->getItem($s);
 // which makes $item an array.
 // with a straight load of $item with item array which has title, bodytext and date.
 
 $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);
 $data = "data:text/html;base64," . base64_encode($data);
 
 echo <<<EOF
 <html>
 <head>
 <meta charset='utf8'/>
 <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($) {
 // Now attach the click to the buttons
 
 $("#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();
 });
 */
 $("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>
 <h1>This is a test</h1>
 
 <iframe id="frame" style="width: 100%; height: 100%;" src="$data"></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;
 }
 
 |