Rusich +5


Rusich

  • Rusich Rusich 8 августа 2018 09:43 #

    Доброго дня.

    Может все таки у кого есть хоть какие идеи по этому поводу. Ошибку поймать не могу. Так как писал выше при включении логирования php все работает нормально.

    в ответ на Не сохраняются изменения в заказе

  • Rusich Rusich 10 июля 2018 11:35 #

    {if $wa->currentUrl()|strstr:"sort"}<meta name="robots" content="noindex, follow"/>{/if}
    {if $wa->currentUrl()|strstr:"?price_min=&price_max"}<meta name="robots" content="noindex, follow"/>{/if}

    Вот так и сортировщик и фильтр закроет (с условием что выбор по цене включен)

    в ответ на Закрыть сортировку от индексации

  • Rusich Rusich 10 июля 2018 09:34 #

    Попробуйте, с сортировщиком вроде работает.

    {if $wa->currentUrl()|strstr:"sort"}<meta name="robots" content="noindex, follow"/>{else}{if !empty($canonical)}<link rel="canonical" href="{$canonical}"/>{/if}{/if}

    в ответ на Закрыть сортировку от индексации

  • Rusich Rusich 10 июля 2018 08:44 #

    Да круто у гугла, плюс к этому надо еще из robots.txt удалить.

    "Внимание! Поисковый робот не обнаружит директиву <code>noindex</code>, если страница заблокирована в файле robots.txt. Такая страница может быть представлена в результатах поиска (например, если на нее есть ссылка на другой странице)."

    При таком раскладе действительно очень актуальный вопрос для всех.

    в ответ на Закрыть сортировку от индексации

  • Rusich Rusich 10 июля 2018 08:27 #

    А что мешает их закрыть в robots.txt?

    Disallow: /*?

    в ответ на Закрыть сортировку от индексации

  • Rusich Rusich 21 сентября 2017 09:36 #

    К сожалению уже не помню, что сделали. Но косяк в конфигурации сервака был.

    Да точно косяк на сервере был. Сейчас посмотрел переписку с админом. Там правили что то.

    Так что разбираться вам с настройками сервака.

    в ответ на Отправка почты через SMTP

  • Rusich Rusich 7 июля 2017 15:34 #

    Проверяет и другие списки, если проверку ставить друг за другом и выводит нужную наклейку. Подскажите как это прикрутить в категории (list-thumbs).

    в ответ на как получить из базы к каким спискам принадлежит товар для вывода в шаблоне?

  • Rusich Rusich 29 мая 2017 10:38 #

    а с чего вы взяли что он ругается?

    https://webmaster.yandex.ru/tools/robotstxt/?hostN...

    в ответ на robots.txt - Яша ругается

  • Rusich Rusich 26 апреля 2017 14:01 #

    такая же беда, в одном из офисов на двух компах время -3 часа

    в ответ на Очень простой вопрос: как изменить время?

  • Rusich Rusich 8 февраля 2017 10:16 #

    Глобально! Ну чтоб вам так же отвечали.

    в ответ на Удалить категории контактов

  • Rusich Rusich 3 февраля 2017 17:35 #

    Просто когда долго работает и не бывает самопроизвольных переключений, забываешь об элементарных вещах.

    в ответ на Пропала карта после обновления.

  • Rusich Rusich 19 января 2017 15:29 #

    Мне нужен только сайт, и

    {if isset($frontend_homepage)}Ваш код{/if}

    сработал как надо

    в ответ на Скрыть div в шаблоне на главной.

  • Rusich Rusich 19 января 2017 11:56 #

    Из 100500 ответов ни одного ни удалось найти. Спасибо что не поленились ответить.

    в ответ на Скрыть div в шаблоне на главной.

  • Rusich Rusich 21 октября 2016 05:30 #

    Доброго дня. Вопрос остается открытым, когда Swift Mailer будет заменен на что то другое, что поддерживает PHP 7.

    Webasyst позиционируется как CMS полностью поддерживающее PHP7. А Swift Mailer по умолчанию не работает на нем.

    С первого сообщения прошло почти 2 месяца, а воз и ныне там. А без этой функции ну ни как не обойтись если почта находится на стороннем сервере (яндекс, маил и т.д.)

    в ответ на Отправка почты через SMTP

  • Rusich Rusich 8 октября 2016 12:48 #

    Этот плагин привязан к приложению Блог (кстати стоит), и он не позволяет к каждому созданному блогу привязать свои категории. Если я ошибаюсь, то это здорово, направьте на путь истинный, где та заветная кнопка.

    в ответ на Категории в блоге

  • Rusich Rusich 31 августа 2016 06:02 #

    Зря вы решили идти этим путем. Лучше потерпеть сейчас и сделать главным сайт на HTTPS т.к. в скором времени http отомрет как класс. Делать полный ридерект это хорошо для гугла ему фиолетово, а вот яндекс очень его не любит.

    "6. При необходимости настроить редирект с неглавного зеркала на главное. Делать это до того, как сайты будут признаны зеркалами, нежелательно, поскольку в этом случае страницы с редиректами будут исключаться из поиска согласно правилам Яндекса по обработке перенаправлений. На время склейки зеркал, по возможности, лучше оставить сайт доступным для робота по обоим адресам." оригинал

    в ответ на Как запретить индексацию https зеркала

  • Rusich Rusich 30 августа 2016 17:46 #

    В логах сервера ошибок PHP нет. В логах Вебасиста появляется mail.log


    2016-08-30 13:35:34:
    Error sending email from "a@xxxxxxx.ru" to "a@xxxxx.ru" with subject "New order #1006"
    Connection could not be established with host smtp.yandex.ru [ #0]
    #0 /home/xxxxxx/domains/xxxxxxx.ru/public_html/wa-system/vendors/swift/classes/Swift/Transport/StreamBuffer.php(64): Swift_Transport_StreamBuffer->_establishSocketConnection()
    #1 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/vendors/swift/classes/Swift/Transport/AbstractSmtpTransport.php(115): Swift_Transport_StreamBuffer->initialize(Array)
    #2 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/vendors/swift/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start()
    #3 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/mail/waMail.class.php(32): Swift_Mailer->send(Object(waMailMessage), Array)
    #4 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/mail/waMailMessage.class.php(106): waMail->send(Object(waMailMessage))
    #5 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-apps/shop/lib/classes/shopNotifications.class.php(323): waMailMessage->send()
    #6 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-apps/shop/lib/classes/shopNotifications.class.php(65): shopNotifications::sendEmail(Array, Array)
    #7 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-apps/shop/lib/actions/settings/notifications/shopSettingsNotificationsTest.controller.php(50): shopNotifications::sendOne(1, Array, 'a@xxx.ru')
    #8 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/controller/waController.class.php(21): shopSettingsNotificationsTestController->execute()
    #9 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/controller/waJsonController.class.php(28): waController->run(NULL)
    #10 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/controller/waFrontController.class.php(139): waJsonController->run()
    #11 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/controller/waFrontController.class.php(55): waFrontController->execute('', 'settings', 'notificationsTe...')
    #12 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/wa-system/waSystem.class.php(600): waFrontController->dispatch()
    #13 /home/xxxxxxx/domains/xxxxxxx.ru/public_html/index.php(7): waSystem->dispatch()
    #14 {main}
    

    в ответ на Отправка почты через SMTP

  • Rusich Rusich 30 августа 2016 17:01 #

    Случайно не PHP 7 у вас на сервере? Наблюдаю такую же ситуацию. При работе на php 5 все отлично. При включении PHP 7 получаю аналогичную ошибку.

    в ответ на Настройка почты (smtp)

  • Rusich Rusich 23 августа 2016 07:17 #

    Плюнули на бесплатную доставку. Установили для всех товаров одинаковую стоимость.

    <delivery-options>
    <option cost="500" days="2-3" order-before="1"/>
    </delivery-options>

    Стоимость доставки в своем регионе так же установили на фиксированную -500-

    проверка качества заказа на маркете опять дает ошибку.

    При оформлении заказа через корзину на Маркете передаются следующие условия покупки: - в прайс-листе передается стоимость доставки товара – бесплатно, однако в ответе API стоимость доставки товара – 500 руб.

    Как такое может быть? Если option cost="500".


    в ответ на Заказ на маркете.

  • Rusich Rusich 23 августа 2016 07:08 #

    С этим вопросом разобрались. Вся проблема была в том, что скрипт обрабатывает ограниченное количество валют. Валюты которые не учтены для обработки тупо умножали конвертированную цену еще раз на курс указанный в настройке валют. Вот тут и выскакивала бредо цена.

    в ответ на Заказ на маркете

  • Rusich Rusich 19 августа 2016 05:44 #

    Инструкцию изучил, но там не озвучено как сделать разную стоимость доставки. У нас стоимость зависит от цены. Установили стоимость доставки в глобальном параметре 0. Стоимость доставки в своем регионе поставили 500. К нужным товарам прописали yandexmarket.local_delivery_cost=500 .

    Но в заказе все товары выдаются с нулевой доставкой.

    Как создать разную стоимость?

    И вообще возможно ли это?

    в ответ на Заказ на маркете.

  • Rusich Rusich 29 июля 2016 13:22 #

    Подскажите как тут вывести key=value

    в ответ на Как узнать ID категории 1-го уровня у товара?

  • Rusich Rusich 25 июля 2016 20:12 #

    Вы его расклевали? Для начала пропишите в robots.txt директиву Host. В яндекс вебматере назначьте главное зеркало если хотите побыстрей. На счет гугла не правда, он знает ваш сайт. https://www.google.ru/search?q=site:mixtrade.pro&n...

    в ответ на Поисковики не видят сайт

  • Rusich Rusich 22 июля 2016 10:57 #

    Да так оно и случилось. После письма в поддержку яндекса с просьбой проверить и заменить данные на указанные ниже - тут мы выдаем им данные предоставленные нашим магазином.

    И о чудо все запустилось после их ответа. проверено на двух магазинах подряд.


    в ответ на Плагин оплаты ЯндексКасса

  • Rusich Rusich 21 июля 2016 14:30 #

    Вы хотите сказать, что они по дефолту свои значения выставляют, а не то что им передают?

    Т.е. надо их тиранить чтоб выставляли наши значения?

    Ошибка в точь как у вас. Правда в начале выскакивает "Пошло что то не так", при нажатии вернуться в магазин вываливается эта ошибка.

    в ответ на Плагин оплаты ЯндексКасса

  • Rusich Rusich 21 июля 2016 14:21 #

    Доброго дня. Сергей подскажите как решить эту проблему. Платеж заканчивается с такой же ошибкой.

    в ответ на Плагин оплаты ЯндексКасса

  • Rusich Rusich 3 июня 2016 14:48 #

    Чудес не случилось, перепутал логин и пароль к базе. Он к другой подключался.

    в ответ на Перенос на другой домен и хостинг

  • Rusich Rusich 19 мая 2016 08:04 #

    На одном хостинге с одинаковыми настройками 3 сайта обновились без видимых проблем. Один выдает перл в блоках.

    в ответ на Блоки

  • Rusich Rusich 19 мая 2016 08:00 #

    Извиняюсь

    <script src="/wa-content/js/jquery-wa/wa.elrte.ace.js?v2.2.7.1463658147"></script>
    <script type="text/javascript">
    document.title = 'Новый блок' + ' — Сайт';
    </script>
    <div class="sidebar left200px s-internal-sidebar">
    
        <div class="block not-padded">
                <ul id="ul-blocks" class="menu-v with-icons">
                                    <li data-block-id="comand_slyder" class="sortable">
                        <a href="#/blocks/id=comand_slyder"><i class="icon16 zone"></i>comand_slyder
                            <span class="hint">логотипы команд в heder</span>
                        </a>
                    </li>
                                    <li data-block-id="verhnee_meny" class="sortable">
                        <a href="#/blocks/id=verhnee_meny"><i class="icon16 zone"></i>verhnee_meny
                            <span class="hint">Верхнее меню</span>
                        </a>
                    </li>
                                    <li data-block-id="works_slyder" class="sortable">
                        <a href="#/blocks/id=works_slyder"><i class="icon16 zone"></i>works_slyder
                            <span class="hint">Слайдер работ</span>
                        </a>
                    </li>
                                    <li data-block-id="nignee_meny" class="sortable">
                        <a href="#/blocks/id=nignee_meny"><i class="icon16 zone"></i>nignee_meny
                            <span class="hint">Нижнее меню</span>
                        </a>
                    </li>
                                    <li data-block-id="socialnii_seti_glavnay" class="sortable">
                        <a href="#/blocks/id=socialnii_seti_glavnay"><i class="icon16 zone"></i>socialnii_seti_glavnay
    
                            <span class="hint">Блок социальных сетей на главной</span>
                        </a>
                    </li>
                                    <li data-block-id="site.send_email_form" class="sortable">
                        <a href="#/blocks/id=site.send_email_form"><img style="margin-left: -20px; margin-right
    : 4px; vertical-align: middle;" src="/wa-apps/site/img/site16.png" width="16" height="16">site.send_email_form
    
                            <span class="hint">Форма для отправки сообщений</span>
                        </a>
                    </li>
                                    <li data-block-id="test_blok" class="sortable">
                        <a href="#/blocks/id=test_blok"><i class="icon16 zone"></i>test_blok
                            <span class="hint">Тестовый блок</span>
                        </a>
                    </li>
                                    <li data-block-id="blog.latest_posts" class="">
                        <a href="#/blocks/id=blog.latest_posts"><img style="margin-left: -20px; margin-right
    : 4px; vertical-align: middle;" src="/wa-apps/blog/img/blog16.png" width="16" height="16">blog.latest_posts
    
                            <span class="hint">Latest blog posts</span>
                        </a>
                    </li>
                                    <li data-block-id="blog.latest_comments" class="">
                        <a href="#/blocks/id=blog.latest_comments"><img style="margin-left: -20px; margin-right
    : 4px; vertical-align: middle;" src="/wa-apps/blog/img/blog16.png" width="16" height="16">blog.latest_comments
    
                            <span class="hint">Latest comments of all blog posts</span>
                        </a>
                    </li>
                                    <li class="top-padded selected">
                        <a href="#/blocks/add/" class="small"><i class="icon10 add"></i>Новый блок</a>
                    </li>
                    
                </ul>
        </div>
    
    </div>
    <div class="content left200px">
        <div class="s-editor s-white bordered-left">
        <form id="site-form" method="post" action="?module=blocks&action=save">
            <div class="block s-grey-toolbar">
                            <div id="s-block-settings" style="">
                    <div class="fields form">
                        <div class="field">
                            <div class="name bold">
                                ID
                            </div>
                            <div class="value">
                                <input name="info[id]" type="text" class="bold large" value="" />
                            </div>
                        </div>
                        <div class="field">
                            <div class="name">
                                Описание
                            </div>
                            <div class="value">
                                <textarea name="info[description]"></textarea>
                            </div>
                        </div>
                    </div>
                    <div class="clear"></div>
                </div>        
            </div>    
            <div class="s-editor-core-wrapper">
                <div class="ace">
                    <textarea id="content" name="info[content]" class="s-entire-core" style="width:99%">
    </textarea>
                </div>
            </div>            
        </form>    
        <div class="clear"></div>
        </div>
    </div>
    
    
    <script type="text/javascript">
        $("#site-form").submit(function () {
            waEditorUpdateSource({ 'id': 'content'});
            var form = $(this);
            $("#wa-editor-status").html("<i class='icon16 loading'></i> " + $_('Saving...')).fadeIn("slow"
    );
            $.post(form.attr('action'), form.serialize(), function (response) {
                if (response.status == 'ok') {
                    $(".error").removeClass('error');
                    $("#wa-editor-status").html('<i class="icon16 yes"></i>' + $_('Saved')).fadeOut('slow'
    );
                    $('#s-editor-save-button').removeClass('yellow').removeClass('red').addClass('green'
    );
                    
                    var blockHtml = function(b) {
                        var icon = '';
                        if (b.app_icon) {
                            icon = '<img style="margin-left: -20px; margin-right: 4px; vertical-align: middle
    ;" src="/' + b.app_icon['16'] + '" width="16" height="16">';
                        } else {
                            icon = '<i class="icon16 zone"></i>';
                        }
                        return '<li data-block-id="' + b.id + '" class="selected sortable">' +
                                '<a href="#/blocks/id=' + b.id + '">' + icon + b.id + 
                                ' <span class="hint">' + b.description + '</span></a></li>';
                    }
                    
                    var blocks_ul = $("#ul-blocks");
                                        form.attr('action', form.attr('action') + '&id=' + response.data
    .id);
                        var b = response.data;
                                            
                        blocks_ul.find("li.selected").removeClass('selected');
                        
                        var insert_target = blocks_ul.find("li.sortable:last");
                        if (insert_target.length) {
                            insert_target.after(blockHtml(b));
                        } else {
                            insert_target = blocks_ul.find("li:first");
                            if (insert_target.length) {
                                insert_target.before(blockHtml(b));
                            } else {
                                blocks_ul.append(blockHtml(b));
                            }
                        }
                        $.History.stop = true;
                        location.hash = '#/blocks/id=' + b.id;
                                } else if (response.status == 'fail') {
                    if ($.isArray(response.errors)) {
                        var e = response.errors[0];
                        $(response.errors[1]).addClass('error');
                    } else {
                        var e = response.errors;
                    }
                    $("#wa-editor-status").html('<b style="color:red">' + (e ? e : $_('An error occurred
     while saving')) + '</b>');
                    $('#s-editor-save-button').removeClass('yellow').removeClass('green').addClass('red'
    );
                }
            }, "json");
            return false;
        });
    $("#ul-blocks").sortable({
        distance: 5,
        helper: 'clone',    
        items: 'li.sortable',
        opacity: 0.75,
        tolerance: 'pointer',
        stop: function (event, ui) {
            var li = $(ui.item);
            var id = li.data('block-id');
            var pos = li.prevAll('li.sortable').size() + 1;
            $.post("?module=blocks&action=sort", { id: id, pos: pos}, function () {
            }, "json");
        }
    });
    
    $(".s-block-code").click(function () {
        var el = $('<input style="font-weight: bold; margin-top:2px; border: 1px solid #ccc; padding: 1px
    ; width:' + ($(this).width() + 2) + 'px" type="text" readonly="readonly" />').val($(this).text()).focus
    (function () {
            $(this).select();
        }).mouseup(function(e){
            e.preventDefault();
        });
        $(this).replaceWith(el);
        el.select();
    });
    
        
    $("#s-block-delete").click(function () {
        if (confirm('Блок будет удален и перестанет подключаться в шаблонах и на страницах, на которые б
    ыл добавлен до этого. Удалить блок?')) {
            $.post("?module=blocks&action=delete", { id: ""}, function (response) {
                if (response.status == 'ok') {
                                        var li = $("#ul-blocks li.selected");
                        if (li.prev().length) {
                            var hash = li.prev().addClass('selected').find('a').attr('href');
                        } else {
                            var hash = li.next().addClass('selected').find('a').attr('href');
                        }
                                    $("div.s-editor").empty();
                    $('#ul-blocks li[data-block-id=""]').remove();
                                        $.wa.setHash(hash);
                                }
            }, "json");
        }
        return false;
    });
    
    $('.s-block-view-original').click(function() {
        var d = $('#s-block-view-original-dialog');
        if (d.length) {
            d.waDialog({
                onLoad: function() {
                    var editor = ace.edit('s-block-original');
                    ace.config.set("basePath", wa_url + 'wa-content/js/ace/');
                    editor.setTheme("ace/theme/eclipse");
                    var session = editor.getSession();
                    session.setMode("ace/mode/css");
                    session.setMode("ace/mode/javascript");
                    session.setMode("ace/mode/smarty");
                    session.setUseWrapMode(true);
                    editor.renderer.setShowGutter(false);
                    editor.setShowPrintMargin(false);
                    editor.setFontSize(13);
                    editor.setHighlightActiveLine(false);
                    editor.setReadOnly(true);
    
                    setTimeout(function () {
                        var newHeight = editor.getSession().getScreenLength() * editor.renderer.lineHeight
     + editor.renderer.scrollBar.getWidth();
                        if (newHeight < 220) {
                            newHeight = 220;
                        }
                        $('#s-block-original').height(newHeight.toString() + "px");
                        editor.resize();
                    }, 50);
                }
            });
        }
        return false;
    });
    
    $('#s-block-settings-toggle').click(function(){
        $('#s-block-settings').toggle();
        return false;
    });
    
    
    </script>

    в ответ на Блоки

  • Rusich Rusich 19 мая 2016 07:33 #
    var wa_editor_key = false;
    var wa_editor;
    
    function waEditorKeyCallback(press, options) {
        var options = options || {};
        options = jQuery.extend({
            'save_button': 'wa-page-button',
            'change_callback': null
        }, options);
        var button = $('#' + options.save_button);
        if (press) {
            return function (e) {
                if (!button.length) {
                    return;
                }
                // ctrl + s (Mac OS)
                if (e.ctrlKey && e.which == 115 && !wa_editor_key) {
                    button.click();
                    e.preventDefault();
                }
            }
        } else {
            return function (e) {
                wa_editor_key = false;
                if (!button.length) {
                    return;
                }
                // ctrl + s
                if (e.ctrlKey && e.which == 83) {
                    wa_editor_key = true;
                    button.click();
                    e.preventDefault();
                }
                if (e.metaKey) {
                    return;
                }
                if ((e.which < 33 || e.which > 40) &&
                    (e.which > 27 || e.which == 8 || e.which == 13) &&
                    (e.which < 112 || e.which > 124) &&
                    (!e.ctrlKey || e.which != 67)
                    ) {
                    button.removeClass('green').addClass('yellow');
                    if(options.change_callback && (typeof(options.change_callback) == 'function')) {
                        options.change_callback();
                    }
                }
            }
        }
    }
    
    function waEditorAceInit(options)
    {
        var options = options || {};
        options = jQuery.extend({
            'prefix': 'wa-page-',
            'id': 'wa-page-content',
            'type': 'html',
            'ace_editor_container': 'wa-ace-editor-container'
        }, options);
    
        if (!options.save_button) {
            options.save_button = options.prefix + 'button';
        }
    
        if (!$('#' + options.ace_editor_container).length) {
            $('<div id="' +  options.ace_editor_container + '"></div>').insertAfter($('#' + options.id))
    ;
        }
        wa_editor = ace.edit(options.ace_editor_container);
    
        ace.config.set("basePath", wa_url + 'wa-content/js/ace/');
    
        wa_editor.setTheme("ace/theme/eclipse");
        var session = wa_editor.getSession();
    
        if (options.type == 'css') {
            session.setMode("ace/mode/css");
        } else if (options.type == 'javascript') {
            session.setMode("ace/mode/javascript");
        } else {
            session.setMode("ace/mode/css");
            session.setMode("ace/mode/javascript");
            session.setMode("ace/mode/smarty");
        }
        session.setUseWrapMode(true);
        wa_editor.setOption("maxLines", 10000);
        wa_editor.setAutoScrollEditorIntoView(true);
        wa_editor.renderer.setShowGutter(false);
        wa_editor.setShowPrintMargin(false);
        if (navigator.appVersion.indexOf('Mac') != -1) {
            wa_editor.setFontSize(13);
        } else if (navigator.appVersion.indexOf('Linux') != -1) {
            wa_editor.setFontSize(16);
        } else {
            wa_editor.setFontSize(14);
        }
        $('.ace_editor').css('fontFamily', '');
        session.setValue($('#' + options.id).hide().val());
        wa_editor.focus();
        wa_editor.navigateTo(0, 0);
    
        wa_editor.commands.addCommands([{
            name: 'waSave',
            bindKey: {win: 'Ctrl-S',  mac: 'Ctrl-S'},
            exec: function(editor) {
                $('#' + options.save_button).click();
            }
        }, {
            name: "unfind",
            bindKey: {
                win: "Ctrl-F",
                mac: "Command-F"
            },
            exec: function(editor, line) {
                return false;
            },
            readOnly: true
        }]);
    
        // Whenever a change happens inside the ACE editor, update
        // the size again
        session.on('change', function() {
            if(options.change_callback && (typeof(options.change_callback) == 'function')) {
                options.change_callback();
            }
            if ($('#' + options.save_button).hasClass('green')) {
                $('#' + options.save_button).removeClass('green').addClass('yellow');
            }
        });
    
        $(window).resize(function() {
            wa_editor.resize();
        });
    }
    
    function waEditorUpdateSource(options) {
        var options = options || {};
        options = jQuery.extend({
            'id': 'wa-page-content'
        }, options);
        var element = $('#' + options.id);
    
        if ($(".el-rte").length && $(".el-rte").is(':visible')) {
            $('.el-rte iframe').contents().find("img[data-src!='']").each(function () {
                $(this).attr('src', $(this).attr('data-src'));
            });
            element.val(element.elrte('val'));
            if (wa_editor) {
                wa_editor.setValue(element.val());
            }
            $('.el-rte iframe').contents().find('img[src*="$wa_url"]').each(function () {
                var s = decodeURIComponent($(this).attr('src'));
                $(this).attr('data-src', s);
                $(this).attr('src', s.replace(/\{\$wa_url\}/, wa_url));
            });
        } else if (wa_editor) {
            element.val(wa_editor.getValue());
        }
    }
    
    
    function waEditorInit(options) {
        var options = options || {};
        options = jQuery.extend({
            'prefix': 'wa-page-',
            'id': 'wa-page-content',
            'lang': 'en',
            'ace_editor_container': 'wa-ace-editor-container',
            'html_tab': 'html',
            'wysiwyg_tab': 'wysiwyg'
        }, options);
    
        if (!options.save_button) {
            options.save_button = options.prefix + 'button';
        }
    
        var element = $('#' + options.id);
    
        if (!options.height) {
            var editor_selector = "div." + options.prefix + "editor";
            var h = $(editor_selector).height() - $(editor_selector + " .wa-page-gray-toolbar").height()
     - 92;
            if ($("div." + options.prefix + 'save-panel').length) {
                h = h - 25;
            }
            if ($("#wa-app").height() < $("#wa").height() - $("#wa-header").height()) {
                h += $("#wa").height() - $("#wa-header").height() - $("#wa-app").height();
            }
            options.height = h < 300 ? 300 : h;
        }
    
        // init elrte editor
        elRTE.prototype.beforeSave = function () {};
        elRTE.prototype.options.toolbars.waPageToolbar = ['wa_style', 'alignment', 'colors', 'format', 'indent'
    , 'lists', 'wa_image', 'wa_links', 'wa_elements', 'wa_tables', 'direction'];
    
        // hack for empty elrte in IE
        if (!element.val() && $.browser.msie) {
            element.val('<div></div>');
        }
        element.elrte({
            height: options.height - 53,
            cssfiles: [wa_url + "wa-content/css/wa/wa-1.3.css"],
            toolbar: 'waPageToolbar',
            lang: options.lang,
            wa_image_upload: '?module=pages&action=uploadimage',
            wa_image_upload_path: options.upload_url,
            width: "100%"
        });
        if (element.val() == '<div></div>' && $.browser.msie) {
            element.elrte('val', '');
        }
    
        var f = element.elrte()[0].elrte.filter.source;
        element.elrte()[0].elrte.filter.source = function (html) {
            var html = f.call(element.elrte()[0].elrte.filter, html);
            html = html.replace(/%7B\$wa_url%7D/, '{$wa_url}');
            html = html.replace(/{[a-z$][^}]*}/gi, function (match, offset, full) {
                var i = full.indexOf("</script", offset + match.length);
                var j = full.indexOf('<script', offset + match.length);
                if (i == -1 || (j != -1 && j < i)) {
                    match = match.replace(/>/g, '>');
                    match = match.replace(/</g, '<');
                    match = match.replace(/&/g, '&');
                    match = match.replace(/"/g, '"');
                }
                return match;
            });
            return html;
        };
        $('.el-rte iframe').contents()
            .keydown(waEditorKeyCallback(false, options))
            .keypress(waEditorKeyCallback(true, options))
            .keyup(function(e) {
                //all dialogs should be closed when Escape is pressed
                if (e.keyCode == 27) {
                    jQuery(".dialog:visible").trigger('esc');
                }
            });
        $('.el-rte .toolbar li').click(function () {
            $('#' + options.save_button).removeClass('green').addClass('yellow');
        });
    
        $('#wa-page-settings').keydown(waEditorKeyCallback(false, options)).keypress(waEditorKeyCallback
    (true, options));
    
    
        waEditorAceInit(options);
    
        // bind click handlers to buttons
        $("#" + options.wysiwyg_tab).click(function () {
            if ($.storage) {
                $.storage.set(wa_app + '/editor', 'wysiwyg');
            }
            $('ul#'+options.prefix+'wysiwyg-html-toggle, ul.'+options.prefix+'wysiwyg-html-toggle').children
    ('li.selected').removeClass('selected');
            $(this).parent().addClass('selected');
            $("#" + options.ace_editor_container).hide();
            element.elrte('val', wa_editor.getValue());
            $('.el-rte iframe').contents().find('img[src*="$wa_url"]').each(function () {
                var s = decodeURIComponent($(this).attr('src'));
                $(this).attr('data-src', s);
                $(this).attr('src', s.replace(/\{\$wa_url\}/, wa_url));
            });
            $(".el-rte").show();
            $('.el-rte iframe').contents().find('body').focus();
            return false;
        });
    
        $("#" + options.html_tab).click(function () {
            if ($.storage) {
                $.storage.set(wa_app + '/editor', 'html');
            }
            $('ul#'+options.prefix+'wysiwyg-html-toggle, ul.'+options.prefix+'wysiwyg-html-toggle').children
    ('li.selected').removeClass('selected');
            $(this).parent().addClass('selected');
            $('.el-rte iframe').contents().find("img[data-src!='']").each(function () {
                $(this).attr('src', $(this).attr('data-src'));
            });
    
            var p = wa_editor.getCursorPosition();
            waEditorUpdateSource(options);
            $(".el-rte").hide();
            $("#" + options.ace_editor_container).show();
            wa_editor.focus();
            wa_editor.navigateTo(p.row, p.column);
            return false;
        });
    
        // show active editor
        $('ul#'+options.prefix+'wysiwyg-html-toggle, ul.'+options.prefix+'wysiwyg-html-toggle').children
    ('li.selected').removeClass('selected');
        if (!$.storage || $.storage.get(wa_app + '/editor') == 'wysiwyg') {
            $("#" + options.wysiwyg_tab).parent().addClass('selected');
            $('.el-rte iframe').contents().find('img[src*="$wa_url"]').each(function () {
                var s = decodeURIComponent($(this).attr('src'));
                $(this).attr('data-src', s);
                $(this).attr('src', s.replace(/\{\$wa_url\}/, wa_url));
            });
            $("#" + options.ace_editor_container).hide();
        } else {
            $(".el-rte").hide();
            $("#" + options.html_tab).parent().addClass('selected');
            $("#" + options.ace_editor_container).show();
        }
    }

    в ответ на Блоки