Compatible with: R6.1
Copy the file slideshow.php into the /handler/page/-directory. Example: SlideShow |
|
/handlers/page/slideshow.xml.php
<?php
/*
Handler slideshow.xml
uses .xml.php because then it does not load the theme header and footer by default
*/
if (!defined('IN_WACKO'))
{
exit;
}
// redirect to show method if page don't exists
if (!$this->page)
{
$this->http->redirect($this->href('show'));
}
if ($this->has_access('read'))
{
// TODO: define more options for splitting the page body
// split the page
$body_f = $this->format($this->page['body_r'], 'post_wacko', ['strip_notypo' => true]);
$body = preg_split('/(<h2 .*>.*<\/h2>)/u', $body_f, -1, PREG_SPLIT_DELIM_CAPTURE);
if (isset($_GET['debug']) && $_GET['debug'] == 1)
{
# echo "<div style=\"display: none\">\n";
$tpl->debug = Ut::debug_print_r($body);
# echo "</div>\n\n";
}
// If the first slide starts with a level 1 heading
if (preg_match('/^<h2 .*>.*<\/h2>/u', $body_f))
{
$first_slide = 0;
}
else
{
$first_slide = 1;
}
// we test all the parameters of the handler 'slideshow',
// if there is none, this is the "slide = 1" parameter is invoked by default
if (!$body)
{
return;
}
else
{
// If you do not specify a parameter, it defaults to the first slide
if (!isset($_GET['slide']) or $_GET['slide'] == 1)
{
$slide = 1;
}
else
{
$slide = (int) ($_GET['slide'] ?? '');
}
// HTTP header with right Charset settings
header('Content-Type: text/html; charset=' . $this->get_charset());
header_remove('X-Powered-By');
$tpl->lang = $this->page_lang;
$tpl->dir = $this->languages[$this->page_lang]['dir'];
$tpl->charset = $this->get_charset();
$tpl->method = $this->method;
!Ut::is_empty($tpl->title = @$this->page['title']) or $tpl->tag = $this->add_spaces($this->tag);
$tpl->favicon = $this->get_favicon();
if (!file_exists($this->db->theme_url . 'css/slideshow.css'))
{
#$tpl->css = false;
}
else
{
#echo '<link rel="stylesheet" href="'.$this->config['theme_url'].'css/slideshow.css">';
}
// display navigation menu
// If this is not the first slide, we display links "<< previous" and "[start]"
if ($slide !== 1)
{
$tpl->nav_p_hrefprev = $this->href('slideshow.xml', '', 'slide=' . ($_GET['slide'] - 1));
$tpl->nav_p_hrefstart = $this->href('slideshow.xml', '', 'slide=1');
}
if (isset($body[($slide) * 2 - ($first_slide * 2) + 2]) or $slide == 1)
{
$tpl->nav_n_hrefnext = $this->href('slideshow.xml', '', 'slide='.($slide + 1));
}
// showing content
// if this is the first slide
if ($slide == 1 and $first_slide == 1)
{
$tpl->body = $body[0];
}
// from the second slide
else
{
$tpl->body = $body[($slide * 2) - ($first_slide * 2) - 1] . $body[($slide * 2) - ($first_slide * 2)];
}
}
}
else
{
$message = $this->_t('ReadAccessDenied');
$this->show_message($message, 'info');
}
/handlers/page/template/slideshow.xml.tpl
[ === main === ] [ ' dummy | default * // ADD_NO_DIV ' ]<!DOCTYPE html> <html dir="[ ' dir ' ]" lang="[ ' lang ' ]"> <head> <meta charset="[ ' charset ' ]"> <title>[ ' title | e ' ][ ' tag ' ][ ' method | enclose " (" ")" ' ] - [ ' db: site_name | e ' ]</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="robots" content="noindex, nofollow, noarchive"> <meta name="language" content="[ ' lang ' ]"> <link rel="stylesheet" href="[ ' db: theme_url ' ]css/default.css"> [= unused _ = <link rel="stylesheet" href="[ ' db: theme_url ' ]css/wacko.css"> =] <link rel="icon" href="[ ' favicon ' ]" type="image/x-icon"> [= css _ = <style> .slide { font-size: 160%; margin: 1% 3%; background-color: #fff; padding: 30px; border: 1px inset; line-height: 1.5; } .slide ul, li, .slide p { font-size: 100%; } .slide li li { font-size: 90% } .sl_nav p { text-decoration: none; text-align: right; font-size: 80%; line-height: 0.4; } .sl_nav a { text-decoration: none; } .sl_nav a:hover { color: #CF8888 } div.sl_nav { padding: 10px 20px 10px 0; } .page { background-color: #d1d1d1 } .sum { font-size: 8px; } br { display:none; } </style> =] </head> <body > [ '' nav navigation '' ] <div class="slide"> [ ' body | pre ' ]<br><br> </div> [ '' nav navigation '' ] </body> </html> [ == navigation == ] <div class="sl_nav"> <p> [= p _ = <a href="[ ' hrefprev ' ]">« [ ' _t: PrevAcr ' ]</a> <a href="[ ' hrefstart ' ]">[Start]</a> =] [= n _ = <a href="[ ' hrefnext ' ]">[ ' _t: NextAcr ' ] »</a> =] </p> <p> <a href="[ ' href: edit ' ]">[ ' _t: EditText ' ] </a> · <a href="[ ' href: ' ]">[ ' _t: CancelButton ' ]</a> </p> </div>