Initial mobile setup!
|
@ -6,7 +6,5 @@ web/static/api/*
|
|||
*.DS_Store
|
||||
*.apdisk
|
||||
*.zip
|
||||
<<<<<<< local
|
||||
*.mp3
|
||||
=======
|
||||
>>>>>>> other
|
||||
db.sql
|
||||
|
|
|
@ -24,7 +24,7 @@ define("DF_INCLUDE_LIB_LOCAL", DF_INCLUDE_BASE.'/library_local');
|
|||
|
||||
define("DF_UPLOAD_FOLDER", DF_INCLUDE_STATIC);
|
||||
|
||||
define("DF_URL_STATIC", (DF_IS_SECURE ? 'https:' : 'http:').'//static.ponyvillelive.com');
|
||||
define("DF_URL_STATIC", (DF_IS_SECURE ? 'https:' : 'http:').'//ponyvillelive.com/static');
|
||||
|
||||
// Self-reference to current script.
|
||||
if (isset($_SERVER['REQUEST_URI']))
|
||||
|
|
|
@ -19,7 +19,7 @@ $affiliates = array(
|
|||
'name' => 'PonyMC',
|
||||
'description' => 'A Ponyville Live! Minecraft Partner',
|
||||
'url' => 'http://ponymc.com/',
|
||||
'image' => \DF\Url::content('affiliates/ponymc.png'),
|
||||
'image' => '//ponymc.com/img/logos/random_logo.php?width=150&height=150', // \DF\Url::content('affiliates/ponymc.png'),
|
||||
),
|
||||
|
||||
array(
|
||||
|
@ -116,7 +116,7 @@ $cols = array($col1, $affiliates);
|
|||
</div>
|
||||
<div class="media-body">
|
||||
<h4>
|
||||
<? if ($affiliate['custom']): ?>
|
||||
<? if (isset($affiliate['custom'])): ?>
|
||||
<?=$affiliate['custom'] ?><br>
|
||||
<? else: ?>
|
||||
<a href="<?=$affiliate['url'] ?>" target="_blank"><?=$affiliate['name'] ?></a><br>
|
||||
|
@ -147,18 +147,21 @@ $cols = array($col1, $affiliates);
|
|||
|
||||
<div class="headline"><h3>Contact Us</h3></div>
|
||||
<ul class="unstyled">
|
||||
<li>Public Relations:<br><?=$this->mailto('pr@ponyvillelive.com') ?></li>
|
||||
<li>Director:<br><?=$this->mailto('silvereagle@ponyvillelive.com') ?></li>
|
||||
<li>Associate Director:<br><?=$this->mailto('weareborg@ponyvillelive.com') ?></li>
|
||||
<li><a href="mailto:info@ponyvillelive.com"><i class="icon-envelope"></i> General Information</a></li>
|
||||
<li><a href="mailto:pr@ponyvillelive.com"><i class="icon-envelope"></i> Public Relations</a></li>
|
||||
<li><a href="mailto:silvereagle@ponyvillelive.com"><i class="icon-envelope"></i> Director, Silver Eagle</a></li>
|
||||
<li><a href="mailto:weareborg@ponyvillelive.com"><i class="icon-envelope"></i> Associate Director, WeAreBorg</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="headline"><h3>Stay Connected</h3></div>
|
||||
<div class="headline"><h3>Follow & Like Us</h3></div>
|
||||
|
||||
<ul class="unstyled">
|
||||
<li><a href="http://news.ponyvillelive.com/" target="_blank"><img src="<?=\DF\Url::content('social/tumblr_16.png') ?>" alt="Tumblr"> Tumblr</a></li>
|
||||
<li><a href="http://steamcommunity.com/groups/ponyvillelive" target="_blank"><img src="<?=\DF\Url::content('social/steam_16.png') ?>" alt="Steam"> Steam</a></li>
|
||||
<li><a href="http://news.ponyvillelive.com/" target="_blank"><img src="<?=\DF\Url::content('social/tumblr_16.png') ?>" alt="Tumblr"> Tumblr</a></li>
|
||||
<li><a href="https://plus.google.com/+PonyvilleLiveGlobal" rel="publisher" target="_blank"><img src="<?=\DF\Url::content('social/google_plus_16.png') ?>" alt="Google Plus"> Google+</a></li>
|
||||
<li><a href="https://www.youtube.com/ponyvilleliveglobal" target="_blank"><img src="<?=\DF\Url::content('social/youtube_16.png') ?>" alt="YouTube"> YouTube</a></li>
|
||||
<li><a href="https://www.facebook.com/pages/Ponyville-LIVE/517435684948331" target="_blank"><img src="<?=\DF\Url::content('social/facebook_16.png') ?>" alt="Facebook"> Facebook</a></li>
|
||||
<li><a href="https://twitter.com/PonyvilleLive" target="_blank"><img src="<?=\DF\Url::content('social/twitter_16.png') ?>" alt="Twitter"> Twitter</a></li>
|
||||
<li><a href="http://steamcommunity.com/groups/ponyvillelive" target="_blank"><img src="<?=\DF\Url::content('social/steam_16.png') ?>" alt="Steam"> Steam</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,58 +1,40 @@
|
|||
<div class="well">
|
||||
<!-- Player Interface -->
|
||||
<div id="jquery_jplayer" style="width: 0; height: 0;"></div>
|
||||
<div id="jp_container" class="jp-audio" style="display: none;">
|
||||
<div id="sidebar-shortcuts">
|
||||
<div id="sidebar-shortcuts-large">
|
||||
<div class="jp-type-single">
|
||||
<div id="jp_interface_1" class="jp-interface">
|
||||
<ul class="jp-controls">
|
||||
<li><a href="#" class="jp-play" tabindex="1">play</a></li>
|
||||
<li><a href="#" class="jp-pause" tabindex="1">pause</a></li>
|
||||
<li><a href="#" class="jp-mute" tabindex="1">mute</a></li>
|
||||
<li><a href="#" class="jp-unmute" tabindex="1">unmute</a></li>
|
||||
</ul>
|
||||
<div class="jp-progress-container">
|
||||
<div class="jp-progress">
|
||||
<div class="jp-seek-bar">
|
||||
<div class="jp-play-bar"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="jp-volume-bar-container">
|
||||
<div class="jp-volume-bar">
|
||||
<div class="jp-volume-bar-value"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="nowplaying">
|
||||
<b><span id="nowplaying-title">Now Playing...</span></b><br>
|
||||
<span id="nowplaying-artist">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
soundManager.url = '/static/fap/swf/';
|
||||
soundManager.flashVersion = 9;
|
||||
soundManager.useHTML5Audio = true;
|
||||
soundManager.debugMode = false;
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<div id="sidebar" class="well">
|
||||
<ul class="nav nav-list">
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma')) ?>" class="ajax"><i class="icon-home"></i> Home</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'index', 'action' => 'download')) ?>" class="ajax"><i class="icon-download"></i> Download the Archive</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'submit')) ?>"><i class="icon-plus-sign"></i> Submit a Song </a></li>
|
||||
|
||||
<li class="nav-header">Search the Archive</li>
|
||||
<li>
|
||||
|
||||
<form id="form-search" action="<?=$this->route(array('module' => 'mlpma', 'controller' => 'search', 'origin' => 'header')) ?>" method="get" class="form-inline no-disable">
|
||||
<input type="text" name="q" title="Search terms" placeholder="Song, Artist, Album..." class="half-width" value="<?=$this->q ?>">
|
||||
<?=$this->button(array(
|
||||
'type' => 'submit',
|
||||
'class' => 'primary btn-small',
|
||||
'text' => 'Search',
|
||||
)) ?>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
<li class="nav-header">Browse the Archive</li>
|
||||
<li class="nav-header">Top Artists</li>
|
||||
|
||||
|
||||
<li class="nav-header">Top Genres</li>
|
||||
<?
|
||||
$genres = \Entity\ArchiveGenre::getTop();
|
||||
foreach($genres as $genre_id => $genre): ?>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'search', 'genre' => $genre['name'])) ?>" class="ajax"><i class="icon-double-angle-right"></i> <?=$genre['name'] ?></a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'search', 'genre' => $genre['name'])) ?>" class="ajax"><i class="icon-folder-close"></i> <?=$genre['name'] ?></a></li>
|
||||
<? endforeach; ?>
|
||||
|
||||
<li class="nav-header">Other Actions</li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'index', 'action' => 'download')) ?>" class="ajax"><i class="icon-download"></i> Download the Archive</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'submit')) ?>"><i class="icon-plus-sign"></i> Submit a Song </a></li>
|
||||
|
||||
<? if ($this->acl->isAllowed('administer mlpma songs')): ?>
|
||||
<li class="nav-header">Administration</li>
|
||||
|
||||
|
|
|
@ -12,4 +12,6 @@ return array(
|
|||
'db_pass' => 'PVLRadio2013!',
|
||||
'db_name' => 'centova',
|
||||
|
||||
// Time zone to use when submitting requests.
|
||||
'timezone' => 'US/Eastern',
|
||||
);
|
|
@ -8,23 +8,17 @@ $skin = \PVL\Customization::get('theme');
|
|||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,requiresActiveX=true">
|
||||
|
||||
<meta name="viewport" content="initial-scale=1.0">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
||||
|
||||
<meta name="keywords" content="Pony, Brony, Radio, Video, Podcast, Multimedia, Convention, Ponyville, Live, MLP, MLP:FiM" />
|
||||
<meta name="description" content="Equestria's newest Brony multimedia network, featuring 24/7 pony radio, videos, podcasts, convention coverage, and more." />
|
||||
<link rel="canonical" href="http://www.ponyvillelive.com" />
|
||||
|
||||
<!-- iPhone/iPhone Retina -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="<?=\DF\Url::content('ios/touch_icon_iphone.png') ?>" />
|
||||
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="<?=\DF\Url::content('ios/touch_icon_iphone.png') ?>" />
|
||||
<!-- iPad/iPad Retina -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="<?=\DF\Url::content('ios/touch_icon_ipad.png') ?>" />
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="<?=\DF\Url::content('ios/touch_icon_ipad.png') ?>" />
|
||||
<link rel="canonical" href="http://ponyvillelive.com" />
|
||||
|
||||
<!-- Facebook and Other Social Sites -->
|
||||
<meta property="og:site_name" content="Ponyville Live!" />
|
||||
<meta property="og:url" content="http://ponyvillelive.com/" />
|
||||
<meta property="og:image" content="<?=\DF\Url::content('pvl_square.png') ?>" />
|
||||
|
||||
<link rel="image_src" href="<?=\DF\Url::content('pvl_square.png') ?>" />
|
||||
<link href="https://plus.google.com/+PonyvilleLiveGlobal" rel="publisher" />
|
||||
|
||||
<?php
|
||||
$title_items = $this->headTitle()->getIterator();
|
||||
|
|
|
@ -54,15 +54,26 @@ $this->headLink()
|
|||
->appendStylesheet('//fonts.googleapis.com/css?family=Source+Sans+Pro:400,700', 'screen')
|
||||
->appendStylesheet(\DF\Url::content('mid2013/style.css'), 'all')
|
||||
->appendStylesheet(\DF\Url::content('mid2013/skin_'.$skin.'.css'))
|
||||
->appendStylesheet(\DF\Url::content('mlpma/style.css'));
|
||||
->appendStylesheet(\DF\Url::content('mlpma/style.css'))
|
||||
->appendStylesheet(\DF\Url::content('fap/css/jquery.fullwidthAudioPlayer.css'), 'all')
|
||||
->appendStylesheet(\DF\Url::content('fap/css/jquery.fullwidthAudioPlayer-responsive.css'), 'all');
|
||||
|
||||
$this->headScript()
|
||||
->prependFile(\DF\Url::cdn('jquery', '1.8.3'))
|
||||
->prependFile(\DF\Url::cdn('jquery', '1.10.1'))
|
||||
->appendFile(\DF\Url::content('common/jquery/fancybox/jquery.fancybox.pack.js'))
|
||||
->appendFile(\DF\Url::content('common/bootstrap2_r2/bootstrap/js/bootstrap.min.js'))
|
||||
->appendFile(\DF\Url::content('common/bootstrap2_r2/layout.js'))
|
||||
->appendFile(\DF\Url::content('swfobject.js'))
|
||||
->appendFile(\DF\Url::content('global.js'));
|
||||
->appendFile(\DF\Url::content('global.js'))
|
||||
->appendFile(\DF\Url::content('mlpma/jquery.scrollto.min.js'))
|
||||
->appendFile(\DF\Url::content('mlpma/jquery.history.min.js'))
|
||||
->appendFile(\DF\Url::content('mlpma/jquery.ajaxify.js'))
|
||||
->appendFile(\DF\Url::content('fap/js/jquery-ui.js'))
|
||||
->appendFile(\DF\Url::content('fap/js/soundmanager2-nodebug-jsmin.js'))
|
||||
->appendFile('//connect.soundcloud.com/sdk.js')
|
||||
->appendFile(\DF\Url::content('fap/js/jquery.fullwidthAudioPlayer.js'))
|
||||
->appendFile(\DF\Url::content('fap/js/amplify.min.js'))
|
||||
->appendFile(\DF\Url::content('mlpma/custom.js'));
|
||||
|
||||
echo $this->headMeta()."\n";
|
||||
echo $this->headLink()."\n";
|
||||
|
@ -112,7 +123,7 @@ ga('send', 'pageview');
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="secondary_header_stripe"><img src="<?=\DF\Url::content('mlpma/mlpma_logo.png') ?>" alt="The MLP Music Archive, a Ponyville Live! Project"></div>
|
||||
<div id="secondary_header_stripe"><a href="<?=$this->route(array('module' => 'mlpma')) ?>" class="ajax"><img src="<?=\DF\Url::content('mlpma/mlpma_logo.png') ?>" alt="The MLP Music Archive, a Ponyville Live! Project"></a></div>
|
||||
|
||||
<div id="body-wrapper">
|
||||
<div id="body" class="container">
|
||||
|
@ -139,11 +150,13 @@ ga('send', 'pageview');
|
|||
<?=$this->renderCommon('mlpma') ?>
|
||||
</div>
|
||||
<div class="span9">
|
||||
<? if (!$this->layout()->hide_title): ?>
|
||||
<h1 class="title"><?=$title ?></h1>
|
||||
<? endif; ?>
|
||||
<div id="page-content">
|
||||
<? if (!$this->layout()->hide_title): ?>
|
||||
<h1 class="title"><?=$title ?></h1>
|
||||
<? endif; ?>
|
||||
|
||||
<?php echo $this->layout()->content; ?>
|
||||
<?php echo $this->layout()->content; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
<?php
|
||||
header("Content-type: text/html; charset=utf-8");
|
||||
echo $this->doctype();
|
||||
?>
|
||||
<html class="full_layout">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,requiresActiveX=true">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||
|
||||
<meta name="keywords" content="Pony, Brony, Radio, Video, Podcast, Multimedia, Convention, Ponyville, Live, MLP, MLP:FiM" />
|
||||
<meta name="description" content="Equestria's newest Brony multimedia network, featuring 24/7 pony radio, videos, podcasts, convention coverage, and more." />
|
||||
<link rel="canonical" href="http://ponyvillelive.com" />
|
||||
|
||||
<!-- iPhone/iPhone Retina -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="<?=\DF\Url::content('ios/touch_icon_iphone.png') ?>" />
|
||||
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="<?=\DF\Url::content('ios/touch_icon_iphone.png') ?>" />
|
||||
<!-- iPad/iPad Retina -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="<?=\DF\Url::content('ios/touch_icon_ipad.png') ?>" />
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="<?=\DF\Url::content('ios/touch_icon_ipad.png') ?>" />
|
||||
|
||||
<!-- Facebook and Other Social Sites -->
|
||||
<meta property="og:site_name" content="Ponyville Live!" />
|
||||
<meta property="og:url" content="http://ponyvillelive.com/" />
|
||||
<meta property="og:image" content="<?=\DF\Url::content('pvl_square.png') ?>" />
|
||||
|
||||
<link rel="image_src" href="<?=\DF\Url::content('pvl_square.png') ?>" />
|
||||
<link href="https://plus.google.com/+PonyvilleLiveGlobal" rel="publisher" />
|
||||
|
||||
<?php
|
||||
$title_items = $this->headTitle()->getIterator();
|
||||
$title = current($title_items);
|
||||
|
||||
if (!$this->layout()->subtitle && $this->layout()->show_subtitle)
|
||||
$this->layout()->subtitle = next($title_items);
|
||||
|
||||
$this->headTitle($this->config->application->name);
|
||||
|
||||
if (DF_APPLICATION_ENV != "production")
|
||||
$this->headTitle()->prepend('('.ucfirst(DF_APPLICATION_ENV).')');
|
||||
|
||||
echo $this->headTitle()->setSeparator(" - ")->toString();
|
||||
|
||||
$this->headLink()
|
||||
->appendStylesheet('//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css', 'all')
|
||||
->appendStylesheet('//fonts.googleapis.com/css?family=Source+Sans+Pro:400,700', 'screen')
|
||||
->appendStylesheet(\DF\Url::content('mobile/jquery.mobile-1.4.0.min.css'), 'all')
|
||||
->appendStylesheet(\DF\Url::content('mobile/custom.css'), 'all');
|
||||
|
||||
$this->headScript()
|
||||
->prependFile(\DF\Url::cdn('jquery', '1.11.0'))
|
||||
->appendFile(\DF\Url::content('swfobject.js'))
|
||||
->appendFile(\DF\Url::content('mobile/jquery.mobile-1.4.0.min.js'))
|
||||
->appendFile(\DF\Url::content('mobile/custom.js'))
|
||||
->appendFile(\DF\Url::content('jplayer/jquery.jplayer.min.js'));
|
||||
|
||||
echo $this->headMeta()."\n";
|
||||
echo $this->headLink()."\n";
|
||||
echo $this->headScript()."\n";
|
||||
?>
|
||||
<script>
|
||||
var DF_ContentPath = '<?php echo \DF\Url::content(); ?>';
|
||||
</script>
|
||||
</head>
|
||||
<body class="<?=$this->body_class ?>">
|
||||
<!-- Google Universal Analytics -->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '<?=$this->config->application->analytics_code ?>', 'ponyvillelive.com');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<!-- End Google Universal Analytics -->
|
||||
|
||||
<!-- Header -->
|
||||
<div data-role="header" data-position="fixed" data-theme="a" data-add-back-btn="true">
|
||||
<a id="btn_back" href="#" data-rel="back" class="ui-btn-left ui-alt-icon ui-nodisc-icon ui-btn ui-icon-carat-l ui-btn-icon-notext ui-corner-all" data-role="button" role="button">Back</a>
|
||||
<h1><?=$title ?></h1>
|
||||
</div>
|
||||
|
||||
<!-- Main Body -->
|
||||
<div id="page" data-role="page" data-title="<?=$title ?>" class="jqm-demos">
|
||||
<div role="main" class="ui-content jqm-content jqm-fullwidth">
|
||||
<?php echo $this->layout()->content; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Nav -->
|
||||
<div data-role="footer" data-position="fixed" data-theme="a">
|
||||
<div id="player_controls" data-role="controlgroup">
|
||||
<a id="btn_stop" class="ui-btn ui-btn-left ui-corner-all ui-btn-icon-notext" id="player_pause" href="#">Stop</a>
|
||||
<input type="range" class="volume_slider" name="player_volume" id="player_volume" min="0" max="100" value="50" data-highlight="true">
|
||||
</div>
|
||||
|
||||
<div data-role="navbar">
|
||||
<ul>
|
||||
<li><a href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'radio')) ?>">
|
||||
<span class="icon"><i class="fa fa-music"></i></span>
|
||||
<span class="tab-label">Radio</span>
|
||||
</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'video')) ?>">
|
||||
<span class="icon"><i class="fa fa-video-camera"></i></span>
|
||||
<span class="tab-label">Video</span>
|
||||
</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'show')) ?>">
|
||||
<span class="icon"><i class="fa fa-rss"></i></span>
|
||||
<span class="tab-label">Shows</span>
|
||||
</a></li>
|
||||
<li><a href="<?=$this->route(array('module' => 'mobile', 'controller' => 'station', 'action' => 'request')) ?>">
|
||||
<span class="icon"><i class="fa fa-comments"></i></span>
|
||||
<span class="tab-label">Requests</span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Radio Player -->
|
||||
<div id="pvl-jplayer" style="width: 0; height: 0;"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -104,6 +104,12 @@ class Action extends \Zend_Controller_Action
|
|||
|
||||
if ($is_ajax)
|
||||
\Zend_Layout::getMvcInstance()->disableLayout();
|
||||
|
||||
if ($this->_hasParam('debug') && $this->_getParam('debug') === 'true')
|
||||
{
|
||||
error_reporting(E_ALL & ~E_STRICT);
|
||||
ini_set('display_errors', 1);
|
||||
}
|
||||
}
|
||||
|
||||
public function postDispatch()
|
||||
|
|
|
@ -3,6 +3,7 @@ namespace PVL;
|
|||
|
||||
use \Entity\Station;
|
||||
use \Entity\StationMedia;
|
||||
use \Entity\StationRequest;
|
||||
|
||||
class CentovaCast
|
||||
{
|
||||
|
@ -38,6 +39,11 @@ class CentovaCast
|
|||
{
|
||||
$db = self::getDatabase();
|
||||
$em = self::getEntityManager();
|
||||
$settings = self::getSettings();
|
||||
|
||||
// Forbid web crawlers from using this feature.
|
||||
if (\PVL\Utilities::isCrawler())
|
||||
throw new \DF\Exception('Search engine crawlers are not permitted to use this feature.');
|
||||
|
||||
// Verify that the station supports CentovaCast requests.
|
||||
$station_id = self::getStationID($station);
|
||||
|
@ -108,17 +114,28 @@ class CentovaCast
|
|||
if (count($existing_request) > 0)
|
||||
throw new \DF\Exception('You already have a pending request with this station! Please try again later.');
|
||||
|
||||
// Check for any request (on any station) within 5 minutes.
|
||||
$recent_threshold = time()-(60*5);
|
||||
|
||||
$recent_requests = $em->createQuery('SELECT sr FROM Entity\StationRequest sr WHERE sr.ip = :user_ip AND sr.timestamp >= :threshold')
|
||||
->setParameter('user_ip', $user_ip)
|
||||
->setParameter('threshold', $recent_threshold)
|
||||
->getArrayResult();
|
||||
|
||||
if (count($recent_requests) > 0)
|
||||
throw new \DF\Exception('You have submitted a request too recently! Please wait a while before submitting another one.');
|
||||
|
||||
// Enable the "Automated Song Requests" playlist.
|
||||
$updated_playlist = array(
|
||||
'status' => 'enabled',
|
||||
);
|
||||
$db->update('playlists', $updated_playlist, array('id' => $playlist_id));
|
||||
$db->update('playlists', array('status' => 'enabled'), array('id' => $playlist_id));
|
||||
|
||||
$requesttime = new \DateTime('NOW');
|
||||
$requesttime->setTimezone(new \DateTimeZone($settings['timezone']));
|
||||
|
||||
// Create a new request if all other checks pass.
|
||||
$new_request = array(
|
||||
'playlistid' => $playlist_id,
|
||||
'trackid' => $track_id,
|
||||
'requesttime' => date('Y-m-d h:i:s'),
|
||||
'requesttime' => $requesttime->format('Y-m-d h:i:s'),
|
||||
'sendername' => 'Ponyville Live!',
|
||||
'senderemail' => 'requests@ponyvillelive.com',
|
||||
'dedication' => '',
|
||||
|
@ -139,6 +156,7 @@ class CentovaCast
|
|||
{
|
||||
$db = self::getDatabase();
|
||||
$em = self::getEntityManager();
|
||||
$settings = self::getSettings();
|
||||
|
||||
// Force correct account settings (enable global unified request system).
|
||||
$account_values = array(
|
||||
|
@ -157,6 +175,23 @@ class CentovaCast
|
|||
$db->executeQuery('DELETE FROM playbackstats_tracks WHERE endtime <= ?', array($threshold_date));
|
||||
$db->executeQuery('DELETE FROM visitorstats_sessions WHERE endtime <= ?', array($threshold_date));
|
||||
|
||||
// Delete old requests still listed as pending.
|
||||
$requesttime = new \DateTime('NOW');
|
||||
$requesttime->modify('-3 hours');
|
||||
$requesttime->setTimezone(new \DateTimeZone($settings['timezone']));
|
||||
|
||||
$threshold_requests = $requesttime->format('Y-m-d h:i:s');
|
||||
$db->executeQuery('DELETE FROM playlist_tracks_requests WHERE requesttime <= ?', array($threshold_requests));
|
||||
|
||||
// Force playlist enabling for existing pending requests.
|
||||
$request_playlists_raw = $db->fetchAll('SELECT DISTINCT ptr.playlistid AS pid FROM playlist_tracks_requests AS ptr');
|
||||
|
||||
foreach($request_playlists_raw as $pl)
|
||||
{
|
||||
$pl_id = $pl['pid'];
|
||||
$db->update('playlists', array('status' => 'enabled'), array('id' => $pl_id));
|
||||
}
|
||||
|
||||
// Preload all station media locally.
|
||||
$stations = $em->createQuery('SELECT s FROM Entity\Station s WHERE s.requests_enabled = 1')->execute();
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<?php
|
||||
namespace PVL\Controller\Action;
|
||||
|
||||
use \Entity\ArchiveGenre;
|
||||
use \Entity\ArchiveSong;
|
||||
|
||||
class Mlpma extends \DF\Controller\Action
|
||||
{
|
||||
public function init()
|
||||
|
@ -13,7 +16,8 @@ class Mlpma extends \DF\Controller\Action
|
|||
public function preDispatch()
|
||||
{
|
||||
parent::preDispatch();
|
||||
|
||||
\Zend_Layout::getMvcInstance()->enableLayout();
|
||||
|
||||
$this->view->top_genres = ArchiveGenre::getTop(5);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
namespace PVL\Controller\Action;
|
||||
|
||||
class Mobile extends \DF\Controller\Action
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
\Zend_Layout::getMvcInstance()->setLayout('mobile');
|
||||
}
|
||||
|
||||
public function preDispatch()
|
||||
{
|
||||
parent::preDispatch();
|
||||
|
||||
\Zend_Layout::getMvcInstance()->enableLayout();
|
||||
}
|
||||
}
|
|
@ -12,8 +12,8 @@ class MusicManager
|
|||
const MUSIC_DIR = '/www/mlpmusicarchive.com/music';
|
||||
const ART_DIR = '/www/mlpmusicarchive.com/art';
|
||||
|
||||
const MUSIC_URL = 'http://www.mlpmusicarchive.com/music';
|
||||
const ART_URL = 'http://www.mlpmusicarchive.com/art';
|
||||
const MUSIC_URL = '//static.ponyvillelive.com/mlpmusicarchive/music';
|
||||
const ART_URL = '//static.ponyvillelive.com/mlpmusicarchive/art';
|
||||
|
||||
public static function checkPendingFolder()
|
||||
{
|
||||
|
|
|
@ -3,30 +3,9 @@ namespace PVL\NewsAdapter;
|
|||
|
||||
class YouTube extends AdapterAbstract
|
||||
{
|
||||
public static function getAccount($url)
|
||||
{
|
||||
if (stristr($url, 'youtube.com') !== FALSE)
|
||||
{
|
||||
$url_parts = parse_url($url);
|
||||
$path = rtrim($url_parts['path'], '/');
|
||||
|
||||
$url_components = explode('/', $path);
|
||||
$url_last_element = array_pop($url_components);
|
||||
$account = trim($url_last_element);
|
||||
}
|
||||
else
|
||||
{
|
||||
$account = trim($url);
|
||||
}
|
||||
|
||||
return $account;
|
||||
}
|
||||
|
||||
public static function fetch($url, $params = array())
|
||||
{
|
||||
$api_key = 'AI39si5oveOXVqbMmAeF-7oZ8NeDTeqo27ghNJVTi1yTBVpf3j03Vfs2hx908oI0zCAF07tpFS4N8cAXJnH9TaYhFPKWN6_hLA';
|
||||
|
||||
$username = self::getAccount($url);
|
||||
$v3_api_key = 'AIzaSyC1vhf1rFShf9mzbUEL2LpfaD0E0BNOURk';
|
||||
|
||||
$client = new \Zend_Http_Client();
|
||||
$client->setConfig(array(
|
||||
|
@ -34,19 +13,45 @@ class YouTube extends AdapterAbstract
|
|||
'keepalive' => true,
|
||||
));
|
||||
|
||||
$client->setUri('http://gdata.youtube.com/feeds/api/videos');
|
||||
$account_info = self::getAccount($url);
|
||||
|
||||
if ($account_info['type'] == 'user')
|
||||
{
|
||||
$client->setUri('https://www.googleapis.com/youtube/v3/channels');
|
||||
$client->setParameterGet(array(
|
||||
'part' => 'id,contentDetails',
|
||||
'forUsername' => $account_info['id'],
|
||||
'maxResults' => 25,
|
||||
'key' => $v3_api_key,
|
||||
));
|
||||
|
||||
$response = $client->request('GET');
|
||||
|
||||
if ($response->isSuccessful())
|
||||
{
|
||||
$response_text = $response->getBody();
|
||||
$data = @json_decode($response_text, TRUE);
|
||||
|
||||
$playlist_id = $data['items'][0]['contentDetails']['relatedPlaylists']['uploads'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$playlist_id = $account_info['id'];
|
||||
}
|
||||
|
||||
if (!$playlist_id)
|
||||
return null;
|
||||
|
||||
$client->setUri('https://www.googleapis.com/youtube/v3/playlistItems');
|
||||
$client->setParameterGet(array(
|
||||
'alt' => 'json',
|
||||
'author' => $username,
|
||||
'orderby' => 'published',
|
||||
'safeSearch' => 'none',
|
||||
'racy' => 'include',
|
||||
'part' => 'id,snippet,status,contentDetails',
|
||||
'playlistId' => $playlist_id,
|
||||
'maxResults' => 25,
|
||||
'key' => $v3_api_key,
|
||||
));
|
||||
|
||||
$client->setHeaders('GData-Version: 2');
|
||||
$client->setHeaders('X-GData-Key: key='.$api_key);
|
||||
$response = $client->request('GET');
|
||||
|
||||
$news_items = array();
|
||||
|
||||
if ($response->isSuccessful())
|
||||
|
@ -54,35 +59,57 @@ class YouTube extends AdapterAbstract
|
|||
$response_text = $response->getBody();
|
||||
$data = @json_decode($response_text, TRUE);
|
||||
|
||||
$feed_items = (array)$data['feed']['entry'];
|
||||
$feed_items = (array)$data['items'];
|
||||
|
||||
foreach($feed_items as $item)
|
||||
{
|
||||
$embed_src = $item['link'][0]['href'];
|
||||
|
||||
$thumbnails = (array)$item['media$group']['media$thumbnail'];
|
||||
foreach($thumbnails as $thumb)
|
||||
{
|
||||
if (stristr($thumb['url'], 'mqdefault') !== FALSE)
|
||||
$thumbnail = $thumb['url'];
|
||||
}
|
||||
if (!$thumbnail)
|
||||
$thumbnail = $thumbnails[0]['url'];
|
||||
|
||||
$body = '<a class="fancybox fancybox.iframe" href="'.$embed_src.'"><img src="'.$thumbnail.'" alt="Click to Watch Video"></a>';
|
||||
$body .= '<p>'.$item['media$group']['media$description']['$t'].'</p>';
|
||||
$embed_src = 'http://www.youtube.com/watch?v='.$item['contentDetails']['videoId'];
|
||||
|
||||
$news_items[] = array(
|
||||
'guid' => 'youtube_'.md5($item['id']['$t']),
|
||||
'timestamp' => strtotime($item['published']['$t']),
|
||||
'title' => $item['title']['$t'],
|
||||
'body' => $body,
|
||||
'guid' => 'youtube_'.md5($item['id']),
|
||||
'timestamp' => strtotime($item['snippet']['publishedAt']),
|
||||
'title' => $item['snippet']['title'],
|
||||
'body' => $item['snippet']['description'],
|
||||
'web_url' => $embed_src,
|
||||
'author' => $item['author'][0]['name']['$t'],
|
||||
'author' => $item['snippet']['channelTitle'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $news_items;
|
||||
}
|
||||
|
||||
public static function getAccount($url)
|
||||
{
|
||||
if (stristr($url, 'youtube.com') !== FALSE)
|
||||
{
|
||||
$url_parts = \PVL\Utilities::parseUrl($url);
|
||||
|
||||
if ($url_parts['path_clean'] == 'playlist')
|
||||
{
|
||||
return array(
|
||||
'type' => 'playlist',
|
||||
'id' => $url_parts['query_arr']['list'],
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$url_components = explode('/', $url_parts['path']);
|
||||
$url_last_element = array_pop($url_components);
|
||||
$account = trim($url_last_element);
|
||||
|
||||
return array(
|
||||
'type' => 'user',
|
||||
'id' => $account,
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return array(
|
||||
'type' => 'user',
|
||||
'id' => trim($url),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -221,7 +221,12 @@ class NowPlaying
|
|||
|
||||
$np['listeners'] = (int)$return['listeners'];
|
||||
$np['artist'] = $return['now_playing']['artist'];
|
||||
$np['title'] = $return['now_playing']['song'];
|
||||
|
||||
if ($return['now_playing']['track'])
|
||||
$np['title'] = $return['now_playing']['track'];
|
||||
else
|
||||
$np['title'] = $return['now_playing']['song'];
|
||||
|
||||
$np['text'] = $return['title'];
|
||||
$np['is_live'] = ($return['mount'] != '/autodj');
|
||||
}
|
||||
|
@ -246,7 +251,7 @@ class NowPlaying
|
|||
|
||||
list($artist, $track) = explode(" - ",$temp_array[9], 2);
|
||||
|
||||
$np['listeners'] = $temp_array[5];
|
||||
$np['listeners'] = (int)$temp_array[5];
|
||||
$np['artist'] = $artist;
|
||||
$np['title'] = $track;
|
||||
$np['text'] = $temp_array[9];
|
||||
|
|
|
@ -31,7 +31,7 @@ class Timezone
|
|||
$dt_in_tz = new \DateTime('now', $current_tz);
|
||||
|
||||
return array(
|
||||
'name' => $tz['name'],
|
||||
'name' => $transition[0]['name'],
|
||||
'abbr' => $transition[0]['abbr'],
|
||||
'tz_object' => $current_tz,
|
||||
'utc_object' => $utc,
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
<?
|
||||
namespace PVL;
|
||||
|
||||
class Utilities
|
||||
{
|
||||
public static function parseUrl($url)
|
||||
{
|
||||
$url_parts = @parse_url($url);
|
||||
$url_parts['path_clean'] = trim($url_parts['path'], '/');
|
||||
$url_parts['query_arr'] = self::convertUrlQuery($url_parts['query']);
|
||||
|
||||
return $url_parts;
|
||||
}
|
||||
|
||||
public static function convertUrlQuery($query)
|
||||
{
|
||||
$queryParts = explode('&', $query);
|
||||
$params = array();
|
||||
foreach ($queryParts as $param)
|
||||
{
|
||||
$item = explode('=', $param);
|
||||
$params[$item[0]] = $item[1];
|
||||
}
|
||||
return $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* User-Agent Detection
|
||||
*/
|
||||
|
||||
public static function isCrawler()
|
||||
{
|
||||
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
$crawlers_agents = strtolower('Bloglines subscriber|Dumbot|Sosoimagespider|QihooBot|FAST-WebCrawler|Superdownloads Spiderman|LinkWalker|msnbot|ASPSeek|WebAlta Crawler|Lycos|FeedFetcher-Google|Yahoo|YoudaoBot|AdsBot-Google|Googlebot|Scooter|Gigabot|Charlotte|eStyle|AcioRobot|GeonaBot|msnbot-media|Baidu|CocoCrawler|Google|Charlotte t|Yahoo! Slurp China|Sogou web spider|YodaoBot|MSRBOT|AbachoBOT|Sogou head spider|AltaVista|IDBot|Sosospider|Yahoo! Slurp|Java VM|DotBot|LiteFinder|Yeti|Rambler|Scrubby|Baiduspider|accoona');
|
||||
$crawlers = explode("|", $crawlers_agents);
|
||||
|
||||
foreach($crawlers as $crawler)
|
||||
{
|
||||
if (strpos($ua, trim($crawler)) !== false)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -53,15 +53,18 @@ class ArchiveGenre extends \DF\Doctrine\Entity
|
|||
return $totals;
|
||||
}
|
||||
|
||||
public static function getTop($offset_num = 5)
|
||||
public static function getTop($num_to_show = 5)
|
||||
{
|
||||
$totals = self::getTotals();
|
||||
$all_totals = self::getTotals();
|
||||
|
||||
$totals = array_filter($all_totals, function($var) {
|
||||
return ($var['total'] > 2);
|
||||
});
|
||||
|
||||
uasort($totals, function($a, $b) {
|
||||
return $b['total'] - $a['total'];
|
||||
});
|
||||
|
||||
$totals = array_slice($totals, 0, $offset_num, TRUE);
|
||||
return $totals;
|
||||
return array_slice($totals, 0, $num_to_show);
|
||||
}
|
||||
}
|
|
@ -103,14 +103,20 @@ class Podcast extends \DF\Doctrine\Entity
|
|||
{
|
||||
$em = self::getEntityManager();
|
||||
|
||||
$latest_podcast_episodes = $em->createQuery('SELECT pe FROM Entity\PodcastEpisode pe WHERE pe.timestamp > :threshold ORDER BY pe.timestamp DESC')
|
||||
->setParameter('threshold', strtotime('-3 months'))
|
||||
->useResultCache(true, 300, 'homepage_podcast_episodes')
|
||||
->getArrayResult();
|
||||
$podcast_episodes = \DF\Cache::get('homepage_podcast_episodes');
|
||||
|
||||
$podcast_episodes = array();
|
||||
foreach($latest_podcast_episodes as $ep)
|
||||
$podcast_episodes[$ep['podcast_id']][] = $ep;
|
||||
if (!$podcast_episodes)
|
||||
{
|
||||
$latest_podcast_episodes = $em->createQuery('SELECT pe FROM Entity\PodcastEpisode pe WHERE pe.timestamp > :threshold ORDER BY pe.timestamp DESC')
|
||||
->setParameter('threshold', strtotime('-3 months'))
|
||||
->getArrayResult();
|
||||
|
||||
$podcast_episodes = array();
|
||||
foreach($latest_podcast_episodes as $ep)
|
||||
$podcast_episodes[$ep['podcast_id']][] = $ep;
|
||||
|
||||
\DF\Cache::save($podcast_episodes, 'homepage_podcast_episodes', array(), 300);
|
||||
}
|
||||
|
||||
$podcasts = array();
|
||||
foreach($podcast_episodes as $podcast_id => $episodes)
|
||||
|
|
|
@ -227,4 +227,17 @@ class Schedule extends \DF\Doctrine\Entity
|
|||
return $range_text;
|
||||
}
|
||||
|
||||
public static function formatName($string)
|
||||
{
|
||||
$string = trim($string);
|
||||
|
||||
// Detect Twitter handles.
|
||||
$string = preg_replace_callback('/@([A-Za-z0-9_]{1,15})/', function($matches) {
|
||||
$twitter_username = substr($matches[0], 1);
|
||||
return '<a href="https://twitter.com/'.$twitter_username.'" target="_blank">@'.$twitter_username.'</a>';
|
||||
}, $string);
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ use \Doctrine\Common\Collections\ArrayCollection;
|
|||
/**
|
||||
* @Table(name="short_urls")
|
||||
* @Entity
|
||||
* @HasLifecycleCallbacks
|
||||
*/
|
||||
class ShortUrl extends \DF\Doctrine\Entity
|
||||
{
|
||||
|
@ -29,11 +30,35 @@ class ShortUrl extends \DF\Doctrine\Entity
|
|||
/** @Column(name="short_url", type="string", length=100) */
|
||||
protected $short_url;
|
||||
|
||||
public function setShortUrl($new_short_url)
|
||||
{
|
||||
$this->short_url = preg_replace("/[^A-Za-z0-9_\-]/", '', $new_short_url);
|
||||
}
|
||||
|
||||
public function getUrl()
|
||||
{
|
||||
return self::getFullUrl($this->short_url);
|
||||
}
|
||||
|
||||
public function checkUrl()
|
||||
{
|
||||
if (empty($this->short_url))
|
||||
$this->short_url = substr(md5($this->long_url), 0, 10);
|
||||
|
||||
// Check for a station URL.
|
||||
$station_urls = self::stationUrls();
|
||||
if (isset($station_urls[$this->short_url]))
|
||||
return false;
|
||||
|
||||
$records = self::getRepository()->findBy(array('short_url' => $this->short_url));
|
||||
|
||||
// Updating an existing record, exclude existing item.
|
||||
if ($this->id)
|
||||
return (count($records) <= 1);
|
||||
else
|
||||
return (count($records) == 0);
|
||||
}
|
||||
|
||||
/** @Column(name="long_url", type="string", length=300) */
|
||||
protected $long_url;
|
||||
|
||||
|
@ -61,20 +86,10 @@ class ShortUrl extends \DF\Doctrine\Entity
|
|||
return \DF\Url::route();
|
||||
|
||||
// Check for a station's short code (overrides manual input URLs).
|
||||
$station_short_names = Station::getShortNameLookup();
|
||||
$station_urls = self::stationUrls();
|
||||
|
||||
if (isset($station_short_names[$origin]))
|
||||
{
|
||||
$station = $station_short_names[$origin];
|
||||
|
||||
return \DF\Url::route(array(
|
||||
'module' => 'default',
|
||||
'controller' => 'index',
|
||||
'action' => 'index',
|
||||
'id' => $station['id'],
|
||||
'autoplay' => 'true',
|
||||
));
|
||||
}
|
||||
if (isset($station_urls[$origin]))
|
||||
return $station_urls[$origin];
|
||||
|
||||
// Check for a matching URL.
|
||||
$url = self::getRepository()->findOneBy(array('short_url' => $origin));
|
||||
|
@ -86,6 +101,25 @@ class ShortUrl extends \DF\Doctrine\Entity
|
|||
return \DF\Url::route();
|
||||
}
|
||||
|
||||
public static function stationUrls()
|
||||
{
|
||||
$station_urls = array();
|
||||
$station_short_names = Station::getShortNameLookup();
|
||||
|
||||
foreach($station_short_names as $short_name => $station)
|
||||
{
|
||||
$station_urls[$short_name] = \DF\Url::route(array(
|
||||
'module' => 'default',
|
||||
'controller' => 'index',
|
||||
'action' => 'index',
|
||||
'id' => $station['id'],
|
||||
'autoplay' => 'true',
|
||||
));
|
||||
}
|
||||
|
||||
return $station_urls;
|
||||
}
|
||||
|
||||
public static function stationUrl(Station $station)
|
||||
{
|
||||
$short_name = $station->short_name;
|
||||
|
|
|
@ -263,7 +263,7 @@ class Station extends \DF\Doctrine\Entity
|
|||
if (!$stations || !$cached)
|
||||
{
|
||||
$em = self::getEntityManager();
|
||||
$stations = $em->createQuery('SELECT s FROM '.__CLASS__.' s WHERE s.is_active=1 ORDER BY s.weight ASC')->getArrayResult();
|
||||
$stations = $em->createQuery('SELECT s FROM '.__CLASS__.' s WHERE s.is_active=1 ORDER BY s.category ASC, s.weight ASC')->getArrayResult();
|
||||
|
||||
foreach($stations as &$station)
|
||||
{
|
||||
|
|
|
@ -68,6 +68,11 @@ class StationMedia extends \DF\Doctrine\Entity
|
|||
{
|
||||
$this->requests = (int)$this->requests + 1;
|
||||
$this->newest_request = time();
|
||||
|
||||
$record = new StationRequest;
|
||||
$record->track = $this;
|
||||
$record->station = $this->station;
|
||||
$record->save();
|
||||
}
|
||||
|
||||
public function setLength($length)
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
namespace Entity;
|
||||
|
||||
use \Doctrine\Common\Collections\ArrayCollection;
|
||||
|
||||
/**
|
||||
* @Table(name="station_requests")
|
||||
* @Entity
|
||||
*/
|
||||
class StationRequest extends \DF\Doctrine\Entity
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->timestamp = time();
|
||||
$this->ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @Column(name="id", type="integer")
|
||||
* @Id
|
||||
* @GeneratedValue(strategy="IDENTITY")
|
||||
*/
|
||||
protected $id;
|
||||
|
||||
/** @Column(name="station_id", type="integer") */
|
||||
protected $station_id;
|
||||
|
||||
/** @Column(name="track_id", type="integer") */
|
||||
protected $track_id;
|
||||
|
||||
/** @Column(name="timestamp", type="integer") */
|
||||
protected $timestamp;
|
||||
|
||||
/** @Column(name="ip", type="string", length=15) */
|
||||
protected $ip;
|
||||
|
||||
/**
|
||||
* @ManyToOne(targetEntity="Station", inversedBy="media")
|
||||
* @JoinColumns({
|
||||
* @JoinColumn(name="station_id", referencedColumnName="id", onDelete="CASCADE")
|
||||
* })
|
||||
*/
|
||||
protected $station;
|
||||
|
||||
/**
|
||||
* @ManyToOne(targetEntity="StationMedia")
|
||||
* @JoinColumns({
|
||||
* @JoinColumn(name="track_id", referencedColumnName="id", onDelete="CASCADE")
|
||||
* })
|
||||
*/
|
||||
protected $track;
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* New User form
|
||||
*/
|
||||
|
||||
return array(
|
||||
/**
|
||||
* Form Configuration
|
||||
*/
|
||||
'form' => array(
|
||||
'method' => 'post',
|
||||
'elements' => array(
|
||||
|
||||
'uin' => array('textarea', array(
|
||||
'label' => 'UIN',
|
||||
'required' => true,
|
||||
'attribs' => array(
|
||||
'class' => 'half-width full-height',
|
||||
),
|
||||
'description' => 'Multiple UINs can be added at once; enter each UIN on its own line.',
|
||||
)),
|
||||
|
||||
'roles' => array('multicheckbox', array(
|
||||
'label' => 'Roles',
|
||||
'multiOptions' => \Entity\Role::fetchSelect(),
|
||||
)),
|
||||
|
||||
'submit' => array('submit', array(
|
||||
'type' => 'submit',
|
||||
'label' => 'Create User',
|
||||
'helper' => 'formButton',
|
||||
'class' => 'ui-button',
|
||||
)),
|
||||
),
|
||||
),
|
||||
);
|
|
@ -28,77 +28,33 @@ class Admin_UsersController extends \DF\Controller\Action
|
|||
$this->view->pager = new \DF\Paginator\Doctrine($query, $this->_getParam('page', 1), 50);
|
||||
}
|
||||
|
||||
public function addAction()
|
||||
{
|
||||
$form = new \DF\Form($this->current_module_config->forms->user_new->form);
|
||||
|
||||
if( !empty($_POST) && $form->isValid($_POST) )
|
||||
{
|
||||
$data = $form->getValues();
|
||||
$uins_raw = explode("\n", $data['uin']);
|
||||
|
||||
foreach((array)$uins_raw as $uin)
|
||||
{
|
||||
$uin = trim($uin);
|
||||
|
||||
if (strlen($uin) == 9)
|
||||
{
|
||||
$user = User::getOrCreate($uin);
|
||||
$user->fromArray(array('roles' => $data['roles']));
|
||||
$this->em->persist($user);
|
||||
|
||||
$this->alert('User <a href="'.\DF\Url::route(array('module' => 'admin', 'controller' => 'users', 'action' => 'edit', 'id' => $user->id)).'" title="Edit User">'.$user->lastname.', '.$user->firstname.'</a> successfully updated/added.');
|
||||
}
|
||||
}
|
||||
|
||||
$this->em->flush();
|
||||
|
||||
$this->redirectToRoute(array('module' => 'admin', 'controller' => 'users'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->headTitle('Add User');
|
||||
$this->renderForm($form);
|
||||
}
|
||||
|
||||
public function editAction()
|
||||
{
|
||||
// Handle UIN translation.
|
||||
if ($this->_hasParam('uin'))
|
||||
$form = new \DF\Form($this->current_module_config->forms->user_edit->form);
|
||||
|
||||
if ($this->_hasParam('id'))
|
||||
{
|
||||
$user = User::getRepository()->findOneByUin($this->_getParam('uin'));
|
||||
$record = User::find($this->_getParam('id'));
|
||||
$form->setDefaults($record->toArray());
|
||||
}
|
||||
|
||||
if(!empty($_POST) && $form->isValid($_POST))
|
||||
{
|
||||
$data = $form->getValues();
|
||||
|
||||
if ($user instanceof User)
|
||||
$this->redirectFromHere(array('uin' => NULL, 'id' => $user->id));
|
||||
else
|
||||
throw new \DF\Exception\DisplayOnly('User not found!');
|
||||
return;
|
||||
}
|
||||
|
||||
$id = (int)$this->_getParam('id');
|
||||
$user = User::find($id);
|
||||
|
||||
$form = new \DF\Form($this->current_module_config->forms->user_edit->form);
|
||||
|
||||
if (!($user instanceof User))
|
||||
throw new \DF\Exception\DisplayOnly('User not found!');
|
||||
if (!($record instanceof User))
|
||||
$record = new User;
|
||||
|
||||
$record->fromArray($data);
|
||||
$record->save();
|
||||
|
||||
$this->alert('User updated.', 'green');
|
||||
$this->redirectFromHere(array('action' => 'index', 'id' => NULL, 'csrf' => NULL));
|
||||
return;
|
||||
}
|
||||
|
||||
$form->setDefaults($user->toArray(TRUE, TRUE));
|
||||
|
||||
if( !empty($_POST) && $form->isValid($_POST) )
|
||||
{
|
||||
$data = $form->getValues();
|
||||
|
||||
$user->fromArray($data);
|
||||
$user->save();
|
||||
|
||||
$this->alert('<b>User updated!</b>', 'green');
|
||||
$this->redirectToRoute(array('module'=>'admin','controller'=>'users'));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->headTitle('Edit User');
|
||||
$this->renderForm($form);
|
||||
$this->view->headTitle('Add/Edit User');
|
||||
$this->renderForm($form);
|
||||
}
|
||||
|
||||
public function deleteAction()
|
||||
|
@ -106,10 +62,10 @@ class Admin_UsersController extends \DF\Controller\Action
|
|||
$id = (int)$this->_getParam('id');
|
||||
$user = User::find($id);
|
||||
|
||||
$user->flag_delete = !($user->flag_delete);
|
||||
$user->save();
|
||||
if ($user instanceof User)
|
||||
$user->delete();
|
||||
|
||||
$this->alert('<b>User deleted status toggled.</b>', 'green');
|
||||
$this->alert('<b>User deleted.</b>', 'green');
|
||||
$this->redirectFromHere(array('action' => 'index', 'id' => NULL));
|
||||
}
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@ $this->headTitle('Manage Users');
|
|||
<?=$this->button(array(
|
||||
'type' => 'link',
|
||||
'class' => 'success',
|
||||
'href' => $this->route(array('module' => 'admin', 'controller' => 'users', 'action' => 'add' )),
|
||||
'icon' => 'add',
|
||||
'href' => $this->routeFromHere(array('action' => 'edit')),
|
||||
'icon' => 'icon-plus-sign',
|
||||
'text' => 'Add New User',
|
||||
)) ?>
|
||||
</div>
|
||||
|
@ -62,15 +62,6 @@ $this->headTitle('Manage Users');
|
|||
'icon' => 'pencil',
|
||||
'text' => 'Edit',
|
||||
)) ?>
|
||||
<? if ($user->flag_delete): ?>
|
||||
<?=$this->button(array(
|
||||
'type' => 'small',
|
||||
'href' => $this->routeFromHere(array('action' => 'delete', 'id' => $user->id)),
|
||||
'class' => 'success',
|
||||
'icon' => 'add',
|
||||
'text' => 'Undelete',
|
||||
)) ?>
|
||||
<? else: ?>
|
||||
<?=$this->button(array(
|
||||
'type' => 'small',
|
||||
'href' => $this->routeFromHere(array('action' => 'delete', 'id' => $user->id)),
|
||||
|
@ -78,7 +69,6 @@ $this->headTitle('Manage Users');
|
|||
'icon' => 'delete',
|
||||
'text' => 'Delete',
|
||||
)) ?>
|
||||
<? endif; ?>
|
||||
</div>
|
||||
</td>
|
||||
<td><big><?=$user->name ?></big></td>
|
||||
|
|
|
@ -77,9 +77,9 @@ class IndexController extends \DF\Controller\Action
|
|||
$autoplay = $this->_getParam('autoplay');
|
||||
|
||||
if ($this->_hasParam('autoplay'))
|
||||
$autoplay = ((bool)$autoplay == true);
|
||||
$autoplay = ($autoplay === 'true' || $autoplay === '1');
|
||||
else
|
||||
$autoplay = ($this->_getParam('showonlystation', false) == 'true');
|
||||
$autoplay = false;
|
||||
|
||||
$this->view->autoplay = $autoplay;
|
||||
$this->view->standalone = true;
|
||||
|
@ -141,9 +141,11 @@ class IndexController extends \DF\Controller\Action
|
|||
|
||||
$this->categories = \Entity\Station::getCategories();
|
||||
|
||||
/*
|
||||
$special_event = Settings::getSetting('special_event', 0);
|
||||
if (!$special_event)
|
||||
unset($this->categories['event']);
|
||||
*/
|
||||
|
||||
if ($station_id && $this->_getParam('showonlystation', false) == 'true')
|
||||
{
|
||||
|
|
|
@ -16,10 +16,18 @@ class UtilController extends \DF\Controller\Action
|
|||
error_reporting(E_ALL & ~E_NOTICE);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
\PVL\CentovaCast::sync();
|
||||
$db = \PVL\CentovaCast::getDatabase();
|
||||
$settings = \PVL\CentovaCast::getSettings();
|
||||
|
||||
echo 'CC Synced';
|
||||
// Delete old requests still listed as pending.
|
||||
$requesttime = new \DateTime('NOW');
|
||||
$requesttime->modify('-3 hours');
|
||||
$requesttime->setTimezone(new \DateTimeZone($settings['timezone']));
|
||||
|
||||
$threshold_requests = $requesttime->format('Y-m-d h:i:s');
|
||||
$db->executeQuery('DELETE FROM playlist_tracks_requests WHERE requesttime <= ?', array($threshold_requests));
|
||||
|
||||
echo 'Deleted all records before '.$threshold_requests;
|
||||
exit;
|
||||
|
||||
$results = \Entity\StationMedia::search(1, 'Lost on the');
|
||||
|
|
|
@ -54,7 +54,7 @@ $this->headTitle('Station Schedules');
|
|||
<? if ($this->station == 'all'): ?>
|
||||
<? if ($event['station']): ?><?=$event['station']['name'] ?><? else: ?>Network-Wide<? endif; ?>:<br>
|
||||
<? endif; ?>
|
||||
<big><?=$event['title'] ?></big>
|
||||
<?=\Entity\Schedule::formatName($event['title']) ?>
|
||||
<br><small><?=$event['time'] ?></small>
|
||||
<!-- </a> -->
|
||||
</div>
|
||||
|
|
|
@ -148,7 +148,7 @@ $(function() {
|
|||
showNickSelection: 'true',
|
||||
navigationPosition: 'top',
|
||||
realname: 'Ponyville Live! Visitor',
|
||||
quitMessage: 'Watch and listen live at http://www.ponyvillelive.com'
|
||||
quitMessage: 'Watch and listen live at http://pvlive.me'
|
||||
};
|
||||
|
||||
swfobject.embedSWF("<?=\DF\Url::content('lightIRC/lightIRC.swf') ?>", "lightIRC", "100%", "650", "10.0.0", "<?=\DF\Url::content('lightIRC/expressInstall.swf') ?>", params);
|
||||
|
|
|
@ -226,7 +226,7 @@ for($i = 0; $i <= $num_cols-1; $i++)
|
|||
<? foreach((array)$date_row['events'] as $event): ?>
|
||||
<li class="clearfix">
|
||||
<img class="pull-left" src="<?=$event['image_url'] ?>" style="width: 32px; margin-right: 5px; margin-top: 5px;">
|
||||
<h5><?=$event['title'] ?><br><small>
|
||||
<h5><?=\Entity\Schedule::formatName($event['title']) ?><br><small>
|
||||
<? if ($event['status'] == "now"): ?>
|
||||
<b>Right now</b>
|
||||
<? else: ?>
|
||||
|
|
|
@ -377,7 +377,7 @@ function playStation(id)
|
|||
volumechange: function(event) {
|
||||
volume = Math.round(event.jPlayer.options.volume * 100);
|
||||
},
|
||||
swfPath: '/static/jplayer/jplayer.swf',
|
||||
swfPath: DF_ContentPath+'/jplayer/jplayer.swf',
|
||||
solution: (canPlayMp3()) ? 'html, flash' : 'flash',
|
||||
supplied: 'mp3',
|
||||
preload: 'none',
|
||||
|
|
|
@ -10,14 +10,7 @@ class Mlpma_IndexController extends \PVL\Controller\Action\Mlpma
|
|||
->setMaxResults(10)
|
||||
->execute();
|
||||
|
||||
$this->view->genres = ArchiveGenre::getTotals();
|
||||
|
||||
$this->render('test');
|
||||
}
|
||||
|
||||
public function testAction()
|
||||
{
|
||||
|
||||
$this->view->genres = ArchiveGenre::getTop(25);
|
||||
}
|
||||
|
||||
public function downloadAction()
|
||||
|
|
|
@ -5,7 +5,7 @@ $this->headTitle('Artist: '.$this->artist_name);
|
|||
<h2>Albums</h2>
|
||||
|
||||
<? foreach($this->albums as $album_name => $songs): ?>
|
||||
<h4><?=$album_name ?></h4>
|
||||
<h3><?=$album_name ?></h3>
|
||||
<?
|
||||
$this->songs = $songs;
|
||||
echo $this->renderHere('songs', true);
|
||||
|
|
|
@ -2,10 +2,28 @@
|
|||
$this->headTitle('Download the Archive');
|
||||
?>
|
||||
|
||||
<h2>Your Favorite Pony Songs, All In One Place.</h2>
|
||||
|
||||
<p>You can download the existing MLP Music Archive using the link below.<br>This version of the archive was created on November 27, 2012.</p>
|
||||
<h2>Latest Version</h2>
|
||||
<p>You can download the newest MLP Music Archive using the link below.</p>
|
||||
|
||||
<div class="buttons">
|
||||
<a href="https://docs.google.com/open?id=0B5LW1ZIpaxUIZkIwdUtsQnFKUVU" class="btn btn-xlarge btn-primary">Download v14 (Torrent)</a>
|
||||
</div>
|
||||
<?=$this->button(array(
|
||||
'type' => 'link',
|
||||
'class' => 'btn-large btn-primary',
|
||||
'icon' => 'icon-download',
|
||||
'text' => 'Download MLPMA Version 15, Fall 2013 (.torrent)',
|
||||
'href' => '//ponyvillelive.com/resources/mlpma_v15.torrent',
|
||||
)) ?>
|
||||
</div>
|
||||
|
||||
<h2>Older Versions</h2>
|
||||
<p>Old versions of the MLP Music Archive are available for download below.</p>
|
||||
|
||||
<ul class="nav nav-list">
|
||||
<li><a href="//ponyvillelive.com/resources/mlpma_v14.torrent"><i class="icon-download"></i> MLPMA Version 14, Fall 2012 (.torrent)</a></li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
<h2>About .torrent Files</h2>
|
||||
<p>A .torrent file lets you download files from the BitTorrent peer-to-peer file sharing network. Since the MLPMA is so large, this is the best way to make sure everyone can download it at the fastest possible speeds, without overloading servers in the process.</p>
|
||||
|
||||
<p>In order to download .torrent files, you will need a BitTorrent downloader tool. There are many options available, but a simple lightweight option is the <a href="http://deluge-torrent.org/">Deluge</a> client.</p>
|
|
@ -1,33 +1,29 @@
|
|||
<?
|
||||
$this->headTitle('The MLP Music Archive');
|
||||
$this->headTitle('Welcome to the MLP Music Archive');
|
||||
$this->layout()->manual = true;
|
||||
$this->layout()->hide_title = true;
|
||||
?>
|
||||
|
||||
<!-- A tab to launch the Classic Widget -->
|
||||
<script>
|
||||
UserVoice = window.UserVoice || [];
|
||||
UserVoice.push(['showTab', 'classic_widget', {
|
||||
mode: 'feedback',
|
||||
primary_color: '#3f51c4',
|
||||
link_color: '#59baeb',
|
||||
forum_id: 203269,
|
||||
tab_label: 'Feedback & Support',
|
||||
tab_color: '#006fe6',
|
||||
tab_position: 'middle-right',
|
||||
tab_inverted: false
|
||||
}]);
|
||||
</script>
|
||||
<h1 class="title">Welcome to the <b>MLP Music Archive</b>!</h1>
|
||||
<p>The MLP Music Archive project is now a proud member of the <a href="http://www.ponyvillelive.com/" target="_blank">Ponyville Live!</a> family. We are working hard to bring you a brand spankin' new and improved version of the archive, with the latest and greatest in pony hits included, plus tons of new features.</p>
|
||||
|
||||
<div class="container-fluid" id="intro">
|
||||
<div class="container">
|
||||
<div class="row span8 center">
|
||||
<h1>Your Favorite Pony Songs,<br>All In One Place.</h1>
|
||||
<p>The MLP Music Archive project is now a proud member of the <a href="http://www.ponyvillelive.com/" target="_blank">Ponyville Live!</a> family. We are working hard to bring you a brand spankin' new and improved version of the archive, with the latest and greatest in pony hits included, plus tons of new features.</p>
|
||||
|
||||
<p>You can download the existing MLP Music Archive using the link below.<br>This version of the archive was created on November 27, 2012.</p>
|
||||
|
||||
<a href="https://docs.google.com/open?id=0B5LW1ZIpaxUIZkIwdUtsQnFKUVU" class="btn btn-xlarge btn-primary">Download v14 (Torrent)</a>
|
||||
<a href="https://docs.google.com/folder/d/0B60Mv4AgTPp8WjY4NnpuT05ZT0E/edit" class="btn btn-xlarge btn-inverse">View on Google Drive</a>
|
||||
</div>
|
||||
<div class="row-fluid">
|
||||
<div class="span8">
|
||||
<h2>Newly Added Songs</h2>
|
||||
<?
|
||||
$this->songs = $this->newest_songs;
|
||||
$this->compact_view = true;
|
||||
echo $this->renderHere('songs', TRUE);
|
||||
?>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<h2>Explore By Genre</h2>
|
||||
<div class="well">
|
||||
<ul class="nav nav-list">
|
||||
<? foreach($this->genres as $genre_id => $genre): ?>
|
||||
<li><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'search', 'genre' => $genre['name'])) ?>" class="ajax"><i class="icon-folder-close"></i> <?=$genre['name'] ?> <span class="label pull-right"><?=$genre['total'] ?></span></li>
|
||||
<? endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,33 @@
|
|||
<?
|
||||
$this->headTitle('The MLP Music Archive');
|
||||
$this->layout()->manual = true;
|
||||
?>
|
||||
|
||||
<!-- A tab to launch the Classic Widget -->
|
||||
<script>
|
||||
UserVoice = window.UserVoice || [];
|
||||
UserVoice.push(['showTab', 'classic_widget', {
|
||||
mode: 'feedback',
|
||||
primary_color: '#3f51c4',
|
||||
link_color: '#59baeb',
|
||||
forum_id: 203269,
|
||||
tab_label: 'Feedback & Support',
|
||||
tab_color: '#006fe6',
|
||||
tab_position: 'middle-right',
|
||||
tab_inverted: false
|
||||
}]);
|
||||
</script>
|
||||
|
||||
<div class="container-fluid" id="intro">
|
||||
<div class="container">
|
||||
<div class="row span8 center">
|
||||
<h1>Your Favorite Pony Songs,<br>All In One Place.</h1>
|
||||
<p>The MLP Music Archive project is now a proud member of the <a href="http://www.ponyvillelive.com/" target="_blank">Ponyville Live!</a> family. We are working hard to bring you a brand spankin' new and improved version of the archive, with the latest and greatest in pony hits included, plus tons of new features.</p>
|
||||
|
||||
<p>You can download the existing MLP Music Archive using the link below.<br>This version of the archive was created on November 27, 2012.</p>
|
||||
|
||||
<a href="https://docs.google.com/open?id=0B5LW1ZIpaxUIZkIwdUtsQnFKUVU" class="btn btn-xlarge btn-primary">Download v14 (Torrent)</a>
|
||||
<a href="https://docs.google.com/folder/d/0B60Mv4AgTPp8WjY4NnpuT05ZT0E/edit" class="btn btn-xlarge btn-inverse">View on Google Drive</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,49 +0,0 @@
|
|||
<?
|
||||
$this->headTitle('Welcome to the MLP Music Archive');
|
||||
$this->layout()->manual = true;
|
||||
?>
|
||||
|
||||
<h1 class="title">Welcome to the <b>MLP Music Archive</b>!</h1>
|
||||
<p>The MLP Music Archive project is now a proud member of the <a href="http://www.ponyvillelive.com/" target="_blank">Ponyville Live!</a> family. We are working hard to bring you a brand spankin' new and improved version of the archive, with the latest and greatest in pony hits included, plus tons of new features.</p>
|
||||
|
||||
<div class="row-fluid">
|
||||
|
||||
<div class="span8">
|
||||
<div class="widget-box transparent">
|
||||
<div class="widget-header widget-header-flat">
|
||||
<h4 class="lighter">Newly Added Songs</h4>
|
||||
<div class="widget-toolbar"><a href="#" data-action="collapse"><i class="icon-chevron-up"></i></a></div>
|
||||
</div>
|
||||
<div class="widget-body">
|
||||
<div class="widget-body-inner">
|
||||
<div class="widget-main padding-5">
|
||||
<?
|
||||
$this->songs = $this->newest_songs;
|
||||
$this->compact_view = true;
|
||||
echo $this->renderHere('songs', TRUE);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4">
|
||||
<div class="widget-box transparent">
|
||||
<div class="widget-header widget-header-flat">
|
||||
<h4 class="lighter">Explore By Genre</h4>
|
||||
<div class="widget-toolbar"><a href="#" data-action="collapse"><i class="icon-chevron-up"></i></a></div>
|
||||
</div>
|
||||
<div class="widget-body">
|
||||
<div class="widget-body-inner">
|
||||
<div class="widget-main padding-5">
|
||||
<ul class="item-list">
|
||||
<? foreach($this->genres as $genre_id => $genre): ?>
|
||||
<li class="item"><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'search', 'genre' => $genre['name'])) ?>" class="ajax"><?=$genre['name'] ?> <span class="label"><?=$genre['total'] ?></span></li>
|
||||
<? endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,4 +1,4 @@
|
|||
<table class="table table-striped table-hover">
|
||||
<table class="table table-bordered table-condensed table-striped table-hover">
|
||||
<? if ($this->compact_view): ?>
|
||||
<colgroup>
|
||||
<col width="10%">
|
||||
|
@ -28,7 +28,7 @@
|
|||
<tr class="input">
|
||||
<td class="center">
|
||||
<div class="btn-group">
|
||||
<a href="<?=$song->file_url ?>" data-title="<?=$song->title ?>" data-artist="<?=$song->artist ?>" title="Play Song" class="btn-play-song btn btn-mini btn-success"><i class="icon-play"></i></a>
|
||||
<a href="<?=$song->file_url ?>" data-title="<?=$song->title ?>" data-artist="<?=$song->artist ?>" data-cover="<?=$song->art_url ?>" title="Play Song" class="btn-play-song btn btn-mini btn-success"><i class="icon-play"></i></a>
|
||||
<a href="<?=$song->file_url ?>" title="Download Song" download="<?=basename($song->file_url) ?>" target="_blank" class="btn btn-mini btn-info"><i class="icon-download-alt"></i></a>
|
||||
<? if ($this->acl->isAllowed('administer mlpma songs')): ?>
|
||||
<a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'song', 'action' => 'edit', 'id' => $song->id)) ?>" title="Edit Song" class="btn btn-mini btn-warning"><i class="icon-pencil"></i></a>
|
||||
|
@ -37,14 +37,14 @@
|
|||
</div>
|
||||
</td>
|
||||
<? if ($this->compact_view): ?>
|
||||
<td class="center"><a href="#"><img src="<?=$song->art_url ?>" style="width: 100%;"></a></td>
|
||||
<td class="center"><img src="<?=$song->art_url ?>" style="width: 100%;"></td>
|
||||
<td>
|
||||
<a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'artist', 'artist' => $song->artist)) ?>" class="ajax"><?=$song->artist ?></a><br>
|
||||
<big><b><?=$song->title ?></b></big><br>
|
||||
<a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'album', 'album' => $song->album, 'artist' => $song->artist)) ?>" class="ajax"><?=$song->album ?></a><? if ($song->genre): ?> • <?=$song->genre ?><? endif; ?>
|
||||
</td>
|
||||
<? else: ?>
|
||||
<td><b><?=$song->title ?></b></td>
|
||||
<td><big><b><?=$song->title ?></b></big></td>
|
||||
<td><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'artist', 'artist' => $song->artist)) ?>" class="ajax"><?=$song->artist ?></a></td>
|
||||
<td><a href="<?=$this->route(array('module' => 'mlpma', 'controller' => 'album', 'album' => $song->album, 'artist' => $song->artist)) ?>" class="ajax"><?=$song->album ?></a></td>
|
||||
<td><?=$song->genre ?></td>
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
use \Entity\Station;
|
||||
|
||||
class Mobile_IndexController extends \PVL\Controller\Action\Mobile
|
||||
{
|
||||
public function indexAction()
|
||||
{}
|
||||
|
||||
public function viewAction()
|
||||
{
|
||||
$this->categories = \Entity\Station::getCategories();
|
||||
|
||||
$stations_raw = $this->em->createQuery('SELECT s FROM Entity\Station s WHERE s.is_active=1 ORDER BY s.weight ASC')
|
||||
->getArrayResult();
|
||||
|
||||
$this->stations = array();
|
||||
foreach($stations_raw as $station)
|
||||
{
|
||||
$this->stations[$station['id']] = $station;
|
||||
|
||||
if (isset($this->categories[$station['category']]))
|
||||
$this->categories[$station['category']]['stations'][] = $station;
|
||||
}
|
||||
|
||||
$this->view->stations = $this->stations;
|
||||
$this->view->categories = $this->categories;
|
||||
|
||||
$display_type = strtolower($this->_getParam('type', 'radio'));
|
||||
switch($display_type)
|
||||
{
|
||||
case "show":
|
||||
$podcasts = Podcast::fetchLatest();
|
||||
$this->view->podcasts = $podcasts;
|
||||
|
||||
$this->render('view_show');
|
||||
break;
|
||||
|
||||
case "video":
|
||||
$this->view->category = $this->categories['video'];
|
||||
$this->render('view_video');
|
||||
break;
|
||||
|
||||
case "radio":
|
||||
default:
|
||||
$this->view->category = $this->categories['audio'];
|
||||
$this->render('view_radio');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
use \Entity\Station;
|
||||
|
||||
class Mobile_StationController extends \PVL\Controller\Action\Mobile
|
||||
{
|
||||
public function indexAction()
|
||||
{
|
||||
$id = (int)$this->_getParam('id');
|
||||
$station = Station::find($id);
|
||||
|
||||
if (!($station instanceof Station))
|
||||
throw new \DF\Exception\DisplayOnly('Not found!');
|
||||
|
||||
$this->view->station = $station;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
$this->headTitle('Ponyville Live!');
|
||||
?>
|
||||
|
||||
<div id="home_header">
|
||||
<img src="<?=\DF\Url::content('mid2013/logo_light.png') ?>" alt="Ponyville Live!">
|
||||
</div>
|
||||
|
||||
<div id="home_buttons">
|
||||
<a class="ui-btn ui-corner-all" href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'radio')) ?>">
|
||||
<i class="fa fa-music"></i> Radio Stations
|
||||
</a>
|
||||
<a class="ui-btn ui-corner-all" href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'video')) ?>">
|
||||
<i class="fa fa-video-camera"></i> Video Streams
|
||||
</a>
|
||||
<a class="ui-btn ui-corner-all" href="<?=$this->route(array('module' => 'mobile', 'action' => 'view', 'type' => 'show')) ?>">
|
||||
<i class="fa fa-rss"></i> Show Episodes
|
||||
</a>
|
||||
<a class="ui-btn ui-corner-all" href="<?=$this->route(array('module' => 'mobile', 'controller' => 'station', 'action' => 'request')) ?>">
|
||||
<i class="fa fa-comments"></i> Song Requests
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id="home_footer">
|
||||
MLP is copyright © Hasbro. All creations are © to their respective artists.<br>
|
||||
All songs are property of their respective artists.<br>
|
||||
Copyright © <?=date('Y') ?> Ponyville Live! All rights reserved.
|
||||
</div>
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
$this->headTitle('Radio Stations');
|
||||
?>
|
||||
|
||||
<ul data-role="listview" class="station_list" id="station_list">
|
||||
<? foreach($this->category['stations'] as $station): ?>
|
||||
<li class="station" id="station_<?=\Entity\Station::getStationShortName($station['name']) ?>"
|
||||
data-id="<?=$station['id'] ?>"
|
||||
data-name="<?=$station['name'] ?>"
|
||||
data-type="<?=$station['type'] ?>"
|
||||
data-inactive="<? if ($station['hide_if_inactive']): ?>hide<? else: ?>show<? endif; ?>">
|
||||
<a href="<?=$this->routeFromHere(array('controller' => 'station', 'action' => 'index', 'id' => $station['id'])) ?>">
|
||||
<img src="<?=\DF\Url::content($station['image_url']) ?>">
|
||||
|
||||
<h4>
|
||||
<?=$station['name'] ?>
|
||||
<span class="nowplaying-info">
|
||||
<span class="nowplaying-listeners"></span>
|
||||
</span>
|
||||
<? if ($station['genre']): ?>
|
||||
<span class="genre-info"><?=$station['genre'] ?></span>
|
||||
<? endif; ?>
|
||||
</h4>
|
||||
<span class="nowplaying-onair" style="display: none;"></span>
|
||||
<span class="nowplaying-artist">Loading...</span>
|
||||
<span class="nowplaying-title">Loading...</span>
|
||||
</a>
|
||||
</li>
|
||||
<? endforeach; ?>
|
||||
</ul>
|
|
@ -0,0 +1,27 @@
|
|||
<?
|
||||
$station = $this->station;
|
||||
$this->headTitle($station->name);
|
||||
?>
|
||||
|
||||
<div class="station" id="station_<?=$station->short_name ?>"
|
||||
data-autoplay="true"
|
||||
data-id="<?=$station['id'] ?>"
|
||||
data-name="<?=$station['name'] ?>"
|
||||
data-type="<?=$station['type'] ?>"
|
||||
data-stream="<?=$station['stream_url'] ?>"
|
||||
data-inactive="<? if ($station['hide_if_inactive']): ?>hide<? else: ?>show<? endif; ?>">
|
||||
<img src="<?=\DF\Url::content($station['image_url']) ?>">
|
||||
|
||||
<h4>
|
||||
<?=$station['name'] ?>
|
||||
<span class="nowplaying-info">
|
||||
<span class="nowplaying-listeners"></span>
|
||||
</span>
|
||||
<? if ($station['genre']): ?>
|
||||
<span class="genre-info"><?=$station['genre'] ?></span>
|
||||
<? endif; ?>
|
||||
</h4>
|
||||
<span class="nowplaying-onair" style="display: none;"></span>
|
||||
<span class="nowplaying-artist">Loading...</span>
|
||||
<span class="nowplaying-title">Loading...</span>
|
||||
</div>
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
return array(
|
||||
'elements' => array(
|
||||
|
||||
'long_url' => array('text', array(
|
||||
'label' => 'Original URL (Target)',
|
||||
'description' => 'The URL you would like the short address to redirect to.',
|
||||
'required' => true,
|
||||
'maxlength' => 300,
|
||||
'class' => 'full-width',
|
||||
'placeholder' => 'http://full-url.here.com/',
|
||||
)),
|
||||
|
||||
'short_url' => array('text', array(
|
||||
'label' => 'Short URL',
|
||||
'maxlength' => 50,
|
||||
'description' => 'If you want to specify the short URL, enter it in this field. Leave this field blank to automatically generate one.',
|
||||
'class' => 'half-width',
|
||||
)),
|
||||
|
||||
'submit' => array('submit', array(
|
||||
'type' => 'submit',
|
||||
'label' => 'Save Changes',
|
||||
'helper' => 'formButton',
|
||||
'class' => 'ui-button',
|
||||
)),
|
||||
|
||||
),
|
||||
);
|
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
use \Entity\Station;
|
||||
use \Entity\ShortUrl;
|
||||
|
||||
class Stations_UrlsController extends \PVL\Controller\Action\Station
|
||||
{
|
||||
public function indexAction()
|
||||
{
|
||||
$urls = $this->em->createQuery('SELECT su FROM Entity\ShortUrl su WHERE su.station_id = :station_id ORDER BY su.timestamp ASC')
|
||||
->setParameter('station_id', $this->station->id)
|
||||
->execute();
|
||||
|
||||
$this->view->urls = $urls;
|
||||
|
||||
$station_details = Station::getShortNameLookup();
|
||||
$station_categories = Station::getCategories();
|
||||
|
||||
$station_urls = array();
|
||||
foreach($station_details as $short_name => $station)
|
||||
{
|
||||
$station['url'] = ShortUrl::getFullUrl($short_name);
|
||||
$station['icon'] = $station_categories[$station['category']]['icon'];
|
||||
|
||||
$station_urls[$short_name] = $station;
|
||||
}
|
||||
|
||||
$this->view->station_urls = $station_urls;
|
||||
}
|
||||
|
||||
public function editAction()
|
||||
{
|
||||
$form = new \DF\Form($this->current_module_config->forms->url);
|
||||
|
||||
if ($this->_hasParam('id'))
|
||||
{
|
||||
$record = ShortUrl::getRepository()->findOneBy(array(
|
||||
'id' => $this->_getParam('id'),
|
||||
'station_id' => $this->station->id
|
||||
));
|
||||
$form->setDefaults($record->toArray());
|
||||
}
|
||||
|
||||
if(!empty($_POST) && $form->isValid($_POST))
|
||||
{
|
||||
$data = $form->getValues();
|
||||
|
||||
if (!($record instanceof ShortUrl))
|
||||
$record = new ShortUrl;
|
||||
|
||||
$record->station = $this->station;
|
||||
$record->fromArray($data);
|
||||
|
||||
if (!$record->checkUrl())
|
||||
throw new \DF\Exception\DisplayOnly('This URL is already taken! Please go back and try another.');
|
||||
|
||||
$record->save();
|
||||
|
||||
$this->alert('Record updated.', 'green');
|
||||
$this->redirectFromHere(array('action' => 'index', 'id' => NULL));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->_hasParam('id'))
|
||||
$this->view->headTitle('Edit Short URL');
|
||||
else
|
||||
$this->view->headTitle('Add Short URL');
|
||||
|
||||
$this->renderForm($form);
|
||||
}
|
||||
|
||||
public function deleteAction()
|
||||
{
|
||||
$id = (int)$this->_getParam('id');
|
||||
$record = ShortUrl::find($id);
|
||||
|
||||
if ($record instanceof ShortUrl)
|
||||
$record->delete();
|
||||
|
||||
$this->alert('<b>Record deleted.</b>', 'green');
|
||||
$this->redirectFromHere(array('action' => 'index', 'id' => NULL));
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<h4><a href="<?=$this->route(array('module' => 'stations', 'controller' => 'index', 'action' => 'index', 'station' => $this->station->id)) ?>"><i class="icon-arrow-left"></i> Station Center Home</a></h4>
|
|
@ -10,9 +10,9 @@ $this->headScript()
|
|||
$skin = \PVL\Customization::get('theme');
|
||||
if ($skin == "dark")
|
||||
$this->headScript()->appendFile(\DF\Url::content('highcharts/dark-blue.js'));
|
||||
?>
|
||||
|
||||
<?=$this->renderHere('header') ?>
|
||||
echo $this->renderHere('stationname', true);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
Highcharts.setOptions({
|
||||
|
@ -43,6 +43,9 @@ Highcharts.setOptions({
|
|||
<dt><a href="<?=$this->routeFromHere(array('action' => 'timeline')) ?>">Song Playback Timeline</a></dt>
|
||||
<dd>View the entire playback history of your station over the last 48 hours, along with the rise and fall of listener counts and special events.</dd>
|
||||
|
||||
<dt><a href="<?=$this->routeFromHere(array('controller' => 'urls', 'action' => 'index')) ?>">PVL Short URLs</a></dt>
|
||||
<dd>Manage the "pvlive.me" URL shortener links for your station.</dd>
|
||||
|
||||
<dt><a href="http://radio.ponyvillelive.com:2199/" target="_blank">CentovaCast Station Manager</a></dt>
|
||||
<dd>If your station is hosted on the PVL CentovaCast server, use this link to manage it.</dd>
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
<? if (count($this->stations) > 1): ?>
|
||||
<a class="btn pull-right fancybox fancybox.ajax" href="<?=$this->routeFromHere(array('controller' => 'index', 'action' => 'select', 'station' => NULL)) ?>"><i class="icon-random"></i> Change Active Station</a>
|
||||
<? endif; ?>
|
||||
|
||||
<h2><i class="<?=$this->station->getCategoryIcon() ?>"></i> <?=$this->station->name ?></h2>
|
|
@ -0,0 +1,87 @@
|
|||
<?php
|
||||
$this->headTitle('URL Shortener Management');
|
||||
$this->layout()->manual = true;
|
||||
|
||||
echo $this->renderHere('stationname', true);
|
||||
echo $this->renderHere('homelink', true);
|
||||
?>
|
||||
|
||||
<div class="row-fluid">
|
||||
<div class="span7">
|
||||
<h2>My Station's Links</h2>
|
||||
|
||||
<div class="buttons">
|
||||
<?=$this->button(array(
|
||||
'type' => 'link',
|
||||
'class' => 'btn-large success',
|
||||
'href' => $this->routeFromHere(array('action' => 'edit')),
|
||||
'icon' => 'icon-plus-sign',
|
||||
'text' => 'Add New URL',
|
||||
)) ?>
|
||||
</div>
|
||||
|
||||
<table class="table table-striped table-bordered table-condensed">
|
||||
<colgroup>
|
||||
<col width="20%" />
|
||||
<col width="40%" />
|
||||
<col width="40%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Actions</th>
|
||||
<th>Short URL</th>
|
||||
<th>Long URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<? foreach($this->urls as $record): ?>
|
||||
<tr class="input">
|
||||
<td class="center">
|
||||
<div class="btn-group">
|
||||
<?=$this->button(array(
|
||||
'type' => 'link',
|
||||
'href' => $this->routeFromHere(array('action' => 'edit', 'id' => $record['id'])),
|
||||
'icon' => 'icon-pencil',
|
||||
'text' => 'Edit',
|
||||
)) ?>
|
||||
<?=$this->button(array(
|
||||
'type' => 'link',
|
||||
'class' => 'btn-danger confirm-action',
|
||||
'href' => $this->routeFromHere(array('action' => 'delete', 'id' => $record['id'])),
|
||||
'icon' => 'icon-trash',
|
||||
'text' => 'Delete',
|
||||
)) ?>
|
||||
</div>
|
||||
</td>
|
||||
<td><a href="<?=$record->getUrl() ?>" target="_blank"><?=$record->getUrl() ?></a></td>
|
||||
<td><a href="<?=$record->long_url ?>" target="_blank"><?=$record->long_url ?></a></td>
|
||||
</tr>
|
||||
<? endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span5">
|
||||
<h2>System-Wide Short URLs</h2>
|
||||
|
||||
<table class="table table-striped table-bordered table-condensed">
|
||||
<colgroup>
|
||||
<col width="40%" />
|
||||
<col width="60%" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Station Name</th>
|
||||
<th>Station URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<? foreach($this->station_urls as $record): ?>
|
||||
<tr class="input">
|
||||
<td><i class="<?=$record['icon'] ?>"></i> <?=$record['name'] ?></td>
|
||||
<td><a href="<?=$record['url'] ?>" target="_blank"><?=$record['url'] ?></a></td>
|
||||
</tr>
|
||||
<? endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
|
@ -1,8 +1,9 @@
|
|||
<?php
|
||||
$this->headTitle('New Station Intake Voting');
|
||||
?>
|
||||
|
||||
<h4><a href="<?=$this->routeFromHere(array('controller' => 'index', 'action' => 'index')) ?>"><i class="icon-arrow-left"></i> Station Center Home</a></h4>
|
||||
echo $this->renderHere('stationname', true);
|
||||
echo $this->renderHere('homelink', true);
|
||||
?>
|
||||
|
||||
<table class="table table-striped table-bordered table-condensed">
|
||||
<colgroup>
|
||||
|
|
|
@ -18,4 +18,10 @@
|
|||
# http://www.sxw.org.uk/computing/robots/check.html
|
||||
|
||||
User-agent: *
|
||||
Crawl-delay: 10
|
||||
Crawl-delay: 2
|
||||
|
||||
# Prevent GoogleBot from requesting tracks!
|
||||
Disallow: /station/request/*
|
||||
|
||||
# Allow all others.
|
||||
Allow: /
|
|
@ -156,7 +156,8 @@ function initPage(page) {
|
|||
|
||||
/* Disable submit button to prevent double submissions */
|
||||
$(page).find('form').submit(function(){
|
||||
$(this).find('input[type=submit],button[type=submit]').attr('disabled', 'disabled').addClass('disabled').val('Working...');
|
||||
if (!$(this).hasClass('no-disable'))
|
||||
$(this).find('input[type=submit],button[type=submit]').attr('disabled', 'disabled').addClass('disabled').val('Working...');
|
||||
});
|
||||
|
||||
/* Suppress the backspace key. */
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" ?>
|
||||
<cross-domain-policy>
|
||||
<allow-access-from domain="*" />
|
||||
</cross-domain-policy>
|
|
@ -0,0 +1,156 @@
|
|||
/*
|
||||
* Fullwidth Audio Player - Responsive Layout
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* Smartphones (portrait and landscape) ----------- */
|
||||
@media only screen
|
||||
and (min-device-width : 320px)
|
||||
and (max-device-width : 480px) {
|
||||
|
||||
#fap-meta-wrapper > p {
|
||||
margin-left: 45px !important;
|
||||
}
|
||||
|
||||
#fap-current-cover, #fap-cover-replacement, #fap-cover-replacement canvas, #fap-cover-replacement svg {
|
||||
max-width: 40px !important;
|
||||
max-height: 40px !important;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper > div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper > div:first-child {
|
||||
display: block;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#fap-current-title {
|
||||
font-size: 9px;
|
||||
line-height: 9px;
|
||||
}
|
||||
|
||||
#fap-social-links {
|
||||
margin-top: 2px;
|
||||
line-height: 6px;
|
||||
}
|
||||
|
||||
#fap-current-meta, #fap-social-links a {
|
||||
font-size: 6px;
|
||||
line-height: 8px;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-volume-bar, #fap-volume-sign, #fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Smartphones (portrait) ----------- */
|
||||
@media only screen
|
||||
and (max-width : 320px) {
|
||||
|
||||
#fap-main {
|
||||
width: 320px;
|
||||
}
|
||||
|
||||
#fap-meta-wrapper {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-volume-bar, #fap-volume-sign, #fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Smartphones (landscape) ----------- */
|
||||
@media only screen
|
||||
and (min-width : 321px) {
|
||||
|
||||
#fap-main {
|
||||
width: 480px;
|
||||
}
|
||||
|
||||
#fap-meta-wrapper {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-volume-bar, #fap-volume-sign, #fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* iPads (portrait) ----------- */
|
||||
@media only screen
|
||||
and (min-device-width : 768px)
|
||||
and (max-device-width : 1024px) {
|
||||
|
||||
#fap-main {
|
||||
margin-right: auto !important;
|
||||
margin-left: auto !important;
|
||||
width: 768px;
|
||||
}
|
||||
|
||||
#fap-meta-wrapper {
|
||||
width: 338px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper {
|
||||
width: 430px;
|
||||
}
|
||||
|
||||
#fap-current-title {
|
||||
font-size: 11px;
|
||||
line-height: 11px;
|
||||
}
|
||||
|
||||
#fap-current-meta, #fap-social-links a {
|
||||
font-size: 8px;
|
||||
line-height: 8px;
|
||||
}
|
||||
|
||||
#fap-social-links {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-volume-bar, #fap-volume-sign, #fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
display: block;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Desktops and laptops ----------- */
|
||||
@media only screen
|
||||
and (min-width : 1024px) {
|
||||
|
||||
#fap-main {
|
||||
width: 960px;
|
||||
}
|
||||
|
||||
#fap-meta-wrapper {
|
||||
width: 530px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper {
|
||||
width: 430px;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-volume-bar, #fap-volume-sign, #fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
display: block;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,360 @@
|
|||
/*
|
||||
* Fullwidth Audio Player V1.5
|
||||
* Author: Rafael Dery
|
||||
* Copyright 2011
|
||||
*
|
||||
* Only for the sale at the envato marketplaces
|
||||
*
|
||||
*/
|
||||
|
||||
/* Reset */
|
||||
|
||||
#fap-wrapper * {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none !important;
|
||||
line-height: 12px;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
|
||||
/* Wrapper */
|
||||
|
||||
#fap-wrapper {
|
||||
min-width: 100%;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
z-index: 100000;
|
||||
font-size: 10px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.fap-fullwidth {
|
||||
border-top: 1px solid;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
|
||||
.fap-boxed #fap-main {
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
#fap-wrapper-switcher {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 15px;
|
||||
line-height: 15px;
|
||||
left: 0;
|
||||
border: 1px solid;
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fap-bordered-top {
|
||||
-moz-border-radius-topleft: 5px;
|
||||
-moz-border-radius-topright: 5px;
|
||||
-moz-border-radius-bottomright: 0px;
|
||||
-moz-border-radius-bottomleft: 0px;
|
||||
-webkit-border-radius: 5px 5px 0px 0px;
|
||||
border-radius: 5px 5px 0px 0px;
|
||||
}
|
||||
|
||||
.fap-bordered-bottom {
|
||||
-moz-border-radius-topleft: 0px;
|
||||
-moz-border-radius-topright: 0px;
|
||||
-moz-border-radius-bottomright: 5px;
|
||||
-moz-border-radius-bottomleft: 5px;
|
||||
-webkit-border-radius: 0px 0px 5px 5px;
|
||||
border-radius: 0px 0px 5px 5px;
|
||||
}
|
||||
|
||||
#fap-init-text {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.fap-wrapper-top #fap-init-text {
|
||||
bottom: 20px;
|
||||
}
|
||||
|
||||
.fap-wrapper-bottom #fap-init-text {
|
||||
top: 20px;
|
||||
}
|
||||
|
||||
#fap-main {
|
||||
width: 960px;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
||||
/* Meta Stuff */
|
||||
|
||||
#fap-meta-wrapper {
|
||||
width: 530px;
|
||||
float: left;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#fap-current-cover, #fap-cover-replacement {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
float: left;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
||||
-moz-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
#fap-current-title {
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#fap-current-meta {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#fap-current-meta a, #fap-current-meta a:visited {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
#fap-current-meta a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#fap-social-links {
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
#fap-social-links a {
|
||||
font-size: 10px;
|
||||
margin-right: 10px;
|
||||
float: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#fap-social-links a.fap-soundcloud-link {
|
||||
background: url(../images/fwap/sc_logo_dark.png) no-repeat;
|
||||
width: 78px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
|
||||
/* Main UI */
|
||||
|
||||
#fap-ui-wrapper {
|
||||
width: 430px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper > div, #fap-ui-wrapper > a {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#fap-ui-nav {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper > div {
|
||||
margin-right: 11px;
|
||||
}
|
||||
|
||||
#fap-ui-wrapper > div:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#fap-ui-nav > a {
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
position: absolute;
|
||||
-webkit-border-radius: 100%;
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
#fap-ui-nav #fap-previous {
|
||||
background-image: url(../images/fwap/previous.png);
|
||||
background-position: 5px 12px;
|
||||
top: 5px;
|
||||
left: 0;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
#fap-ui-nav #fap-next {
|
||||
background-image: url(../images/fwap/next.png);
|
||||
background-position: 12px 12px;
|
||||
top: 5px;
|
||||
left: 50px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
#fap-ui-nav #fap-play-pause {
|
||||
top: 0;
|
||||
left: 20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
z-index: 3;
|
||||
}
|
||||
|
||||
#fap-ui-nav .fap-play {
|
||||
background-image: url(../images/fwap/play.png);
|
||||
background-position: 15px 11px;
|
||||
}
|
||||
|
||||
#fap-ui-nav .fap-pause {
|
||||
background-image: url(../images/fwap/pause.png);
|
||||
background-position: 16px 12px;
|
||||
}
|
||||
|
||||
#fap-time-bar {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#fap-time-bar div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#fap-time-bar div, #fap-volume-bar, #fap-volume-bar div {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#fap-time-bar div {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
#fap-time-bar span {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#fap-volume-bar div {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#fap-time-bar #fap-current-time {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#fap-time-bar #fap-total-time {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#fap-volume-bar {
|
||||
margin-right: 5px !important;
|
||||
}
|
||||
|
||||
#fap-volume-sign {
|
||||
background-image: url(../images/fwap/volume.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 3px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
#fap-playlist-toggle {
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
|
||||
#fap-time-bar, #fap-time-bar div, #fap-volume-bar, #fap-volume-bar div {
|
||||
height: 6px;
|
||||
-webkit-border-radius: 8px;
|
||||
-moz-border-radius: 8px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
|
||||
/* Playlist Stuff */
|
||||
|
||||
#fap-playlist-toggle, #fap-playlist-shuffle {
|
||||
background-repeat: no-repeat;
|
||||
display: block;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
-webkit-border-radius: 100%;
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
#fap-playlist-toggle {
|
||||
background-image: url(../images/fwap/playlist.png);
|
||||
background-position: 7px 7px;
|
||||
}
|
||||
|
||||
#fap-playlist-shuffle {
|
||||
background-image: url(../images/fwap/shuffle.png);
|
||||
background-position: 5px 7px;
|
||||
}
|
||||
|
||||
#fap-playlist {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#fap-playlist li {
|
||||
line-height: 20px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#fap-playlist li img, #fap-playlist li .fap-cover-replace-small {
|
||||
text-align: center;
|
||||
float: left;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#fap-playlist li > span {
|
||||
float: left;
|
||||
line-height: 20px;
|
||||
margin-left: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#fap-playlist li span:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#fap-playlist li .fap-remove-track {
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.fap-xml-playlist span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Popup Skin */
|
||||
|
||||
.fap-popup-skin #fap-wrapper-switcher {
|
||||
display: none;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Soundcloud */
|
||||
.sc-player-engine-container{
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
position: fixed;
|
||||
top: -200px;
|
||||
left: -200px;
|
||||
}
|
||||
|
||||
/* Helper */
|
||||
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
|
||||
.clearfix:after { clear: both; }
|
||||
.clearfix { zoom: 1; }
|
||||
.clear {clear: both;}
|
|
@ -0,0 +1,94 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Fullwidth Audio Player</title>
|
||||
|
||||
<!-- Style sheets -->
|
||||
<link rel="stylesheet" type="text/css" href="css/jquery.fullwidthAudioPlayer.css" />
|
||||
<style type="text/css">
|
||||
|
||||
/* RESET */
|
||||
html, body, div, span, applet, object, iframe, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* SET HERE YOUR BACKGROUND COLOR OF THE POPUP WINDOW */
|
||||
body {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<!-- Include js files -->
|
||||
<script src="js/jquery.min.js" type="text/javascript"></script>
|
||||
<script src="js/jquery-ui.js" type="text/javascript"></script>
|
||||
<script src="js/soundmanager2-nodebug-jsmin.js" type="text/javascript"></script>
|
||||
<script src="http://connect.soundcloud.com/sdk.js"></script>
|
||||
<script src="js/amplify.min.js"></script>
|
||||
<script src="js/jquery.fullwidthAudioPlayer.min.js" type="text/javascript"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
//DO NOT CHANGE ANYTHING FROM THIS JAVASCRIPT CODE
|
||||
|
||||
soundManager.url = 'swf/';
|
||||
soundManager.flashVersion = 9;
|
||||
soundManager.useHTML5Audio = true;
|
||||
soundManager.debugMode = false;
|
||||
|
||||
//let target window know that popout window is openend
|
||||
function notifyOpener() {
|
||||
//close popout when target window gets closed, comment the next line if you dont want that
|
||||
if(!self.opener) {
|
||||
self.opener.fapReady = false;
|
||||
self.close();
|
||||
}
|
||||
|
||||
if(self.opener || !self.opener.fapPopupWin) self.opener.fapPopupWin = self;
|
||||
|
||||
}
|
||||
setInterval( notifyOpener, 300 );
|
||||
self.focus();
|
||||
|
||||
//functions that will be called from the target window
|
||||
function initPlayer(opts, html) {
|
||||
opts.wrapperPosition = 'bottom';
|
||||
$('#fap-popup').html(html).fullwidthAudioPlayer(opts);
|
||||
}
|
||||
|
||||
function addTrack(trackUrl,title,meta,cover,linkUrl, playIt) {
|
||||
$.fullwidthAudioPlayer.addTrack(trackUrl, title, meta, cover, linkUrl, playIt);
|
||||
}
|
||||
|
||||
jQuery(document).ready(function(){
|
||||
$('#fap-popup').bind('onFapReady', function(evt, trackData) {
|
||||
self.opener.fapReady = true;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<!-- Fancy Music Player Container -->
|
||||
<div id="fap-popup"></div>
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 962 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 962 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 940 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,81 @@
|
|||
/** @license
|
||||
*
|
||||
* SoundManager 2: JavaScript Sound for the Web
|
||||
* ----------------------------------------------
|
||||
* http://schillmania.com/projects/soundmanager2/
|
||||
*
|
||||
* Copyright (c) 2007, Scott Schiller. All rights reserved.
|
||||
* Code provided under the BSD License:
|
||||
* http://schillmania.com/projects/soundmanager2/license.txt
|
||||
*
|
||||
* V2.97a.20130512
|
||||
*/
|
||||
(function(l,h){function V(V,la){function W(b){return c.preferFlash&&D&&!c.ignoreFlash&&c.flash[b]!==h&&c.flash[b]}function r(b){return function(c){var d=this._s;return!d||!d._a?null:b.call(this,c)}}this.setupOptions={url:V||null,flashVersion:8,debugMode:!0,debugFlash:!1,useConsole:!0,consoleOnly:!0,waitForWindowLoad:!1,bgColor:"#ffffff",useHighPerformance:!1,flashPollingInterval:null,html5PollingInterval:null,flashLoadTimeout:1E3,wmode:null,allowScriptAccess:"always",useFlashBlock:!1,useHTML5Audio:!0,
|
||||
html5Test:/^(probably|maybe)$/i,preferFlash:!0,noSWFCache:!1,idPrefix:"sound"};this.defaultOptions={autoLoad:!1,autoPlay:!1,from:null,loops:1,onid3:null,onload:null,whileloading:null,onplay:null,onpause:null,onresume:null,whileplaying:null,onposition:null,onstop:null,onfailure:null,onfinish:null,multiShot:!0,multiShotEvents:!1,position:null,pan:0,stream:!0,to:null,type:null,usePolicyFile:!1,volume:100};this.flash9Options={isMovieStar:null,usePeakData:!1,useWaveformData:!1,useEQData:!1,onbufferchange:null,
|
||||
ondataerror:null};this.movieStarOptions={bufferTime:3,serverURL:null,onconnect:null,duration:null};this.audioFormats={mp3:{type:['audio/mpeg; codecs\x3d"mp3"',"audio/mpeg","audio/mp3","audio/MPA","audio/mpa-robust"],required:!0},mp4:{related:["aac","m4a","m4b"],type:['audio/mp4; codecs\x3d"mp4a.40.2"',"audio/aac","audio/x-m4a","audio/MP4A-LATM","audio/mpeg4-generic"],required:!1},ogg:{type:["audio/ogg; codecs\x3dvorbis"],required:!1},opus:{type:["audio/ogg; codecs\x3dopus","audio/opus"],required:!1},
|
||||
wav:{type:['audio/wav; codecs\x3d"1"',"audio/wav","audio/wave","audio/x-wav"],required:!1}};this.movieID="sm2-container";this.id=la||"sm2movie";this.debugID="soundmanager-debug";this.debugURLParam=/([#?&])debug=1/i;this.versionNumber="V2.97a.20130512";this.altURL=this.movieURL=this.version=null;this.enabled=this.swfLoaded=!1;this.oMC=null;this.sounds={};this.soundIDs=[];this.didFlashBlock=this.muted=!1;this.filePattern=null;this.filePatterns={flash8:/\.mp3(\?.*)?$/i,flash9:/\.mp3(\?.*)?$/i};this.features=
|
||||
{buffering:!1,peakData:!1,waveformData:!1,eqData:!1,movieStar:!1};this.sandbox={};this.html5={usingFlash:null};this.flash={};this.ignoreFlash=this.html5Only=!1;var Ja,c=this,Ka=null,k=null,X,p=navigator.userAgent,La=l.location.href.toString(),n=document,ma,Ma,na,m,u=[],L=!1,M=!1,q=!1,x=!1,oa=!1,N,w,pa,Y,qa,E,F,G,Na,ra,Z,sa,$,ta,H,ua,O,va,aa,I,Oa,wa,Pa,xa,Qa,P=null,ya=null,Q,za,J,ba,ca,s,R=!1,Aa=!1,Ra,Sa,Ta,da=0,S=null,ea,Ua=[],fa,v=null,Va,ga,T,y,ha,Ba,Wa,t,fb=Array.prototype.slice,z=!1,Ca,D,Da,Xa,
|
||||
B,ia,Ya=0,U=p.match(/(ipad|iphone|ipod)/i),Za=p.match(/android/i),C=p.match(/msie/i),gb=p.match(/webkit/i),ja=p.match(/safari/i)&&!p.match(/chrome/i),Ea=p.match(/opera/i),hb=p.match(/firefox/i),Fa=p.match(/(mobile|pre\/|xoom)/i)||U||Za,$a=!La.match(/usehtml5audio/i)&&!La.match(/sm2\-ignorebadua/i)&&ja&&!p.match(/silk/i)&&p.match(/OS X 10_6_([3-7])/i),Ga=n.hasFocus!==h?n.hasFocus():null,ka=ja&&(n.hasFocus===h||!n.hasFocus()),ab=!ka,bb=/(mp3|mp4|mpa|m4a|m4b)/i,Ha=n.location?n.location.protocol.match(/http/i):
|
||||
null,cb=!Ha?"http://":"",db=/^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|m4b|mp4v|3gp|3g2)\s*(?:$|;)/i,eb="mpeg4 aac flv mov mp4 m4v f4v m4a m4b mp4v 3gp 3g2".split(" "),ib=RegExp("\\.("+eb.join("|")+")(\\?.*)?$","i");this.mimePattern=/^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i;this.useAltURL=!Ha;var Ia;try{Ia=Audio!==h&&(Ea&&opera!==h&&10>opera.version()?new Audio(null):new Audio).canPlayType!==h}catch(jb){Ia=!1}this.hasHTML5=Ia;this.setup=function(b){var e=!c.url;b!==h&&q&&v&&c.ok();pa(b);
|
||||
b&&(e&&(O&&b.url!==h)&&c.beginDelayedInit(),!O&&(b.url!==h&&"complete"===n.readyState)&&setTimeout(H,1));return c};this.supported=this.ok=function(){return v?q&&!x:c.useHTML5Audio&&c.hasHTML5};this.getMovie=function(b){return X(b)||n[b]||l[b]};this.createSound=function(b,e){function d(){a=ba(a);c.sounds[a.id]=new Ja(a);c.soundIDs.push(a.id);return c.sounds[a.id]}var a,f=null;if(!q||!c.ok())return!1;e!==h&&(b={id:b,url:e});a=w(b);a.url=ea(a.url);void 0===a.id&&(a.id=c.setupOptions.idPrefix+Ya++);if(s(a.id,
|
||||
!0))return c.sounds[a.id];if(ga(a))f=d(),f._setup_html5(a);else{if(c.html5Only||c.html5.usingFlash&&a.url&&a.url.match(/data\:/i))return d();8<m&&null===a.isMovieStar&&(a.isMovieStar=!(!a.serverURL&&!(a.type&&a.type.match(db)||a.url&&a.url.match(ib))));a=ca(a,void 0);f=d();8===m?k._createSound(a.id,a.loops||1,a.usePolicyFile):(k._createSound(a.id,a.url,a.usePeakData,a.useWaveformData,a.useEQData,a.isMovieStar,a.isMovieStar?a.bufferTime:!1,a.loops||1,a.serverURL,a.duration||null,a.autoPlay,!0,a.autoLoad,
|
||||
a.usePolicyFile),a.serverURL||(f.connected=!0,a.onconnect&&a.onconnect.apply(f)));!a.serverURL&&(a.autoLoad||a.autoPlay)&&f.load(a)}!a.serverURL&&a.autoPlay&&f.play();return f};this.destroySound=function(b,e){if(!s(b))return!1;var d=c.sounds[b],a;d._iO={};d.stop();d.unload();for(a=0;a<c.soundIDs.length;a++)if(c.soundIDs[a]===b){c.soundIDs.splice(a,1);break}e||d.destruct(!0);delete c.sounds[b];return!0};this.load=function(b,e){return!s(b)?!1:c.sounds[b].load(e)};this.unload=function(b){return!s(b)?
|
||||
!1:c.sounds[b].unload()};this.onposition=this.onPosition=function(b,e,d,a){return!s(b)?!1:c.sounds[b].onposition(e,d,a)};this.clearOnPosition=function(b,e,d){return!s(b)?!1:c.sounds[b].clearOnPosition(e,d)};this.start=this.play=function(b,e){var d=null,a=e&&!(e instanceof Object);if(!q||!c.ok())return!1;if(s(b,a))a&&(e={url:e});else{if(!a)return!1;a&&(e={url:e});e&&e.url&&(e.id=b,d=c.createSound(e).play())}null===d&&(d=c.sounds[b].play(e));return d};this.setPosition=function(b,e){return!s(b)?!1:c.sounds[b].setPosition(e)};
|
||||
this.stop=function(b){return!s(b)?!1:c.sounds[b].stop()};this.stopAll=function(){for(var b in c.sounds)c.sounds.hasOwnProperty(b)&&c.sounds[b].stop()};this.pause=function(b){return!s(b)?!1:c.sounds[b].pause()};this.pauseAll=function(){var b;for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].pause()};this.resume=function(b){return!s(b)?!1:c.sounds[b].resume()};this.resumeAll=function(){var b;for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].resume()};this.togglePause=function(b){return!s(b)?
|
||||
!1:c.sounds[b].togglePause()};this.setPan=function(b,e){return!s(b)?!1:c.sounds[b].setPan(e)};this.setVolume=function(b,e){return!s(b)?!1:c.sounds[b].setVolume(e)};this.mute=function(b){var e=0;b instanceof String&&(b=null);if(b)return!s(b)?!1:c.sounds[b].mute();for(e=c.soundIDs.length-1;0<=e;e--)c.sounds[c.soundIDs[e]].mute();return c.muted=!0};this.muteAll=function(){c.mute()};this.unmute=function(b){b instanceof String&&(b=null);if(b)return!s(b)?!1:c.sounds[b].unmute();for(b=c.soundIDs.length-
|
||||
1;0<=b;b--)c.sounds[c.soundIDs[b]].unmute();c.muted=!1;return!0};this.unmuteAll=function(){c.unmute()};this.toggleMute=function(b){return!s(b)?!1:c.sounds[b].toggleMute()};this.getMemoryUse=function(){var b=0;k&&8!==m&&(b=parseInt(k._getMemoryUse(),10));return b};this.disable=function(b){var e;b===h&&(b=!1);if(x)return!1;x=!0;for(e=c.soundIDs.length-1;0<=e;e--)Pa(c.sounds[c.soundIDs[e]]);N(b);t.remove(l,"load",F);return!0};this.canPlayMIME=function(b){var e;c.hasHTML5&&(e=T({type:b}));!e&&v&&(e=b&&
|
||||
c.ok()?!!(8<m&&b.match(db)||b.match(c.mimePattern)):null);return e};this.canPlayURL=function(b){var e;c.hasHTML5&&(e=T({url:b}));!e&&v&&(e=b&&c.ok()?!!b.match(c.filePattern):null);return e};this.canPlayLink=function(b){return b.type!==h&&b.type&&c.canPlayMIME(b.type)?!0:c.canPlayURL(b.href)};this.getSoundById=function(b,e){return!b?null:c.sounds[b]};this.onready=function(b,c){if("function"===typeof b)c||(c=l),qa("onready",b,c),E();else throw Q("needFunction","onready");return!0};this.ontimeout=function(b,
|
||||
c){if("function"===typeof b)c||(c=l),qa("ontimeout",b,c),E({type:"ontimeout"});else throw Q("needFunction","ontimeout");return!0};this._wD=this._writeDebug=function(b,c){return!0};this._debug=function(){};this.reboot=function(b,e){var d,a,f;for(d=c.soundIDs.length-1;0<=d;d--)c.sounds[c.soundIDs[d]].destruct();if(k)try{C&&(ya=k.innerHTML),P=k.parentNode.removeChild(k)}catch(h){}ya=P=v=k=null;c.enabled=O=q=R=Aa=L=M=x=z=c.swfLoaded=!1;c.soundIDs=[];c.sounds={};Ya=0;if(b)u=[];else for(d in u)if(u.hasOwnProperty(d)){a=
|
||||
0;for(f=u[d].length;a<f;a++)u[d][a].fired=!1}c.html5={usingFlash:null};c.flash={};c.html5Only=!1;c.ignoreFlash=!1;l.setTimeout(function(){ta();e||c.beginDelayedInit()},20);return c};this.reset=function(){return c.reboot(!0,!0)};this.getMoviePercent=function(){return k&&"PercentLoaded"in k?k.PercentLoaded():null};this.beginDelayedInit=function(){oa=!0;H();setTimeout(function(){if(Aa)return!1;aa();$();return Aa=!0},20);G()};this.destruct=function(){c.disable(!0)};Ja=function(b){var e,d,a=this,f,g,K,
|
||||
A,l,n,r=!1,p=[],q=0,v,x,u=null,y;d=e=null;this.sID=this.id=b.id;this.url=b.url;this._iO=this.instanceOptions=this.options=w(b);this.pan=this.options.pan;this.volume=this.options.volume;this.isHTML5=!1;this._a=null;y=this.url?!1:!0;this.id3={};this._debug=function(){};this.load=function(b){var e=null,d;b!==h?a._iO=w(b,a.options):(b=a.options,a._iO=b,u&&u!==a.url&&(a._iO.url=a.url,a.url=null));a._iO.url||(a._iO.url=a.url);a._iO.url=ea(a._iO.url);d=a.instanceOptions=a._iO;if(!d.url&&!a.url)return a;
|
||||
if(d.url===a.url&&0!==a.readyState&&2!==a.readyState)return 3===a.readyState&&d.onload&&ia(a,function(){d.onload.apply(a,[!!a.duration])}),a;a.loaded=!1;a.readyState=1;a.playState=0;a.id3={};if(ga(d))e=a._setup_html5(d),e._called_load||(a._html5_canplay=!1,a.url!==d.url&&(a._a.src=d.url,a.setPosition(0)),a._a.autobuffer="auto",a._a.preload="auto",a._a._called_load=!0,d.autoPlay&&a.play());else{if(c.html5Only||a._iO.url&&a._iO.url.match(/data\:/i))return a;try{a.isHTML5=!1,a._iO=ca(ba(d)),d=a._iO,
|
||||
8===m?k._load(a.id,d.url,d.stream,d.autoPlay,d.usePolicyFile):k._load(a.id,d.url,!!d.stream,!!d.autoPlay,d.loops||1,!!d.autoLoad,d.usePolicyFile)}catch(f){I({type:"SMSOUND_LOAD_JS_EXCEPTION",fatal:!0})}}a.url=d.url;return a};this.unload=function(){0!==a.readyState&&(a.isHTML5?(A(),a._a&&(a._a.pause(),u=ha(a._a))):8===m?k._unload(a.id,"about:blank"):k._unload(a.id),f());return a};this.destruct=function(b){a.isHTML5?(A(),a._a&&(a._a.pause(),ha(a._a),z||K(),a._a._s=null,a._a=null)):(a._iO.onfailure=
|
||||
null,k._destroySound(a.id));b||c.destroySound(a.id,!0)};this.start=this.play=function(b,e){var d,f,g,K,A;f=!0;f=null;e=e===h?!0:e;b||(b={});a.url&&(a._iO.url=a.url);a._iO=w(a._iO,a.options);a._iO=w(b,a._iO);a._iO.url=ea(a._iO.url);a.instanceOptions=a._iO;if(!a.isHTML5&&a._iO.serverURL&&!a.connected)return a.getAutoPlay()||a.setAutoPlay(!0),a;ga(a._iO)&&(a._setup_html5(a._iO),l());1===a.playState&&!a.paused&&(d=a._iO.multiShot,d||(a.isHTML5&&a.setPosition(a._iO.position),f=a));if(null!==f)return f;
|
||||
b.url&&b.url!==a.url&&(!a.readyState&&!a.isHTML5&&8===m&&y?y=!1:a.load(a._iO));a.loaded||(0===a.readyState?(!a.isHTML5&&!c.html5Only?(a._iO.autoPlay=!0,a.load(a._iO)):a.isHTML5?a.load(a._iO):f=a,a.instanceOptions=a._iO):2===a.readyState&&(f=a));if(null!==f)return f;!a.isHTML5&&(9===m&&0<a.position&&a.position===a.duration)&&(b.position=0);if(a.paused&&0<=a.position&&(!a._iO.serverURL||0<a.position))a.resume();else{a._iO=w(b,a._iO);if(null!==a._iO.from&&null!==a._iO.to&&0===a.instanceCount&&0===a.playState&&
|
||||
!a._iO.serverURL){d=function(){a._iO=w(b,a._iO);a.play(a._iO)};if(a.isHTML5&&!a._html5_canplay)a.load({oncanplay:d}),f=!1;else if(!a.isHTML5&&!a.loaded&&(!a.readyState||2!==a.readyState))a.load({onload:d}),f=!1;if(null!==f)return f;a._iO=x()}(!a.instanceCount||a._iO.multiShotEvents||a.isHTML5&&a._iO.multiShot&&!z||!a.isHTML5&&8<m&&!a.getAutoPlay())&&a.instanceCount++;a._iO.onposition&&0===a.playState&&n(a);a.playState=1;a.paused=!1;a.position=a._iO.position!==h&&!isNaN(a._iO.position)?a._iO.position:
|
||||
0;a.isHTML5||(a._iO=ca(ba(a._iO)));a._iO.onplay&&e&&(a._iO.onplay.apply(a),r=!0);a.setVolume(a._iO.volume,!0);a.setPan(a._iO.pan,!0);a.isHTML5?2>a.instanceCount?(l(),f=a._setup_html5(),a.setPosition(a._iO.position),f.play()):(g=new Audio(a._iO.url),K=function(){t.remove(g,"onended",K);a._onfinish(a);ha(g);g=null},A=function(){t.remove(g,"canplay",A);try{g.currentTime=a._iO.position/1E3}catch(b){}g.play()},t.add(g,"ended",K),a._iO.position?t.add(g,"canplay",A):g.play()):(f=k._start(a.id,a._iO.loops||
|
||||
1,9===m?a.position:a.position/1E3,a._iO.multiShot||!1),9===m&&!f&&a._iO.onplayerror&&a._iO.onplayerror.apply(a))}return a};this.stop=function(b){var c=a._iO;1===a.playState&&(a._onbufferchange(0),a._resetOnPosition(0),a.paused=!1,a.isHTML5||(a.playState=0),v(),c.to&&a.clearOnPosition(c.to),a.isHTML5?a._a&&(b=a.position,a.setPosition(0),a.position=b,a._a.pause(),a.playState=0,a._onTimer(),A()):(k._stop(a.id,b),c.serverURL&&a.unload()),a.instanceCount=0,a._iO={},c.onstop&&c.onstop.apply(a));return a};
|
||||
this.setAutoPlay=function(b){a._iO.autoPlay=b;a.isHTML5||(k._setAutoPlay(a.id,b),b&&!a.instanceCount&&1===a.readyState&&a.instanceCount++)};this.getAutoPlay=function(){return a._iO.autoPlay};this.setPosition=function(b){b===h&&(b=0);var c=a.isHTML5?Math.max(b,0):Math.min(a.duration||a._iO.duration,Math.max(b,0));a.position=c;b=a.position/1E3;a._resetOnPosition(a.position);a._iO.position=c;if(a.isHTML5){if(a._a){if(a._html5_canplay){if(a._a.currentTime!==b)try{a._a.currentTime=b,(0===a.playState||
|
||||
a.paused)&&a._a.pause()}catch(e){}}else if(b)return a;a.paused&&a._onTimer(!0)}}else b=9===m?a.position:b,a.readyState&&2!==a.readyState&&k._setPosition(a.id,b,a.paused||!a.playState,a._iO.multiShot);return a};this.pause=function(b){if(a.paused||0===a.playState&&1!==a.readyState)return a;a.paused=!0;a.isHTML5?(a._setup_html5().pause(),A()):(b||b===h)&&k._pause(a.id,a._iO.multiShot);a._iO.onpause&&a._iO.onpause.apply(a);return a};this.resume=function(){var b=a._iO;if(!a.paused)return a;a.paused=!1;
|
||||
a.playState=1;a.isHTML5?(a._setup_html5().play(),l()):(b.isMovieStar&&!b.serverURL&&a.setPosition(a.position),k._pause(a.id,b.multiShot));!r&&b.onplay?(b.onplay.apply(a),r=!0):b.onresume&&b.onresume.apply(a);return a};this.togglePause=function(){if(0===a.playState)return a.play({position:9===m&&!a.isHTML5?a.position:a.position/1E3}),a;a.paused?a.resume():a.pause();return a};this.setPan=function(b,c){b===h&&(b=0);c===h&&(c=!1);a.isHTML5||k._setPan(a.id,b);a._iO.pan=b;c||(a.pan=b,a.options.pan=b);return a};
|
||||
this.setVolume=function(b,e){b===h&&(b=100);e===h&&(e=!1);a.isHTML5?a._a&&(a._a.volume=Math.max(0,Math.min(1,b/100))):k._setVolume(a.id,c.muted&&!a.muted||a.muted?0:b);a._iO.volume=b;e||(a.volume=b,a.options.volume=b);return a};this.mute=function(){a.muted=!0;a.isHTML5?a._a&&(a._a.muted=!0):k._setVolume(a.id,0);return a};this.unmute=function(){a.muted=!1;var b=a._iO.volume!==h;a.isHTML5?a._a&&(a._a.muted=!1):k._setVolume(a.id,b?a._iO.volume:a.options.volume);return a};this.toggleMute=function(){return a.muted?
|
||||
a.unmute():a.mute()};this.onposition=this.onPosition=function(b,c,e){p.push({position:parseInt(b,10),method:c,scope:e!==h?e:a,fired:!1});return a};this.clearOnPosition=function(a,b){var c;a=parseInt(a,10);if(isNaN(a))return!1;for(c=0;c<p.length;c++)if(a===p[c].position&&(!b||b===p[c].method))p[c].fired&&q--,p.splice(c,1)};this._processOnPosition=function(){var b,c;b=p.length;if(!b||!a.playState||q>=b)return!1;for(b-=1;0<=b;b--)c=p[b],!c.fired&&a.position>=c.position&&(c.fired=!0,q++,c.method.apply(c.scope,
|
||||
[c.position]));return!0};this._resetOnPosition=function(a){var b,c;b=p.length;if(!b)return!1;for(b-=1;0<=b;b--)c=p[b],c.fired&&a<=c.position&&(c.fired=!1,q--);return!0};x=function(){var b=a._iO,c=b.from,e=b.to,d,f;f=function(){a.clearOnPosition(e,f);a.stop()};d=function(){if(null!==e&&!isNaN(e))a.onPosition(e,f)};null!==c&&!isNaN(c)&&(b.position=c,b.multiShot=!1,d());return b};n=function(){var b,c=a._iO.onposition;if(c)for(b in c)if(c.hasOwnProperty(b))a.onPosition(parseInt(b,10),c[b])};v=function(){var b,
|
||||
c=a._iO.onposition;if(c)for(b in c)c.hasOwnProperty(b)&&a.clearOnPosition(parseInt(b,10))};l=function(){a.isHTML5&&Ra(a)};A=function(){a.isHTML5&&Sa(a)};f=function(b){b||(p=[],q=0);r=!1;a._hasTimer=null;a._a=null;a._html5_canplay=!1;a.bytesLoaded=null;a.bytesTotal=null;a.duration=a._iO&&a._iO.duration?a._iO.duration:null;a.durationEstimate=null;a.buffered=[];a.eqData=[];a.eqData.left=[];a.eqData.right=[];a.failures=0;a.isBuffering=!1;a.instanceOptions={};a.instanceCount=0;a.loaded=!1;a.metadata={};
|
||||
a.readyState=0;a.muted=!1;a.paused=!1;a.peakData={left:0,right:0};a.waveformData={left:[],right:[]};a.playState=0;a.position=null;a.id3={}};f();this._onTimer=function(b){var c,f=!1,g={};if(a._hasTimer||b){if(a._a&&(b||(0<a.playState||1===a.readyState)&&!a.paused))c=a._get_html5_duration(),c!==e&&(e=c,a.duration=c,f=!0),a.durationEstimate=a.duration,c=1E3*a._a.currentTime||0,c!==d&&(d=c,f=!0),(f||b)&&a._whileplaying(c,g,g,g,g);return f}};this._get_html5_duration=function(){var b=a._iO;return(b=a._a&&
|
||||
a._a.duration?1E3*a._a.duration:b&&b.duration?b.duration:null)&&!isNaN(b)&&Infinity!==b?b:null};this._apply_loop=function(a,b){a.loop=1<b?"loop":""};this._setup_html5=function(b){b=w(a._iO,b);var c=z?Ka:a._a,e=decodeURI(b.url),d;z?e===decodeURI(Ca)&&(d=!0):e===decodeURI(u)&&(d=!0);if(c){if(c._s)if(z)c._s&&(c._s.playState&&!d)&&c._s.stop();else if(!z&&e===decodeURI(u))return a._apply_loop(c,b.loops),c;d||(f(!1),c.src=b.url,Ca=u=a.url=b.url,c._called_load=!1)}else a._a=b.autoLoad||b.autoPlay?new Audio(b.url):
|
||||
Ea&&10>opera.version()?new Audio(null):new Audio,c=a._a,c._called_load=!1,z&&(Ka=c);a.isHTML5=!0;a._a=c;c._s=a;g();a._apply_loop(c,b.loops);b.autoLoad||b.autoPlay?a.load():(c.autobuffer=!1,c.preload="auto");return c};g=function(){if(a._a._added_events)return!1;var b;a._a._added_events=!0;for(b in B)B.hasOwnProperty(b)&&a._a&&a._a.addEventListener(b,B[b],!1);return!0};K=function(){var b;a._a._added_events=!1;for(b in B)B.hasOwnProperty(b)&&a._a&&a._a.removeEventListener(b,B[b],!1)};this._onload=function(b){var c=
|
||||
!!b||!a.isHTML5&&8===m&&a.duration;a.loaded=c;a.readyState=c?3:2;a._onbufferchange(0);a._iO.onload&&ia(a,function(){a._iO.onload.apply(a,[c])});return!0};this._onbufferchange=function(b){if(0===a.playState||b&&a.isBuffering||!b&&!a.isBuffering)return!1;a.isBuffering=1===b;a._iO.onbufferchange&&a._iO.onbufferchange.apply(a);return!0};this._onsuspend=function(){a._iO.onsuspend&&a._iO.onsuspend.apply(a);return!0};this._onfailure=function(b,c,e){a.failures++;if(a._iO.onfailure&&1===a.failures)a._iO.onfailure(a,
|
||||
b,c,e)};this._onfinish=function(){var b=a._iO.onfinish;a._onbufferchange(0);a._resetOnPosition(0);a.instanceCount&&(a.instanceCount--,a.instanceCount||(v(),a.playState=0,a.paused=!1,a.instanceCount=0,a.instanceOptions={},a._iO={},A(),a.isHTML5&&(a.position=0)),(!a.instanceCount||a._iO.multiShotEvents)&&b&&ia(a,function(){b.apply(a)}))};this._whileloading=function(b,c,e,d){var f=a._iO;a.bytesLoaded=b;a.bytesTotal=c;a.duration=Math.floor(e);a.bufferLength=d;a.durationEstimate=!a.isHTML5&&!f.isMovieStar?
|
||||
f.duration?a.duration>f.duration?a.duration:f.duration:parseInt(a.bytesTotal/a.bytesLoaded*a.duration,10):a.duration;a.isHTML5||(a.buffered=[{start:0,end:a.duration}]);(3!==a.readyState||a.isHTML5)&&f.whileloading&&f.whileloading.apply(a)};this._whileplaying=function(b,c,e,d,f){var g=a._iO;if(isNaN(b)||null===b)return!1;a.position=Math.max(0,b);a._processOnPosition();!a.isHTML5&&8<m&&(g.usePeakData&&(c!==h&&c)&&(a.peakData={left:c.leftPeak,right:c.rightPeak}),g.useWaveformData&&(e!==h&&e)&&(a.waveformData=
|
||||
{left:e.split(","),right:d.split(",")}),g.useEQData&&(f!==h&&f&&f.leftEQ)&&(b=f.leftEQ.split(","),a.eqData=b,a.eqData.left=b,f.rightEQ!==h&&f.rightEQ&&(a.eqData.right=f.rightEQ.split(","))));1===a.playState&&(!a.isHTML5&&(8===m&&!a.position&&a.isBuffering)&&a._onbufferchange(0),g.whileplaying&&g.whileplaying.apply(a));return!0};this._oncaptiondata=function(b){a.captiondata=b;a._iO.oncaptiondata&&a._iO.oncaptiondata.apply(a,[b])};this._onmetadata=function(b,c){var e={},d,f;d=0;for(f=b.length;d<f;d++)e[b[d]]=
|
||||
c[d];a.metadata=e;a._iO.onmetadata&&a._iO.onmetadata.apply(a)};this._onid3=function(b,c){var e=[],d,f;d=0;for(f=b.length;d<f;d++)e[b[d]]=c[d];a.id3=w(a.id3,e);a._iO.onid3&&a._iO.onid3.apply(a)};this._onconnect=function(b){b=1===b;if(a.connected=b)a.failures=0,s(a.id)&&(a.getAutoPlay()?a.play(h,a.getAutoPlay()):a._iO.autoLoad&&a.load()),a._iO.onconnect&&a._iO.onconnect.apply(a,[b])};this._ondataerror=function(b){0<a.playState&&a._iO.ondataerror&&a._iO.ondataerror.apply(a)}};va=function(){return n.body||
|
||||
n._docElement||n.getElementsByTagName("div")[0]};X=function(b){return n.getElementById(b)};w=function(b,e){var d=b||{},a,f;a=e===h?c.defaultOptions:e;for(f in a)a.hasOwnProperty(f)&&d[f]===h&&(d[f]="object"!==typeof a[f]||null===a[f]?a[f]:w(d[f],a[f]));return d};ia=function(b,c){!b.isHTML5&&8===m?l.setTimeout(c,0):c()};Y={onready:1,ontimeout:1,defaultOptions:1,flash9Options:1,movieStarOptions:1};pa=function(b,e){var d,a=!0,f=e!==h,g=c.setupOptions;for(d in b)if(b.hasOwnProperty(d))if("object"!==typeof b[d]||
|
||||
null===b[d]||b[d]instanceof Array||b[d]instanceof RegExp)f&&Y[e]!==h?c[e][d]=b[d]:g[d]!==h?(c.setupOptions[d]=b[d],c[d]=b[d]):Y[d]===h?a=!1:c[d]instanceof Function?c[d].apply(c,b[d]instanceof Array?b[d]:[b[d]]):c[d]=b[d];else if(Y[d]===h)a=!1;else return pa(b[d],d);return a};t=function(){function b(a){a=fb.call(a);var b=a.length;d?(a[1]="on"+a[1],3<b&&a.pop()):3===b&&a.push(!1);return a}function c(b,e){var h=b.shift(),k=[a[e]];if(d)h[k](b[0],b[1]);else h[k].apply(h,b)}var d=l.attachEvent,a={add:d?
|
||||
"attachEvent":"addEventListener",remove:d?"detachEvent":"removeEventListener"};return{add:function(){c(b(arguments),"add")},remove:function(){c(b(arguments),"remove")}}}();B={abort:r(function(){}),canplay:r(function(){var b=this._s,c;if(b._html5_canplay)return!0;b._html5_canplay=!0;b._onbufferchange(0);c=b._iO.position!==h&&!isNaN(b._iO.position)?b._iO.position/1E3:null;if(b.position&&this.currentTime!==c)try{this.currentTime=c}catch(d){}b._iO._oncanplay&&b._iO._oncanplay()}),canplaythrough:r(function(){var b=
|
||||
this._s;b.loaded||(b._onbufferchange(0),b._whileloading(b.bytesLoaded,b.bytesTotal,b._get_html5_duration()),b._onload(!0))}),ended:r(function(){this._s._onfinish()}),error:r(function(){this._s._onload(!1)}),loadeddata:r(function(){var b=this._s;!b._loaded&&!ja&&(b.duration=b._get_html5_duration())}),loadedmetadata:r(function(){}),loadstart:r(function(){this._s._onbufferchange(1)}),play:r(function(){this._s._onbufferchange(0)}),playing:r(function(){this._s._onbufferchange(0)}),progress:r(function(b){var c=
|
||||
this._s,d,a,f=0,f=b.target.buffered;d=b.loaded||0;var g=b.total||1;c.buffered=[];if(f&&f.length){d=0;for(a=f.length;d<a;d++)c.buffered.push({start:1E3*f.start(d),end:1E3*f.end(d)});f=1E3*(f.end(0)-f.start(0));d=Math.min(1,f/(1E3*b.target.duration))}isNaN(d)||(c._onbufferchange(0),c._whileloading(d,g,c._get_html5_duration()),d&&(g&&d===g)&&B.canplaythrough.call(this,b))}),ratechange:r(function(){}),suspend:r(function(b){var c=this._s;B.progress.call(this,b);c._onsuspend()}),stalled:r(function(){}),
|
||||
timeupdate:r(function(){this._s._onTimer()}),waiting:r(function(){this._s._onbufferchange(1)})};ga=function(b){return!b||!b.type&&!b.url&&!b.serverURL?!1:b.serverURL||b.type&&W(b.type)?!1:b.type?T({type:b.type}):T({url:b.url})||c.html5Only||b.url.match(/data\:/i)};ha=function(b){var c;b&&(c=ja&&!U?null:hb?"about:blank":null,b.src=c,void 0!==b._called_unload&&(b._called_load=!1));z&&(Ca=null);return c};T=function(b){if(!c.useHTML5Audio||!c.hasHTML5)return!1;var e=b.url||null;b=b.type||null;var d=c.audioFormats,
|
||||
a;if(b&&c.html5[b]!==h)return c.html5[b]&&!W(b);if(!y){y=[];for(a in d)d.hasOwnProperty(a)&&(y.push(a),d[a].related&&(y=y.concat(d[a].related)));y=RegExp("\\.("+y.join("|")+")(\\?.*)?$","i")}a=e?e.toLowerCase().match(y):null;!a||!a.length?b&&(e=b.indexOf(";"),a=(-1!==e?b.substr(0,e):b).substr(6)):a=a[1];a&&c.html5[a]!==h?e=c.html5[a]&&!W(a):(b="audio/"+a,e=c.html5.canPlayType({type:b}),e=(c.html5[a]=e)&&c.html5[b]&&!W(b));return e};Wa=function(){function b(a){var b,d,f=b=!1;if(!e||"function"!==typeof e.canPlayType)return b;
|
||||
if(a instanceof Array){b=0;for(d=a.length;b<d;b++)if(c.html5[a[b]]||e.canPlayType(a[b]).match(c.html5Test))f=!0,c.html5[a[b]]=!0,c.flash[a[b]]=!!a[b].match(bb);b=f}else a=e&&"function"===typeof e.canPlayType?e.canPlayType(a):!1,b=!(!a||!a.match(c.html5Test));return b}if(!c.useHTML5Audio||!c.hasHTML5)return v=c.html5.usingFlash=!0,!1;var e=Audio!==h?Ea&&10>opera.version()?new Audio(null):new Audio:null,d,a,f={},g;g=c.audioFormats;for(d in g)if(g.hasOwnProperty(d)&&(a="audio/"+d,f[d]=b(g[d].type),f[a]=
|
||||
f[d],d.match(bb)?(c.flash[d]=!0,c.flash[a]=!0):(c.flash[d]=!1,c.flash[a]=!1),g[d]&&g[d].related))for(a=g[d].related.length-1;0<=a;a--)f["audio/"+g[d].related[a]]=f[d],c.html5[g[d].related[a]]=f[d],c.flash[g[d].related[a]]=f[d];f.canPlayType=e?b:null;c.html5=w(c.html5,f);c.html5.usingFlash=Va();v=c.html5.usingFlash;return!0};sa={};Q=function(){};ba=function(b){8===m&&(1<b.loops&&b.stream)&&(b.stream=!1);return b};ca=function(b,c){if(b&&!b.usePolicyFile&&(b.onid3||b.usePeakData||b.useWaveformData||
|
||||
b.useEQData))b.usePolicyFile=!0;return b};ma=function(){return!1};Pa=function(b){for(var c in b)b.hasOwnProperty(c)&&"function"===typeof b[c]&&(b[c]=ma)};xa=function(b){b===h&&(b=!1);(x||b)&&c.disable(b)};Qa=function(b){var e=null;if(b)if(b.match(/\.swf(\?.*)?$/i)){if(e=b.substr(b.toLowerCase().lastIndexOf(".swf?")+4))return b}else b.lastIndexOf("/")!==b.length-1&&(b+="/");b=(b&&-1!==b.lastIndexOf("/")?b.substr(0,b.lastIndexOf("/")+1):"./")+c.movieURL;c.noSWFCache&&(b+="?ts\x3d"+(new Date).getTime());
|
||||
return b};ra=function(){m=parseInt(c.flashVersion,10);8!==m&&9!==m&&(c.flashVersion=m=8);var b=c.debugMode||c.debugFlash?"_debug.swf":".swf";c.useHTML5Audio&&(!c.html5Only&&c.audioFormats.mp4.required&&9>m)&&(c.flashVersion=m=9);c.version=c.versionNumber+(c.html5Only?" (HTML5-only mode)":9===m?" (AS3/Flash 9)":" (AS2/Flash 8)");8<m?(c.defaultOptions=w(c.defaultOptions,c.flash9Options),c.features.buffering=!0,c.defaultOptions=w(c.defaultOptions,c.movieStarOptions),c.filePatterns.flash9=RegExp("\\.(mp3|"+
|
||||
eb.join("|")+")(\\?.*)?$","i"),c.features.movieStar=!0):c.features.movieStar=!1;c.filePattern=c.filePatterns[8!==m?"flash9":"flash8"];c.movieURL=(8===m?"soundmanager2.swf":"soundmanager2_flash9.swf").replace(".swf",b);c.features.peakData=c.features.waveformData=c.features.eqData=8<m};Oa=function(b,c){if(!k)return!1;k._setPolling(b,c)};wa=function(){};s=this.getSoundById;J=function(){var b=[];c.debugMode&&b.push("sm2_debug");c.debugFlash&&b.push("flash_debug");c.useHighPerformance&&b.push("high_performance");
|
||||
return b.join(" ")};za=function(){Q("fbHandler");var b=c.getMoviePercent(),e={type:"FLASHBLOCK"};if(c.html5Only)return!1;c.ok()?c.oMC&&(c.oMC.className=[J(),"movieContainer","swf_loaded"+(c.didFlashBlock?" swf_unblocked":"")].join(" ")):(v&&(c.oMC.className=J()+" movieContainer "+(null===b?"swf_timedout":"swf_error")),c.didFlashBlock=!0,E({type:"ontimeout",ignoreInit:!0,error:e}),I(e))};qa=function(b,c,d){u[b]===h&&(u[b]=[]);u[b].push({method:c,scope:d||null,fired:!1})};E=function(b){b||(b={type:c.ok()?
|
||||
"onready":"ontimeout"});if(!q&&b&&!b.ignoreInit||"ontimeout"===b.type&&(c.ok()||x&&!b.ignoreInit))return!1;var e={success:b&&b.ignoreInit?c.ok():!x},d=b&&b.type?u[b.type]||[]:[],a=[],f,e=[e],g=v&&!c.ok();b.error&&(e[0].error=b.error);b=0;for(f=d.length;b<f;b++)!0!==d[b].fired&&a.push(d[b]);if(a.length){b=0;for(f=a.length;b<f;b++)a[b].scope?a[b].method.apply(a[b].scope,e):a[b].method.apply(this,e),g||(a[b].fired=!0)}return!0};F=function(){l.setTimeout(function(){c.useFlashBlock&&za();E();"function"===
|
||||
typeof c.onload&&c.onload.apply(l);c.waitForWindowLoad&&t.add(l,"load",F)},1)};Da=function(){if(D!==h)return D;var b=!1,c=navigator,d=c.plugins,a,f=l.ActiveXObject;if(d&&d.length)(c=c.mimeTypes)&&(c["application/x-shockwave-flash"]&&c["application/x-shockwave-flash"].enabledPlugin&&c["application/x-shockwave-flash"].enabledPlugin.description)&&(b=!0);else if(f!==h&&!p.match(/MSAppHost/i)){try{a=new f("ShockwaveFlash.ShockwaveFlash")}catch(g){a=null}b=!!a}return D=b};Va=function(){var b,e,d=c.audioFormats;
|
||||
if(U&&p.match(/os (1|2|3_0|3_1)/i))c.hasHTML5=!1,c.html5Only=!0,c.oMC&&(c.oMC.style.display="none");else if(c.useHTML5Audio&&(!c.html5||!c.html5.canPlayType))c.hasHTML5=!1;if(c.useHTML5Audio&&c.hasHTML5)for(e in fa=!0,d)if(d.hasOwnProperty(e)&&d[e].required)if(c.html5.canPlayType(d[e].type)){if(c.preferFlash&&(c.flash[e]||c.flash[d[e].type]))b=!0}else fa=!1,b=!0;c.ignoreFlash&&(b=!1,fa=!0);c.html5Only=c.hasHTML5&&c.useHTML5Audio&&!b;return!c.html5Only};ea=function(b){var e,d,a=0;if(b instanceof Array){e=
|
||||
0;for(d=b.length;e<d;e++)if(b[e]instanceof Object){if(c.canPlayMIME(b[e].type)){a=e;break}}else if(c.canPlayURL(b[e])){a=e;break}b[a].url&&(b[a]=b[a].url);b=b[a]}return b};Ra=function(b){b._hasTimer||(b._hasTimer=!0,!Fa&&c.html5PollingInterval&&(null===S&&0===da&&(S=setInterval(Ta,c.html5PollingInterval)),da++))};Sa=function(b){b._hasTimer&&(b._hasTimer=!1,!Fa&&c.html5PollingInterval&&da--)};Ta=function(){var b;if(null!==S&&!da)return clearInterval(S),S=null,!1;for(b=c.soundIDs.length-1;0<=b;b--)c.sounds[c.soundIDs[b]].isHTML5&&
|
||||
c.sounds[c.soundIDs[b]]._hasTimer&&c.sounds[c.soundIDs[b]]._onTimer()};I=function(b){b=b!==h?b:{};"function"===typeof c.onerror&&c.onerror.apply(l,[{type:b.type!==h?b.type:null}]);b.fatal!==h&&b.fatal&&c.disable()};Xa=function(){if(!$a||!Da())return!1;var b=c.audioFormats,e,d;for(d in b)if(b.hasOwnProperty(d)&&("mp3"===d||"mp4"===d))if(c.html5[d]=!1,b[d]&&b[d].related)for(e=b[d].related.length-1;0<=e;e--)c.html5[b[d].related[e]]=!1};this._setSandboxType=function(b){};this._externalInterfaceOK=function(b){if(c.swfLoaded)return!1;
|
||||
c.swfLoaded=!0;ka=!1;$a&&Xa();setTimeout(na,C?100:1)};aa=function(b,e){function d(a,b){return'\x3cparam name\x3d"'+a+'" value\x3d"'+b+'" /\x3e'}if(L&&M)return!1;if(c.html5Only)return ra(),c.oMC=X(c.movieID),na(),M=L=!0,!1;var a=e||c.url,f=c.altURL||a,g=va(),k=J(),l=null,l=n.getElementsByTagName("html")[0],m,r,q,l=l&&l.dir&&l.dir.match(/rtl/i);b=b===h?c.id:b;ra();c.url=Qa(Ha?a:f);e=c.url;c.wmode=!c.wmode&&c.useHighPerformance?"transparent":c.wmode;if(null!==c.wmode&&(p.match(/msie 8/i)||!C&&!c.useHighPerformance)&&
|
||||
navigator.platform.match(/win32|win64/i))Ua.push(sa.spcWmode),c.wmode=null;g={name:b,id:b,src:e,quality:"high",allowScriptAccess:c.allowScriptAccess,bgcolor:c.bgColor,pluginspage:cb+"www.macromedia.com/go/getflashplayer",title:"JS/Flash audio component (SoundManager 2)",type:"application/x-shockwave-flash",wmode:c.wmode,hasPriority:"true"};c.debugFlash&&(g.FlashVars="debug\x3d1");c.wmode||delete g.wmode;if(C)a=n.createElement("div"),r=['\x3cobject id\x3d"'+b+'" data\x3d"'+e+'" type\x3d"'+g.type+'" title\x3d"'+
|
||||
g.title+'" classid\x3d"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase\x3d"'+cb+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version\x3d6,0,40,0"\x3e',d("movie",e),d("AllowScriptAccess",c.allowScriptAccess),d("quality",g.quality),c.wmode?d("wmode",c.wmode):"",d("bgcolor",c.bgColor),d("hasPriority","true"),c.debugFlash?d("FlashVars",g.FlashVars):"","\x3c/object\x3e"].join("");else for(m in a=n.createElement("embed"),g)g.hasOwnProperty(m)&&a.setAttribute(m,g[m]);wa();k=J();if(g=
|
||||
va())if(c.oMC=X(c.movieID)||n.createElement("div"),c.oMC.id)q=c.oMC.className,c.oMC.className=(q?q+" ":"movieContainer")+(k?" "+k:""),c.oMC.appendChild(a),C&&(m=c.oMC.appendChild(n.createElement("div")),m.className="sm2-object-box",m.innerHTML=r),M=!0;else{c.oMC.id=c.movieID;c.oMC.className="movieContainer "+k;m=k=null;c.useFlashBlock||(c.useHighPerformance?k={position:"fixed",width:"8px",height:"8px",bottom:"0px",left:"0px",overflow:"hidden"}:(k={position:"absolute",width:"6px",height:"6px",top:"-9999px",
|
||||
left:"-9999px"},l&&(k.left=Math.abs(parseInt(k.left,10))+"px")));gb&&(c.oMC.style.zIndex=1E4);if(!c.debugFlash)for(q in k)k.hasOwnProperty(q)&&(c.oMC.style[q]=k[q]);try{C||c.oMC.appendChild(a),g.appendChild(c.oMC),C&&(m=c.oMC.appendChild(n.createElement("div")),m.className="sm2-object-box",m.innerHTML=r),M=!0}catch(s){throw Error(Q("domError")+" \n"+s.toString());}}return L=!0};$=function(){if(c.html5Only)return aa(),!1;if(k||!c.url)return!1;k=c.getMovie(c.id);k||(P?(C?c.oMC.innerHTML=ya:c.oMC.appendChild(P),
|
||||
P=null,L=!0):aa(c.id,c.url),k=c.getMovie(c.id));"function"===typeof c.oninitmovie&&setTimeout(c.oninitmovie,1);return!0};G=function(){setTimeout(Na,1E3)};Na=function(){var b,e=!1;if(!c.url||R)return!1;R=!0;t.remove(l,"load",G);if(ka&&!Ga)return!1;q||(b=c.getMoviePercent(),0<b&&100>b&&(e=!0));setTimeout(function(){b=c.getMoviePercent();if(e)return R=!1,l.setTimeout(G,1),!1;!q&&ab&&(null===b?c.useFlashBlock||0===c.flashLoadTimeout?c.useFlashBlock&&za():!c.useFlashBlock&&fa?l.setTimeout(function(){c.setup({preferFlash:!1}).reboot();
|
||||
c.didFlashBlock=!0;c.beginDelayedInit()},1):E({type:"ontimeout",ignoreInit:!0}):0!==c.flashLoadTimeout&&xa(!0))},c.flashLoadTimeout)};Z=function(){if(Ga||!ka)return t.remove(l,"focus",Z),!0;Ga=ab=!0;R=!1;G();t.remove(l,"focus",Z);return!0};N=function(b){if(q)return!1;if(c.html5Only)return q=!0,F(),!0;var e=!0,d;if(!c.useFlashBlock||!c.flashLoadTimeout||c.getMoviePercent())q=!0,x&&(d={type:!D&&v?"NO_FLASH":"INIT_TIMEOUT"});if(x||b)c.useFlashBlock&&c.oMC&&(c.oMC.className=J()+" "+(null===c.getMoviePercent()?
|
||||
"swf_timedout":"swf_error")),E({type:"ontimeout",error:d,ignoreInit:!0}),I(d),e=!1;x||(c.waitForWindowLoad&&!oa?t.add(l,"load",F):F());return e};Ma=function(){var b,e=c.setupOptions;for(b in e)e.hasOwnProperty(b)&&(c[b]===h?c[b]=e[b]:c[b]!==e[b]&&(c.setupOptions[b]=c[b]))};na=function(){if(q)return!1;if(c.html5Only)return q||(t.remove(l,"load",c.beginDelayedInit),c.enabled=!0,N()),!0;$();try{k._externalInterfaceTest(!1),Oa(!0,c.flashPollingInterval||(c.useHighPerformance?10:50)),c.debugMode||k._disableDebug(),
|
||||
c.enabled=!0,c.html5Only||t.add(l,"unload",ma)}catch(b){return I({type:"JS_TO_FLASH_EXCEPTION",fatal:!0}),xa(!0),N(),!1}N();t.remove(l,"load",c.beginDelayedInit);return!0};H=function(){if(O)return!1;O=!0;Ma();wa();!D&&c.hasHTML5&&c.setup({useHTML5Audio:!0,preferFlash:!1});Wa();!D&&v&&(Ua.push(sa.needFlash),c.setup({flashLoadTimeout:1}));n.removeEventListener&&n.removeEventListener("DOMContentLoaded",H,!1);$();return!0};Ba=function(){"complete"===n.readyState&&(H(),n.detachEvent("onreadystatechange",
|
||||
Ba));return!0};ua=function(){oa=!0;t.remove(l,"load",ua)};ta=function(){if(Fa&&(c.setupOptions.useHTML5Audio=!0,c.setupOptions.preferFlash=!1,U||Za&&!p.match(/android\s2\.3/i)))U&&(c.ignoreFlash=!0),z=!0};ta();Da();t.add(l,"focus",Z);t.add(l,"load",G);t.add(l,"load",ua);n.addEventListener?n.addEventListener("DOMContentLoaded",H,!1):n.attachEvent?n.attachEvent("onreadystatechange",Ba):I({type:"NO_DOM2_EVENTS",fatal:!0})}var la=null;if(void 0===l.SM2_DEFER||!SM2_DEFER)la=new V;l.SoundManager=V;l.soundManager=
|
||||
la})(window);
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<playlists>
|
||||
|
||||
<playlist id="pl1">
|
||||
<track href="MP3/SOUNDCLOUD URL" title="YOUR TITLE" target="LINK TO SHARE ON FACEBOOK AND TWITTER" rel="IMAGE OF THE COVER">
|
||||
<meta>
|
||||
<![CDATA[ <a href="http://google.de" target="_blank">This is an optional text with a link</a> ]]>
|
||||
</meta>
|
||||
</track>
|
||||
<track href="http://soundcloud.com/radykal/favorites" />
|
||||
</playlist>
|
||||
|
||||
|
||||
</playlists>
|
||||
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
/** Author: Mark J Panaghiston * Version: 2.4.0 * Date: 5th June 2013 */
|
||||
(function(b,f){"function"===typeof define&&define.amd?define(["jquery"],f):b.jQuery?f(b.jQuery):f(b.Zepto)})(this,function(b,f){b.fn.jPlayer=function(a){var c="string"===typeof a,d=Array.prototype.slice.call(arguments,1),e=this;a=!c&&d.length?b.extend.apply(null,[!0,a].concat(d)):a;if(c&&"_"===a.charAt(0))return e;c?this.each(function(){var c=b(this).data("jPlayer"),h=c&&b.isFunction(c[a])?c[a].apply(c,d):c;if(h!==c&&h!==f)return e=h,!1}):this.each(function(){var c=b(this).data("jPlayer");c?c.option(a||
|
||||
{}):b(this).data("jPlayer",new b.jPlayer(a,this))});return e};b.jPlayer=function(a,c){if(arguments.length){this.element=b(c);this.options=b.extend(!0,{},this.options,a);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()});this._init()}};"function"!==typeof b.fn.stop&&(b.fn.stop=function(){});b.jPlayer.emulateMethods="load play pause";b.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate";b.jPlayer.emulateOptions="muted volume";b.jPlayer.reservedEvent=
|
||||
"ready flashreset resize repeat error warning";b.jPlayer.event={};b.each("ready flashreset resize repeat click error warning loadstart progress suspend abort emptied stalled play pause loadedmetadata loadeddata waiting playing canplay canplaythrough seeking seeked timeupdate ended ratechange durationchange volumechange".split(" "),function(){b.jPlayer.event[this]="jPlayer_"+this});b.jPlayer.htmlEvent="loadstart abort emptied stalled loadedmetadata loadeddata canplay canplaythrough ratechange".split(" ");
|
||||
b.jPlayer.pause=function(){b.each(b.jPlayer.prototype.instances,function(a,c){c.data("jPlayer").status.srcSet&&c.jPlayer("pause")})};b.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,sepHour:":",sepMin:":",sepSec:""};var l=function(){this.init()};l.prototype={init:function(){this.options={timeFormat:b.jPlayer.timeFormat}},time:function(a){var c=new Date(1E3*(a&&"number"===typeof a?a:0)),b=c.getUTCHours();a=this.options.timeFormat.showHour?c.getUTCMinutes():c.getUTCMinutes()+
|
||||
60*b;c=this.options.timeFormat.showMin?c.getUTCSeconds():c.getUTCSeconds()+60*a;b=this.options.timeFormat.padHour&&10>b?"0"+b:b;a=this.options.timeFormat.padMin&&10>a?"0"+a:a;c=this.options.timeFormat.padSec&&10>c?"0"+c:c;b=""+(this.options.timeFormat.showHour?b+this.options.timeFormat.sepHour:"");b+=this.options.timeFormat.showMin?a+this.options.timeFormat.sepMin:"";return b+=this.options.timeFormat.showSec?c+this.options.timeFormat.sepSec:""}};var m=new l;b.jPlayer.convertTime=function(a){return m.time(a)};
|
||||
b.jPlayer.uaBrowser=function(a){a=a.toLowerCase();var b=/(opera)(?:.*version)?[ \/]([\w.]+)/,d=/(msie) ([\w.]+)/,e=/(mozilla)(?:.*? rv:([\w.]+))?/;a=/(webkit)[ \/]([\w.]+)/.exec(a)||b.exec(a)||d.exec(a)||0>a.indexOf("compatible")&&e.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}};b.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),d=/(android)/,e=/(mobile)/;a=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/.exec(b)||[];b=/(ipad|playbook)/.exec(b)||!e.exec(b)&&d.exec(b)||
|
||||
[];a[1]&&(a[1]=a[1].replace(/\s/g,"_"));return{platform:a[1]||"",tablet:b[1]||""}};b.jPlayer.browser={};b.jPlayer.platform={};var j=b.jPlayer.uaBrowser(navigator.userAgent);j.browser&&(b.jPlayer.browser[j.browser]=!0,b.jPlayer.browser.version=j.version);j=b.jPlayer.uaPlatform(navigator.userAgent);j.platform&&(b.jPlayer.platform[j.platform]=!0,b.jPlayer.platform.mobile=!j.tablet,b.jPlayer.platform.tablet=!!j.tablet);b.jPlayer.getDocMode=function(){var a;b.jPlayer.browser.msie&&(document.documentMode?
|
||||
a=document.documentMode:(a=5,document.compatMode&&"CSS1Compat"===document.compatMode&&(a=7)));return a};b.jPlayer.browser.documentMode=b.jPlayer.getDocMode();b.jPlayer.nativeFeatures={init:function(){var a=document,b=a.createElement("video"),d={w3c:"fullscreenEnabled fullscreenElement requestFullscreen exitFullscreen fullscreenchange fullscreenerror".split(" "),moz:"mozFullScreenEnabled mozFullScreenElement mozRequestFullScreen mozCancelFullScreen mozfullscreenchange mozfullscreenerror".split(" "),
|
||||
webkit:" webkitCurrentFullScreenElement webkitRequestFullScreen webkitCancelFullScreen webkitfullscreenchange ".split(" "),webkitVideo:"webkitSupportsFullscreen webkitDisplayingFullscreen webkitEnterFullscreen webkitExitFullscreen ".split(" ")},e=["w3c","moz","webkit","webkitVideo"],g,h;this.fullscreen=b={support:{w3c:!!a[d.w3c[0]],moz:!!a[d.moz[0]],webkit:"function"===typeof a[d.webkit[3]],webkitVideo:"function"===typeof b[d.webkitVideo[2]]},used:{}};g=0;for(h=e.length;g<h;g++){var f=e[g];if(b.support[f]){b.spec=
|
||||
f;b.used[f]=!0;break}}if(b.spec){var k=d[b.spec];b.api={fullscreenEnabled:!0,fullscreenElement:function(b){b=b?b:a;return b[k[1]]},requestFullscreen:function(a){return a[k[2]]()},exitFullscreen:function(b){b=b?b:a;return b[k[3]]()}};b.event={fullscreenchange:k[4],fullscreenerror:k[5]}}else b.api={fullscreenEnabled:!1,fullscreenElement:function(){return null},requestFullscreen:function(){},exitFullscreen:function(){}},b.event={}}};b.jPlayer.nativeFeatures.init();b.jPlayer.focus=null;b.jPlayer.keyIgnoreElementNames=
|
||||
"INPUT TEXTAREA";var n=function(a){var c=b.jPlayer.focus,d;c&&(b.each(b.jPlayer.keyIgnoreElementNames.split(/\s+/g),function(b,c){if(a.target.nodeName.toUpperCase()===c.toUpperCase())return d=!0,!1}),d||b.each(c.options.keyBindings,function(d,g){if(g&&a.which===g.key&&b.isFunction(g.fn))return a.preventDefault(),g.fn(c),!1}))};b.jPlayer.keys=function(a){b(document.documentElement).unbind("keydown.jPlayer");a&&b(document.documentElement).bind("keydown.jPlayer",n)};b.jPlayer.keys(!0);b.jPlayer.prototype=
|
||||
{count:0,version:{script:"2.4.0",needFlash:"2.4.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",preload:"metadata",volume:0.8,muted:!1,wmode:"opaque",backgroundColor:"#000000",cssSelectorAncestor:"#jp_container_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",volumeMax:".jp-volume-max",
|
||||
currentTime:".jp-current-time",duration:".jp-duration",fullScreen:".jp-full-screen",restoreScreen:".jp-restore-screen",repeat:".jp-repeat",repeatOff:".jp-repeat-off",gui:".jp-gui",noSolution:".jp-no-solution"},smoothPlayBar:!1,fullScreen:!1,fullWindow:!1,autohide:{restored:!1,full:!0,fadeIn:200,fadeOut:600,hold:1E3},loop:!1,repeat:function(a){a.jPlayer.options.loop?b(this).unbind(".jPlayerRepeat").bind(b.jPlayer.event.ended+".jPlayer.jPlayerRepeat",function(){b(this).jPlayer("play")}):b(this).unbind(".jPlayerRepeat")},
|
||||
nativeVideoControls:{},noFullWindow:{msie:/msie [0-6]\./,ipad:/ipad.*?os [0-4]\./,iphone:/iphone/,ipod:/ipod/,android_pad:/android [0-3]\.(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/},noVolume:{ipad:/ipad/,iphone:/iphone/,ipod:/ipod/,android_pad:/android(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/,playbook:/playbook/},timeFormat:{},
|
||||
keyEnabled:!1,audioFullScreen:!1,keyBindings:{play:{key:32,fn:function(a){a.status.paused?a.play():a.pause()}},fullScreen:{key:13,fn:function(a){(a.status.video||a.options.audioFullScreen)&&a._setOption("fullScreen",!a.options.fullScreen)}},muted:{key:8,fn:function(a){a._muted(!a.options.muted)}},volumeUp:{key:38,fn:function(a){a.volume(a.options.volume+0.1)}},volumeDown:{key:40,fn:function(a){a.volume(a.options.volume-0.1)}}},verticalVolume:!1,idPrefix:"jp",noConflict:"jQuery",emulateHtml:!1,errorAlerts:!1,
|
||||
warningAlerts:!1},optionsAudio:{size:{width:"0px",height:"0px",cssClass:""},sizeFull:{width:"0px",height:"0px",cssClass:""}},optionsVideo:{size:{width:"480px",height:"270px",cssClass:"jp-video-270p"},sizeFull:{width:"100%",height:"100%",cssClass:"jp-video-full"}},instances:{},status:{src:"",media:{},paused:!0,format:{},formatType:"",waitForPlay:!0,waitForLoad:!0,srcSet:!1,video:!1,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0,videoWidth:0,videoHeight:0,readyState:0,
|
||||
networkState:0,playbackRate:1,ended:0},internal:{ready:!1},solution:{html:!0,flash:!0},format:{mp3:{codec:'audio/mpeg; codecs="mp3"',flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis"',flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},
|
||||
rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},_init:function(){var a=this;this.element.empty();this.status=
|
||||
b.extend({},this.status);this.internal=b.extend({},this.internal);this.options.timeFormat=b.extend({},b.jPlayer.timeFormat,this.options.timeFormat);this.internal.cmdsIgnored=b.jPlayer.platform.ipad||b.jPlayer.platform.iphone||b.jPlayer.platform.ipod;this.internal.domNode=this.element.get(0);this.options.keyEnabled&&!b.jPlayer.focus&&(b.jPlayer.focus=this);this.formats=[];this.solutions=[];this.require={};this.htmlElement={};this.html={};this.html.audio={};this.html.video={};this.flash={};this.css=
|
||||
{};this.css.cs={};this.css.jq={};this.ancestorJq=[];this.options.volume=this._limitValue(this.options.volume,0,1);b.each(this.options.supplied.toLowerCase().split(","),function(c,d){var e=d.replace(/^\s+|\s+$/g,"");if(a.format[e]){var f=!1;b.each(a.formats,function(a,b){if(e===b)return f=!0,!1});f||a.formats.push(e)}});b.each(this.options.solution.toLowerCase().split(","),function(c,d){var e=d.replace(/^\s+|\s+$/g,"");if(a.solution[e]){var f=!1;b.each(a.solutions,function(a,b){if(e===b)return f=!0,
|
||||
!1});f||a.solutions.push(e)}});this.internal.instance="jp_"+this.count;this.instances[this.internal.instance]=this.element;this.element.attr("id")||this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count);this.internal.self=b.extend({},{id:this.element.attr("id"),jq:this.element});this.internal.audio=b.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:f});this.internal.video=b.extend({},{id:this.options.idPrefix+"_video_"+this.count,jq:f});this.internal.flash=b.extend({},{id:this.options.idPrefix+
|
||||
"_flash_"+this.count,jq:f,swf:this.options.swfPath+(".swf"!==this.options.swfPath.toLowerCase().slice(-4)?(this.options.swfPath&&"/"!==this.options.swfPath.slice(-1)?"/":"")+"Jplayer.swf":"")});this.internal.poster=b.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:f});b.each(b.jPlayer.event,function(b,c){a.options[b]!==f&&(a.element.bind(c+".jPlayer",a.options[b]),a.options[b]=f)});this.require.audio=!1;this.require.video=!1;b.each(this.formats,function(b,c){a.require[a.format[c].media]=
|
||||
!0});this.options=this.require.video?b.extend(!0,{},this.optionsVideo,this.options):b.extend(!0,{},this.optionsAudio,this.options);this._setSize();this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls);this.status.noFullWindow=this._uaBlocklist(this.options.noFullWindow);this.status.noVolume=this._uaBlocklist(this.options.noVolume);b.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled&&this._fullscreenAddEventListeners();this._restrictNativeVideoControls();this.htmlElement.poster=
|
||||
document.createElement("img");this.htmlElement.poster.id=this.internal.poster.id;this.htmlElement.poster.onload=function(){(!a.status.video||a.status.waitForPlay)&&a.internal.poster.jq.show()};this.element.append(this.htmlElement.poster);this.internal.poster.jq=b("#"+this.internal.poster.id);this.internal.poster.jq.css({width:this.status.width,height:this.status.height});this.internal.poster.jq.hide();this.internal.poster.jq.bind("click.jPlayer",function(){a._trigger(b.jPlayer.event.click)});this.html.audio.available=
|
||||
!1;this.require.audio&&(this.htmlElement.audio=document.createElement("audio"),this.htmlElement.audio.id=this.internal.audio.id,this.html.audio.available=!!this.htmlElement.audio.canPlayType&&this._testCanPlayType(this.htmlElement.audio));this.html.video.available=!1;this.require.video&&(this.htmlElement.video=document.createElement("video"),this.htmlElement.video.id=this.internal.video.id,this.html.video.available=!!this.htmlElement.video.canPlayType&&this._testCanPlayType(this.htmlElement.video));
|
||||
this.flash.available=this._checkForFlash(10.1);this.html.canPlay={};this.flash.canPlay={};b.each(this.formats,function(b,c){a.html.canPlay[c]=a.html[a.format[c].media].available&&""!==a.htmlElement[a.format[c].media].canPlayType(a.format[c].codec);a.flash.canPlay[c]=a.format[c].flashCanPlay&&a.flash.available});this.html.desired=!1;this.flash.desired=!1;b.each(this.solutions,function(c,d){if(0===c)a[d].desired=!0;else{var e=!1,f=!1;b.each(a.formats,function(b,c){a[a.solutions[0]].canPlay[c]&&("video"===
|
||||
a.format[c].media?f=!0:e=!0)});a[d].desired=a.require.audio&&!e||a.require.video&&!f}});this.html.support={};this.flash.support={};b.each(this.formats,function(b,c){a.html.support[c]=a.html.canPlay[c]&&a.html.desired;a.flash.support[c]=a.flash.canPlay[c]&&a.flash.desired});this.html.used=!1;this.flash.used=!1;b.each(this.solutions,function(c,d){b.each(a.formats,function(b,c){if(a[d].support[c])return a[d].used=!0,!1})});this._resetActive();this._resetGate();this._cssSelectorAncestor(this.options.cssSelectorAncestor);
|
||||
!this.html.used&&!this.flash.used?(this._error({type:b.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:b.jPlayer.errorMsg.NO_SOLUTION,hint:b.jPlayer.errorHint.NO_SOLUTION}),this.css.jq.noSolution.length&&this.css.jq.noSolution.show()):this.css.jq.noSolution.length&&this.css.jq.noSolution.hide();if(this.flash.used){var c,d="jQuery="+encodeURI(this.options.noConflict)+"&id="+encodeURI(this.internal.self.id)+"&vol="+this.options.volume+
|
||||
"&muted="+this.options.muted;if(b.jPlayer.browser.msie&&(9>Number(b.jPlayer.browser.version)||9>b.jPlayer.browser.documentMode)){d=['<param name="movie" value="'+this.internal.flash.swf+'" />','<param name="FlashVars" value="'+d+'" />','<param name="allowScriptAccess" value="always" />','<param name="bgcolor" value="'+this.options.backgroundColor+'" />','<param name="wmode" value="'+this.options.wmode+'" />'];c=document.createElement('<object id="'+this.internal.flash.id+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" tabindex="-1"></object>');
|
||||
for(var e=0;e<d.length;e++)c.appendChild(document.createElement(d[e]))}else e=function(a,b,c){var d=document.createElement("param");d.setAttribute("name",b);d.setAttribute("value",c);a.appendChild(d)},c=document.createElement("object"),c.setAttribute("id",this.internal.flash.id),c.setAttribute("name",this.internal.flash.id),c.setAttribute("data",this.internal.flash.swf),c.setAttribute("type","application/x-shockwave-flash"),c.setAttribute("width","1"),c.setAttribute("height","1"),c.setAttribute("tabindex",
|
||||
"-1"),e(c,"flashvars",d),e(c,"allowscriptaccess","always"),e(c,"bgcolor",this.options.backgroundColor),e(c,"wmode",this.options.wmode);this.element.append(c);this.internal.flash.jq=b(c)}this.html.used&&(this.html.audio.available&&(this._addHtmlEventListeners(this.htmlElement.audio,this.html.audio),this.element.append(this.htmlElement.audio),this.internal.audio.jq=b("#"+this.internal.audio.id)),this.html.video.available&&(this._addHtmlEventListeners(this.htmlElement.video,this.html.video),this.element.append(this.htmlElement.video),
|
||||
this.internal.video.jq=b("#"+this.internal.video.id),this.status.nativeVideoControls?this.internal.video.jq.css({width:this.status.width,height:this.status.height}):this.internal.video.jq.css({width:"0px",height:"0px"}),this.internal.video.jq.bind("click.jPlayer",function(){a._trigger(b.jPlayer.event.click)})));this.options.emulateHtml&&this._emulateHtmlBridge();this.html.used&&!this.flash.used&&setTimeout(function(){a.internal.ready=!0;a.version.flash="n/a";a._trigger(b.jPlayer.event.repeat);a._trigger(b.jPlayer.event.ready)},
|
||||
100);this._updateNativeVideoControls();this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();b.jPlayer.prototype.count++},destroy:function(){this.clearMedia();this._removeUiClass();this.css.jq.currentTime.length&&this.css.jq.currentTime.text("");this.css.jq.duration.length&&this.css.jq.duration.text("");b.each(this.css.jq,function(a,b){b.length&&b.unbind(".jPlayer")});this.internal.poster.jq.unbind(".jPlayer");this.internal.video.jq&&this.internal.video.jq.unbind(".jPlayer");this._fullscreenRemoveEventListeners();
|
||||
this===b.jPlayer.focus&&(b.jPlayer.focus=null);this.options.emulateHtml&&this._destroyHtmlBridge();this.element.removeData("jPlayer");this.element.unbind(".jPlayer");this.element.empty();delete this.instances[this.internal.instance]},enable:function(){},disable:function(){},_testCanPlayType:function(a){try{return a.canPlayType(this.format.mp3.codec),!0}catch(b){return!1}},_uaBlocklist:function(a){var c=navigator.userAgent.toLowerCase(),d=!1;b.each(a,function(a,b){if(b&&b.test(c))return d=!0,!1});
|
||||
return d},_restrictNativeVideoControls:function(){this.require.audio&&this.status.nativeVideoControls&&(this.status.nativeVideoControls=!1,this.status.noFullWindow=!0)},_updateNativeVideoControls:function(){this.html.video.available&&this.html.used&&(this.htmlElement.video.controls=this.status.nativeVideoControls,this._updateAutohide(),this.status.nativeVideoControls&&this.require.video?(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})):
|
||||
this.status.waitForPlay&&this.status.video&&(this.internal.poster.jq.show(),this.internal.video.jq.css({width:"0px",height:"0px"})))},_addHtmlEventListeners:function(a,c){var d=this;a.preload=this.options.preload;a.muted=this.options.muted;a.volume=this.options.volume;a.addEventListener("progress",function(){c.gate&&(d.internal.cmdsIgnored&&0<this.readyState&&(d.internal.cmdsIgnored=!1),d._getHtmlStatus(a),d._updateInterface(),d._trigger(b.jPlayer.event.progress))},!1);a.addEventListener("timeupdate",
|
||||
function(){c.gate&&(d._getHtmlStatus(a),d._updateInterface(),d._trigger(b.jPlayer.event.timeupdate))},!1);a.addEventListener("durationchange",function(){c.gate&&(d._getHtmlStatus(a),d._updateInterface(),d._trigger(b.jPlayer.event.durationchange))},!1);a.addEventListener("play",function(){c.gate&&(d._updateButtons(!0),d._html_checkWaitForPlay(),d._trigger(b.jPlayer.event.play))},!1);a.addEventListener("playing",function(){c.gate&&(d._updateButtons(!0),d._seeked(),d._trigger(b.jPlayer.event.playing))},
|
||||
!1);a.addEventListener("pause",function(){c.gate&&(d._updateButtons(!1),d._trigger(b.jPlayer.event.pause))},!1);a.addEventListener("waiting",function(){c.gate&&(d._seeking(),d._trigger(b.jPlayer.event.waiting))},!1);a.addEventListener("seeking",function(){c.gate&&(d._seeking(),d._trigger(b.jPlayer.event.seeking))},!1);a.addEventListener("seeked",function(){c.gate&&(d._seeked(),d._trigger(b.jPlayer.event.seeked))},!1);a.addEventListener("volumechange",function(){c.gate&&(d.options.volume=a.volume,
|
||||
d.options.muted=a.muted,d._updateMute(),d._updateVolume(),d._trigger(b.jPlayer.event.volumechange))},!1);a.addEventListener("suspend",function(){c.gate&&(d._seeked(),d._trigger(b.jPlayer.event.suspend))},!1);a.addEventListener("ended",function(){c.gate&&(b.jPlayer.browser.webkit||(d.htmlElement.media.currentTime=0),d.htmlElement.media.pause(),d._updateButtons(!1),d._getHtmlStatus(a,!0),d._updateInterface(),d._trigger(b.jPlayer.event.ended))},!1);a.addEventListener("error",function(){c.gate&&(d._updateButtons(!1),
|
||||
d._seeked(),d.status.srcSet&&(clearTimeout(d.internal.htmlDlyCmdId),d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:b.jPlayer.error.URL,context:d.status.src,message:b.jPlayer.errorMsg.URL,hint:b.jPlayer.errorHint.URL})))},!1);b.each(b.jPlayer.htmlEvent,
|
||||
function(e,g){a.addEventListener(this,function(){c.gate&&d._trigger(b.jPlayer.event[g])},!1)})},_getHtmlStatus:function(a,b){var d=0,e=0,g=0,f=0;isFinite(a.duration)&&(this.status.duration=a.duration);d=a.currentTime;e=0<this.status.duration?100*d/this.status.duration:0;"object"===typeof a.seekable&&0<a.seekable.length?(g=0<this.status.duration?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=0<this.status.duration?100*a.currentTime/a.seekable.end(a.seekable.length-1):0):(g=100,
|
||||
f=e);b&&(e=f=d=0);this.status.seekPercent=g;this.status.currentPercentRelative=f;this.status.currentPercentAbsolute=e;this.status.currentTime=d;this.status.videoWidth=a.videoWidth;this.status.videoHeight=a.videoHeight;this.status.readyState=a.readyState;this.status.networkState=a.networkState;this.status.playbackRate=a.playbackRate;this.status.ended=a.ended},_resetStatus:function(){this.status=b.extend({},this.status,b.jPlayer.prototype.status)},_trigger:function(a,c,d){a=b.Event(a);a.jPlayer={};
|
||||
a.jPlayer.version=b.extend({},this.version);a.jPlayer.options=b.extend(!0,{},this.options);a.jPlayer.status=b.extend(!0,{},this.status);a.jPlayer.html=b.extend(!0,{},this.html);a.jPlayer.flash=b.extend(!0,{},this.flash);c&&(a.jPlayer.error=b.extend({},c));d&&(a.jPlayer.warning=b.extend({},d));this.element.trigger(a)},jPlayerFlashEvent:function(a,c){if(a===b.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media);
|
||||
0<d&&(e?this.pause(d):this.play(d))}this._trigger(b.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:b.jPlayer.error.VERSION,context:this.version.flash,message:b.jPlayer.errorMsg.VERSION+this.version.flash,hint:b.jPlayer.errorHint.VERSION}),this._trigger(b.jPlayer.event.repeat),this._trigger(a);if(this.flash.gate)switch(a){case b.jPlayer.event.progress:this._getFlashStatus(c);
|
||||
this._updateInterface();this._trigger(a);break;case b.jPlayer.event.timeupdate:this._getFlashStatus(c);this._updateInterface();this._trigger(a);break;case b.jPlayer.event.play:this._seeked();this._updateButtons(!0);this._trigger(a);break;case b.jPlayer.event.pause:this._updateButtons(!1);this._trigger(a);break;case b.jPlayer.event.ended:this._updateButtons(!1);this._trigger(a);break;case b.jPlayer.event.click:this._trigger(a);break;case b.jPlayer.event.error:this.status.waitForLoad=!0;this.status.waitForPlay=
|
||||
!0;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media);this._updateButtons(!1);this._error({type:b.jPlayer.error.URL,context:c.src,message:b.jPlayer.errorMsg.URL,hint:b.jPlayer.errorHint.URL});break;case b.jPlayer.event.seeking:this._seeking();
|
||||
this._trigger(a);break;case b.jPlayer.event.seeked:this._seeked();this._trigger(a);break;case b.jPlayer.event.ready:break;default:this._trigger(a)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative;this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration;this.status.videoWidth=a.videoWidth;this.status.videoHeight=a.videoHeight;this.status.readyState=
|
||||
4;this.status.networkState=0;this.status.playbackRate=1;this.status.ended=!1},_updateButtons:function(a){a===f?a=!this.status.paused:this.status.paused=!a;this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.css('display', 'inline-block')):(this.css.jq.play.css('display', 'inline-block'),this.css.jq.pause.hide()));this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&&(this.status.noFullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullWindow?(this.css.jq.fullScreen.hide(),
|
||||
this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide()));this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%");this.css.jq.playBar.length&&(this.options.smoothPlayBar?this.css.jq.playBar.stop().animate({width:this.status.currentPercentAbsolute+
|
||||
"%"},250,"linear"):this.css.jq.playBar.width(this.status.currentPercentRelative+"%"));this.css.jq.currentTime.length&&this.css.jq.currentTime.text(this._convertTime(this.status.currentTime));this.css.jq.duration.length&&this.css.jq.duration.text(this._convertTime(this.status.duration))},_convertTime:l.prototype.time,_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")},
|
||||
_resetGate:function(){this.html.audio.gate=!1;this.html.video.gate=!1;this.flash.gate=!1},_resetActive:function(){this.html.active=!1;this.flash.active=!1},setMedia:function(a){var c=this,d=!1,e=this.status.media.poster!==a.poster;this._resetMedia();this._resetGate();this._resetActive();b.each(this.formats,function(e,f){var j="video"===c.format[f].media;b.each(c.solutions,function(b,e){if(c[e].support[f]&&c._validString(a[f])){var g="html"===e;j?(g?(c.html.video.gate=!0,c._html_setVideo(a),c.html.active=
|
||||
!0):(c.flash.gate=!0,c._flash_setVideo(a),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.show(),c.status.video=!0):(g?(c.html.audio.gate=!0,c._html_setAudio(a),c.html.active=!0):(c.flash.gate=!0,c._flash_setAudio(a),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.hide(),c.status.video=!1);d=!0;return!1}});if(d)return!1});if(d){if((!this.status.nativeVideoControls||!this.html.video.gate)&&this._validString(a.poster))e?this.htmlElement.poster.src=a.poster:this.internal.poster.jq.show();
|
||||
this.status.srcSet=!0;this.status.media=b.extend({},a);this._updateButtons(!1);this._updateInterface()}else this._error({type:b.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:b.jPlayer.errorMsg.NO_SUPPORT,hint:b.jPlayer.errorHint.NO_SUPPORT})},_resetMedia:function(){this._resetStatus();this._updateButtons(!1);this._updateInterface();this._seeked();this.internal.poster.jq.hide();clearTimeout(this.internal.htmlDlyCmdId);this.html.active?this._html_resetMedia():this.flash.active&&
|
||||
this._flash_resetMedia()},clearMedia:function(){this._resetMedia();this.html.active?this._html_clearMedia():this.flash.active&&this._flash_clearMedia();this._resetGate();this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},focus:function(){this.options.keyEnabled&&(b.jPlayer.focus=this)},play:function(a){a="number"===typeof a?a:NaN;this.status.srcSet?(this.focus(),this.html.active?this._html_play(a):
|
||||
this.flash.active&&this._flash_play(a)):this._urlNotSetError("play")},videoPlay:function(){this.play()},pause:function(a){a="number"===typeof a?a:NaN;this.status.srcSet?this.html.active?this._html_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},pauseOthers:function(){var a=this;b.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.flash.active&&
|
||||
this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);this.status.srcSet?this.html.active?this._html_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.options.muted=a;this.html.used&&this._html_mute(a);this.flash.used&&this._flash_mute(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateMute(a),this._updateVolume(this.options.volume),this._trigger(b.jPlayer.event.volumechange))},
|
||||
mute:function(a){a=a===f?!0:!!a;this._muted(a)},unmute:function(a){a=a===f?!0:!!a;this._muted(!a)},_updateMute:function(a){a===f&&(a=this.options.muted);this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){a=this._limitValue(a,0,1);this.options.volume=a;this.html.used&&this._html_volume(a);this.flash.used&&
|
||||
this._flash_volume(a);!this.html.video.gate&&!this.html.audio.gate&&(this._updateVolume(a),this._trigger(b.jPlayer.event.volumechange))},volumeBar:function(a){if(this.css.jq.volumeBar.length){var c=b(a.currentTarget),d=c.offset(),e=a.pageX-d.left,g=c.width();a=c.height()-a.pageY+d.top;c=c.height();this.options.verticalVolume?this.volume(a/c):this.volume(e/g)}this.options.muted&&this._muted(!1)},volumeBarValue:function(){},_updateVolume:function(a){a===f&&(a=this.options.volume);a=this.options.muted?
|
||||
0:a;this.status.noVolume?(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](100*a+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1);
|
||||
this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(a){var c=this;this.options.cssSelectorAncestor=a;this._removeUiClass();this.ancestorJq=a?b(a):[];a&&1!==this.ancestorJq.length&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT});this._addUiClass();b.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)});
|
||||
this._updateInterface();this._updateButtons();this._updateAutohide();this._updateVolume();this._updateMute()},_cssSelector:function(a,c){var d=this;"string"===typeof c?b.jPlayer.prototype.options.cssSelector[a]?(this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer"),this.options.cssSelector[a]=c,this.css.cs[a]=this.options.cssSelectorAncestor+" "+c,this.css.jq[a]=c?b(this.css.cs[a]):[],this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(c){c.preventDefault();d[a](c);
|
||||
b(this).blur()}),c&&1!==this.css.jq[a].length&&this._warning({type:b.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:b.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",hint:b.jPlayer.warningHint.CSS_SELECTOR_COUNT})):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:b.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:b.jPlayer.warningHint.CSS_SELECTOR_METHOD}):this._warning({type:b.jPlayer.warning.CSS_SELECTOR_STRING,context:c,
|
||||
message:b.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:b.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar.length){var c=b(a.currentTarget),d=c.offset();a=a.pageX-d.left;c=c.width();this.playHead(100*a/c)}},playBar:function(){},repeat:function(){this._loop(!0)},repeatOff:function(){this._loop(!1)},_loop:function(a){this.options.loop!==a&&(this.options.loop=a,this._updateButtons(),this._trigger(b.jPlayer.event.repeat))},currentTime:function(){},duration:function(){},
|
||||
gui:function(){},noSolution:function(){},option:function(a,c){var d=a;if(0===arguments.length)return b.extend(!0,{},this.options);if("string"===typeof a){var e=a.split(".");if(c===f){for(var d=b.extend(!0,{},this.options),g=0;g<e.length;g++)if(d[e[g]]!==f)d=d[e[g]];else return this._warning({type:b.jPlayer.warning.OPTION_KEY,context:a,message:b.jPlayer.warningMsg.OPTION_KEY,hint:b.jPlayer.warningHint.OPTION_KEY}),f;return d}for(var g=d={},h=0;h<e.length;h++)h<e.length-1?(g[e[h]]={},g=g[e[h]]):g[e[h]]=
|
||||
c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,c){var d=this;switch(a){case "volume":this.volume(c);break;case "muted":this._muted(c);break;case "cssSelectorAncestor":this._cssSelectorAncestor(c);break;case "cssSelector":b.each(c,function(a,b){d._cssSelector(a,b)});break;case "fullScreen":if(this.options[a]!==c){var e=b.jPlayer.nativeFeatures.fullscreen.used.webkitVideo;if(!e||e&&!this.status.waitForPlay)e||
|
||||
(this.options[a]=c),c?this._requestFullscreen():this._exitFullscreen(),e||this._setOption("fullWindow",c)}break;case "fullWindow":this.options[a]!==c&&(this._removeUiClass(),this.options[a]=c,this._refreshSize());break;case "size":!this.options.fullWindow&&this.options[a].cssClass!==c.cssClass&&this._removeUiClass();this.options[a]=b.extend({},this.options[a],c);this._refreshSize();break;case "sizeFull":this.options.fullWindow&&this.options[a].cssClass!==c.cssClass&&this._removeUiClass();this.options[a]=
|
||||
b.extend({},this.options[a],c);this._refreshSize();break;case "autohide":this.options[a]=b.extend({},this.options[a],c);this._updateAutohide();break;case "loop":this._loop(c);break;case "nativeVideoControls":this.options[a]=b.extend({},this.options[a],c);this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls);this._restrictNativeVideoControls();this._updateNativeVideoControls();break;case "noFullWindow":this.options[a]=b.extend({},this.options[a],c);this.status.nativeVideoControls=
|
||||
this._uaBlocklist(this.options.nativeVideoControls);this.status.noFullWindow=this._uaBlocklist(this.options.noFullWindow);this._restrictNativeVideoControls();this._updateButtons();break;case "noVolume":this.options[a]=b.extend({},this.options[a],c);this.status.noVolume=this._uaBlocklist(this.options.noVolume);this._updateVolume();this._updateMute();break;case "emulateHtml":this.options[a]!==c&&((this.options[a]=c)?this._emulateHtmlBridge():this._destroyHtmlBridge());break;case "timeFormat":this.options[a]=
|
||||
b.extend({},this.options[a],c);break;case "keyEnabled":this.options[a]=c;!c&&this===b.jPlayer.focus&&(b.jPlayer.focus=null);break;case "keyBindings":this.options[a]=b.extend(!0,{},this.options[a],c);break;case "audioFullScreen":this.options[a]=c}return this},_refreshSize:function(){this._setSize();this._addUiClass();this._updateSize();this._updateButtons();this._updateAutohide();this._trigger(b.jPlayer.event.resize)},_setSize:function(){this.options.fullWindow?(this.status.width=this.options.sizeFull.width,
|
||||
this.status.height=this.options.sizeFull.height,this.status.cssClass=this.options.sizeFull.cssClass):(this.status.width=this.options.size.width,this.status.height=this.options.size.height,this.status.cssClass=this.options.size.cssClass);this.element.css({width:this.status.width,height:this.status.height})},_addUiClass:function(){this.ancestorJq.length&&this.ancestorJq.addClass(this.status.cssClass)},_removeUiClass:function(){this.ancestorJq.length&&this.ancestorJq.removeClass(this.status.cssClass)},
|
||||
_updateSize:function(){this.internal.poster.jq.css({width:this.status.width,height:this.status.height});!this.status.waitForPlay&&this.html.active&&this.status.video||this.html.video.available&&this.html.used&&this.status.nativeVideoControls?this.internal.video.jq.css({width:this.status.width,height:this.status.height}):!this.status.waitForPlay&&(this.flash.active&&this.status.video)&&this.internal.flash.jq.css({width:this.status.width,height:this.status.height})},_updateAutohide:function(){var a=
|
||||
this,b=function(){a.css.jq.gui.fadeIn(a.options.autohide.fadeIn,function(){clearTimeout(a.internal.autohideId);a.internal.autohideId=setTimeout(function(){a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)},a.options.autohide.hold)})};this.css.jq.gui.length&&(this.css.jq.gui.stop(!0,!0),clearTimeout(this.internal.autohideId),this.element.unbind(".jPlayerAutohide"),this.css.jq.gui.unbind(".jPlayerAutohide"),this.status.nativeVideoControls?this.css.jq.gui.hide():this.options.fullWindow&&this.options.autohide.full||
|
||||
!this.options.fullWindow&&this.options.autohide.restored?(this.element.bind("mousemove.jPlayer.jPlayerAutohide",b),this.css.jq.gui.bind("mousemove.jPlayer.jPlayerAutohide",b),this.css.jq.gui.hide()):this.css.jq.gui.show())},fullScreen:function(){this._setOption("fullScreen",!0)},restoreScreen:function(){this._setOption("fullScreen",!1)},_fullscreenAddEventListeners:function(){var a=this,c=b.jPlayer.nativeFeatures.fullscreen;c.api.fullscreenEnabled&&c.event.fullscreenchange&&("function"!==typeof this.internal.fullscreenchangeHandler&&
|
||||
(this.internal.fullscreenchangeHandler=function(){a._fullscreenchange()}),document.addEventListener(c.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1))},_fullscreenRemoveEventListeners:function(){var a=b.jPlayer.nativeFeatures.fullscreen;this.internal.fullscreenchangeHandler&&document.addEventListener(a.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1)},_fullscreenchange:function(){this.options.fullScreen&&!b.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()&&
|
||||
this._setOption("fullScreen",!1)},_requestFullscreen:function(){var a=this.ancestorJq.length?this.ancestorJq[0]:this.element[0],c=b.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(a=this.htmlElement.video);c.api.fullscreenEnabled&&c.api.requestFullscreen(a)},_exitFullscreen:function(){var a=b.jPlayer.nativeFeatures.fullscreen,c;a.used.webkitVideo&&(c=this.htmlElement.video);a.api.fullscreenEnabled&&a.api.exitFullscreen(c)},_html_initMedia:function(a){var c=b(this.htmlElement.media).empty();
|
||||
b.each(a.track||[],function(a,b){var g=document.createElement("track");g.setAttribute("kind",b.kind?b.kind:"");g.setAttribute("src",b.src?b.src:"");g.setAttribute("srclang",b.srclang?b.srclang:"");g.setAttribute("label",b.label?b.label:"");b.def&&g.setAttribute("default",b.def);c.append(g)});this.htmlElement.media.src=this.status.src;"none"!==this.options.preload&&this._html_load();this._trigger(b.jPlayer.event.timeupdate)},_html_setFormat:function(a){var c=this;b.each(this.formats,function(b,e){if(c.html.support[e]&&
|
||||
a[e])return c.status.src=a[e],c.status.format[e]=!0,c.status.formatType=e,!1})},_html_setAudio:function(a){this._html_setFormat(a);this.htmlElement.media=this.htmlElement.audio;this._html_initMedia(a)},_html_setVideo:function(a){this._html_setFormat(a);this.status.nativeVideoControls&&(this.htmlElement.video.poster=this._validString(a.poster)?a.poster:"");this.htmlElement.media=this.htmlElement.video;this._html_initMedia(a)},_html_resetMedia:function(){this.htmlElement.media&&(this.htmlElement.media.id===
|
||||
this.internal.video.id&&!this.status.nativeVideoControls&&this.internal.video.jq.css({width:"0px",height:"0px"}),this.htmlElement.media.pause())},_html_clearMedia:function(){this.htmlElement.media&&(this.htmlElement.media.src="about:blank",this.htmlElement.media.load())},_html_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.htmlElement.media.load());clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this,d=this.htmlElement.media;this._html_load();if(isNaN(a))d.play();
|
||||
else{this.internal.cmdsIgnored&&d.play();try{if(!d.seekable||"object"===typeof d.seekable&&0<d.seekable.length)d.currentTime=a,d.play();else throw 1;}catch(e){this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},250);return}}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this,d=this.htmlElement.media;0<a?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);d.pause();if(!isNaN(a))try{if(!d.seekable||"object"===typeof d.seekable&&0<d.seekable.length)d.currentTime=a;else throw 1;
|
||||
}catch(e){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},250);return}0<a&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this,d=this.htmlElement.media;this._html_load();try{if("object"===typeof d.seekable&&0<d.seekable.length)d.currentTime=a*d.seekable.end(d.seekable.length-1)/100;else if(0<d.duration&&!isNaN(d.duration))d.currentTime=a*d.duration/100;else throw"e";}catch(e){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},250);return}this.status.waitForLoad||
|
||||
this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})))},_html_volume:function(a){this.html.audio.available&&(this.htmlElement.audio.volume=a);this.html.video.available&&(this.htmlElement.video.volume=a)},_html_mute:function(a){this.html.audio.available&&
|
||||
(this.htmlElement.audio.muted=a);this.html.video.available&&(this.htmlElement.video.muted=a)},_flash_setAudio:function(a){var c=this;try{b.each(this.formats,function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4a":case "fla":c._getMovie().fl_setAudio_m4a(a[d]);break;case "mp3":c._getMovie().fl_setAudio_mp3(a[d]);break;case "rtmpa":c._getMovie().fl_setAudio_rtmp(a[d])}c.status.src=a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),"auto"===this.options.preload&&(this._flash_load(),
|
||||
this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var c=this;try{b.each(this.formats,function(b,d){if(c.flash.support[d]&&a[d]){switch(d){case "m4v":case "flv":c._getMovie().fl_setVideo_m4v(a[d]);break;case "rtmpv":c._getMovie().fl_setVideo_rtmp(a[d])}c.status.src=a[d];c.status.format[d]=!0;c.status.formatType=d;return!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",
|
||||
height:"0px"});this._flash_pause(NaN)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=!1;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}0<a&&(this.status.waitForLoad=
|
||||
!1,this._flash_checkWaitForPlay())},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height})))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},
|
||||
_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_getFlashPluginVersion:function(){var a=0,b;if(window.ActiveXObject)try{if(b=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")){var d=b.GetVariable("$version");d&&(d=d.split(" ")[1].split(","),a=parseInt(d[0],10)+"."+parseInt(d[1],10))}}catch(e){}else navigator.plugins&&0<navigator.mimeTypes.length&&(b=navigator.plugins["Shockwave Flash"])&&(a=navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,
|
||||
"$1"));return 1*a},_checkForFlash:function(a){var b=!1;this._getFlashPluginVersion()>=a&&(b=!0);return b},_validString:function(a){return a&&"string"===typeof a},_limitValue:function(a,b,d){return a<b?b:a>d?d:a},_urlNotSetError:function(a){this._error({type:b.jPlayer.error.URL_NOT_SET,context:a,message:b.jPlayer.errorMsg.URL_NOT_SET,hint:b.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){var c;c=this.internal.ready?"FLASH_DISABLED":"FLASH";this._error({type:b.jPlayer.error[c],context:this.internal.flash.swf,
|
||||
message:b.jPlayer.errorMsg[c]+a.message,hint:b.jPlayer.errorHint[c]});this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(a){this._trigger(b.jPlayer.event.error,a);this.options.errorAlerts&&this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(b.jPlayer.event.warning,f,a);this.options.warningAlerts&&this._alert("Warning!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+
|
||||
a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)},_emulateHtmlBridge:function(){var a=this;b.each(b.jPlayer.emulateMethods.split(/\s+/g),function(b,d){a.internal.domNode[d]=function(b){a[d](b)}});b.each(b.jPlayer.event,function(c,d){var e=!0;b.each(b.jPlayer.reservedEvent.split(/\s+/g),function(a,b){if(b===c)return e=!1});e&&a.element.bind(d+".jPlayer.jPlayerHtml",function(){a._emulateHtmlUpdate();var b=document.createEvent("Event");b.initEvent(c,
|
||||
!1,!0);a.internal.domNode.dispatchEvent(b)})})},_emulateHtmlUpdate:function(){var a=this;b.each(b.jPlayer.emulateStatus.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.status[d]});b.each(b.jPlayer.emulateOptions.split(/\s+/g),function(b,d){a.internal.domNode[d]=a.options[d]})},_destroyHtmlBridge:function(){var a=this;this.element.unbind(".jPlayerHtml");b.each((b.jPlayer.emulateMethods+" "+b.jPlayer.emulateStatus+" "+b.jPlayer.emulateOptions).split(/\s+/g),function(b,d){delete a.internal.domNode[d]})}};
|
||||
b.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};b.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",
|
||||
NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+b.jPlayer.prototype.version.script+" needs Jplayer.swf version "+b.jPlayer.prototype.version.needFlash+" but found "};b.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",
|
||||
NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};b.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};b.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",
|
||||
CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};b.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}});
|
|
@ -0,0 +1,83 @@
|
|||
.webPlayer { display: inline-block; position: relative; font-family: 'Segoe UI', Verdana, sans-serif; clear: both; margin-bottom: 10px; line-height: 1.4; font-size: 13px; box-shadow: 0 0 1px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.5); text-align: center; /* Chrome FIX for full screen */ }
|
||||
.webPlayer a.smooth { transition: all 0.1s linear; -webkit-transition: all 0.1s linear; -moz-transition: all 0.1s linear; -o-transition: all 0.1s linear; }
|
||||
.webPlayer.jp-video-full > .controls { position: absolute; left: 0; right: 0; bottom: 0; opacity: 0.8; z-index: 1000; }
|
||||
.webPlayer.jp-video-full, .webPlayer.jp-video-full object, .webPlayer.jp-video-full video { position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: block; z-index: 999; }
|
||||
.webPlayer.jp-video-full > .playerScreen, .webPlayer.jp-video-full > .playerScreen > .video-play { z-index: 1000; }
|
||||
.webPlayer .playerScreen { cursor: pointer; }
|
||||
.webPlayer .playerScreen .video-play { display: block; position: absolute; z-index: 990; width: 100%; top: 0; left: 0; right: 0; bottom: 50px; background: url("preimg.png") no-repeat center center; opacity: 0.4; background-color: rgba(0, 0, 0, 0.4); }
|
||||
.webPlayer .controls { display: block; position: relative; height: 40px; background: #0b0b0b; color: #969696; padding: 5px 10px; z-index: 996; border: 1px solid #000000; }
|
||||
.webPlayer .controls .leftblock { position: absolute; left: 3px; width: 50px; }
|
||||
.webPlayer .controls .leftblock .play { display: block; width: 40px; height: 40px; background: url("playerUI.png") no-repeat 0 1px; opacity: 0.8; }
|
||||
.webPlayer .controls .leftblock .play:hover { opacity: 1; }
|
||||
.webPlayer .controls .leftblock .pause { display: block; width: 40px; height: 40px; background: url("playerUI.png") no-repeat -40px 1px; opacity: 0.8; }
|
||||
.webPlayer .controls .leftblock .pause:hover { opacity: 1; }
|
||||
.webPlayer .controls .progress { position: relative; display: block; margin: 0 130px 0 50px; text-align: left; }
|
||||
.webPlayer .controls .progress span { font-size: 12px; margin-left: 1px; color: #f0f0f0; }
|
||||
.webPlayer .controls .progress .progressbar { display: block; height: 4px; background-color: #3C3C3C; background: rgba(255, 255, 255, 0.05); margin: 2.5px 0; }
|
||||
.webPlayer .controls .progress .progressbar .seekBar { position: relative; display: block; cursor: pointer; padding: 1px; background: rgba(255, 255, 255, 0.1); }
|
||||
.webPlayer .controls .progress .progressbar .seekBar .playBar { display: block; height: 2px; padding: 0; background: #FFFFFF; }
|
||||
.webPlayer .controls .progress .progressbar .seekBar a { display: block; position: absolute; top: -2px; width: 8px; height: 8px; border-radius: 5px; background: #ffffff; margin-left: -3px; }
|
||||
.webPlayer .controls .progress .progressbar .seekBar a div { width: 8px; height: 8px; }
|
||||
.webPlayer .controls .progress .time { display: block; position: absolute; width: 50px; font-size: 11px; }
|
||||
.webPlayer .controls .progress .time.current { left: 1px; text-align: left; color: #f0f0f0; }
|
||||
.webPlayer .controls .progress .time.duration { right: 0px; text-align: right; }
|
||||
.webPlayer .controls .rightblock { position: absolute; right: 10px; width: 110px; top: 5px; }
|
||||
.webPlayer .controls .rightblock .volumeText { display: block; position: absolute; bottom: -12px; text-align: center; width: 80px; font-size: 11px; }
|
||||
.webPlayer .controls .rightblock .volumeBar { display: block; position: absolute; height: 4px; background-color: #3C3C3C; background: rgba(255, 255, 255, 0.05); width: 80px; top: 19px; left: 0; cursor: pointer; }
|
||||
.webPlayer .controls .rightblock .volumeBar .currentVolume { position: relative; height: 2px; padding: 1px; }
|
||||
.webPlayer .controls .rightblock .volumeBar .currentVolume .curvol { display: block; height: 2px; padding: 0; background: #FFFFFF; }
|
||||
.webPlayer .controls .rightblock .volumeBar .currentVolume a { display: block; position: absolute; top: -2px; margin-left: -3px; width: 8px; height: 8px; border-radius: 5px; background: #ffffff; }
|
||||
.webPlayer .controls .rightblock .volumeBar .currentVolume a div { display: block; width: 8px; height: 8px; }
|
||||
.webPlayer .controls .rightblock .fullScreen { display: block; float: right; width: 16px; height: 16px; background: url("playerUI.png") no-repeat 0 -50px; margin-top: 12px; opacity: 0.4; }
|
||||
.webPlayer .controls .rightblock .fullScreen:hover { opacity: 0.8; }
|
||||
.webPlayer .controls .rightblock .fullScreenOFF { display: block; float: right; width: 16px; height: 16px; background: url("playerUI.png") no-repeat 0 -68px; margin-top: 12px; opacity: 0.4; }
|
||||
.webPlayer .controls .rightblock .fullScreenOFF:hover { opacity: 0.8; }
|
||||
.webPlayer.audioPlayer .progress { margin-right: 100px; }
|
||||
.webPlayer.audioPlayer .rightblock { width: 85px; }
|
||||
.webPlayer.audioPlayer .rightblock .volumeText { bottom: -42px; }
|
||||
.webPlayer.audioPlayer .fullScreen { display: none; }
|
||||
.webPlayer.audioPlayer .fullScreenOFF { display: none; }
|
||||
|
||||
/**
|
||||
* Light Theme
|
||||
*/
|
||||
|
||||
.webPlayer.light { display: inline-block; position: relative; font-family: 'Segoe UI', Verdana, sans-serif; clear: both; margin-bottom: 10px; line-height: 1.4; font-size: 13px; box-shadow: 0 0 1px rgba(255, 255, 255, 0.5); -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5); text-align: center; /* Chrome FIX for full screen */ }
|
||||
.webPlayer.light a.smooth { transition: all 0.1s linear; -webkit-transition: all 0.1s linear; -moz-transition: all 0.1s linear; -o-transition: all 0.1s linear; }
|
||||
.webPlayer.light.jp-video-full > .controls { position: absolute; left: 0; right: 0; bottom: 0; opacity: 0.8; z-index: 1000; }
|
||||
.webPlayer.light.jp-video-full, .webPlayer.light.jp-video-full object, .webPlayer.light.jp-video-full video { position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: block; z-index: 999; }
|
||||
.webPlayer.light.jp-video-full > .playerScreen, .webPlayer.light.jp-video-full > .playerScreen > .video-play { z-index: 1000; }
|
||||
.webPlayer.light .playerScreen { cursor: pointer; }
|
||||
.webPlayer.light .playerScreen .video-play { display: block; position: absolute; z-index: 990; width: 100%; top: 0; left: 0; right: 0; bottom: 50px; background: url("preimg.light.png") no-repeat center center; opacity: 0.8; background-color: rgba(255, 255, 255, 0.1); }
|
||||
.webPlayer.light .controls { display: block; position: relative; height: 40px; background: #FAFAFA; color: #646464; padding: 5px 10px; z-index: 996; border: 1px solid #e6e6e6; }
|
||||
.webPlayer.light .controls .leftblock { position: absolute; left: 3px; width: 50px; }
|
||||
.webPlayer.light .controls .leftblock .play { display: block; width: 40px; height: 40px; background: url("playerUI.light.png") no-repeat 0 1px; opacity: 0.8; }
|
||||
.webPlayer.light .controls .leftblock .play:hover { opacity: 1; }
|
||||
.webPlayer.light .controls .leftblock .pause { display: block; width: 40px; height: 40px; background: url("playerUI.light.png") no-repeat -40px 1px; opacity: 0.8; }
|
||||
.webPlayer.light .controls .leftblock .pause:hover { opacity: 1; }
|
||||
.webPlayer.light .controls .progress { position: relative; display: block; margin: 0 130px 0 50px; text-align: left; }
|
||||
.webPlayer.light .controls .progress span { font-size: 12px; margin-left: 1px; color: #282828; }
|
||||
.webPlayer.light .controls .progress .progressbar { display: block; height: 4px; background-color: #3C3C3C; background: rgba(0, 0, 0, 0.1); margin: 2.5px 0; }
|
||||
.webPlayer.light .controls .progress .progressbar .seekBar { position: relative; display: block; cursor: pointer; padding: 1px; background: rgba(0, 0, 0, 0.05); }
|
||||
.webPlayer.light .controls .progress .progressbar .seekBar .playBar { display: block; height: 2px; padding: 0; background: #191919; }
|
||||
.webPlayer.light .controls .progress .progressbar .seekBar a { display: block; position: absolute; top: -2px; width: 8px; height: 8px; border-radius: 5px; background: #191919; margin-left: -3px; }
|
||||
.webPlayer.light .controls .progress .progressbar .seekBar a div { width: 8px; height: 8px; }
|
||||
.webPlayer.light .controls .progress .time { display: block; position: absolute; width: 50px; font-size: 11px; }
|
||||
.webPlayer.light .controls .progress .time.current { left: 1px; text-align: left; color: #282828; }
|
||||
.webPlayer.light .controls .progress .time.duration { right: 0px; text-align: right; }
|
||||
.webPlayer.light .controls .rightblock { position: absolute; right: 10px; width: 110px; top: 5px; }
|
||||
.webPlayer.light .controls .rightblock .volumeText { display: block; position: absolute; bottom: -12px; text-align: center; width: 80px; font-size: 11px; }
|
||||
.webPlayer.light .controls .rightblock .volumeBar { display: block; position: absolute; height: 4px; background-color: #EBEBEB; background: rgba(0, 0, 0, 0.1); width: 80px; top: 19px; left: 0; cursor: pointer; }
|
||||
.webPlayer.light .controls .rightblock .volumeBar .currentVolume { position: relative; height: 2px; padding: 1px; }
|
||||
.webPlayer.light .controls .rightblock .volumeBar .currentVolume .curvol { display: block; height: 2px; padding: 0; background: #191919; }
|
||||
.webPlayer.light .controls .rightblock .volumeBar .currentVolume a { display: block; position: absolute; top: -2px; margin-left: -3px; width: 8px; height: 8px; border-radius: 5px; background: #191919; }
|
||||
.webPlayer.light .controls .rightblock .volumeBar .currentVolume a div { display: block; width: 8px; height: 8px; }
|
||||
.webPlayer.light .controls .rightblock .fullScreen { display: block; float: right; width: 16px; height: 16px; background: url("playerUI.light.png") no-repeat 0 -50px; margin-top: 12px; opacity: 0.4; }
|
||||
.webPlayer.light .controls .rightblock .fullScreen:hover { opacity: 0.8; }
|
||||
.webPlayer.light .controls .rightblock .fullScreenOFF { display: block; float: right; width: 16px; height: 16px; background: url("playerUI.light.png") no-repeat 0 -68px; margin-top: 12px; opacity: 0.4; }
|
||||
.webPlayer.light .controls .rightblock .fullScreenOFF:hover { opacity: 0.8; }
|
||||
.webPlayer.light.audioPlayer .progress { margin-right: 100px; }
|
||||
.webPlayer.light.audioPlayer .rightblock { width: 85px; }
|
||||
.webPlayer.light.audioPlayer .rightblock .volumeText { bottom: -42px; }
|
||||
.webPlayer.light.audioPlayer .fullScreen { display: none; }
|
||||
.webPlayer.light.audioPlayer .fullScreenOFF { display: none; }
|
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.2 KiB |