| 
<?php/*
 * markdown_preview.php
 *
 * @(#) $Id: markdown_preview.php,v 1.1 2016/02/03 06:23:45 mlemos Exp $
 *
 */
 
 require('forms.php');
 require('form_layout_vertical.php');
 require('markup_parser.php');
 require('markdown_parser.php');
 
 $form = new form_class;
 $form->NAME = 'preview_form';
 $form->METHOD = 'POST';
 $form->ACTION = '';
 $form->debug = 'trigger_error';
 $form->ShowAllErrors = 1;
 $form->InvalidCLASS = 'invalid';
 $form->AddInput(array(
 'TYPE'=>'textarea',
 'NAME'=>'data',
 'ID'=>'data',
 'ROWS'=>10,
 'COLS'=>60,
 'ValidateAsNotEmpty'=>1,
 'ValidationErrorMessage'=>
 'It was not specified any markdown to preview.',
 'LABEL'=>'<u>D</u>ata',
 'ACCESSKEY'=>'D'
 ));
 $form->AddInput(array(
 'TYPE'=>'textarea',
 'NAME'=>'html',
 'ID'=>'html',
 'ROWS'=>10,
 'COLS'=>60,
 'LABEL'=>'HTML',
 ));
 $form->AddInput(array(
 'TYPE'=>'submit',
 'NAME'=>'preview',
 'ID'=>'preview',
 'VALUE'=>'Preview',
 'ACCESSKEY'=>'P'
 ));
 $error = $warnings = $output = '';
 $form->LoadInputValues($form->WasSubmitted('preview'));
 $verify=array();
 if($form->WasSubmitted('preview'))
 {
 if(($error_message = $form->Validate($verify)) === '')
 {
 $markdown = new markdown_parser_class;
 $parameters=array(
 'Data'=>$form->GetInputValue('data'),
 );
 if(($success = $markdown->StartParsing($parameters)))
 {
 $markup = new markup_parser_class;
 do
 {
 if(!($success = $markdown->Parse($end, $elements)))
 break;
 $te = count($elements);
 for($e = 0; $e < $te; ++$e)
 {
 if(!($success = $markup->RewriteElement($elements[$e], $html)))
 break;
 $output .= $html;
 }
 }
 while(!$end);
 if($success)
 $success = $markdown->FinishParsing();
 $done = 1;
 }
 if($success)
 $form->SetInputValue('html', $output);
 else
 {
 $error = $markdown->error.' at position '.$markdown->error_position;
 if($markdown->track_lines
 && $markdown->GetPositionLine($markdown->error_position, $line, $column))
 $error .= ' line '.$line.' column '.$column;
 }
 for($warning = 0, Reset($markdown->warnings); $warning < count($markdown->warnings); Next($markdown->warnings), $warning++)
 {
 $w = Key($markdown->warnings);
 $warnings .= $markdown->warnings[$w].' at position '.$w;
 if($markdown->track_lines
 && $markdown->GetPositionLine($w, $line, $column))
 $warnings .= ' line '.$line.' column '.$column;
 $warnings .= "\n";
 }
 }
 else
 {
 $done = 0;
 $error_message = HtmlEntities($error_message);
 }
 }
 else
 {
 $error_message = '';
 $done = 0;
 }
 $form->AddInput(array(
 'ID'=>'layout',
 'NAME'=>'layout',
 'TYPE'=>'custom',
 'CustomClass'=>'form_layout_vertical_class',
 'Inputs'=>array(
 'data',
 'error',
 'warnings',
 'html',
 'rendered',
 'preview',
 ),
 'Data'=>array(
 'error'=>'<tr><td>Error:</td><td class="invalid">'.HtmlSpecialChars($error).'</td></tr>',
 'warnings'=>'<tr><td>Warnings:</td><td class="invalid">'.nl2br(HtmlSpecialChars($warnings)).'</td></tr>',
 'rendered'=>'<tr><td>Rendered:</td><td class="html">'.$output.'</td></tr>'
 ),
 'Properties'=>array(
 'rendered'=>array(
 'Visible'=>$done,
 ),
 'error'=>array(
 'Visible'=>(strlen($error) && $done),
 ),
 'warnings'=>array(
 'Visible'=>(strlen($warnings) && $done),
 ),
 'rendered'=>array(
 'Visible'=>(strlen($output) && $done),
 ),
 ),
 'InvalidMark'=>'[Verify]',
 ));
 
 if(!$done)
 {
 if(strlen($error_message))
 {
 Reset($verify);
 $focus=Key($verify);
 }
 else
 $focus='data';
 $form->ConnectFormToInput($focus, 'ONLOAD', 'Focus', array());
 }
 
 $onload=HtmlSpecialChars($form->PageLoad());
 
 ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
 <title>Markdown Preview</title>
 <style type="text/css"><!--
 .invalid { border-color: #ff0000; background-color: #ffcccc }
 .html { background-color: #ffffff ; border-width: 1px; border-style: solid; padding: 2px; margin: 1px; }
 body { background-color: #cccccc; }
 .center { text-align: center; }
 // --></style>
 </head>
 <body onload="<?php    echo $onload; ?>">
 <h1 class="center">Markdown Preview</h1>
 <div align="center" style="max-width: 60">
 <?php
 $form->StartLayoutCapture();
 $form->AddInputPart('layout');
 $form->EndLayoutCapture();
 $form->DisplayOutput();
 ?>
 </div>
 </body>
 </html>
 
 |