Неделю назад состоялся релиз нового Flash Player’а от Adobe: версия 10. Говорят что там наворочена куча функционала для 3D, эффектов и фильтров. Унылым же событием является то что перестала работать значительная часть функционала, а конкретнее обзор файлов из скрытого flash объекта. Этим методом пользуются многие cms (к примеру Wordpress), разные web 2.0 сайты и мой загрузчик картинок для tiny mce.
Проблема решается, вчера была выпущена новая версия SWFUpload, так же не отстает и FancyUpload основанный на этом же коде. Пока обе версии не оттестированные Beta и кидаться их ставить не нужно, все равно придется обновлять.
Подобное коснулось тех решений, где вызов обзора файлов шел не напрямую из flash’а, а через JavaScript, поэтому теперь все кнопки вроде «Обзор» или «Загрузить файлы» будут только на Flash.
Пришло время выложить в Open source мой скромный, немного сырой, но уже работающий плагин для загрузки и вставки изображений к TinyMCE.
 TinyMCE Images: Обзор |
 TinyMCE Images: Загрузка |
 TinyMCE Images: Удаление |
Плагин достаточно требовательный: PHP 5 и GD2 на сервере, Flash Player и JavaScript у пользователя.
Кратко об установке:
- Создать в корне сайта папку /storage и дать права на запись/чтение
- В tinyMCE.init:
- plugins: …,images,…
- theme_advanced_buttons1: …,images,…
- relative_urls : false
- remove_script_host : true
Плагин поддается локализации, у меня их только 2: ru и en.
Постоянная страница TinyMCE Images на dustweb.ru.
Скачать можно с SourceForge, а посмотреть демо можно здесь.
И решение это — SWFObject 2.0. Многоуважаемый сайт Design For Masters перевел статью и документацию по использованию SWFObject (официальный сайт). Основная идея этого кода в том чтоб собрать во едино все известные «best practice» вставки флеша, в итоге получив универсальную концепцию.
Основные преимущества:
- При статическом методе публикации Flash и альтернативный контент внедряются с помощью стандартной разметки, а JavaScript используется для решения проблем непреодолимых с помощью разметки.
- Используется стандартная разметка
- Механизм внедрения Flash контента не зависит от JavaScript благодаря чему Flash будет доступен значительно большей аудитории:
- если у вас установлен Flash плагин, но отключен JavaScript, вы все равно увидите Flash контент.
- Flash будет отображен на устройствах с очень плохой поддержкой JavaScript, вроде Sony PSP
- Приложения вроде RSS ридеров смогут отобразить Flash
- Динамический метод публикации основан на замене альтернативного контента Flash контентом в случае если есть достаточно новая версия Flash плеера и поддержка JavaScript.
- Позволяет обойти механизмы активации активного контента в Internet Explorer 6/7 и Opera 9+. Обратите внимание, что Microsoft выпустил обновления исключающие механизм активации в браузерах Internet Explorer [http://www.swffix.org/devblog/?p=19]
- Отлично интегрируется в JavaScript приложения
Статья является отличным поводом начать изучать проблемы вставки Flash объектов.
Последнее время покупаю софт, так правильнее и безглючнее. У антивируса (Norton 360) на днях закончилась подписка, ну я нажал волшебную кнопку Renew и в браузере открылся онлайн магазин, где по неизвестным причинам я не смог оформить заказ, странные ошибки полезли.
Постучал в техподдержку, и понеслась ))) Ответил явно индус (Manish Kapoor), который предложил сгонять на региональный онлайн магазин и просто купить новый серийник, супер, так и сделал.
Осталось ввести, но менюшка куда надо вводить серийник неактивна в просроченной версии!!! У меня уже мата не хватает ))) какими надо быть долбаебами-разработчиками чтоб так сделать!!! Функция возврата денег у них в онлайн магазине не работает, из-за неопознанной ошибки. Чувствую себя неудачником ))) Никогда не покупайте ничего у Symantec! А то Manish Kapoor и его друзья будут очень уставать на работе.
Отлично, душу излил. Далее буду разговаривать на программистском языке с php диалектом.
Вчера пол дня промучался, и только потом снизошло озарение, flash не умеет передавать в запросе cookies! А простыми словами если мы используем сессии, то запрос от flash’а будет с другой сессии, для решения вопроса был организован javascript’ик:
var allcookies = document.cookie;
var pos = allcookies.indexOf("PHPSESSID=");
if(pos != -1) {
var start = pos + 10;
var end = allcookies.indexOf(";", start);
if(end == -1) end = allcookies.length;
var value = allcookies.substring(start, end);
value = unescape(value);
}
var request = '/admin/files?PHPSESSID=' + value;