Smarty | Кирилл Павлюков
Мар 17

В ноябре прошлого года я разрабатывал проект, использующий Zend Framework и Smarty.
Как я уже , мой любимый визуальній редактор - .
А вот пример того, как можно написать плагин для Smarty для быстрой вставки редактора в тело страницы. Думаю, что комментировать код нет необходимости - тут и так все понятно. Кроме того, модифицировав всего пару строк, можно исключить Zend Framework, если ваш проект не использует его.
И еще: этот плагин писался под конкретный проект, поэтому в нем реализовано лишь то, что было необходимо мне. Вполне вероятно, что вам окажется недостаточно такой функциональности.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*/

/**
* Smarty {spaw} function plugin
*
* Type: function
* Name: spaw
* Date: Nov 11, 2007
* Purpose: automate creation Spaw Editor
* Input:
*     - name = name of textarea, default - 'Text'
*     - value = default value
*     - lang =
*     - toolbarset
*     - theme
*     - width
*     - height
*     - stylesheet
*     - page_caption
* Examples:
*     <pre>
*     {spaw}
*     {spaw name='Description' lang='en'}
*    
* @version 1.0
* @author Kirill Pavliukov <kirill></kirill>
* @param array
* @param Smarty
* @return string
* @todo Spaw Pages
*/

function smarty_function_spaw($params, &amp;$smarty)
{
    if (!defined('WWW_DIR')) define('WWW_DIR',$_SERVER['DOCUMENT_ROOT']);
    $name = ((isset($params['name'])) ? $params['name'] : null);
    $value = ((isset($params['name'])) ? $params['value'] : '');
    $lang = ((isset($params['lang'])) ? $params['lang'] : null);
    $toolbarset = ((isset($params['toolbarset'])) ? $params['toolbarset'] : '');
    $theme = ((isset($params['theme'])) ? $params['theme'] : '');
    $width = ((isset($params['width'])) ? $params['width'] : '');
    $height = ((isset($params['height'])) ? $params['height'] : '');
    $stylesheet = ((isset($params['stylesheet'])) ? $params['stylesheet'] : '');
    $page_caption= ((isset($params['page_caption'])) ? $params['page_caption'] : '');
    if ($name == null) $smarty-&gt;trigger_error('(SPAW) Parameter `Name` must be specified');
    if ($lang == null) {
        $front = Zend_Controller_Front::getInstance();
        $lang = $front->getRequest()->getParam('language');
    }

    $pages = ((isset($params['pages'])) ? $params['pages'] : null);
    if ($name == '') $name = 'Text';

    require_once(WWW_DIR . 'spaw2/spaw.inc.php');
    $spaw = new SpawEditor($name, $value, $lang, $toolbarset, $theme, $width, $height, $stylesheet, $page_caption);

    if ($pages) {
        $pages = split(';',$pages);
        foreach ($pages as &amp;$page) {
            $page = split('::',$page);
            if (!isset($page[0]) or empty($page[0])) $smarty->trigger_error('(SPAW) Page name myst be specified!');
            if (!isset($page[1]) or empty($page[1])) $smarty->trigger_error('(SPAW) Page caption myst be specified!');
            if (!isset($page[2])) $page[2] = '';
            if (!isset($page[3])) $page[3] = 'ltr';
            $spawPage = new SpawEditorPage($page[0],$page[1],$page[2],$page[3]);
            $spaw->addPage($spawPage);
        }
    }
    $spaw->show();
}

?>

Автор: Кирилл Павлюков \\ Метки: , , , ,