Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 1153 Просмотров
*

tarkasha

  • Захожу иногда
  • 95
  • 0 / 0
Здравствуйте, у меня сайт посвящен flash играм. Стоит Joomla 2.5 + zoo 2.5.8. добавил 150 игр, но из них штук 40 открываются, остальные виснут на загрузке, либо вообще виснит изображение (чтоб заставить воспроизводится нужно все время нажимать на плеере правой кнопкой -> воспроизвести)... Если через браузер открыть игру, то все норм. Что делать? !

Файл media.php
Код
<?php
/**
* @package   com_zoo
* @author    YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/

// no direct access
defined('_JEXEC') or die('Restricted access');

// register ElementFile class
App::getInstance('zoo')->loader->register('ElementFile', 'elements:file/file.php');

/*
Class: ElementMedia
The video element class
*/
class ElementMedia extends ElementFile implements iSubmittable {

protected $_extensions = 'swf';
protected $_youtube_regex = '/(\/\/.*?youtube\.[a-z]+)\/watch\?v=([^&]+)&?(.*)/';
protected $_youtubeshort_regex = '/(\/\/.*?youtu\.be)\/([^\?]+)(.*)/i';
protected $_vimeo_regex = '/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/';

/*
  Function: Constructor
*/
public function __construct() {

// call parent constructor
parent::__construct();

// set callbacks
$this->registerCallback('files');
}

/*
Function: hasValue
Checks if the element's value is set.

  Parameters:
            $params - render parameter

Returns:
Boolean - true, on success
*/
public function hasValue($params = array()) {
$url  = $this->get('url');
return parent::hasValue($params) || !empty($url);
}

/*
Function: getVideoFormat
Trys to return the video format for source.

  Parameters:
            $source - the video source

Returns:
String - the video format, if found
*/
public function getVideoFormat($source) {

if (preg_match($this->_youtube_regex, $source)) {
return 'youtube';
} else if (preg_match($this->_youtubeshort_regex, $source)) {
return 'youtu.be';
} else if (preg_match($this->_vimeo_regex, $source)) {
return 'vimeo';
} else if (($ext = $this->app->filesystem->getExtension($source)) && in_array($ext, explode('|', $this->_extensions))) {
return strtolower($ext);
}

return null;
}

/*
Function: render
Renders the element.

  Parameters:
            $params - render parameter

Returns:
String - HTML
*/
public function render($params = array()) {

// init vars
$width    = $this->get('width', $this->config->get('defaultwidth'));
$height   = $this->get('height', $this->config->get('defaultheight'));
$autoplay = $this->get('autoplay', $this->config->get('defaultautoplay', false));
$source   = $this->get('file')? $this->app->path->url('root:'.$this->get('file')) : $this->get('url');

if ($format = $this->getVideoFormat($source)) {

$width = $width ? ' width="'.$width.'"' : '';
$height = $height && $format != 'mp3' ?  ' height="'.$height.'"' : '';

switch ($format) {
case 'vimeo':

$source = preg_replace($this->_vimeo_regex, '$1player.vimeo.com/video/$2', $source);
break;

case 'youtube':

$source = rtrim(preg_replace($this->_youtube_regex, '$1/embed/$2?$3', $source), '?');
break;

case 'youtu.be':

$source = rtrim(preg_replace($this->_youtubeshort_regex, '//www.youtube.com/embed/$2$3', $source), '?');
break;

case 'swf':

$this->app->document->addScript('elements:media/assets/js/swfobject.js');
$width    = $this->get('width', $this->config->get('defaultwidth'));
$height   = $this->get('height', $this->config->get('defaultheight'));
$width    = $width ? $width : 570;
$height   = $height ? $height : 410;
$autoplay = $autoplay ? 'true' : 'false';
$id  = 'swf-'.uniqid();

return "<div id=\"$id\">
<p><a href=\"http://www.adobe.com/go/getflashplayer\"><img src=\"http://www.adobe.com/images/shared/download_buttons/get_adobe_flash_player.png\" alt=\"Get Adobe Flash player\" /></a></p>
</div>
<script type=\"text/javascript\">
swfobject.embedSWF(\"$source\", \"$id\", \"$width\", \"$height\", \"7.0.0\", \"\", {}, {allowFullScreen:\"true\", wmode: \"transparent\", play:\"$autoplay\" });
</script>";

default:

$pluginPath = $this->app->path->url('elements:media/assets/mediaelement/')."/";
$options = compact('pluginPath');

// add stylesheets/javascripts
$this->app->document->addScript('elements:media/assets/mediaelement/mediaelement-and-player.min.js');
$this->app->document->addStylesheet('elements:media/assets/mediaelement/mediaelementplayer.min.css');
$this->app->document->addScriptDeclaration(sprintf("jQuery(function($){ mejs.MediaElementDefaults.pluginPath='".$pluginPath."'; $('.element-media video,audio').mediaelementplayer(%s); });", count($options)? json_encode($options) : '{}'));

$autoplay = $autoplay ? ' autoplay="autoplay"' : '';
$tag  = $format == 'mp3' ? 'audio' : 'video';
$type  = $format == 'mp3' ? ' type="audio/mp3"' : '';

return '<'.$tag.' src="'.$source.'"'.$width.$height.$autoplay.$type.'></'.$tag.'>';

}

$autoplay = $autoplay && !preg_match('/autoplay=/', $source)? (strpos($source, '?') === false ? '?' : '&').'autoplay=1' : '';
return '<iframe src="'.$source.$autoplay.'"'.$width.$height.'></iframe>';

}

return JText::_('No video selected.');

}

/*
Function: loadAssets
Load elements css/js assets.

Returns:
Void
*/
public function loadAssets() {
parent::loadAssets();
$this->app->document->addScript('elements:media/assets/js/media.js');
}

/*
  Function: edit
      Renders the edit form field.

  Returns:
      String - HTML
*/
public function edit() {
return $this->renderLayout($this->getLayout('edit.php'));
}

/*
Function: renderSubmission
Renders the element in submission.

  Parameters:
            $params - AppData submission parameters

Returns:
String - HTML
*/
public function renderSubmission($params = array()) {
return $this->renderLayout($this->getLayout('submission.php'), (array) $params);
}

/*
Function: validateSubmission
Validates the submitted element

  Parameters:
            $value  - AppData value
            $params - AppData submission parameters

Returns:
Array - cleaned value
*/
public function validateSubmission($value, $params) {

$url = (string) $this->app->validator->create('url', array('required' => $params->get('required')), array('required' => 'Please enter an URL.'))->clean($value->get('url'));

if ($url && (!$format = $this->getVideoFormat($url))) {
throw new AppValidatorException('Not a valid video format.');
        }

        $width     = (string) $this->app->validator->create('integer', array('required' => false), array('number' => 'The Width needs to be a number.'))->clean($value->get('width'));
        $height    = (string) $this->app->validator->create('integer', array('required' => false), array('number' => 'The Height needs to be a number.'))->clean($value->get('height'));
        $autoplay  = (bool) $value->get('autoplay');

return compact('url', 'format', 'width', 'height', 'autoplay');
}

}

Файл swfobject.js

Код
/*
SWFObject v2.2 <http://code.google.com/p/swfobject/>
 is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName("body")[0].appendChild(d.createElement("span"));a.parentNode.removeChild(a)}catch(b){return}s=!0;for(var a=x.length,c=0;c<a;c++)x[c]()}}function L(a){s?a():x[x.length]=a}function M(a){if(typeof m.addEventListener!=i)m.addEventListener("load",a,!1);else if(typeof d.addEventListener!=i)d.addEventListener("load",a,!1);else if(typeof m.attachEvent!=i)U(m,"onload",a);else if(typeof m.onload=="function"){var b=m.onload;m.onload=
function(){b();a()}}else m.onload=a}function V(){var a=d.getElementsByTagName("body")[0],b=d.createElement(r);b.setAttribute("type",y);var c=a.appendChild(b);if(c){var f=0;(function(){if(typeof c.GetVariable!=i){var g=c.GetVariable("$version");if(g)g=g.split(" ")[1].split(","),e.pv=[parseInt(g[0],10),parseInt(g[1],10),parseInt(g[2],10)]}else if(f<10){f++;setTimeout(arguments.callee,10);return}a.removeChild(b);c=null;D()})()}else D()}function D(){var a=o.length;if(a>0)for(var b=0;b<a;b++){var c=o[b].id,
f=o[b].callbackFn,g={success:!1,id:c};if(e.pv[0]>0){var d=n(c);if(d)if(z(o[b].swfVersion)&&!(e.wk&&e.wk<312)){if(t(c,!0),f)g.success=!0,g.ref=E(c),f(g)}else if(o[b].expressInstall&&F()){g={};g.data=o[b].expressInstall;g.width=d.getAttribute("width")||"0";g.height=d.getAttribute("height")||"0";if(d.getAttribute("class"))g.styleclass=d.getAttribute("class");if(d.getAttribute("align"))g.align=d.getAttribute("align");for(var h={},d=d.getElementsByTagName("param"),j=d.length,k=0;k<j;k++)d[k].getAttribute("name").toLowerCase()!=
"movie"&&(h[d[k].getAttribute("name")]=d[k].getAttribute("value"));G(g,h,c,f)}else W(d),f&&f(g)}else if(t(c,!0),f){if((c=E(c))&&typeof c.SetVariable!=i)g.success=!0,g.ref=c;f(g)}}}function E(a){var b=null;if((a=n(a))&&a.nodeName=="OBJECT")typeof a.SetVariable!=i?b=a:(a=a.getElementsByTagName(r)[0])&&(b=a);return b}function F(){return!A&&z("6.0.65")&&(e.win||e.mac)&&!(e.wk&&e.wk<312)}function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){g.nodeName=="OBJECT"?(w=I(g),B=null):(w=g,B=
c);a.id=O;if(typeof a.width==i||!/%$/.test(a.width)&&parseInt(a.width,10)<310)a.width="310";if(typeof a.height==i||!/%$/.test(a.height)&&parseInt(a.height,10)<137)a.height="137";d.title=d.title.slice(0,47)+" - Flash Player Installation";f=e.ie&&e.win?"ActiveX":"PlugIn";f="MMredirectURL="+m.location.toString().replace(/&/g,"%26")+"&MMplayerType="+f+"&MMdoctitle="+d.title;typeof b.flashvars!=i?b.flashvars+="&"+f:b.flashvars=f;if(e.ie&&e.win&&g.readyState!=4)f=d.createElement("div"),c+="SWFObjectNew",
f.setAttribute("id",c),g.parentNode.insertBefore(f,g),g.style.display="none",function(){g.readyState==4?g.parentNode.removeChild(g):setTimeout(arguments.callee,10)}();J(a,b,c)}}function W(a){if(e.ie&&e.win&&a.readyState!=4){var b=d.createElement("div");a.parentNode.insertBefore(b,a);b.parentNode.replaceChild(I(a),b);a.style.display="none";(function(){a.readyState==4?a.parentNode.removeChild(a):setTimeout(arguments.callee,10)})()}else a.parentNode.replaceChild(I(a),a)}function I(a){var b=d.createElement("div");
if(e.win&&e.ie)b.innerHTML=a.innerHTML;else if(a=a.getElementsByTagName(r)[0])if(a=a.childNodes)for(var c=a.length,f=0;f<c;f++)!(a[f].nodeType==1&&a[f].nodeName=="PARAM")&&a[f].nodeType!=8&&b.appendChild(a[f].cloneNode(!0));return b}function J(a,b,c){var f,g=n(c);if(e.wk&&e.wk<312)return f;if(g){if(typeof a.id==i)a.id=c;if(e.ie&&e.win){var q="",h;for(h in a)if(a[h]!=Object.prototype[h])h.toLowerCase()=="data"?b.movie=a[h]:h.toLowerCase()=="styleclass"?q+=' class="'+a[h]+'"':h.toLowerCase()!="classid"&&
(q+=" "+h+'="'+a[h]+'"');h="";for(var j in b)b[j]!=Object.prototype[j]&&(h+='<param name="'+j+'" value="'+b[j]+'" />');g.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+q+">"+h+"</object>";C[C.length]=a.id;f=n(a.id)}else{j=d.createElement(r);j.setAttribute("type",y);for(var k in a)a[k]!=Object.prototype[k]&&(k.toLowerCase()=="styleclass"?j.setAttribute("class",a[k]):k.toLowerCase()!="classid"&&j.setAttribute(k,a[k]));for(q in b)b[q]!=Object.prototype[q]&&q.toLowerCase()!=
"movie"&&(a=j,h=q,k=b[q],c=d.createElement("param"),c.setAttribute("name",h),c.setAttribute("value",k),a.appendChild(c));g.parentNode.replaceChild(j,g);f=j}}return f}function P(a){var b=n(a);if(b&&b.nodeName=="OBJECT")e.ie&&e.win?(b.style.display="none",function(){if(b.readyState==4){var c=n(a);if(c){for(var f in c)typeof c[f]=="function"&&(c[f]=null);c.parentNode.removeChild(c)}}else setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b)}function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b}
function U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}function z(a){var b=e.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName("head")[0];if(g){c=c&&typeof c=="string"?c:"screen";f&&(K=l=null);if(!l||K!=c)f=d.createElement("style"),f.setAttribute("type","text/css"),f.setAttribute("media",c),l=g.appendChild(f),
e.ie&&e.win&&typeof d.styleSheets!=i&&d.styleSheets.length>0&&(l=d.styleSheets[d.styleSheets.length-1]),K=c;e.ie&&e.win?l&&typeof l.addRule==r&&l.addRule(a,b):l&&typeof d.createTextNode!=i&&l.appendChild(d.createTextNode(a+" {"+b+"}"))}}}function t(a,b){if(R){var c=b?"visible":"hidden";s&&n(a)?n(a).style.visibility=c:Q("#"+a,"visibility:"+c)}}function S(a){return/[\\\"<>\.;]/.exec(a)!=null&&typeof encodeURIComponent!=i?encodeURIComponent(a):a}var i="undefined",r="object",y="application/x-shockwave-flash",
O="SWFObjectExprInst",m=window,d=document,p=navigator,T=!1,x=[function(){T?V():D()}],o=[],C=[],v=[],w,B,H,N,s=!1,A=!1,l,K,R=!0,e=function(){var a=typeof d.getElementById!=i&&typeof d.getElementsByTagName!=i&&typeof d.createElement!=i,b=p.userAgent.toLowerCase(),c=p.platform.toLowerCase(),f=c?/win/.test(c):/win/.test(b),c=c?/mac/.test(c):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,g=!+"\u000b1",e=[0,0,0],h=null;if(typeof p.plugins!=i&&typeof p.plugins["Shockwave Flash"]==
r){if((h=p.plugins["Shockwave Flash"].description)&&!(typeof p.mimeTypes!=i&&p.mimeTypes[y]&&!p.mimeTypes[y].enabledPlugin))T=!0,g=!1,h=h.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(h.replace(/^(.*)\..*$/,"$1"),10),e[1]=parseInt(h.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(h)?parseInt(h.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof m.ActiveXObject!=i)try{var j=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(j&&(h=j.GetVariable("$version")))g=!0,h=h.split(" ")[1].split(","),
e=[parseInt(h[0],10),parseInt(h[1],10),parseInt(h[2],10)]}catch(k){}return{w3:a,pv:e,wk:b,ie:g,win:f,mac:c}}();(function(){e.w3&&((typeof d.readyState!=i&&d.readyState=="complete"||typeof d.readyState==i&&(d.getElementsByTagName("body")[0]||d.body))&&u(),s||(typeof d.addEventListener!=i&&d.addEventListener("DOMContentLoaded",u,!1),e.ie&&e.win&&(d.attachEvent("onreadystatechange",function(){d.readyState=="complete"&&(d.detachEvent("onreadystatechange",arguments.callee),u())}),m==top&&function(){if(!s){try{d.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,
0);return}u()}}()),e.wk&&function(){s||(/loaded|complete/.test(d.readyState)?u():setTimeout(arguments.callee,0))}(),M(u)))})();(function(){e.ie&&e.win&&window.attachEvent("onunload",function(){for(var a=v.length,b=0;b<a;b++)v[b][0].detachEvent(v[b][1],v[b][2]);a=C.length;for(b=0;b<a;b++)P(C[b]);for(var c in e)e[c]=null;e=null;for(var f in swfobject)swfobject[f]=null;swfobject=null})})();return{registerObject:function(a,b,c,f){if(e.w3&&a&&b){var d={};d.id=a;d.swfVersion=b;d.expressInstall=c;d.callbackFn=
f;o[o.length]=d;t(a,!1)}else f&&f({success:!1,id:a})},getObjectById:function(a){if(e.w3)return E(a)},embedSWF:function(a,b,c,d,g,q,h,j,k,m){var n={success:!1,id:b};e.w3&&!(e.wk&&e.wk<312)&&a&&b&&c&&d&&g?(t(b,!1),L(function(){c+="";d+="";var e={};if(k&&typeof k===r)for(var l in k)e[l]=k[l];e.data=a;e.width=c;e.height=d;l={};if(j&&typeof j===r)for(var o in j)l[o]=j[o];if(h&&typeof h===r)for(var p in h)typeof l.flashvars!=i?l.flashvars+="&"+p+"="+h[p]:l.flashvars=p+"="+h[p];if(z(g))o=J(e,l,b),e.id==
b&&t(b,!0),n.success=!0,n.ref=o;else if(q&&F()){e.data=q;G(e,l,b,m);return}else t(b,!0);m&&m(n)})):m&&m(n)},switchOffAutoHideShow:function(){R=!1},ua:e,getFlashPlayerVersion:function(){return{major:e.pv[0],minor:e.pv[1],release:e.pv[2]}},hasFlashPlayerVersion:z,createSWF:function(a,b,c){if(e.w3)return J(a,b,c)},showExpressInstall:function(a,b,c,d){e.w3&&F()&&G(a,b,c,d)},removeSWF:function(a){e.w3&&P(a)},createCSS:function(a,b,c,d){e.w3&&Q(a,b,c,d)},addDomLoadEvent:L,addLoadEvent:M,getQueryParamValue:function(a){var b=
d.location.search||d.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(a==null)return S(b);for(var b=b.split("&"),c=0;c<b.length;c++)if(b[c].substring(0,b[c].indexOf("="))==a)return S(b[c].substring(b[c].indexOf("=")+1))}return""},expressInstallCallback:function(){if(A){var a=n(O);if(a&&w){a.parentNode.replaceChild(w,a);if(B&&(t(B,!0),e.ie&&e.win))w.style.display="block";H&&H(N)}A=!1}}}}();
« Последнее редактирование: 03.11.2013, 17:06:13 от tarkasha »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Превью в виде картинки с youtube для элемента MEDIA

Автор likrion

Ответов: 4
Просмотров: 3663
Последний ответ 13.10.2016, 07:02:34
от Театрал
Нужна помощь со своим элементом

Автор Ongi

Ответов: 3
Просмотров: 1298
Последний ответ 26.07.2013, 20:44:45
от MetaSpirit
[Элемент] Media ZOO 3.0 (заказчик)

Автор onix_free

Ответов: 0
Просмотров: 966
Последний ответ 22.12.2012, 16:52:18
от onix_free
Проблемы с кодировкой названия изображения в zoo.

Автор indorill

Ответов: 3
Просмотров: 1446
Последний ответ 20.11.2012, 01:13:16
от MetaSpirit
Проблемы с сохранением в ZOO 2.5

Автор newnata

Ответов: 3
Просмотров: 3683
Последний ответ 04.11.2012, 11:39:49
от dimochkasainr