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
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
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.
missing decoda folder in zip.
v1.1 zip doesn't have a decoda folder at the root.
You have to create it manually in extensions then extract into it.
Disable links
Hi!
Is any possibility to disable links parsing, to prevent converting
http://site.com
to:
<a href="http://site.com">http://site.com</a>
Update!
To disable filter for parsing URLs in decoda config we need add:
'removeFilters' => array('Url'),
links doesn't work
links doesn't work, bbcode tags removing and that's all. removeFilters doesn't help.
code snippets / iframes
How to skip parsing blocks of code to be able to include some additional code or scripts, i.e. youtube videos or google maps?
Decoda 6.01 is already released
Decoda 6.01 is already released http://milesj.me/code/php/decoda
It should be nice to update this extension.
update please
could you make update plugin with latest version of decoda sources?
About update
Sorry, I don't use PHP anymore(switched to Ruby).
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.