Zdroj: http://prochazka.clanweb.eu/index.php?a=php/bbcode_geshi  •  Vydáno: 30.11.2013 16:05  •  Autor: hacesoft

Formátování BBCode pomocí GESHI

icons pic Modul pro RS (redakční systém) SunLight CMS 7.5.x. na formátování BBCode kódu pomocí GESHI modulu...

Tento plugin formátuje zdrojové kódy pod článkem v diskuzi.

Instalace: spočívá nakopírovaní celého adresáře do .\plugins\extend. V administraci webu je třeba zapnout podporu externích zásuvných modulů. Pro správný chod tohoto zásuvného modulu nainstalujte i HCM modul GESHI. V seznamu ikon u psaní komentáře je o jednu ikonu navíc.

icons pic

Mezi vytvořené tagy vložte požadovaný zdrojový kód. Pokud nic dalšího nezadáte, tak se použije prosta šablona TEXT, pokud chcete specifikovat formátovací jazyk zadejte úplně na začátek klíčové slovo lang, malým písmem a za znak rovnosti přidáte požadovaný jazyk formátování. Nic nedávejte do apostrofů, nebo uvozovek a vše bez mezer. Za celým tímto zápisem bude čárka a ihned následuje formátovaný text.

Stáhnout GeshiBBCode.rar modul: GeshiBBCode.rar verze 1.1.0.

Příklad použití:

Text code
[geshi]lang=cpp,BYTE WINAPI ReadData(BYTE a) {
 BYTE IoData[1];
 DWORD BytesRet;
 IoData[0] = a|0x10; // set the bit for read operations
 DeviceIoControl(hUSB_LPT,IOCTL_VLPT_OutIn,IoData ,sizeof(IoData),IoData,sizeof(IoData),&BytesRet,NULL);
 return IoData[0];
}[/geshi]

V tomto konkrétním příkladu: [geshi]lang=cpp, je určen jazyk cpp, to znamená C++.

Kód GeshiBBCode:

PHP code
<?php
// Autor www.prochazka.zde.cz
// verze souboru  v1.1.0.
// dne 30.11.2013 - vytvoreni modulu

/* ----  kontrola jadra  ---- */
if (!defined('_core')) die;

// registrace do udalosti
_extend('regm', array(
    // registraci syntaxe tagu
    'bbcode.extend.tags'=> function($args) {
        // parovy 1/0; ma argument 1/0; muze byt umisten v jinych tazich 1/0; muze obsahovat jine tagy 1/0; null=bez obrazku
        $args['tags']['geshi'] = array(true, false, false, false, _indexroot. "plugins/extend/web.code/geshi.png");
    },
    // registraci provedeni tagu
    'bbcode.extend.proc' => function($args) {
        // vyhodnoceni tagu
        $args['tags']['geshi'] = function($argument, $obsah) {
            $StytleCode='' ;  
            $sConstanc ="lang=";
            $nLenghtConstanc = strlen ($sConstanc);
            $nPosition = stripos($obsah,$sConstanc,0);
            $nPositionStart = stripos($obsah,',',$nPosition + $nLenghtConstanc);
            $SlandGeshi = substr($obsah,$nPosition + $nLenghtConstanc, $nPositionStart - ($nPosition + $nLenghtConstanc));
            $obsahNew = substr ($obsah,$nPositionStart + 1);
           
            if ($StytleCode != '' ){$StytleCode =  ' - '. $StytleCode;}
            include_once _indexroot.'plugins/hcm/hacesoft/geshi/geshi.php';
            $geshi= new GeSHi($obsahNew ,$SlandGeshi);
            if ($geshi -> error ( )){$geshi->set_source ($obsah); $geshi->set_language ("text");}
            $geshi->set_header_type(GESHI_HEADER_DIV);
            $geshi->set_header_content($geshi->get_language_name().' code'. $StytleCode);
            $geshi->set_overall_style('font: normal normal 100% monospace; color: #100066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true);
            $geshi->set_line_style('color: #403030;', 'font-weight: bold; color: #026060;', true);
            $geshi->set_code_style('color: #f010d0;', true);
            $geshi->set_header_content_style('font-family: sans-serif; color: #807080; font-size: 100%; text-align : center; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #70d0d0; padding: 2px;');
            $output = $geshi->parse_code();  
        return $output;
        };
    }
));