Готовое решение: настройки - визуальный редактор

info@ravencode.ru

Для одной печатной формы потребовался визуальный редактор в настройках, в WA это не реализовано (вернее там только редактор кода, да и тот не работает из-за бага - <code>textarea</code> https://developers.webasyst.ru/basics/classes/waHt...), вот и пришлось писать самому:

    public static function getEditorControl($name, array $params = array())
    {
        $app = wa();
        $wa_url = $app->getRootUrl();
        $lang = substr($app->getLocale(), 0, 2);
        
        $control = '<link rel="stylesheet" href="' . $wa_url . 'wa-content/js/redactor/redactor.css">';
        $control .= '<script src="' . $wa_url . 'wa-content/js/redactor/redactor.min.js"></script>';
        $control .= '<script src="' . $wa_url . 'wa-content/js/redactor/redactor.plugins.js"></script>';
        if ($lang != 'en') {
            $control .= '<script src="' . $wa_url . 'wa-content/js/redactor/' . $lang . '.js"></script>';
        }
        
        $control_name = htmlentities($name, ENT_QUOTES, waHtmlControl::$default_charset);
        $value = htmlentities((string)$params['value'], ENT_QUOTES, waHtmlControl::$default_charset);
        $attributes = array_flip(array('class', 'style', 'id', 'placeholder'));

        $control .= '<div style="border:1px solid #ddd"><textarea name="' . $control_name .'"';
        foreach (array_intersect_key($params, $attributes) as $key => $val) {
            $control .= $key . '="' . $val . '"';
        }
        $control .= '>' . $value . '</textarea></div>';

        $config = json_encode(array(
            'lang'         => $lang,
            'minHeight'    => 400,
            'paragraphy'   => false,
            'convertDivs'  => false,
            'deniedTags'   => false,
            'toolbarFixed' => true,
            'plugins'      => array('fontcolor', 'fontsize', 'fontfamily', 'table'),
            'buttons'      => array('html', 'formatting', 'bold', 'italic', 'underline', 'deleted', 'unorderedlist', 'orderedlist', 'outdent', 'indent', 'image', 'link', 'table', 'alignment', 'horizontalrule'),
            'imageUpload'  => '?module=pages&action=uploadimage&filelink=1',
        ));
        $control .= '<script>$(function(){$("#' . $params['id'] . '").redactor(' . $config . ')})</script>';

        return $control;
    }

settings.php:

'control_type'  => waHtmlControl::CUSTOM . ' shopMyPlugin::getEditorControl',
8 мая 2016
  • Syrnik.com 8 мая 2016 20:32

    Спасибо. Пригодится :)



Чтобы добавить комментарий, зарегистрируйтесь или войдите