X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Добавление BB кодов
DeD
сообщение 2009-03-19, 23:58
Сообщение #1
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Решил добавить в систему вставку mp3, точнее портировать mp3-player с DLE, столкнулся с проблемой: не получается загрузить bb код (вида audio=сылка на файл,сылка на файл и т.д) во время редактирования например новости. Сохранение кода происходит так:
 '#\[audio\s*=\s*(\S.+?)\s*\]#ie'=>'$this->BuildAudio(\'\1\')',
Сама функция формируется так:
function BuildAudio($url)


   {
 	  if (!Strings::XssCheckUrl($url))
 		  return '';
 	  if( preg_match( "/[?&;%<\[\]]/", $url ) ) {
 		  return "[audio=" . $url . "]";
 	  }
 	  $list = explode( ",", $url );
 	  $url = array ();
 	  foreach ( $list as $value ) {
 		  $url[] = "{url:&#39;" . trim( $value ) . "&#39;}";
 	  }
 	  $url = implode( ", ", $url );
 	  $list = implode( ",", $list );
 	  return "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\"425\" height=\"45\">
 			  <param name=\"movie\" value=\"addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{$url}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}\" />
 			  <param name=\"allowFullScreen\" value=\"true\" />
 			  <param name=\"quality\" value=\"high\" />
 			  <param name=\"bgcolor\" value=\"#000000\" />
 			  <param name=\"wmode\" value=\"transparent\" />
 			  <embed src=\"addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{$url}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}\" quality=\"high\" bgcolor=\"#000000\" wmode=\"transparent\" allowFullScreen=\"true\" width=\"425\" height=\"45\" align=\"middle\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />
 			  </object>";
 	 }
Проблема в загрузке, собственно вопрос как правильно в данной ситуации вызвать все ссылки из переменной {$url}, в виде привиденном выше?
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-20, 0:12
Сообщение #2
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DeD @ 20.3.2009, 0:58)
как правильно в данной ситуации вызвать все ссылки из переменной {$url}, в виде привиденном выше?

Не понял, что имеется ввиду.
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-20, 7:52
Сообщение #3
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Объясню на примере: например я создал новость с со следующим кодом
Цитата
Какой то текст!!!!
[audio=http://eleanor/Akon_Lonely.mp3,http://eleanor/Akcent_Kylie.mp3]
Еще какой то текст!!!!
Песня

Она сохранилась в БД, и все работает, включая плеер. Теперь мне нужно отредактировать ее заходим нажимаем править, вот здесь и проялвяется проблемка, теперь мой код выглядит так:
Цитата
Какой то текст!!!!




Еще какой то текст!!!!
Песня

Т.е. тег audio не загрузился. Сслыки из {$url} нужно извлеч либо от сюда:
				<param name="movie" value="addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" />
или отсюда
<embed src="addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" quality="high" bgcolor="#000000" wmode="transparent" allowFullScreen="true" width="425" height="45" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
. Т.е. записать плейлист mp3 в изначальном виде:
[audio=http://eleanor/Akon_Lonely.mp3,http://eleanor/Akcent_Kylie.mp3]


Сообщение отредактировал DeD - 2009-03-20, 7:53
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-21, 13:31
Сообщение #4
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Это из-за того, что не прописано правила обратного преобразования. Напоминаю, что в базе хранится хранится в виде уже отформатированных HTML тегов, а не BB кодов. Поэтому нужно прописать правило, как преобразовывать ХТМЛ обратно в BB. Для примера можно посмотреть в эту тему: http://forum.eleanor-cms.ru/index.php?showtopic=340
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-21, 21:27
Сообщение #5
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Мне необходимо получить вот такую строку в массиве сохранения bb кода:
&#39;#\[audio\s*=\s*(\S.+?)\s*\]#ie&#39;=>&#39;$this->BuildAudio(&#39;\\1&#39;)&#39;,
вот здесь возникает ошибка:
\\1

а в массиве загрузки bb кода такая же запись проходит нормально, например вот так:
&#39;# ..... #is&#39;	=>	&#39;[audio=\\1]&#39;,

Как тут быть? или может есть способ записать подругому?

Сообщение отредактировал DeD - 2009-03-21, 21:29
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-21, 22:31
Сообщение #6
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (DeD @ 21.3.2009, 21:27)
вот здесь возникает ошибка:

Убери один \, чтобы получилось \1.
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-21, 23:47
Сообщение #7
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Даже после удаления все равно жалуется на слэш.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-22, 1:40
Сообщение #8
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


А. Все, понял.
&#39;$this->BuildAudio(&#39;\\1&#39;)&#39;,

Замени на:
&#39;$this->BuildAudio(\&#39;\1\&#39;)&#39;,


Сообщение отредактировал Alexander - 2009-03-22, 1:40
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-23, 18:21
Сообщение #9
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Такую подстановку уже делал в данном случае обработка идет не верно. Функция сейчас выглядит так:
function BuildAudio($url)
 {
  if($url == "") return;
  if(preg_match("/[?&;%<\[\]]/", $url)) {
  return "[audio=".$url."]";
  }
  $list = explode(",", $url);
  $url = array ();
  foreach ($list as $value) {
  $url[] = "{url:&#39;".trim($value)."&#39;}";
  }
  $url = implode(", ", $url);
  $list = implode(",", $list);
  return "<!--el_audio_begin:{$list}--><center><object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" \"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\"425\" height=\"45\">
  <param name=\"movie\" value=\"/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{$url}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}\" />
  <param name=\"allowFullScreen\" value=\"true\" />
  <param name=\"quality\" value=\"high\" />
  <param name=\"bgcolor\" value=\"#000000\" />
  <param name=\"wmode\" value=\"transparent\" />
  <embed src=\"/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{$url}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}\" quality=\"high\" bgcolor=\"#000000\" wmode=\"transparent\" allowFullScreen=\"true\" width=\"425\" height=\"45\" align=\"middle\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" />
  </object></center><!--el_audio_end-->";
  }

Код загрузки bb:
&#39;#<!--el_audio_begin:(.+?)-->(.+?)<!--el_audio_end-->#is&#39; => &#39;[audio=\\1]&#39;,

Код сохранения bb:
&#39;#\[audio\s*=\s*(\S.+?)\s*\]#ie&#39;=>&#39;$this->BuildAudio(\&#39;\1\&#39;)&#39;,

Если '$this->BuildAudio(\'\1\')', то выдится новость так:
Цитата
Какой то текст!!!!
http://eleanor/Akon_Lonely.mp3,http://elea...ylie.mp3-->
Непосредственно ПЛЕЕР
Еще какой то текст!!!!

но вот этой строки не должно быть:

Она должна записываться в базу в виде (служит для вызова при редактировании):
<!--el_audio_begin:http://eleanor/Akon_Lonely.mp3,http://eleanor/Akcent_Kylie.mp3-->

Может в самой функции BuildAudio ошибка где-то? Проверил вроде все в норме.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-23, 19:23
Сообщение #10
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Какой HTML формирует код?
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-23, 21:06
Сообщение #11
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Если я правильно понял вопрос, то вот такой:
Какой то текст!!!!<br />
[url]http://eleanor/Akon_Lonely.mp3[/url],http://elea...nt_Kylie.mp3--><center><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="425" height="45">
				<param name="movie" value="/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" />
				<param name="allowFullScreen" value="true" />
				<param name="quality" value="high" />
				<param name="bgcolor" value="#000000" />
				<param name="wmode" value="transparent" />
				<embed src="/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" quality="high" bgcolor="#000000" wmode="transparent" allowFullScreen="true" width="425" height="45" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
				</object></center><!--el_audio_end--><br />
Еще какой то текст!!!!

А должен:
Какой то текст!!!!<br />
<!--el_audio_begin:http://eleanor/Akon_Lonely.mp3,http://eleanor/Akcent_Kylie.mp3--><center><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="425" height="45">
				<param name="movie" value="/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" />
				<param name="allowFullScreen" value="true" />
				<param name="quality" value="high" />
				<param name="bgcolor" value="#000000" />
				<param name="wmode" value="transparent" />
				<embed src="/addons/flashplayer/flv_player.swf?config={embedded:true,playList:[{url:&#39;http://eleanor/Akon_Lonely.mp3&#39;}, {url:&#39;http://eleanor/Akcent_Kylie.mp3&#39;}],initialScale:&#39;fit&#39;,showMenu:false,backgroundColor:&#39;-1&#39;,controlsOverVideo:&#39;locked&#39;,controlBarGloss:&#39;low&#39;,controlBarBackgroundColor:0,showFullScreenButton:false,usePlayOverlay:false,showOnLoadBegin:false,loop:false,autoRewind:true,autoBuffering:false,autoPlay:false}" quality="high" bgcolor="#000000" wmode="transparent" allowFullScreen="true" width="425" height="45" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
				</object></center><!--el_audio_end--><br />
Еще какой то текст!!!!


Сообщение отредактировал DeD - 2009-03-23, 21:07
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-24, 0:04
Сообщение #12
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


Я тут покумекал над хаком, теперь работает))) единственный глюк, то что работать можно только без плейлистов(( ну я думаю ето не сильно большое упущение. Также добавил вставку видео в формате flv.
Alexander, куда залить сие творение или может здесь на форуме прикрепить? Если здесь, то 100kb не хватит хотя бы 150 нужно.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-24, 0:13
Сообщение #13
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


DeD, все дошло.. Тут загвоздка в следующем: все еще работает механизм преобразования текстовых ссылок в нормальные. Чтобы избавится от этого "глюка". Достаточно, спереди ссылки поставить любую букву. Т.е.
Вместо:
return "<!--el_audio_begin:{$list}-->...

Написать:
return "<!--el_audio_begin:q{$list}-->...


Соответственно, вместо:
&#39;#<!--el_audio_begin:(.+?)-->(.+?)<!--el_audio_end-->#is&#39; => &#39;[audio=\\1]&#39;,

Написать:
&#39;#<!--el_audio_begin:q(.+?)-->(.+?)<!--el_audio_end-->#is&#39; => &#39;[audio=\\1]&#39;,


Примерно так.

Цитата (DeD @ 24.3.2009, 0:04)
Alexander, куда залить сие творение или может здесь на форуме прикрепить? Если здесь, то 100kb не хватит хотя бы 150 нужно.

ммм. А ужать архиватором не судьба? Почему бы Вам просто не зарегистрировать сайт и не попасть в группу Eleanor User?
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-24, 0:19
Сообщение #14
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


1. ето в архиве
2. для теста зарегаю какой-нить, а то и в прям не порядок)))
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2009-03-24, 0:28
Сообщение #15
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 261
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Так подошел мой вариант?
Перейти в начало страницы
+Цитировать сообщение
DeD
сообщение 2009-03-24, 1:03
Сообщение #16
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 153
Регистрация: 2009-03-01
Из: Россия, Краснодар

Репутация:   нет  
Всего: нет


К сожалению нет, тоже самое. Ну я думаю потеря использования плеилистов не такая уж и большая, без работает как часы. Все таки мало кто ими пользуется
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0386 сек.    11 запросов    GZIP включен    Сейчас: 2024-03-28, 13:04