diff options
Diffstat (limited to 'buildscripts/texbuilder/quickstart')
-rw-r--r-- | buildscripts/texbuilder/quickstart/build.php | 290 | ||||
-rw-r--r-- | buildscripts/texbuilder/quickstart/pages.php | 103 | ||||
-rw-r--r-- | buildscripts/texbuilder/quickstart/quickstart.tex | 122 |
3 files changed, 515 insertions, 0 deletions
diff --git a/buildscripts/texbuilder/quickstart/build.php b/buildscripts/texbuilder/quickstart/build.php new file mode 100644 index 00000000..c0577c8f --- /dev/null +++ b/buildscripts/texbuilder/quickstart/build.php @@ -0,0 +1,290 @@ +<?php
+
+// TBD: subsections in Control Reference
+
+$pdflatexExec = "C:/Wei/miktex/texmf/MiKTeX/bin/pdflatex.exe";
+$pdfTex = "$pdflatexExec -interaction=nonstopmode -max-print-line=120 %s";
+
+$mainTexFile = dirname(__FILE__).'/quickstart.tex';
+
+//page root location
+$base = realpath(dirname(__FILE__).'/../../demos/quickstart/protected/pages/');
+
+//-------------- END CONFIG ------------------
+
+$pages = include('pages.php');
+
+function escape_verbatim($matches)
+{
+ return "\begin{verbatim}".str_replace('\$', '$', $matches[2])."\end{verbatim}\n";
+}
+
+function escape_verb($matches)
+{
+ $text = str_replace(array('\{', '\}'), array('{','}'), $matches[1]);
+ return '\verb<'.$text.'<';
+}
+
+function include_image($matches)
+{
+ global $current_path;
+
+ $image = dirname($current_path).'/'.trim($matches[1]);
+
+ $file = realpath($image);
+ $info = getimagesize($file);
+ switch($info[2])
+ {
+ case 1:
+ $im = imagecreatefromgif($file);
+ break;
+ case 2: $im = imagecreatefromjpeg($file); break;
+ case 3: $im = imagecreatefrompng($file); break;
+ }
+ global $base;
+
+ if(isset($im))
+ {
+ $prefix = strtolower(str_replace(realpath($base), '', $file));
+ $filename = preg_replace('/\\\|\//', '_', substr($prefix,1));
+ $filename = substr($filename, 0, strrpos($filename,'.')).'.png';
+ $newfile = dirname(__FILE__).'/'.$filename;
+ imagepng($im,$newfile);
+ imagedestroy($im);
+
+ return include_figure($info, $filename);
+ }
+}
+
+function include_figure($info, $filename)
+{
+ $width = sprintf('%0.2f', $info[0]/(135/2.54));
+ return '
+\begin{figure}[ht]
+ \centering
+ \includegraphics[width='.$width.'cm]{'.$filename.'}
+ \label{fig:'.$filename.'}
+\end{figure}
+';
+}
+
+function anchor($matches)
+{
+ $page = get_current_path();
+ return '\hypertarget{'.$page.'/'.strtolower($matches[1]).'}{}';
+}
+
+function texttt($matches)
+{
+ return '\texttt{'.str_replace(array('#','_'),array('\#','\_'), $matches[1]).'}';
+}
+
+function get_current_path()
+{
+ global $current_path, $base;
+ $page = strtolower(substr(str_replace($base, '', $current_path),1));
+ return $page;
+}
+
+function make_link($matches)
+{
+ if(is_int(strpos($matches[1], '#')))
+ {
+ if(strpos($matches[1],'?') ===false)
+ {
+ $target = get_current_path().'/'.substr($matches[1],1);
+ return '\hyperlink{'.$target.'}{'.$matches[2].'}';
+ }
+ else
+ {
+ $page = strtolower(str_replace('?page=', '', $matches[1]));
+ $page = str_replace('.','/',$page);
+ $page = str_replace('#','.page/',$page);
+ return '\hyperlink{'.$page.'}{'.$matches[2].'}';
+ }
+ }
+ else if(is_int(strpos($matches[1],'?')))
+ {
+ $page = str_replace('?page=','',$matches[1]);
+ return '\hyperlink{'.$page.'}{'.$matches[2].'}';
+ }
+ return '\href{'.$matches[1].'}{'.$matches[2].'}';
+}
+
+function parse_html($page,$html)
+{
+ $html = preg_replace('/<\/?com:TContent[^>]*>/', '', $html);
+ $html = preg_replace('/<\/?p>/m', '', $html);
+
+ //escape { and }
+ $html = preg_replace('/([^\s]+){([^}]*)}([^\s]+)/', '$1\\\{$2\\\}$3', $html);
+
+ //codes
+ $html = str_replace('$', '\$', $html);
+ $html = preg_replace('/<com:TTextHighlighter[^>]*>/', '`1`', $html);
+ $html = preg_replace('/<\/com:TTextHighlighter>/', '`2`', $html);
+ $html = preg_replace_callback('/(`1`)([^`]*)(`2`)/m', 'escape_verbatim', $html);
+ $html = preg_replace_callback('/(<div class="source">)([^<]*)(<\/div>)/', 'escape_verbatim', $html);
+ $html = preg_replace_callback('/(<pre>)([^<]*)(<\/pre>)/', 'escape_verbatim', $html);
+
+ //<code>
+ $html = preg_replace_callback('/<code>([^<]*)<\/code>/', 'escape_verb', $html);
+
+ $html = preg_replace_callback('/<img\s+src="?<%~([^"]*)%>"?[^\\/]*\/>/', 'include_image', $html);
+
+ //runbar
+ $html = preg_replace('/<com:RunBar\s+PagePath="([^"]*)"\s+\/>/',
+ '\href{http://www.pradosoft.com/demos/quickstart/index.php?page=$1}{$1 Demo}', $html);
+
+ //DocLink
+ $html = preg_replace('/<com:DocLink\s+ClassPath="([^"]*)[.]([^.]*)"\s+\/>/',
+ '\href{http://www.pradosoft.com/docs/manual/$1/$2.html}{$1.$2 API Reference}', $html);
+
+ //text modifiers
+ $html = preg_replace('/<b>([^<]*)<\/b>/', '\textbf{$1}', $html);
+ $html = preg_replace('/<i>([^<]*)<\/i>/', '\emph{$1}', $html);
+ $html = preg_replace_callback('/<tt>([^<]*)<\/tt>/', 'texttt', $html);
+
+ //links
+ $html = preg_replace_callback('/<a[^>]+href="([^"]*)"[^>]*>([^<]*)<\/a>/',
+ 'make_link', $html);
+ //anchor
+ $html = preg_replace_callback('/<a[^>]+name="([^"]*)"[^>]*><\/a>/', 'anchor', $html);
+
+ //description <dl>
+ $html = preg_replace('/<dt>([^<]*)<\/dt>/', '\item[$1]', $html);
+ $html = preg_replace('/<\/?dd>/', '', $html);
+ $html = preg_replace('/<dl>/', '\begin{description}', $html);
+ $html = preg_replace('/<\/dl>/', '\end{description}', $html);
+
+ //item lists
+ $html = preg_replace('/<ul>/', '\begin{itemize}', $html);
+ $html = preg_replace('/<\/ul>/', '\end{itemize}', $html);
+ $html = preg_replace('/<ol>/', '\begin{enumerate}', $html);
+ $html = preg_replace('/<\/ol>/', '\end{enumerate}', $html);
+ $html = preg_replace('/<li>/', '\item ', $html);
+ $html = preg_replace('/<\/li>/', '', $html);
+
+ //headings
+ $html = preg_replace('/<h1\s+id="[^"]+">([^<]+)<\/h1>/', '\section{$1}', $html);
+ $html = preg_replace('/<h2\s+id="[^"]+">([^<]+)<\/h2>/', '\subsection{$1}', $html);
+ $html = preg_replace('/<h3\s+id="[^"]+">([^<]+)<\/h3>/', '\subsubsection{$1}', $html);
+
+
+
+ $html = html_entity_decode($html);
+
+
+ return $html;
+}
+
+function get_chapter_label($chapter)
+{
+ return '\hypertarget{'.str_replace(' ', '', $chapter).'}{}';
+}
+
+function get_section_label($section)
+{
+ $section = str_replace('.page', '', $section);
+ return '\hypertarget{'.str_replace('/', '.', $section).'}{}';
+}
+
+
+function set_header_id($content, $count)
+{
+ global $header_count;
+ $header_count = $count*100;
+ $content = preg_replace_callback('/<h1>/', "h1", $content);
+ $content = preg_replace_callback('/<h2>/', "h2", $content);
+ $content = preg_replace_callback('/<h3>/', "h3", $content);
+ return $content;
+}
+
+function h1($matches)
+{
+ global $header_count;
+ return "<h1 id=\"".(++$header_count)."\">";
+}
+
+function h2($matches)
+{
+ global $header_count;
+ return "<h2 id=\"".(++$header_count)."\">";
+}
+
+function h3($matches)
+{
+ global $header_count;
+ return "<h3 id=\"".(++$header_count)."\">";
+}
+
+$header_count = 0;
+
+//--------------- BEGIN PROCESSING -------------------
+
+
+//--------------- Indexer -------------------
+
+//require_once('create_index.php');
+//$indexer = new quickstart_index($index_dir);
+
+// ---------------- Create the Tex files ---------
+$count = 1;
+$j = 1;
+$current_path = '';
+echo "Compiling .page files to Latex files\n\n";
+
+foreach($pages as $chapter => $sections)
+{
+ $content = '\chapter{'.$chapter.'}'.get_chapter_label($chapter);
+ echo "Creating ch{$count}.txt => Chapter {$count}: {$chapter}\n";
+ echo str_repeat('-',60)."\n";
+ foreach($sections as $section)
+ {
+ echo " Adding $section\n";
+ $page = $base.'/'.$section;
+ $current_path = $page;
+
+ //add id to <h1>, <h2>, <3>
+ $tmp_content = set_header_id(file_get_contents($page),$j++);
+ file_put_contents($page, $tmp_content);
+
+ $content .= get_section_label($section);
+ $file_content = file_get_contents($page);
+ $tex =
+ $content .= parse_html($page,$file_content);
+ }
+
+ //var_dump($content);
+ file_put_contents("ch{$count}.tex", $content);
+ $count++;
+ echo "\n";
+}
+
+//$indexer->commit();
+
+if($argc <= 1 && $count > 1)
+{
+ echo "** Use pdflatex to compile quickstart.tex to obtain PDF version of quickstart tutorial. **\n";
+ exit;
+}
+if($argv[1] == 'pdf')
+{
+ if(is_file($pdflatexExec))
+ {
+ //build pdfTex
+ $command=sprintf($pdfTex,$mainTexFile);
+ system($command);
+ system($command); //run it twice
+
+ echo "\n\n** PDF file quickstart.pdf created **\n\n";
+
+ }
+ else
+ {
+ echo " Unable to find pdfLatex executable $pdflatexExec";
+ }
+}
+
+
+?>
diff --git a/buildscripts/texbuilder/quickstart/pages.php b/buildscripts/texbuilder/quickstart/pages.php new file mode 100644 index 00000000..9b8a97ad --- /dev/null +++ b/buildscripts/texbuilder/quickstart/pages.php @@ -0,0 +1,103 @@ +<?php
+/*
+ * Created on 11/05/2006
+ */
+
+//list page into chapters
+$pages['Getting Started'] = array(
+ 'GettingStarted/Introduction.page',
+ 'GettingStarted/AboutPrado.page',
+ 'GettingStarted/Installation.page',
+ 'GettingStarted/HelloWorld.page',
+ 'GettingStarted/Upgrading.page'
+ );
+
+$pages['Fundamentals'] = array(
+ 'Fundamentals/Architecture.page',
+ 'Fundamentals/Components.page',
+ 'Fundamentals/Controls.page',
+ 'Fundamentals/Pages.page',
+ 'Fundamentals/Modules.page',
+ 'Fundamentals/Services.page',
+ 'Fundamentals/Applications.page',
+ 'Fundamentals/Hangman.page');
+
+$pages['Configurations'] = array(
+ 'Configurations/Overview.page',
+ 'Configurations/Templates1.page',
+ 'Configurations/Templates2.page',
+ 'Configurations/Templates3.page',
+ 'Configurations/AppConfig.page',
+ 'Configurations/PageConfig.page');
+
+$pages['Control Reference : Standard Controls'] = array(
+ 'Controls/Button.page',
+ 'Controls/CheckBox.page',
+ 'Controls/ClientScript.page',
+ 'Controls/ColorPicker.page',
+ 'Controls/DatePicker.page',
+ 'Controls/Expression.page',
+ 'Controls/FileUpload.page',
+ 'Controls/Head.page',
+ 'Controls/HiddenField.page',
+ 'Controls/HtmlArea.page',
+ 'Controls/HyperLink.page',
+ 'Controls/ImageButton.page',
+ 'Controls/ImageMap.page',
+ 'Controls/Image.page',
+ 'Controls/InlineFrame.page',
+ 'Controls/JavascriptLogger.page',
+ 'Controls/Label.page',
+ 'Controls/LinkButton.page',
+ 'Controls/Literal.page',
+ 'Controls/MultiView.page',
+ 'Controls/Pager.page',
+ 'Controls/Panel.page',
+ 'Controls/PlaceHolder.page',
+ 'Controls/RadioButton.page',
+ 'Controls/SafeHtml.page',
+ 'Controls/Statements.page',
+ 'Controls/Table.page',
+ 'Controls/TextBox.page',
+ 'Controls/TextHighlighter.page',
+ 'Controls/Wizard.page');
+
+$pages['Control Reference : List Controls'] = array(
+ 'Controls/List.page');
+
+$pages['Control Reference : Validation Controls'] = array(
+ 'Controls/Validation.page');
+
+$pages['Control Reference : Data Controls'] = array(
+ 'Controls/Data.page',
+ 'Controls/DataList.page',
+ 'Controls/DataGrid.page',
+ 'Controls/Repeater.page');
+
+$pages['Write New Controls'] = array(
+ 'Controls/NewControl.page');
+
+$pages['Advanced Topics'] = array(
+ 'Advanced/Collections.page',
+ 'Advanced/Auth.page',
+ 'Advanced/Security.page',
+ 'Advanced/Assets.page',
+ 'Advanced/MasterContent.page',
+ 'Advanced/Themes.page',
+ 'Advanced/State.page',
+ 'Advanced/Logging.page',
+ 'Advanced/I18N.page',
+ 'Advanced/Error.page',
+ 'Advanced/Performance.page');
+
+$pages['Client-side Scripting'] = array(
+ 'Advanced/Scripts.page',
+ 'Advanced/Scripts1.page',
+ 'Advanced/Scripts2.page',
+ 'Advanced/Scripts3.page');
+
+
+return $pages;
+//-------------- END CONFIG ----------------
+
+?>
\ No newline at end of file diff --git a/buildscripts/texbuilder/quickstart/quickstart.tex b/buildscripts/texbuilder/quickstart/quickstart.tex new file mode 100644 index 00000000..a0553658 --- /dev/null +++ b/buildscripts/texbuilder/quickstart/quickstart.tex @@ -0,0 +1,122 @@ +\documentclass{book}
+\usepackage[pdftex]{graphicx}
+\usepackage[pdftex]{hyperref}
+
+\usepackage{fancyhdr}
+
+%---------- fonts Type 1 -----------------
+%\usepackage{times}
+%\usepackage[T1]{fontenc}
+%\usepackage{textcomp}
+
+%------------------------Page set-up-----------------------------------------
+
+\renewcommand{\baselinestretch}{1.25}
+\setlength{\hoffset}{-1in}
+\setlength{\oddsidemargin}{3.5cm}
+\setlength{\evensidemargin}{3.5cm}
+\setlength{\topmargin}{0cm}
+\setlength{\footskip}{2cm}
+\setlength{\headheight}{14pt}
+\setlength{\marginparwidth}{0cm}
+\setlength{\marginparsep}{0cm}
+\setlength{\marginparpush}{0cm}
+\setlength{\textwidth}{15cm}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.75\baselineskip}
+
+%------------------------------------------------------------------------------
+
+
+%---- change link style ----
+\hypersetup{colorlinks, linkcolor=blue, pdfstartview={FitH}}
+
+
+% Pages and Fancyheadings stuff
+%-----------------------------------------------------------------------
+\cfoot{\thepage}
+\fancyhead[LE,RO]{}
+\fancyhead[LO]{\nouppercase{\scshape\rightmark}}
+\fancyhead[RE]{\nouppercase{\scshape\leftmark}}
+%-----------------------------------------------------------------------
+
+%----------------- TITLE --------------
+
+\title{\Huge \bfseries PRADO v3.0.3 Quickstart Tutorial
+ \thanks{Copyright 2005-2006. All Rights Reserved.}
+}
+\author{Qiang Xue and Wei Zhuo}
+\date{\today}
+
+
+%-------------- BEGIN DOCUMENT ------------------
+
+
+\begin{document}
+
+\maketitle
+
+\pagestyle{plain}
+\addcontentsline{toc}{chapter}{Contents}
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter*{Preface}
+\addcontentsline{toc}{chapter}{Preface}
+Prado quick start doc
+
+\chapter*{License}
+\addcontentsline{toc}{chapter}{License}
+PRADO is free software released under the terms of the following BSD license.\\
+Copyright 2004-2006, The PRADO Group (http://www.pradosoft.com)\\
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+\begin{enumerate}
+ \item Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+ \item Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+\item Neither the name of the PRADO Group nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+\end{enumerate}
+
+\begin{verbatim}
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+\end{verbatim}
+
+
+\newpage
+
+\pagestyle{fancyplain}
+\pagenumbering{arabic}
+
+\include{ch1}
+\include{ch2}
+\include{ch3}
+\include{ch4}
+\include{ch5}
+\include{ch6}
+\include{ch7}
+\include{ch8}
+\include{ch9}
+\include{ch10}
+\include{ch11}
+\include{ch12}
+\include{ch13}
+
+\end{document}
|