yiidecoda

decoda integration
5 followers

Decoda is a lightweight class that extracts and parses a custom markup language; based on the concept of BB code. Decoda supports all the basic HTML tags and manages special features for making links and emails auto-clickable, using shorthand emails and links, and finally allowing the user to add their own code tags.

Usage

Download and unpack source into protected/extensions/ folder.

Set component in config

'components'=>array(
    'decoda' => array(
        'class' => 'ext.decoda.YiiDecoda',
        'defaults' => true,
    ),

Parsing string

<?php
$string = '[b]BB Code[/b]';
$parsedString = Yii::app()->decoda->parse($string);
echo $parsedString; // <b>BB Code</b>

You can use DecodaValidator or filter for your model

public function rules()
{
    return array(
        // DecodaValidator
        array('content', 'ext.decoda.DecodaValidator', 
          'errorTypes' => array(Decoda::ERROR_NESTING, Decoda::ERROR_SCOPE), 
          'useParsed' => true),
        //filter
        array('content', 'filter', 'filter' => array(Yii::app()->decoda, 'parse')),

Examples

Configuration example with all available properties (values ​​are initialized in the order in which they are listed here)

'components'=>array(
    'decoda' => array(
        'class' => 'ext.decoda.YiiDecoda',
        'vendorPath' => 'ext.decoda.vendors.decoda',
        'defaults' => true,
 
        'addFilters' => array('Code', 'Default', 'List', 'Quote'),
        'removeFilters' => array('Code', 'Default'),
        'disableFilters' => false,
 
        'addHooks' => array('Emoticon', 'Clickable'),
        'removeHooks' => array('Censor'),
        'disableHooks' => false,
 
        'brackets' => array('{', '}'),
        'locale' => 'en-us',
        'shorthandLinks' => true,
        'useXHTML' => false,
        'whitelistTags' => array('code', 'b'),
        'convertWhitespaces' => true,
        'disableParsing' => false,
    ),

Resources

Versions

1.1
- update decoda, version 3.3.1
- removed "useTextHighlighterForCode" property
- added "convertWhitespaces" property

1.0
- initial version

Total 2 comments

#7901 report it
kazio at 2012/04/25 08:54am
5.3

in 5.3 environment i had to change from

Yii::registerAutoloader(array('Decoda', 'loadFile'), true);

to

Yii::registerAutoloader(array('Decoda', 'loadFile'), false);

for autoloader in YiiDecoda.php.

#7899 report it
kazio at 2012/04/25 07:32am
it does not work for me

it does not work for me, In EmotionHook.php

protected function _emoticonCallback($matches)
    {
        $smiley = trim($matches[0]);
 
        if (count($matches) == 1 || !isset($this->_map[$smiley])) {
            return $matches[0];
        }

but count($matches) is 1 for matched icon.

so emoticon is not diplayed.

i had to change

if (!isset($this->_map[$smiley])

im using php 5.4

Leave a comment

Please to leave your comment.

Create extension