<?php

  
// (C) Jon Thomas Stokkeland 2012 
  //  This stuff could need some tidying up itself I am sure - quick and dirty duct tape, nicely bloated
  // to lazy to put in license info - you can use under GPL v3 as far as I am concerned.

  
session_start();

  
// first check if its a preview request
  
if (!empty($_REQUEST['tidyhtml']))
  {
    
// Check that its a valid session and data
    
$user = empty($_SESSION['user']) ? $_SESSION['user'];
    
$bgcolor = empty ($_POST['bgcolor']) ? : ('#'.substr($_POST['bgcolor'],1,6)); // basic strip...
      
$tidyhtml = empty($_REQUEST['tidyhtml']) ? stripslashes($_REQUEST['tidyhtml']);

    if ((
$user < (time()-7200)) || (!$bgcolor ) || (!$tidyhtml) ) die ("Don't Drink and Drive man...");

    
// Now check to see if there is a body tag in here 
    
if (preg_match('/<body.*?>(.+?)<\/body/i',str_replace("\n",'',$tidyhtml),$match))
    {
      
// doing this very dirty cheatie way - just remove the stuff outside the body
      
$tidyhtml $match[1];
    }

    echo 
'<h1>Simple preview</h1><p>&nbsp;</p>';
    echo 
'<div style="margin: 20px; padding: 20px; 
        border: 2px dashed black; border-radius: 5px; background-color: '
.$bgcolor' " >';
    echo 
$tidyhtml;
    echo 
'</div>';

    echo 
'<p>&nbsp;</p>
        <p style="color: red;"><i>
        This simple preview was opened in a new window so it can be closed when done.
        Do not link to this page or send links, it will expire for security reasons.
        </i></p>'
;

    
// since the preview is a duct tape item we just die when done...
    
die();

  } 
// end preview
  

  // doing this to make sure the preview option cant be easily linked from other sites, 
  // forcing a cookie value to be set and be somewhat new...
  
$_SESSION['user'] = time();

  
$sample '<p align="center">Hoyt<br><b>This is purposely messed up html!</p></b>'."\n"
        
'<u><p> To remove this, click in the box, hit ctrl+A then hit delete </p></u>'."\n"
        
'<!-- Comments are useful --><p style="color: red;">So long now...</p>';

  
$html = empty($_REQUEST['html']) ? $sample stripslashes($_REQUEST['html']);
  
$bodyonly = empty($_REQUEST['bodyonly']) ? false true;


?>
<html>
 <head>
  <title>Thomas Tidy Duct Tape</title>
  <style type="text/css"><!--

    .tagName { color: red; }
    .tagAttribute { color: green; }
    .HTMLComment { color: #444444; }
    .tagValue { color: #000088; }

  --></style>
 </head>
 <body>
 <h1>Thomas Tidy Duct Tape</h1>

 <h2>Input</h2>
 <form action="tidy.php" method="post">
  <textarea rows="10" cols="105" name="html"><?php
    
if ($html) echo htmlspecialchars($html);
  
?></textarea>
  <br />
  <select name="bodyonly">
   <option <?php echo $bodyonly '' 'selected="selected"'?> value="0">Full XHTML Document</option>
   <option <?php echo $bodyonly 'selected="selected"' ''?> value="1">Body Only</option>
  </select>
  <input type="submit" name="mofo" value="Tidy-now" />
 </form>


 <h2>Output</h2>

 <?php

    
// Specify configuration
    
$config = array(
           
'indent'         => true,
           
'output-xhtml'   => true,
       
'show-body-only' => $bodyonly,
           
'quote-marks' => true,
           
'wrap'           => 100);

    
// Tidy
    
$tidy = new tidy;
    
$tidy->parseString($html$config'utf8');
    
$tidy->cleanRepair();

    echo 
'<blockquote><pre>';
    echo 
htmlspecialchars($tidy->errorBuffer) ;
    echo 
'</pre></blockquote>';

    
// Output
    
echo '<form action="tidy.php" method="post" target="_new">';
    echo 
'<textarea rows="20" cols="105" name="tidyhtml" readonly="readonly">';
    echo 
htmlspecialchars($tidy);
    echo 
'</textarea>';
 
?>
    <br />
    Preview:
    <select name="bgcolor">
      <option>#000000</option>
      <option>#444444</option>
      <option selected="selected">#888888</option>
      <option>#aaaaaa</option>
      <option>#dddddd</option>
      <option>#ffffff</option>
    </select>

       <input type="submit" name="preview" value="Simple Preview" />
    </form>
 

    <h3>Highlighted Output</h3>
    <p>Note - for copy/paste use the box above - the stuff below may not be accurate,
      e.g. if you put a &quot; in there (&amp;quot;) it will just show as &quot; -
        I haven't had time to look at and fix such stuff.</p>
    <div style="margin: 10px; padding: 10px; background-color: #dddddd; border: 1px solid black; color: blue;">
    <pre><?php

        
include('php_net_manual_en_func_highlight-string_Daniel_Suissa_class.php');
        
$h = new HTMLcolorizer($tidy);
        echo 
$h->colorize();

    
?></pre>
    </div>


    <p>&nbsp;</p>
    <p>&copy; Jon Thomas Stokkeland 2012 -
    <a href="tidy.phps">View Source</a>
    </p>

 </body>
</html>