Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Data/Editor.php
<?php

namespace XF\Data;

class
Editor
{
    public function
getStandardButtons(): array
    {
        return [
           
'clearFormatting' => [
               
'fa' => 'fa-eraser',
               
'title' => \XF::phrase('remove_formatting')
            ],
           
'bold' => [
               
'fa' => 'fa-bold',
               
'title' => \XF::phrase('weight_bold')
            ],
           
'italic' => [
               
'fa' => 'fa-italic',
               
'title' => \XF::phrase('italic')
            ],
           
'underline' => [
               
'fa' => 'fa-underline',
               
'title' => \XF::phrase('underline')
            ],
           
'strikeThrough' => [
               
'fa' => 'fa-strikethrough',
               
'title' => \XF::phrase('strike_through')
            ],
           
'textColor' => [
               
'fa' => 'fa-palette',
               
'title' => \XF::phrase('text_color')
            ],
           
'fontFamily' => [
               
'fa' => 'fa-font',
               
'title' => \XF::phrase('font_family'),
               
'type' => 'dropdown'
           
],
           
'fontSize' => [
               
'fa' => 'fa-text-size',
               
'title' => \XF::phrase('font_size'),
               
'type' => 'dropdown'
           
],
           
'insertLink' => [
               
'fa' => 'fa-link',
               
'title' => \XF::phrase('insert_link')
            ],
           
'insertImage' => [
               
'fa' => 'fa-image',
               
'title' => \XF::phrase('insert_image')
            ],
           
'xfInsertGif' => [
               
'svg' => 'M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z',
               
'title' => \XF::phrase('insert_gif')
            ],
           
'insertVideo' => [
               
'fa' => 'fa-video-plus',
               
'title' => \XF::phrase('insert_video')
            ],
           
'xfSmilie' => [
               
'fa' => 'fa-smile',
               
'title' => \XF::phrase('smilies')
            ],
           
'xfMedia' => [
               
'fa' => 'fa-photo-video',
               
'title' => \XF::phrase('media')
            ],
           
'xfQuote' => [
               
'fa' => 'fa-quote-right',
               
'title' => \XF::phrase('quote')
            ],
           
'xfSpoiler' => [
               
'fa' => 'fa-eye-slash',
               
'title' => \XF::phrase('spoiler')
            ],
           
'xfInlineSpoiler' => [
               
'fa' => 'fa-mask',
               
'title' => \XF::phrase('inline_spoiler')
            ],
           
'xfCode' => [
               
'fa' => 'fa-code',
               
'title' => \XF::phrase('code')
            ],
           
'xfInlineCode' => [
               
'fa' => 'fa-terminal',
               
'title' => \XF::phrase('inline_code')
            ],
           
'align' => [
               
'fa' => 'fa-align-left',
               
'title' => \XF::phrase('alignment'),
               
'type' => 'dropdown'
           
],
           
'formatOL' => [
               
'fa' => 'fa-list-ol',
               
'title' => \XF::phrase('ordered_list')
            ],
           
'formatUL' => [
               
'fa' => 'fa-list-ul',
               
'title' => \XF::phrase('unordered_list')
            ],
           
'indent' => [
               
'fa' => 'fa-indent',
               
'title' => \XF::phrase('indent')
            ],
           
'outdent' => [
               
'fa' => 'fa-outdent',
               
'title' => \XF::phrase('outdent')
            ],
           
'insertTable' => [
               
'fa' => 'fa-table',
               
'title' => \XF::phrase('insert_table')
            ],
           
'insertHR' => [
               
'fa' => 'fa-horizontal-rule',
               
'title' => \XF::phrase('insert_horizontal_line')
            ],
           
'undo' => [
               
'fa' => 'fa-undo',
               
'title' => \XF::phrase('undo')
            ],
           
'redo' => [
               
'fa' => 'fa-redo',
               
'title' => \XF::phrase('redo')
            ],
           
'xfDraft' => [
               
'fa' => 'fa-save',
               
'title' => \XF::phrase('drafts'),
               
'type' => 'dropdown'
           
],
           
'xfBbCode' => [
               
'fa' => 'fa-brackets',
               
'title' => \XF::phrase('toggle_bb_code')
            ],
           
'alignLeft' => [
               
'fa' => 'fa-align-left',
               
'title' => \XF::phrase('align_left')
            ],
           
'alignCenter' => [
               
'fa' => 'fa-align-center',
               
'title' => \XF::phrase('align_center')
            ],
           
'alignRight' => [
               
'fa' => 'fa-align-right',
               
'title' => \XF::phrase('align_right')
            ],
           
'alignJustify' => [
               
'fa' => 'fa-align-justify',
               
'title' => \XF::phrase('justify_text')
            ],
           
'paragraphFormat' => [
               
'fa' => 'fa-paragraph',
               
'title' => \XF::phrase('paragraph_format'),
               
'type' => 'dropdown'
           
],
        ];
    }

    public function
getCombinedButtonData($customBbCodes = [], $dropdowns = []): array
    {
       
$buttons = $this->getStandardButtons();
       
$buttons = array_merge($buttons, $this->getButtonsFromCustomBbCodes($customBbCodes));

        \
XF::fire('editor_button_data', [&$buttons, $this]);

       
$dropdownButtons = $this->getButtonsFromDropdowns($dropdowns);
        if (
$dropdownButtons)
        {
           
$buttons['-hr'] = false;
           
$buttons = array_merge($buttons, $dropdownButtons);
        }

       
/*// vertical separator // TODO: not until separators are properly implemented
        $buttons['|'] = [
            'text' => '|',
            'title' => \XF::phrase('vertical_separator'),
            'type' => 'separator'
        ];*/

       
return $buttons;
    }

    public function
getButtonsFromCustomBbCodes($bbCodes): array
    {
       
$buttons = [];

        foreach (
$bbCodes AS $bbCodeId => $bbCode)
        {
           
$key = 'xfCustom_' . $bbCodeId;
           
$buttons[$key] = [
               
'title' => $bbCode->title
           
];

            switch (
$bbCode->editor_icon_type)
            {
                case
'fa':
                   
$buttons[$key]['fa'] = (substr($bbCode->editor_icon_value, 0, 2) == 'fa' ? '' : 'fa-') . $bbCode->editor_icon_value;
                    break;

                case
'image':
                   
$buttons[$key]['image'] = $bbCode->editor_icon_value;
                    break;

                case
'':
                   
$buttons[$key]['text'] = $bbCode->editor_icon_value;
                    break;

            }
        }

        return
$buttons;
    }

    public function
getButtonsFromDropdowns($dropdowns): array
    {
       
$buttons = [];

        foreach (
$dropdowns AS $cmd => $dropdown)
        {
           
$buttons[$cmd] = [
               
'fa' => $dropdown->icon,
               
'title' => $dropdown->title,
               
'type' => 'editable_dropdown'
           
];
        }

        return
$buttons;
    }
}