Обратный звонок RedConnect
Неправильный Content при добавлении видео и произвольного кода на страницу в Prestoshop 1.6 — ocdev
ocdev | Неправильный Content при добавлении видео и произвольного кода на страницу в Prestoshop 1.6
607
post-template-default,single,single-post,postid-607,single-format-standard,qode-core-1.0,ajax_fade,page_not_loaded,,pitch-ver-1.4.1, vertical_menu_with_scroll,smooth_scroll,grid_1300,blog_installed,wpb-js-composer js-comp-ver-5.0,vc_responsive

Неправильный Content при добавлении видео и произвольного кода на страницу в Prestoshop 1.6

В классе Validate (classes/Validate.php)добавлен метод isCleanHtml. И для устранения бага добавления iframe  или что тоже самое кода Youtube, который вставляется как iframe нужно закомментировать две строки

if (!$allow_iframe && preg_match('/<[s]*(i?frame|form|input|embed|object)/ims'$html))
    return false;

и метод будет выглядеть так

public static function isCleanHtml($html$allow_iframe = false)
    {
        $events ='onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange';
        $events .='|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror|onselect|onreset|onabort|ondragdrop|onresize|onactivate|onafterprint|onmoveend';
        $events .='|onafterupdate|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onmove';
        $events .='|onbounce|oncellchange|oncontextmenu|oncontrolselect|oncopy|oncut|ondataavailable|ondatasetchanged|ondatasetcomplete|ondeactivate|ondrag|ondragend|ondragenter|onmousewheel';
        $events .='|ondragleave|ondragover|ondragstart|ondrop|onerrorupdate|onfilterchange|onfinish|onfocusin|onfocusout|onhashchange|onhelp|oninput|onlosecapture|onmessage|onmouseup|onmovestart';
        $events .='|onoffline|ononline|onpaste|onpropertychange|onreadystatechange|onresizeend|onresizestart|onrowenter|onrowexit|onrowsdelete|onrowsinserted|onscroll|onsearch|onselectionchange';
        $events .= '|onselectstart|onstart|onstop';
        if (preg_match('/<[s]*script/ims'$html) || preg_match('/('.$events.')[s]*=/ims',$html) || preg_match('/.*script:/ims'$html))
            return false;
        //if (!$allow_iframe && preg_match('/<[s]*(i?frame|form|input|embed|object)/ims', $html))
            //return false;
        return true;
    }
А если мы хотим, чтобы можно было вставлять произвольный код на страницу необходимо поправить настройки TinyMCE. Для этого правим тот же файл classes/Validate.php, приведя данный метод к виду
public static function isCleanHtml($html$allow_iframe = false)
{
    return true;
}
и файл самого редактора tinymce.inc.js. В нем весь код заменяем на следующий
function tinySetup(config)
{
    if(!config)
        config = {};
 
    //var editor_selector = 'rte';
    //if (typeof config['editor_selector'] !== 'undefined')
        //var editor_selector = config['editor_selector'];
    if (typeof config['editor_selector'] != 'undefined')
        config['selector'] = '.'+config['editor_selector'];
 
//    safari,pagebreak,style,table,advimage,advlink,inlinepopups,media,contextmenu,paste,fullscreen,xhtmlxtras,preview
    default_config = {
            selector: ".rte" ,
            plugins : "visualblocks, preview searchreplace print insertdatetime, hr charmap colorpicker anchor code link image paste pagebreak table contextmenu filemanager table code media autoresize textcolor emoticons",
            toolbar2 : "newdocument,print,|,bold,italic,underline,|,strikethrough,superscript,subscript,|,forecolor,colorpicker,backcolor,|,bullist,numlist,outdent,indent",
            toolbar1 : "styleselect,|,formatselect,|,fontselect,|,fontsizeselect,",
            toolbar3 : "code,|,table,|,cut,copy,paste,searchreplace,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,image,emoticons,media,|,inserttime,|,preview ",
            toolbar4 : "visualblocks,|,charmap,|,hr,",
            external_filemanager_path: ad+"/filemanager/",
            filemanager_title: "File manager" ,
            external_plugins: { "filemanager" : ad+"/filemanager/plugin.min.js"},
            language: iso,
            skin: "prestashop",
            statusbar: false,
            relative_urls : false,
            convert_urls: false,
            extended_valid_elements : "em[class|name|id]",
            menu: {
                edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
                insert: {title: 'Insert', items: 'media image link | pagebreak'},
                view: {title: 'View', items: 'visualaid'},
                format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
                table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
                tools: {title: 'Tools', items: 'code'}
            }
    }
    $.each(default_config, function(index, el)
    {
        if (config[index] === undefined )
            config[index] = el;
    });
 
    tinyMCE.init(config);
 
};
После этого на страницы можно будет спокойно добавлять как видео так и например код от VK
sadykovs
Комментариев:
  • sadykovs
    Ответить

    Наткнулся на фишку сегодня

    13.11.2014 at 16:09

Оставьте ваш комментарий: