Расширение видео-псто и аудио-псто
Позволяет вставлять видосики еще и с:
* vimeo.com
* smotri.com
* videoradar.ru
И аудио с любого линка по ссылке вида:
Для аудио нужно со страничкиwpaudioplayer.com качнуть стандалон версию, поставить и в код страничек на которых будет показываться плеер поставить код (заменив пути на свои)
Сам код:
* vimeo.com
* smotri.com
* videoradar.ru
И аудио с любого линка по ссылке вида:
<audio>http://mahsaet.ru/123.mp3</audio>
Для аудио нужно со странички
<script type="text/javascript" src="/js/audio-player.js"></script>
<script type="text/javascript">
AudioPlayer.setup("http://mahsiet.ru/swf/player.swf",{width: 290});
</script>
Сам код:
<?php
include $_SERVER['DOCUMENT_ROOT'] . '../lib/jevix/jevix.class.php';
class TextparserModel extends AbstractModel
{
protected $oJevix;
protected $audio_count = 0;
/**
* Инициализация модуля
*
*/
public function __construct($mode)
{
$this->oJevix = new Jevix();
switch ($mode)
{
case 'text':
$this->ConfigText();
break;
case 'comments':
$this->ConfigComments();
break;
default:
$this->ConfigComments();
break;
}
}
/**
* Конфигурирует типограф для основного текста
*
*/
protected function ConfigText()
{
// Разрешённые теги
$this->oJevix->cfgAllowTags(array('cut' , 'a' , 'img' , 'i' , 'b' , 'u' , 's' , 'video' , 'li' , 'ol' , 'ul' , 'h1' , 'h2' , 'h3' , 'br' , 'hr', 'audio'));
// Коротие теги типа
$this->oJevix->cfgSetTagShort(array('br' , 'img' , 'hr' , 'cut'));
// Разрешённые параметры тегов
$this->oJevix->cfgAllowTagParams('img', array('src' , 'alt' , 'title' , 'align'));
$this->oJevix->cfgAllowTagParams('a', array('title' , 'href'));
$this->oJevix->cfgAllowTagParams('cut', array('name'));
// Параметры тегов являющиеся обязательными
$this->oJevix->cfgSetTagParamsRequired('img', 'src');
$this->oJevix->cfgSetTagParamsRequired('a', 'href');
// Теги которые необходимо вырезать из текста вместе с контентом
$this->oJevix->cfgSetTagCutWithContent(array('script' , 'object' , 'iframe' , 'style'));
// Вложенные теги
$this->oJevix->cfgSetTagChilds('ul', array('li'), false, true);
$this->oJevix->cfgSetTagChilds('ol', array('li'), false, true);
// Отключение авто-добавления
//$this->oJevix->cfgSetAutoBrMode(false);
// Автозамена
$this->oJevix->cfgSetAutoLinkMode(false);
$this->oJevix->cfgSetAutoReplace(array('±' , '©' , '®' , '©' , '®'), array('±' , '©' , '®' , '©' , '®'));
$this->oJevix->cfgSetXHTMLMode(true);
}
protected function ConfigComments()
{
// Разрешённые теги
$this->oJevix->cfgAllowTags(array('img' , 'i' , 'b' , 'u' , 's' , 'br'));
// Коротие теги типа
$this->oJevix->cfgSetTagShort(array('br' , 'img' , 'hr'));
// Разрешённые параметры тегов
$this->oJevix->cfgAllowTagParams('img', array('src' , 'alt' , 'title' , 'align'));
$this->oJevix->cfgSetTagParamsRequired('img', 'src');
$this->oJevix->cfgSetTagCutWithContent(array('script' , 'object' , 'iframe' , 'style' , 'a'));
// Отключение авто-добавления
// Автозамена
$this->oJevix->cfgSetAutoReplace(array('±' , '©' , '®' , '©' , '®'), array('±' , '©' , '®' , '©' , '®'));
$this->oJevix->cfgSetXHTMLMode(true);
}
/**
* Парсинг текста с помощью Jevix
*
* @param string $sText
* @param array $aError
* @return string
*/
public function JevixParser($sText, &$aError = null)
{
$sResult = $this->oJevix->parse($sText, $aError);
return $sResult;
}
/**
* Парсинг текста на предмет видео
*
* @param string $sText
* @return string
*/
public function VideoParser($sText)
{
/**
* youtube.com
*/
$sResult = preg_replace('/<video>http:\/\/youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$1&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"></embed></embed></param></param></embed></object>', $sText);
$sResult = preg_replace('/<video>http:\/\/www\.youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/$1&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"></embed></embed></param></param></embed></object>', $sResult);
/**
* rutube.ru
*/
$sResult = preg_replace('/<video>http:\/\/rutube\.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/$1"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$1" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></embed></embed></param></param></EMBED></OBJECT>', $sResult);
$sResult = preg_replace('/<video>http:\/\/www\.rutube\.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/$1"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$1" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></embed></embed></param></param></EMBED></OBJECT>', $sResult);
/**
* vimeo.com
*/
$sResult = preg_replace('/<video>http:\/\/vimeo\.com\/([a-zA-Z0-9_\-]+)<\/video>/', '<object width="400" height="302"><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=$1&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"></param><embed src="http://vimeo.com/moogaloop.swf?clip_id=$1&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></embed></embed></object><br /><a href="http://vimeo.com/2664111">5 new year vignettes</a> from <a href="http://vimeo.com/phatpapa">phat_papa</a> on <a href="http://vimeo.com">Vimeo</a>.', $sResult);
$sResult = preg_replace('/<video>http:\/\/www\.vimeo\.com\/([a-zA-Z0-9_\-]+)<\/video>/', '<object width="400" height="302"><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=$1&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1"></param><embed src="http://vimeo.com/moogaloop.swf?clip_id=$1&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></embed></embed></object><br /><a href="http://vimeo.com/2664111">5 new year vignettes</a> from <a href="http://vimeo.com/phatpapa">phat_papa</a> on <a href="http://vimeo.com">Vimeo</a>.', $sResult);
/**
* smotri.com
*/
$sResult = preg_replace('/<video>http:\/\/smotri.com\/video\/view\/\?id\=([a-zA-Z0-9_\-]+)<\/video>/', ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="330"><param name="movie" value="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml"></param><param name="allowScriptAccess" value="always"></param><param name="allowFullScreen" value="true"></param><param name="bgcolor" value="#ffffff"></param><embed src="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="window" width="400" height="330" type="application/x-shockwave-flash"></embed></embed></embed></object>', $sResult);
$sResult = preg_replace('/<video>http:\/\/www\.smotri.com\/video\/view\/\?id\=([a-zA-Z0-9_\-]+)<\/video>/', ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="330"><param name="movie" value="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml"></param><param name="allowScriptAccess" value="always"></param><param name="allowFullScreen" value="true"></param><param name="bgcolor" value="#ffffff"></param><embed src="http://pics.smotri.com/scrubber_custom8.swf?file=$1&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.smotri.com%2Fcskins%2Fblue%2Fskin_color_lightaqua.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2Fskin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="window" width="400" height="330" type="application/x-shockwave-flash"></embed></embed></embed></object>', $sResult);
/**
* videoradar.ru
*/
$sResult = preg_replace('/<video>http:\/\/videoradar\.ru\/video\/([a-zA-Z0-9_\-]+)\.html<\/video>/', '<object width=468 height=396 id=flvplayer align=middle><param name=allowScriptAccess value=always /><param name=allowFullScreen value=true /><param name=quality value=high /><param name=wmode value=window /><param name=bgcolor value=#ffffff /><param name=movie value="http://videoradar.ru/player/vplayer.swf?v=$1&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" /><embed src="http://videoradar.ru/player/vplayer.swf?v=$1&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" quality=high wmode=window bgcolor=#ffffff width=468 height=396 name=flvplayer align=middle allowScriptAccess=always allowFullScreen=true type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer></embed></object>', $sResult);
$sResult = preg_replace('/<video>http:\/\/www\.videoradar\.ru\/video\/([a-zA-Z0-9_\-]+)\.html<\/video>/', '<object width=468 height=396 id=flvplayer align=middle><param name=allowScriptAccess value=always /><param name=allowFullScreen value=true /><param name=quality value=high /><param name=wmode value=window /><param name=bgcolor value=#ffffff /><param name=movie value="http://videoradar.ru/player/vplayer.swf?v=$1&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" /><embed src="http://videoradar.ru/player/vplayer.swf?v=$1&host=videoradar.ru&logo=http://videoradar.ru/player/logo.png&linkfromdisplay=true&streamscript=lighttpd" quality=high wmode=window bgcolor=#ffffff width=468 height=396 name=flvplayer align=middle allowScriptAccess=always allowFullScreen=true type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer></embed></object>', $sResult);
return $sResult;
}
public function AudioParser($sText)
{
preg_match('/<audio>http:\/\/([a-zA-Z0-9\\_\\-\\.\\/\\:]+)<\/audio>/Ui',$sText, $matches);
if(sizeof($matches)>0)
{
$this->audio_count = $this->audio_count+1;
}
$sResult = preg_replace('/<audio>http:\/\/([a-zA-Z0-9\\_\\-\\.\\/\\:]+)<\/audio>/Ui', '<p id="audioplayer_'.$this->audio_count.'">Тут должен быть аудиоплеер, но что-то пошло не так!</p><script type="text/javascript">AudioPlayer.embed("audioplayer_'.$this->audio_count.'", {soundFile: "http://$1", titles:""});</script>', $sText);
return $sResult;
}
/**
* Парсит текст
*
* @param string $sText
*/
public function Parse($sText)
{
$sResult = $this->JevixParser($sText);
$sResult = $this->VideoParser($sResult);
$sResult = $this->AudioParser($sResult);
return $sResult;
}
}
?>
9 комментариев
Парсер vimeo уже
заменить этим text.class.php?
Я реализовал на embed, но autostart=«false» не работает, это плохо, я так понимаю от плагина зависит, вот если кому интересно:
добавляем строчку в templates/skin/new/actions/ActionTopic/add.tpl, после
Надо будет сделать и положить картинку images/panel/sound.gif
Далее добавить в templates/skin/new/js/panel.js после putTagUrl: function(obj,sPromt) {
obj=$(obj);
if (url=prompt(sPromt,'http://')) {
var sel=obj.getSelectedText();
this.putText(obj,''+sel+'');
}
}