Что нового

Ищу модули на DLE 10

  • Автор темы Автор темы Skyrazor
  • Дата начала Дата начала
S

Skyrazor

Гость
Вообщем стоял у меня чат, да перестал работать после обновления до 10.0. Теперь ищу подходящий рабочий чат. И ещё перестала работать вставка видео Вконтакте - хак, который при добавлении новости преобразовал вставленный код из окошка "Поделиться" в код типа [vk = ссылка], а при добавлении в БД превращал это во фрейм с видео. Ищу фикс или новую версию.
 
Skyrazor,github.com/MSergW/dle_nodechatеще был модуль chat online от sander для 10
 
Спасибо, попробую. Может, кто ещё предложит? Вставку видео с контакта никто не делал что ли?
 
Цитата: SkyrazorВставку видео с контакта никто не делал что ли?Доп. поле чтоле?
 
Цитата: SymbioZДоп. поле чтоле?Нет, вроде тега. ВКонтакте у видеозаписей есть "Поделиться" и "Код для вставки". Вот его копируешь, вставляешь в поле новости, он java-скриптом автоматически преобразовывается в тег [vk=ссылка], а затем, когда новость добавляется в бд, парсер преобразует его в видеоролик. Получается, как вставка видео с ютуба, т.е. видеоролик может быть в любом месте статьи, где добавили код. Вот как выглядит модуль:Добавляем в parse.class.php$source = preg_replace( "#\\[vk=([^\\]]+)\\]#ies", "\\$this->build_vk('\\\\1')", $source );Чуть ниже:$txt = preg_replace( "#<!--dle_vk_begin:(.+?)-->(.+?)<!--dle_vk_end-->#is", '[vk=\\\\1]', $txt );И функция:function build_vk($url) { $url = $this->clear_url( urldecode( $url ) ); $url = str_replace("&","&", $url ); if ( $url == "") return; $source = parse_url ( $url ); $source['host'] = str_replace( "www.", "", strtolower($source['host']) ); if ($source['host'] != "vk.com" AND $source['host'] != "vkontakte.ru") return "[vk=".$url."]"; return '<!--dle_vk_begin:'.$url.'--><center> <iframe src="'.$url.'" width="607" height="360" frameborder="0"></iframe> </center><!--dle_vk_end-->'; }И яваскрипт для преобразования кода ВКонтакте в тег [vk=ссылка]:<script language="javascript" type="text/javascript">/*<![CDATA[*/document.onmouseup = function(){ var t = document.getElementsByTagName('textarea'); var short_scrollTop = document.getElementById('short_story').scrollTop; var short_scrollLeft = document.getElementById('short_story').scrollLeft; var full_scrollTop = document.getElementById('full_story').scrollTop; var full_scrollLeft = document.getElementById('full_story').scrollLeft; for (var i=0; i<t.length; i++) { t.value=t.value.replace(/<iframe src="(.*?)".*?<\\/iframe>/gim, '[vk=$1]'); } document.getElementById('short_story').scrollLeft = short_scrollLeft; document.getElementById('short_story').scrollTop = short_scrollTop; document.getElementById('full_story').scrollLeft = full_scrollLeft; document.getElementById('full_story').scrollTop = full_scrollTop;}/*]]>*/</script>Но в 10 версии парсер поменялся, и код тоже пришлось редактировать. Видимо, где-то отредактировал косячно и теперь, если оставить ява-скрипт, то преобразованный код [vk=ссылка] не обрабатывается, точнее удаляется. Если яваскрипт отключить, то в коде так и останется <iframe src="http://vk.com/video_ext.php?oid=-...." width="607" height="360" frameborder="0"></iframe>и тогда при сохранении получится видео (правда, в предварительном просмотре оно не отображается).Сейчас у меня заменено так:$source = preg_replace_callback( "#\\[vk=([^\\]]+)\\]#i", array( &$this, 'build_vk'), $source );$txt = preg_replace( "#<!--dle_vk_begin:(.+?)-->(.+?)<!--dle_vk_end-->#is", '[vk=\\\\1]', $txt );function build_vk($url) { $url = $matches[1]; $url = $this->clear_url( urldecode( $url ) ); $url = str_replace("&","&", $url ); $decode_url = str_replace("&","&", $url ); if( $url == "" ) return; $source = @parse_url ( $url ); $source['host'] = str_replace( "www.", "", strtolower($source['host']) ); if ($source['host'] != "vk.com" AND $source['host'] != "vkontakte.ru") return "[vk=".$decode_url."]"; return '<!--dle_vk_begin:'.$decode_url.'--><center> <iframe src=\\"'.$decode_url.'\\" width=\\"607\\" height=\\"360\\" frameborder=\\"0\\"></iframe> </center><!--dle_vk_end-->'; }Удалось заставить работать хак $source = preg_replace_callback( "#\\[vk=([^\\]]+)\\]#i", array( &$this, 'build_vk'), $source );заменил обратно на $source = preg_replace( "#\\[vk=([^\\]]+)\\]#ies", "\\$this->build_vk('\\\\1')", $source );И из функции удалил$url = $matches[1];
 
Верх