Seditio Source
Root |
./othercms/dotclear-2.22/plugins/dcLegacyEditor/inc/dc.legacy.editor.behaviors.php
<?php
/**
 * @brief dcLegacyEditor, a plugin for Dotclear 2
 *
 * @package Dotclear
 * @subpackage Plugins
 *
 * @copyright Olivier Meunier & Association Dotclear
 * @copyright GPL-2.0-only
 */
class dcLegacyEditorBehaviors
{
    protected static
$p_url = 'index.php?pf=dcLegacyEditor';

   
/**
     * adminPostEditor add javascript to the DOM to load legacy editor depending on context
     *
     * @param      string  $editor   The wanted editor
     * @param      string  $context  The page context (post,page,comment,event,...)
     * @param      array   $tags     The array of ids to inject editor
     * @param      string  $syntax   The wanted syntax (wiki,markdown,...)
     *
     * @return     mixed
     */
   
public static function adminPostEditor($editor = '', $context = '', array $tags = [], $syntax = '')
    {
        if (empty(
$editor) || $editor != 'dcLegacyEditor') {
            return;
        }

       
$js = [
           
'legacy_editor_context'      => $context,
           
'legacy_editor_syntax'       => $syntax,
           
'legacy_editor_tags_context' => [$context => $tags],
        ];

        return
       
self::jsToolBar() .
       
dcPage::jsJson('legacy_editor_ctx', $js) .
       
dcPage::jsModuleLoad('dcLegacyEditor/js/_post_editor.js');
    }

    public static function
adminPopupMedia($editor = '')
    {
        if (empty(
$editor) || $editor != 'dcLegacyEditor') {
            return;
        }

        return
dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/popup_media.js');
    }

    public static function
adminPopupLink($editor = '')
    {
        if (empty(
$editor) || $editor != 'dcLegacyEditor') {
            return;
        }

        return
dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/popup_link.js');
    }

    public static function
adminPopupPosts($editor = '')
    {
        if (empty(
$editor) || $editor != 'dcLegacyEditor') {
            return;
        }

        return
dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/popup_posts.js');
    }

    protected static function
jsToolBar()
    {
       
$js = [
           
'dialog_url'            => 'popup.php',
           
'base_url'              => $GLOBALS['core']->blog->host,
           
'switcher_visual_title' => __('visual'),
           
'switcher_source_title' => __('source'),
           
'legend_msg'            => __('You can use the following shortcuts to format your text.'),
           
'elements'              => [
               
'blocks' => [
                   
'title'   => __('Block format'),
                   
'options' => [
                       
'none'    => __('-- none --'),
                       
'nonebis' => __('-- block format --'),
                       
'p'       => __('Paragraph'),
                       
'h1'      => __('Level 1 header'),
                       
'h2'      => __('Level 2 header'),
                       
'h3'      => __('Level 3 header'),
                       
'h4'      => __('Level 4 header'),
                       
'h5'      => __('Level 5 header'),
                       
'h6'      => __('Level 6 header'),
                    ], ],

               
'strong'     => ['title' => __('Strong emphasis')],
               
'em'         => ['title' => __('Emphasis')],
               
'ins'        => ['title' => __('Inserted')],
               
'del'        => ['title' => __('Deleted')],
               
'quote'      => ['title' => __('Inline quote')],
               
'code'       => ['title' => __('Code')],
               
'mark'       => ['title' => __('Mark')],
               
'br'         => ['title' => __('Line break')],
               
'blockquote' => ['title' => __('Blockquote')],
               
'pre'        => ['title' => __('Preformated text')],
               
'ul'         => ['title' => __('Unordered list')],
               
'ol'         => ['title' => __('Ordered list')],

               
'link' => [
                   
'title'           => __('Link'),
                   
'accesskey'       => __('l'),
                   
'href_prompt'     => __('URL?'),
                   
'hreflang_prompt' => __('Language?'),
                ],

               
'img' => [
                   
'title'      => __('External image'),
                   
'src_prompt' => __('URL?'),
                ],

               
'img_select' => [
                   
'title'     => __('Media chooser'),
                   
'accesskey' => __('m'),
                ],

               
'post_link'    => ['title' => __('Link to an entry')],
               
'removeFormat' => ['title' => __('Remove text formating')],
               
'preview'      => ['title' => __('Preview')],
            ],
           
'toolbar_bottom' => (bool) isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('toolbar_bottom'),
        ];

       
// Tricky code to avoid xgettext bug on indented end heredoc identifier (see https://savannah.gnu.org/bugs/?62158)
       
$rtl = l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction: rtl;' : '';
       
$css = <<<EOT
           body {
                color: #000;
                background: #f9f9f9;
                margin: 0;
                padding: 2px;
                border: none;
               
$rtl
            }
            code {
                color: #666;
                font-weight: bold;
            }
            body > p:first-child {
                margin-top: 0;
            }
           EOT;
       
$js['iframe_css'] = $css;
       
// End of tricky code

       
if (!$GLOBALS['core']->auth->check('media,media_admin', $GLOBALS['core']->blog->id)) {
           
$js['elements']['img_select']['disabled'] = true;
        }

       
$res = dcPage::jsJson('legacy_editor', $js) .
       
dcPage::cssModuleLoad('dcLegacyEditor/css/jsToolBar/jsToolBar.css') .
       
dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/jsToolBar.js');

        if (isset(
$GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) {
           
$res .= dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/jsToolBar.wysiwyg.js');
        }

       
$res .= dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/jsToolBar.dotclear.js') .
       
dcPage::jsModuleLoad('dcLegacyEditor/js/jsToolBar/jsToolBar.config.js');

        return
$res;
    }
}