Вход Регистрация
Файл: wysiwyg/markitup/wysiwyg.class.php
Строк: 165
<?php
class cmsWysiwygMarkitup {

    private static 
$redactor_loaded false;

    private 
$options = [
        
'skin' => 'simple',
        
'set' => []
    ];

    public 
$default_set = [
        
'resizeHandle' => false,
        
'onShiftEnter' => [
            
'keepDefault' => false,
            
'replaceWith' => "<br />n",
        ],
        
'onCtrlEnter'  => ['keepDefault' => true],
        
'onTab'        => [
            
'keepDefault' => false,
            
'replaceWith' => '    ',
        ],
        
'markupSet' => [
            [
                
'name'      => LANG_MARKITUP_B,
                
'key'       => 'B',
                
'openWith'  => '<b>',
                
'closeWith' => '</b>',
                
'className' => 'btnBold',
            ],
            [
                
'name'      => LANG_MARKITUP_I,
                
'key'       => 'I',
                
'openWith'  => '<i>',
                
'closeWith' => '</i>',
                
'className' => 'btnItalic',
            ],
            [
                
'name'      => LANG_MARKITUP_U,
                
'key'       => 'U',
                
'openWith'  => '<u>',
                
'closeWith' => '</u>',
                
'className' => 'btnUnderline',
            ],
            [
                
'name'      => LANG_MARKITUP_S,
                
'key'       => 'S',
                
'openWith'  => '<s>',
                
'closeWith' => '</s>',
                
'className' => 'btnStroke',
            ],
            [
                
'name'           => LANG_MARKITUP_UL,
                
'openWith'       => '    <li>',
                
'closeWith'      => '</li>',
                
'multiline'      => true,
                
'openBlockWith'  => "<ul>n",
                
'closeBlockWith' => "n</ul>",
                
'className'      => 'btnOl',
            ],
            [
                
'name'           => LANG_MARKITUP_OL,
                
'openWith'       => '    <li>',
                
'closeWith'      => '</li>',
                
'multiline'      => true,
                
'openBlockWith'  => "<ol>n",
                
'closeBlockWith' => "n</ol>",
                
'className'      => 'btnUl',
            ],
            [
                
'name'      => LANG_MARKITUP_BC,
                
'openWith'  => '<blockquote>[!['.LANG_MARKITUP_BC_HINT.']!]',
                
'closeWith' => '</blockquote>',
                
'className' => 'btnQuote',
            ],
            [
                
'name'        => LANG_MARKITUP_L,
                
'key'         => 'L',
                
'openWith'    => '<a target="_blank" href="[!['.LANG_MARKITUP_L1.':!:http://]!]">',
                
'closeWith'   => '</a>',
                
'placeHolder' => LANG_MARKITUP_L2,
                
'className'   => 'btnLink',
            ],
            [
                
'name'        => LANG_MARKITUP_IMGL,
                
'replaceWith' => '<img src="[!['.LANG_MARKITUP_IMGL1.':!:http://]!]" alt="[!['.LANG_DESCRIPTION.']!]" />',
                
'className'   => 'btnImg',
            ],
            [
                
'name'      => LANG_MARKITUP_IMG,
                
'className' => 'btnImgUpload',
                
'beforeInsert' => true
            
],
            [
                
'name'      => LANG_MARKITUP_YT,
                
'openWith'  => '<youtube>[!['.LANG_MARKITUP_YT1.']!]',
                
'closeWith' => '</youtube>',
                
'className' => 'btnVideoYoutube',
            ],
            [
                
'name'      => LANG_MARKITUP_FB,
                
'openWith'  => '<facebook>[!['.LANG_MARKITUP_FB1.']!]',
                
'closeWith' => '</facebook>',
                
'className' => 'btnVideoFacebook',
            ],
            [
                
'name'        => LANG_MARKITUP_CODE,
                
'openWith'    => '<code type="[!['.LANG_MARKITUP_CODE1.':!:php]!]">',
                
'placeHolder' => "nn",
                
'closeWith'   => '</code>',
                
'className'   => 'btnCode',
            ],
            [
                
'name'        => LANG_MARKITUP_SP,
                
'openWith'    => '<spoiler title="[!['.LANG_MARKITUP_SP1.':!:'.LANG_MARKITUP_SP.']!]">',
                
'placeHolder' => "nn",
                
'closeWith'   => '</spoiler>',
                
'className'   => 'btnSpoiler',
            ],
            [
                
'name'      => LANG_MARKITUP_SM,
                
'className' => 'btnSmiles',
                
'key'       => 'Z',
                
'beforeInsert' => true
            
]
        ]
    ];

    public function 
__construct($config = []) {

        
$this->options['set'] = $this->default_set;
        
$this->options['set']['data'] = [
            
'smiles_url'   => href_to('typograph''get_smiles'),
            
'upload_title' => LANG_UPLOAD,
            
'upload_url'   => href_to('images''upload_with_preset', ['inline_upload_file''wysiwyg_markitup'])
        ];

        if(!empty(
$config['set'])){
            
$this->options['set'] = array_replace_recursive($this->options['set'], $config['set']);
        }

        if(!empty(
$config['buttons'])){
            foreach (
$this->options['set']['markupSet'] as $btn_id => $btn) {
                if(!
in_array($btn_id$config['buttons'])){
                    unset(
$this->options['set']['markupSet'][$btn_id]);
                }
            }
        }

    }

    public function 
displayEditor($field_id$content ''$config = []) {

        
$this->loadRedactor();

        
$dom_id str_replace(array('[',']'), array('_'''), $field_id);

        if(
$dom_id){
            if(!empty(
$this->options['wysiwyg_toolbar'])){
                echo 
'<div data-field_id="'.$dom_id.'" id="wysiwyg_toolbar_'.$dom_id.'" class="wysiwyg_toolbar_wrap">'.$this->options['wysiwyg_toolbar'].'</div>';
                unset(
$this->options['wysiwyg_toolbar']);
            }
            echo 
html_textarea($field_id$content, [
                
'id' => $dom_id,
                
'class' => 'markitup_redactor'
            
]);
        }

        
ob_start(); ?>

        <script type="text/javascript">
            <?php if($dom_id){ ?>
                markitup_global_options['field_<?php echo $dom_id?>'] = <?php echo json_encode($this->options['set']); ?>;
                $(function(){
                    init_markitup('<?php echo $dom_id?>');
                });
            <?php } else { ?>
                markitup_global_options['default'] = <?php echo json_encode($this->options['set']); ?>;
            <?php ?>
        </script>

        <?php cmsTemplate::getInstance()->addBottom(ob_get_clean());

    }

    private function 
loadRedactor() {

        if(
self::$redactor_loaded){ return false; }

        
$template cmsTemplate::getInstance();

        
$template->addJSFromContext('wysiwyg/markitup/image_upload.js');
        
$template->addJSFromContext('wysiwyg/markitup/insert_smiles.js');
        
$template->addJSFromContext('wysiwyg/markitup/jquery.markitup.js');

        
$css_file 'wysiwyg/markitup/skins/'.$this->options['skin'].'/style.css';
        
$tpl_css_file $template->getTplFilePath('css/wysiwyg/markitup/styles.css'false);
        if(
$tpl_css_file){
            
$css_file $tpl_css_file;
        }

        
$template->addCSSFromContext($css_file);

        
ob_start(); ?>

        <script type="text/javascript">
            var markitup_global_options = {};
            function init_markitup (dom_id){
                var mconfig = {};
                if(markitup_global_options.hasOwnProperty('field_'+dom_id)){
                    mconfig = markitup_global_options['field_'+dom_id];
                } else if(markitup_global_options.hasOwnProperty('default')) {
                    mconfig = markitup_global_options.default;
                }
                if(mconfig.markupSet[9] && mconfig.markupSet[9].beforeInsert === true){
                    mconfig.markupSet[9].beforeInsert = function(markItUp) { InlineUpload.display(markItUp); };
                }
                if(mconfig.markupSet[14] && mconfig.markupSet[14].beforeInsert === true){
                    mconfig.markupSet[14].beforeInsert = function(markItUp) { insertSmiles.displayPanel(markItUp); };
                }
                $('#'+dom_id).markItUp(mconfig);
            }
        </script>

        <?php $template->addBottom(ob_get_clean());

        
self::$redactor_loaded true;

    }

}
Онлайн: 1
Реклама