Плагин Alian2 - запуск под Alto 1.0

Чтобы заработал этот говнокод плагин необходимо следующее: 1. Вставить в форму шаблона редактирования/создания топика набор полей для загрузки изображений.

Ошибочно полагать виджет alian формой для загрузки картинок, на самом деле виджет используется только для отображения уже загруженных картинок и вставки их в текст топика (заметки).

Находим в common/plugins/alian/templates/skin/default/actions/ActionContent/add.tpl
<fieldset class="topic-fieldset alian">
-----
</fieldset>


и вырезаем в common/templates/skin/start-kit/tpls/fields/field.alian.tpl, добавляем в
common/templates/skin/start-kit/tpls/topics/topic.type_default-edit.tpl по вкусу (я вставил под загрузкой картинок в фотосет).

2. Фиксим JS

В первой строке common/plugins/alian/templates/skin/default/js/aln_uploader.js автор плагина честно врёт за копирайт, на самом деле пошукав в сети можно убедиться что код этот он не сочинил а честно спиздил переиспользовал.

Всю конструкцию от
self.xhr.open("POST", params.url);
и ниже следует заменить на
        var boundary = SESSION_ID;
        var topic_id = $("#topic_id").val();
        if (self.xhr.sendAsBinary)
        {
            //Firefox
            self.xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary);
            self.xhr.setRequestHeader("Cache-Control", "no-cache");
            self.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            self.xhr.setRequestHeader("topic_id", topic_id);

            var body = "--" + boundary + "\r\n";
            body += "Content-Disposition: form-data; name='security_key'\r\n\r\n";
            body += ALTO_SECURITY_KEY + "\r\n";
            body += "--" + boundary + "\r\n";

            body += "Content-Disposition: form-data; name='"+(params.fieldName || 'file')+"'; filename='" + params.file.name + "'\r\n";
            body += "Content-Type: application/octet-stream\r\n\r\n";
            body += self.reader.result + "\r\n";
            body += "--" + boundary + "--";
            self.xhr.sendAsBinary(body);
        } else {
            // chrome (W3C spec.)
            var formData = new FormData();
            self.xhr.setRequestHeader("Cache-Control", "no-cache");
            self.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
            formData.append((params.fieldName || 'files'), params.file);
            formData.append('security_key', ALTO_SECURITY_KEY);
            formData.append('topic_id', topic_id);
            self.xhr.send(formData);
        }


Для FF ввиду того, что он в головоной Content-Type вместо multipart-data/form пишет text/plain — приходится собирать запрос руками. Для Chrome и Opera достаточно сделать append security ключа.


Не забыть скопировать jevix.local.php согласно «инструкции» автора, конфиг в apps/ и правильно настроить параметры виджета.

P.S. Это только первичный запуск плагина. На самом деле ещё куча работы по верификации кода, исправлению отображения кнопки delete в виджете, правильной генерации версий с различными размерами (щас тупо генерит все размеры не глядя на исходник), более корректной вставки в код статьи (не тупой a href+img src, а превью с/без полной версией под JS), возможно доработке кода групповой загрузки изображений (форма мультипарт, а файлы грузятся строго по одному) и вынос в конфиг параметра «пачка/по одному» для быстрых каналов, и т.д. и т.п.

Вот что 300 рублей животворящие делают —), так бы выкинул это говно и забыл бы...

Похожие статьи

  • Плагин Alian для Alto CMS 1.0
    Представляю вам плагин Alian для AltoCMS 1.0, который является дальнейшим развитием плагина Alian. Главное отличие этого плагина от своего предшественника — полностью автономная работа. Предыдущий вариант плагина...

0 комментариев

Автор статьи запретил добавлять комментарии