Obrázek   
Přihlášení
Uživatelské jméno:

Heslo:

Pamatovat si mne



Zapomenuté heslo

Nová registrace
Kam dále?
Hledání
Vzhled

(3 vzhledů)
Kdo je Online
10 uživatel(ů) je online (3 uživatel(ů) si prohlíží Články a povídání)

Uživatelé: 0
Hosté: 10

více...
Noví uživatelé
wagant
wagant
13.10.2025
guchar
guchar
16.09.2025
Bosh666
Bosh666
11.03.2025
viktor
viktor
07.07.2024
Chlaban
Chlaban
19.04.2024
Kubrt
Kubrt
16.04.2024
Mirek
Mirek
14.04.2024
POKEC
POKEC
21.03.2024
Luigi
Luigi
14.03.2024
zirafak
zirafak
26.02.2024
Kdo za co může
Administrátorka
Žirafka
Žirafka
Žirafička
Žirafička
Redaktoři
bernard
bernard
IvanH
IvanH
 
Emeritní
KatyH
KatyH

Textová Captcha a zkratky pro Xoops 2.5.9

Napsal/a Žirafka Odesláno 8. 05. 2018 v 8:46

     Před časem jsem napsala článek o úpravě funkce Captcha tak, aby tato funkce nechtěla jako odpověď číslo, ale slovo. S příchodem nové verze redakčního systému došlo k různým změnám uvnitř systému a tak tento systém přestal fungovat. Funkci bylo potřeba trošku upravit, ale nakonec se ukázalo, že to nebylo tak složité, jak to původně vypadalo. Ze stejného důvodu bylo potřeba změnit i dodělaný xoopscode pro zobrazení zkratek, čili [acr].




     Nejprve se tedy podíváme na tu captchu. V adresáři XOOPSROOT/CLASS/CAPTCHA najdeme soubor text.php a v něm tuto část:

/**
     * XoopsCaptchaText::loadText()
     *
     * @return string
     */
    
public function loadText()
    {
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; color: #333; border: 1px solid #333; padding: 1px 5px;">' $this->outputText '</span>';
    }

    protected function 
buildQuestion()
    {
        
$val_a mt_rand(09);
        
$val_b mt_rand(09);
        if (
$val_a $val_b) {
            
$expression "{$val_a} - {$val_b} = ?";
            
$this->code $val_a $val_b;
        } else {
            
$expression "{$val_a} + {$val_b} = ?";
            
$this->code $val_a $val_b;
        }

        
$this->outputText $expression;
    }


     Kterou je potřeba změna takto:

/**
     * XoopsCaptchaText::loadText()
     *
     * @return string
     */
    
public function loadText()
    {
        return 
'<span style="font-style: normal; font-weight: bold; font-size: 100%; color: #333; border: 1px solid #333; padding: 1px 5px;">' $this->outputText '</span>'
    }

    protected function 
buildQuestion()
    {
    
        
$capt_result=array("nula""jedna""dva""tři""čtyři""pět""šest""sedm""osm""devět""deset""jedenáct""dvanáct""třináct""čtrnáct""patnáct""šestnáct""sedmnáct""osmnáct");     
    
        
$val_a mt_rand(09); 
        
$val_b mt_rand(09); 
        if (
$val_a $val_b) { 
            
$expression "{$val_a} - {$val_b} = ? (slovem)"
            
$this->code $capt_result[($val_a $val_b)]; 
        } else { 
            
$expression "{$val_a} + {$val_b} = ? (slovem)"
            
$this->code $capt_result[($val_a $val_b)]; 
        }

        
$this->outputText $expression;
    }


     Zbytek zůstává stejný a všechno bude dále fungovat tak, jako doposavad.

     Znovu zprovoznění xoops kódu [acr] se provede změnou v souboru acr.php v adresáři XOOPSROOT/CLASS/TEXTSANITIZER/ACR.

     Změní se téměř celý, ale to jen proto, že je velmi krátký. Původní obsah:

defined('XOOPS_ROOT_PATH') or die('Restricted access');

class 
MytsAcr extends MyTextSanitizerExtension
{
    function 
load(&$ts)
    {

        
$ts->patterns[] = "/[acr](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="Zkratka bez zadaného významu">\1</acronym>';
    
        
$ts->patterns[] = "/[acr=(.*)](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="\1">\2</acronym>';
        return 
true;
    }
}


Změňte na:

defined('XOOPS_ROOT_PATH') || exit('Restricted access');

/**
 * Class MytsACR
 */
class MytsAcr extends MyTextSanitizerExtension
{
    
/**
     * @param $ts
     *
     * @return bool
     */
    
public function load($ts)
    {
        
$ts->patterns[] = "/[acr](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="Zkratka bez zadaného významu">\1</acronym>';
    
        
$ts->patterns[] = "/[acr=(.*)](.*)[/acr]/sU";
        
$ts->replacements[] = '<acronym title="\1">\2</acronym>';
        return 
true;
    }
}


     A všechno bude opět fungovat tak, jako ve verzi staré. Při nahrávání nové verze si člověk velmi často, a velmi snadno, přepíše původní konfigurační soubory. Pokud k tomu dojde, je potřeba si je upravit tak, jak je popisováno v původních článcích. Ať již ve článku o Zkratkách nebo o Captche.

     No a to je pro dnešek všechno. Jsem zvědavá, jestli narazím ještě na nějaké další podobné změny, které mi momentálně unikají, ale myslím si, že by snad být neměly. A také jsem zvědavá, kdy se zase změní XOOPS tak, aby podobný článek musel opět vzniknout. Nechme se překvapit
Odeslat komentář
Pravidla komentářů*
Všechny komentáře se automaticky schválí.
Nadpis*
Jméno*
Email*
Webová stránka*
Ikona zprávy*
       
Zpráva*


    


Klikněte na Náhled a uvidíte sami.
Možnosti*
 
 
 
Potvrzovací kód*
Kolik je 6 - 3 ?  
Slovem napište výsledek tohoto příkladu.
Maximální počet pokusů je omezen na 4.

Pomůcka: nula, jedna, dvě, tři, čtyři, pět, šest, sedm, osm, devět, deset, jedenáct, dvanáct, třináct, čtrnáct, patnáct, šestnáct, sedmnáct, osmnáct, devatenáct.
 
Obrázek Obrázek
ObrázekObrázekObrázekObrázekObrázek
Obrázek
Redakční systém XOOPS 2.5.10
Obsah © 2008-2020 Žirafoviny