"Fossies" - the Fresh Open Source Software archive 
Member "tof-1.6.2/render/book.php" of archive tof-1.6.2.tar.gz:
<?php
function renderBook(&$render,$bookID,$book,$start) {
require_once("render/nav.php");
require_once("render/navbar.php");
require_once("render/header.php");
$render->count = $render->ct->getPageCount($bookID);
$render->htmlTitle = $book['Description'].countString($render,$start,$render->count);
// header
$render->topTitle = $book['Description'].countString($render,$start,$render->count);
$render->show('<div class="normal">');
$upLink = "TopicID=".$book['ParentTopicID'];
$parentTopic = $render->ct->getTopic($book['ParentTopicID']);
$upTitle = $parentTopic['Description'];
showPages(
$render,
$bookID,$start,$render->count,
$upLink,$upTitle);
// other
showNav($render,$bookID);
if (!$render->anonymous) {
require_once("render/actions.php");
$render->show('<p>',false);
showLink(
$render,
_('Gen PDF'),'genBookPdf',_('Generate a PDF file'),
array('TopicID'=>$bookID,
'Quality'=>HIGH));
$render->show('</p>');
}
if ($render->admin) {
require_once("render/form_topic.php");
$perms = $render->ct->getTopicPerms($bookID,$render->uid);
$book = $render->ct->getTopic($bookID);
if ($render->uid==1 || in_array(WRITE,$perms) || in_array(OWNER,$perms)) {
$pictures = $render->ct->getPicturesInTopic(
$bookID,false,$render->uid,0,-1,$count);
pictureList($render,$pictures);
showFormAddPage($render,$book);
showFormEditImage($render,$bookID);
showFormEditText($render,$bookID);
showFormEditPage($render,$bookID);
}
}
$render->show("</div>");
}
function showPages(
&$render,
$bookID, $start, $nbTotPictures,
$upLink="", $upTitle="")
{
$count = $render->nbThumbsPerPage;
$links = array();
$render->links['home'] = $render->selfURL();
$links[] = array('URL'=>$render->links['home'],
'Title'=>_('Home').' (S-h)',
'Img'=>'Home.png');
// First and previous links
$first = array('Title'=>_('First').' (S-f)',
'Img'=>'First.png');
$prev = array('Title'=>_('Previous').' (S-p)',
'Img'=>'Back.png');
if ($start>0) {
$render->links['prev'] = $render->selectURL("Start=".max($start-$count,0));
$render->links['first'] = $render->selectURL("Start=0");
$first['URL'] = $render->links['first'];
$prev['URL'] = $render->links['prev'];
}
$links[] = $first;
$links[] = $prev;
// Up link
$up = array('Title'=>_('Up').' (S-u)',
'Img'=>'Up.png');
if ($upLink!='') {
$render->links['up'] = $render->selfURL($upLink);
$up['URL'] = $render->links['up'];
}
$links[] = $up;
// Next and last links
$last = array('Title'=>_('Last').' (S-l)',
'Img'=>'Last.png');
$next = array('Title'=>_('Next').' (S-n)',
'Img'=>'Forward.png');
if ($count>0 && $start+$count<$nbTotPictures) {
$render->links['next'] =
$render->selectURL("Start=".($start+$count));
$render->links['last'] =
$render->selectURL("Start=".
(int)(($nbTotPictures-1)/$count)*$count);
$next['URL'] = $render->links['next'];
$last['URL'] = $render->links['last'];
}
$links[] = $next;
$links[] = $last;
showNavBar($render,$links);
//$render->getUserSelection();
$render->stylesheets[] = "book.css";
if ($render->admin) {
$render->scripts[] = "book.js";
}
if ($count>0)
$render->show('<p>'._('Click on a page to edit it.').'</p>');
$render->show('<div class="pages">');
for ($i=0; $i<$count && $start+$i<$nbTotPictures; $i++) {
showPage($render,$bookID,$start+$i);
if ((($start+$i) % 2) ==1)
$render->show('<hr class="transpa">');
}
$render->show('<br style="clear: both"/>');
$render->show('</div>');
if ($render->admin) {
$render->show(
'<div id="selection" style="display: none">'.
'<div class="handleTop"></div><div class="handleBottom"></div>'.
'<div class="handleRight"></div><div class="handleLeft"></div></div>');
$render->showJavaScript(
"installPageEvents(document,'img');\n".
"installPageEvents(document,'div');\n".
"initSelFrame();\n".
"selFrame = getElt('selection');");
}
}
function showPage(&$render,$bookID, $num) {
require_once("render/actions.php");
// The float way
$render->show('<div class="pbox">');
$render->show('<div class="move">',false);
if ($num>0)
showLink(
$render,
'<','movePageUp',_('move up'),
array('_PageNum'=>$num,'_TopicID'=>$bookID));
if ($num<($render->count-1))
showLink(
$render,
'>','movePageDown',_('move down'),
array('_PageNum'=>$num,'_TopicID'=>$bookID));
$render->show('</div>'); // move
if ($render->admin) {
$page = $render->ct->getPage($bookID,$num);
showEditablePage($render,$page);
} else {
$render->show(
sprintf('<img class="page" src="%s" alt="%s">',
$render->urlWithParams(
"bookpage.php",
array('TopicID'=>$bookID,
'PageNum'=>$num,
'Quality'=>1)),
"page $num"));
}
$render->show('</a>');
$render->show('<div class="desc">'.$num.'</div>');
$render->show("</div>"); // page
}
/**
* Render a page, using a separate IMG for each element
*/
function showEditablePage(&$render,$page) {
$scale = $render->pageScale;
$render->show(
sprintf('<div class="page" id="p%d" style="width: %spx; height: %spx">',
$page['PageNum'],
px($page['Width'],$scale),
px($page['Height'],$scale)));
if (is_array($page['Images'])) {
foreach($page['Images'] as $image) {
showImageElement($render,$image);
}
}
if (is_array($page['Texts'])) {
foreach($page['Texts'] as $text) {
showTextElement($render,$text);
}
}
$render->show('</div>');
$render->startJavaScript();
$render->show("texts[${page['PageNum']}] = new Array();");
if (is_array($page['Texts'])) {
foreach($page['Texts'] as $text) {
$b = $text['Box'];
$data = addslashes($text['Text']);
$render->show(
"texts[${page['PageNum']}][${text['Id']}] =".
" new Text(${text['Id']},'$data',".
"${b['top']},${b['left']},${b['bottom']},${b['right']},".
"'${text['Font']}',${text['Size']},'${text['Align']}');");
}
}
$render->show("images[${page['PageNum']}] = new Array();");
if (is_array($page['Images'])) {
foreach($page['Images'] as $image) {
$b = $image['Box'];
$render->show(
"images[${page['PageNum']}][${image['Id']}] =".
" new Image(${image['Id']},${image['PictureID']},".
"${b['top']},${b['left']},${b['bottom']},${b['right']},".
"${image['halign']},${image['valign']});");
}
}
$render->endJavaScript();
}
function showImageElement(&$render,&$image) {
require_once("render/layout.php");
$pos = getPicturePos($render->slooze,$image);
$box = $image['Box'];
$scale = $render->pageScale;
$render->show(
sprintf('<div '.
' style="width:%spx; height:%spx; bottom: %spx; left: %spx;"'.
' id="i%d" class="image">',
px($box['width'],$scale),
px($box['height'],$scale),
px($box['bottom'],$scale),
px($box['left'],$scale),
$image['Id']));
$render->show(
sprintf('<img src="%s" '.
' style="width: %s%%; height: %s%%; bottom: %s%%; left: %s%%;">',
$render->urlWithParams(
'picture.php',
array('PictureID'=>$image['PictureID'],
'Size'=>'medium')),
// do not use round(width*scale) because it can be off by one
number_format(100*$pos['width']/$box['width'],2),
number_format(100*$pos['height']/$box['height'],2),
//round($pos['right']*$scale)-round($pos['left']*$scale),
//round($pos['top']*$scale)-round($pos['bottom']*$scale),
number_format(100*($pos['bottom']-$box['bottom'])/$box['height'],2),
number_format(100*($pos['left']-$box['left'])/$box['width'],2)));
//round($pos['bottom']*$scale),
//round($pos['left']*$scale)));
$render->show('</div>');
}
function showTextElement(&$render,&$text) {
$scale = $render->pageScale;
$box = $text['Box'];
$render->show(
sprintf('<img src="%s" '.
' style="width:%dpx; height:%dpx; bottom: %dpx; left: %dpx;"'.
' id="t%d" class="text">',
$render->urlWithParams(
'textelement.php',
array('TopicID'=>$text['TopicID'],
'PageNum'=>$text['PageNum'],
'Id'=>$text['Id'],
// since we map points to pixels, we have 72px/inch
'Density'=>number_format(72*$scale,2,'.',''))),
px($box['width'],$scale),
px($box['height'],$scale),
px($box['bottom'],$scale),
px($box['left'],$scale),
$text['Id']));
}
function px($pt,$scale) {
return number_format($pt*$scale,2,'.','');
}
function showFormAddPage(&$render,$book) {
require_once("render/form_elements.php");
require_once("render/form_topicid.php");
$render->show('<h2>'._('Add page').'</h2>');
$topicID = $book['TopicID'];
showFormElementStart($render);
showFormElementTopicID($render,$topicID);
showFormElementAction($render,'addPage');
showFormElementEnd($render,_('Add page'));
}
function halignEditor(&$render,$label,$name) {
$render->show($label.' ',false);
$alignments = array(
'0.5'=>_('center'),
'1' => _('right'),
'0' => _('left'));
showFormElementSelect($render,$name,$alignments,'0.5');
}
function valignEditor(&$render,$label,$name) {
$render->show($label.' ',false);
$alignments = array(
'0.5'=>_('center'),
'1' => _('top'),
'0' => _('bottom'));
showFormElementSelect($render,$name,$alignments,'0.5');
}
function boxEditor(&$render,$box=nil) {
$render->show(_('top').': ',false);
showFormElementInteger(&$render,'Top',$box!=nil?$box['top']:842,4,false);
$render->show(_('left').': ',false);
showFormElementInteger(&$render,'Left',$box!=nil?$box['left']:0,4);
$render->show(_('bottom').': ',false);
showFormElementInteger(&$render,'Bottom',$box!=nil?$box['bottom']:0,4,false);
$render->show(_('right').': ',false);
showFormElementInteger(&$render,'Right',$box!=nil?$box['right']:595,4);
}
function showFormRemovePageElement(&$render,$bookID) {
showFormElementStart($render);
showFormElementHidden($render,'TopicID',$bookID);
showFormElementHidden($render,'PageNum','');
showFormElementHidden($render,'Id','');
showFormElementAction($render,'removePageElement');
showFormElementEnd($render,_('Remove'));
}
function showFormEditImage(&$render,$bookID) {
require_once("render/form_elements.php");
$render->show('<div class="forms formRight" id="formEditImage">');
$render->show('<h2>'._('Edit image').'</h2>');
showFormElementStartRPC($render);
imageElementEditors($render,$bookID);
showFormElementAction($render,'updateImageElement');
showFormElementEnd($render,_('Update'));
showFormRemovePageElement($render,$bookID);
$render->show('</div>');
}
function textAlignEditor(&$render,$label,$name) {
$render->show($label.' ',false);
$alignments = array(
'C'=>_('center'),
'R' => _('right'),
'L' => _('left'));
showFormElementSelect($render,$name,$alignments);
}
function fontEditor(&$render,$label,$name) {
$render->show($label.' ',false);
$fonts = array(
'Helvetica'=>'Helvetica',
'Times-Roman' => 'Times',
'Courier' => 'Courier');
showFormElementSelect($render,$name,$fonts);
}
function showFormEditText(&$render,$bookID) {
require_once("render/form_elements.php");
$render->show('<div class="forms formRight" id="formEditText">');
$render->show('<h2>'._('Edit text').'</h2>');
showFormElementStartRPC($render);
textElementEditors($render,$bookID);
showFormElementAction($render,'updateTextElement');
showFormElementEnd($render,_('Update'));
showFormRemovePageElement($render,$bookID);
$render->show('</div>');
}
function imageElementEditors(&$render,$bookID) {
showFormElementHidden($render,'TopicID',$bookID);
showFormElementHidden($render,'PageNum','');
showFormElementHidden($render,'Id','');
showFormElementHidden($render,'Scale',$render->pageScale);
pictureSelector($render);
halignEditor($render,_('Horizontal alignment'),'halign');
$render->show('<br>');
valignEditor($render,_('Vertical alignment'),'valign');
$render->show('<br>');
boxEditor($render);
$render->show('<br>');
}
function textElementEditors(&$render,$bookID) {
showFormElementHidden($render,'TopicID',$bookID);
showFormElementHidden($render,'PageNum','');
showFormElementHidden($render,'Id','');
showFormElementTextArea($render,'Text','');
showFormElementHidden($render,'Scale',$render->pageScale);
textAlignEditor($render,_('Alignment'),'Align');
$render->show('<br>');
fontEditor($render,_('font'),'Font');
$render->show(_('size').' ');
showFormElementInteger($render,'Size',12);
$render->show('<br>');
boxEditor($render);
}
function showFormEditPage(&$render,$bookID) {
require_once("render/form_elements.php");
$render->show('<div class="forms formRight" id="formEditPage">');
$render->show('<h2>'._('Add image').'</h2>');
showFormElementStart($render,false,'post','','addImageElement');
imageElementEditors($render,$bookID);
showFormElementAction($render,'addImageElement');
showFormElementEnd($render,_('Add'));
$render->show('<h2>'._('Add text').'</h2>');
showFormElementStart($render,false,'post','','addTextElement');
textElementEditors($render,$bookID);
showFormElementAction($render,'addTextElement');
showFormElementEnd($render,_('Add'));
$render->show('<h2>'._('Remove page').'</h2>');
showFormElementStart($render);
showFormElementHidden($render,'TopicID',$bookID);
showFormElementHidden($render,'PageNum','');
showFormElementAction($render,'removePage');
showFormElementEnd($render,_('Remove'));
$render->show('</div>');
}
/*
function pictureSelector(&$render,$pictures) {
$render->show('<div class="pictureSelector">');
foreach($pictures as $picture) {
$render->show(
'<label><input type="radio" name="PictureID" value="'.
$picture['PictureID'].'" onchange="pictureSelectorChanged(this)">',false);
showThumbPicture($render,$picture,0.4);
$render->show('</label>');
}
$render->show('</div>');
}
*/
function pictureSelector(&$render,$picture=false) {
$render->show('<div class="pictureSelector" onclick="openPictureSelector(this);">');
if ($picture)
showThumbPicture($render,$picture,0.4);
else
// We must not use src="" because it would refer to the current document
// See RFC2396 par4.2
$render->show('<img alt="">');
showFormElementHidden($render,'PictureID',$picture['PictureID']);
$render->show('</div>');
}
function pictureList(&$render,&$pictures) {
$render->show('<div id="pictureList">');
$render->show('<span class="button" onclick="hideBlock(\'pictureList\')">'._('Cancel').'</span>');
foreach($pictures as $picture) {
showThumbPicture($render,$picture,0.4);
}
$render->show('</div>');
}
function showThumbPicture(&$render,$picture,$scale) {
require_once("render/tooltip.php");
$fileName = $render->slooze->getThumbFilename($picture);
if (file_exists($fileName)) {
/* make img tag with size and caption plus a link to the fullsize picture */
$size = GetImageSize($fileName);
$tooltip = getToolTip($render,$picture);
$width = number_format($size[0]*$scale);
$height = number_format($size[1]*$scale);
$render->show(
"<img id=\"pic${picture['PictureID']}\" src=\"".$render->url("picture.php?PictureID=".$picture['PictureID']).
"&Size=thumb\" width=\"$width\" height=\"$height\"".
" alt=\"${picture['Description']}\">",false);
} else {
$render->error(
"<a href=\"" .
$render->selectURL("PictureID=".$picture['PictureID'].
$render->output_separator."Position=$position").
"\">".sprintf(_('File not found : %s'),$fileName)."</a>");
}
}
?>