[Решено] Модуль Uploadify vs Мультиязычный сайт. Неправильные пути к файлам модуля из-за префиксов ru/ en/

Главные вкладки

Аватар пользователя Cypher Cypher 17 августа 2011 в 18:39

Разбираюсь с прроблемой потерявшейся кнопкой BROWSE, при мультизагрузке файлов модулем Uploadify.
Столкнулся с проблемой тут: http://www.drupal.ru/node/66703
Нашел корень проблемы и решение типа "костыль".

"Предлагаю решение" и прошу прокомментировать. Может есть более грамотный подход к лечению.

Проблема:
На странице добавления/редактировании материала, у которого есть CCK-поля filefield и imagefield организованна мультизагрузка файлов и изображений в эти поля. Для этого используется модуль Uploadify, который, я так понимаю, портирует на Drupal мультизагрузчик Uploadify. Так вот на этой странице не отображается кнопка BROWSE. Проблема возникает только на мультиязычных сайтах (модуль i18n).

Корень проблемы:
Для работы загрузчика необходимы некоторые файлы, типа uploadify.swf. Хранятся они в папке самого загрузчика (подпапка модуля). В коде страницы имеем:
<object ... type="application/x-shockwave-flash" data="http://localhost/mysite/en/sites/all/modules/uploadify/uploadify/uploadify.swf" style="visibility: visible;">
Если фаябагом убрать en/ то все встает на свои места и начинает замечательно работать.

Так же на странице:

<!--//--><![CDATA[//><!--
jQuery.extend(Drupal.settings,
{
...
    "uploadify":
    {
        "uploadify-field-portfolio-gallery":
        {
            "uploadifyHide": [  ],
            "uploadifyReplace": "field-portfolio-gallery-items",
            "scriptData": { ... },
            "uploader": "http://localhost/mysite/en/sites/all/modules/uploadify/uploadify/uploadi...,
            "script": "http://localhost/mysite/ru/uploadify",
            "fileDataName": "files[field_portfolio_gallery]",
            "cancelImg": "http://localhost/mysite/en/sites/all/modules/uploadify/uploadify/cancel....,
            "hideButton": false,
            "auto": false
        }
    },
},

Обратите внимание на пути. Та же ошибка. Разумеется папок en/sites/... не существует.

Решение
Лезем в файл (корневой каталог модуля) uploadify.module и видим там строчки типа:

<?php
'uploader' => url($lib['path'] .'/uploadify.swf', array('absolute' => TRUE'language' => language_default()))
?>

в указываемом параметре 'language' => language_default() и кроется беда.

Заменяем вхождения
'language' => language_default()
на
'language' => 'none'
или
'language' => false

кнопка лечится

Хотелось бы:
Найти грамотное решение решение. Не хорошо, наверное, вносить корректировки в используемый модуль. Вдруг придется переустанавливать да переподключать модули.
Нужно ли поставить в известность разработчиков (модуль все таки помечен как dev)?

Комментарии

Аватар пользователя kodo kodo 17 августа 2011 в 18:59

Ну да и решение собственно:
So I change:

481 'uploader' => url($path .'/uploadify/uploadify.swf', array('absolute' => TRUE)),
482 'script' => url('uploadify', array('absolute' => TRUE)),

to

481 'uploader' => url($path .'/uploadify/uploadify.swf', array('absolute' => TRUE, 'language' => '')),
482 'script' => url('uploadify', array('absolute' => TRUE, 'language' => '')),

Аватар пользователя Cypher Cypher 18 августа 2011 в 16:22

Понятно. Думаю, что последний сайт делаю на шестерке. Вот на прошлой неделе сам i18n обновился для семерки. В скором времени буду пробовать.

Аватар пользователя Cypher Cypher 23 августа 2011 в 17:35

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

Аватар пользователя staryi staryi 25 августа 2011 в 4:57

Стоит) Шестерка еще будет жить. Вот проблему пытаюсь решить. Есть тип материала, у него есть основной язык - русский и перевод, английский (с префиксом ../en/..).

Есть вьюха, выводит список ссылок на материалы, но ссылки независимо от активного в данный момент языка на сайте, выводятся по умолчанию, на русский вариант ноды, то есть без en/, но если поставить ноде галочку "language neutral", то ссылки во вьюз формируются правильно, но нода то становить одноязычная.

В общем я в тупике, есть у кого то мысли как решить это? Или кто то может уже даже и решал? И наверняка решал ))

Аватар пользователя kodo kodo 25 августа 2011 в 6:44

Не стоит - жаль времени. В целом информации достаточно, хотя хорошо обобщенной может и нет.
Шестерка уже мертва, новых проектов на ней не будет, во всяком случае среди тех кому будет необходимо подобное описание - т.е. новичкам.

Аватар пользователя kodo kodo 25 августа 2011 в 6:46

"staryi" wrote:
Есть вьюха, выводит список ссылок на материалы, но ссылки независимо от активного в данный момент языка на сайте, выводятся по умолчанию, на русский вариант ноды, то есть без en/, но если поставить ноде галочку "language neutral", то ссылки во вьюз формируются правильно, но нода то становить одноязычная.

В общем я в тупике, есть у кого то мысли как решить это? Или кто то может уже даже и решал? И наверняка решал ))


Поставьте во вьюхе current language - будут показаны только ноды с текущим выбранным языком

Аватар пользователя Cypher Cypher 26 августа 2011 в 15:25

kodo wrote:
"staryi" wrote:
Есть вьюха, выводит список ссылок на материалы, но ссылки независимо от активного в данный момент языка на сайте, выводятся по умолчанию, на русский вариант ноды, то есть без en/, но если поставить ноде галочку "language neutral", то ссылки во вьюз формируются правильно, но нода то становить одноязычная.

В общем я в тупике, есть у кого то мысли как решить это? Или кто то может уже даже и решал? И наверняка решал ))


Поставьте во вьюхе current language - будут показаны только ноды с текущим выбранным языком

Так же делал. Если я правильно понял вопрос Smile

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