Anzulegende Dateien:
/admin/xplugin/fancybox/config.php
Hier werden die Standardwerte für die Datenbank angelegt. Besonders ist auf die Syntax des Feldes „plugin_config" zu achten!
$xPluginConfig[] = array(
'plugin_name' => 'Fancybox 2.1.5',
'plugin_code' => 'gallery',
'plugin_config' =>
'scripts::' . // Der auf „scripts::" folgende Code wird 1:1 in den Headbereich eingefügt
'<script type="text/javascript" src="xplugin/fancybox/source/jquery.fancybox.js?v=2.1.5"></script>' .
'<link rel="stylesheet" href="xplugin/fancybox/source/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />' .
'<link rel="stylesheet" type="text/css" href="xplugin/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=1.0.7" />' .
'<script type="text/javascript" src="xplugin/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script>' .
'|' .
'config::' . // Der auf „config::" folgende Code enthält die Standardwerte des xPlugins
'width:650,maxWidth:800,maxHeight:600,openEffect:elastic,closeEffect:elastic,' .
'nextEffect:elastic,prevEffect:elastic,openSpeed:500,closeSpeed:500,nextSpeed:500,' .
'prevSpeed:500,openOpacity:1,closeOpacity:1,arrows:1,closeBtn:1,mouseWheel:1,' .
'autoPlay:1,playSpeed:3000',
'plugin_typ' => 'C',
'plugin_help' => // Hier wird der Hilfetext in Form von Html-Code eingefügt
'<b>Aufruf der Galleriefunktion:</b><br>
{xPlugin:gallery,Pfad/zu/den/Bilddateien}<br>
Der Pfad ist ohne führenden Schrägstrich und ab dem Benutzer-Bildverzeichnis anzugeben.
Dies ist in der Standardkonfiguration "images/user".<br><br>
<table cellpadding="0" cellspacing="0" class="plugin_help">
<colgroup>
....
<tr>
<td>playPlay</td>
<td>Dauer der Einblendung der Galleriebilder in der Slideshow, (1000 Einheiten = 1 Sekunde). <span style="color:#888">Standard: 3000</span></td>
</tr>
</tbody>
</table>
'
);
/admin/xplugin/fancybox.xplugin.php
Alle, als Public deklarierte, Methoden müssen angelegt werden. Auch wenn diese nicht gebraucht werden sollten.
// Klassenname = Verzeichnisname!
class fancybox extends validate
{
// In die Seite (head-Bereich) einzufügender Codeblock mit {Platzhaltern} die durch,
// im Backend angegebene, Werte ersetzt werden. PHP-Scripts sind nicht erlaubt!
private $_config = array();
private $_script = "<script type=\"text/javascript\">
$(document).ready(function() {
/*
* Simple image gallery. Uses default settings
*/
$('.fancybox').fancybox({
maxWidth: {maxWidth},
maxHeight: {maxHeight},
openEffect: '{openEffect}',
closeEffect: '{closeEffect}',
nextEffect: '{nextEffect}',
prevEffect: '{prevEffect}',
openSpeed: {openSpeed},
closeSpeed: {closeSpeed},
nextSpeed: {nextSpeed},
prevSpeed: {prevSpeed},
openOpacity: {openOpacity},
closeOpacity: {closeOpacity},
arrows: {arrows},
closeBtn: {closeBtn},
mouseWheel: {mouseWheel},
autoPlay: {autoPlay},
playSpeed: {playSpeed}
});
});
</script>
<style type=\"text/css\">
.fancybox-custom {
box-shadow: 0 0 50px #222;
max-width: {width}px;
}
</style>";
/*
* Initialisierung der im Backend, veränderbaren, Einstellungen
* mit Angabe von Maximal-, Minimalwert, Istwert und Variblentyp.
*/
public function __construct()
{
$this->_config[] = array('text' => _('Width'), 'name' => 'width',
'typ' => 'i', 'value' => 650, 'min' => 100, 'max' => 3000, 'set' => '');
$this->_config[] = array('text' => _('maxWidth'), 'name' => 'maxWidth',
'typ' => 'i', 'value' => 800, 'min' => 150, 'max' => 3000, 'set' => '');
$this->_config[] = array('text' => _('maxHeight'), 'name' => 'maxHeight',
'typ' => 'i', 'value' => 600, 'min' => 100, 'max' => 3000, 'set' => '');
...
$this->_config[] = array('text' => _('Playspeed'), 'name' => 'playSpeed',
'typ' => 'i', 'value' => 3000, 'min' => 0, 'max' => 20000, 'set' => '');
}
/*
* Erzeugt den Html-Code der den xPluginaufruf, in den geschweiften Klammern, ersetzt.
*
* @param string $code Plugin-call-code
* @return code/replace html/text
*/
public function getCode($code)
{
$codes = explode(':', $code);
$path = './images/user/' . $codes[1];
$path = str_replace('}', '', $path);
$files = scandir($path);
foreach ($files as $value)
{
if ((strpos("/" . $value . "/i", '.png') >= 1 or
strpos("/" . $value . "/i", '.gif') >= 1 or
strpos("/" . $value . "/i", '.jpg') >= 1) and
strpos("/" . $value . "/i", 'tbn_') == FALSE and
strpos("/" . $value . "/i", '.txt') == FALSE)
$fileList[] = $value;
}
$code = '';
...
$code .= '" alt="' . $alt . '" /></a>';
}
return $code;
}
/*
* Erstellt ein Thumbnail des angegebenen Bildes
*
* @param string $path Path to imagedir
* @param string $name Name of imagefile
* @param string $thumbSize Size og Thumbnail
*/
private function _createThumbnail($path, $name, $thumbSize)
{
$sourceImage = $path . '/' . $name;
$path = $path . '/';
$art = strrchr($sourceImage, ".");
list($width, $height) = getimagesize($sourceImage);
$ratio = $width / $height;
...
else if ($art == ".png")
{
unlink($path . "temp.png");
}
}
/*
* Erstellt den Html-Code für das Backend. Hier werden die veränderbaren
* Einstellungen dargestellt.
*
* @param string $id Plugin-id from database
* @return array assoziative with html code for template output
*/
public function getConfigHtml($id)
{
db::getInstance()->where('plugin_id', $id);
$result = db::getInstance()->getOne('plugin');
$buffer = explode('|', $result['plugin_config']);
foreach ($buffer as $bufferx)
{
if (preg_match("/config::/i", $bufferx) == 1)
{
$buffery = explode('::', $bufferx);
$savedValues = explode(',', $buffery[1]);
break;
}
}
...
return $data;
}
/*
* Erstellt den Html-Code für den Headbereich
*
* @param string $id Plugin-id from database
* @param string $config Config-String with values
* Three types are possible
* scripts:: = scripts for head-area of html, copy 1:1
* head:: = e.g. scripts:: but here must set some values
* for initialize
* config:: = e.g. scripts:: but here are setting config-
* values who can set in backend
* @return array assoziative with html code for template output
*/
public function getScripts($id, $config = '')
{
$scripts = '<!-- gallery START -->';
$buffer = explode('|', $config);
...
return $scripts;
}
/*
* Speichert, im Backend vorgenommene Änderungen in der Datenbank
* @return boolean True if successful otherwise false
*/
public function saveConfigdata($id)
{
db::getInstance()->where('plugin_id', $id);
$result = db::getInstance()->getOne('plugin');
$buffer = explode('|', $result['plugin_config']);
foreach ($buffer as $bufferx)
{
if (preg_match("/config::/i", $bufferx) == 1)
{
$buffery = explode('::', $bufferx);
$savedValues = explode(',', $buffery[1]);
break;
}
}
...
// Update the database
db::getInstance()->where('plugin_id', $id);
if (db::getInstance()->update('plugin', $data))
message::setNoteRow(_('The data was successful saved.'), true);
}
}
Der Unterschied zwischen den Dateien „/admin/xplugin/fancybox.xplugin.php" und „/xplugin/fancybox.xplugin.php" besteht lediglich darin das in letzterer die Methode entfernt wurde mit der Daten in die Datenbank geschrieben werden.
Dies ist ein Teil des Sicherheitskonzepts von TobbiVM-Shop.