www.Tobbivm.de

URL: www.tobbivm.de/?TobbiVM___xPlugins___Anzulegende_Dateien%3A

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.